diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/README.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/README.md new file mode 100644 index 0000000..ee89eed --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/README.md @@ -0,0 +1,46 @@ +# Project Administrator Restricted Visibility + +Odoo addon: project_administrator_restricted_visibility + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_administrator_restricted_visibility +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Administrator Restricted Visibility +- **Version**: 16.0.1.0.2 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_administrator_restricted_visibility`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/ARCHITECTURE.md new file mode 100644 index 0000000..dc12b89 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_administrator_restricted_visibility Module - project_administrator_restricted_visibility + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/CONFIGURATION.md new file mode 100644 index 0000000..9ded512 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_administrator_restricted_visibility. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/FAQ.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/FAQ.md new file mode 100644 index 0000000..0510bc7 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_administrator_restricted_visibility or install in UI. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/INSTALL.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/INSTALL.md new file mode 100644 index 0000000..3fea586 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_administrator_restricted_visibility" +# or +uv pip install odoo-bringout-oca-project-project_administrator_restricted_visibility" +``` diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/MODELS.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/MODELS.md new file mode 100644 index 0000000..6345b47 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/MODELS.md @@ -0,0 +1,11 @@ +# Models + +Detected core models and extensions in project_administrator_restricted_visibility. + +```mermaid +classDiagram +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/OVERVIEW.md new file mode 100644 index 0000000..d4de43f --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_administrator_restricted_visibility. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_administrator_restricted_visibility +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/REPORTS.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/SECURITY.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/SECURITY.md new file mode 100644 index 0000000..8805e86 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/SECURITY.md @@ -0,0 +1,64 @@ +# Security + +Access control and security definitions in project_administrator_restricted_visibility. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[bosnian_translations.json](../bosnian_translations.json)** + - 50 model access rules +- **[bosnian_translations_output.json](../bosnian_translations_output.json)** + - 444 model access rules +- **[CHANGELOG.md](../CHANGELOG.md)** + - 132 model access rules +- **[doc](../doc)** +- **[docker](../docker)** +- **[input](../input)** +- **[nix](../nix)** +- **[odoo.conf](../odoo.conf)** + - 58 model access rules +- **[odoo_packages_bez_l10n.txt](../odoo_packages_bez_l10n.txt)** + - 1947 model access rules +- **[odoo_packages_bringout.txt](../odoo_packages_bringout.txt)** + - 1947 model access rules +- **[odoo_packages.txt](../odoo_packages.txt)** + - 2085 model access rules +- **[output](../output)** +- **[packages](../packages)** +- **[README.md](../README.md)** + - 338 model access rules +- **[scripts](../scripts)** +- **[temp](../temp)** +- **[TRANSLATION_BS_SUMMARY.md](../TRANSLATION_BS_SUMMARY.md)** + - 146 model access rules + +## Record Rules + +Row-level security rules defined in: + +## Security Groups & Configuration + +Security groups and permissions defined in: +- **[project_security.xml](../project_administrator_restricted_visibility/security/project_security.xml)** + - 2 security groups defined + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[project_security.xml](../project_administrator_restricted_visibility/security/project_security.xml)** + - Security groups, categories, and XML-based rules + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/USAGE.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/USAGE.md new file mode 100644 index 0000000..9cee4fe --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_administrator_restricted_visibility +``` diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/WIZARDS.md b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/README.rst b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/README.rst new file mode 100644 index 0000000..03586d4 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/README.rst @@ -0,0 +1,112 @@ +=========================================== +Project Administrator Restricted Visibility +=========================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:a10091cc4ba3c4eede4b50f413380922c51fb6e2098029bc84ce908aedf9febf + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_administrator_restricted_visibility + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_administrator_restricted_visibility + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of 'Project' module to add a new +'Project Administrator' access group with restricted visibility to the projects. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure this module, you need to: + +#. Go to *Settings > Users & Companies > Users* +#. Create a user or edit an existing one. +#. A new access group called 'Restricted Project Administrator' + under the 'Projects' category can be selected. + +Usage +===== + +The new group has the same access rights as the administrator +(and see the same menus), but the project visibility is restricted as a project user. + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Ernesto Tejeda + * Pilar Vargas + +* `Moduon `_: + + * Eduardo López + * Eduardo de Miguel + +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-rafaelbn| image:: https://github.com/rafaelbn.png?size=40px + :target: https://github.com/rafaelbn + :alt: rafaelbn +.. |maintainer-edlopen| image:: https://github.com/edlopen.png?size=40px + :target: https://github.com/edlopen + :alt: edlopen + +Current `maintainers `__: + +|maintainer-rafaelbn| |maintainer-edlopen| + +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/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/__init__.py b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/__init__.py new file mode 100644 index 0000000..1ccbfaa --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/__init__.py @@ -0,0 +1 @@ +from .hooks import uninstall_hook diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/__manifest__.py b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/__manifest__.py new file mode 100644 index 0000000..d7a9dd1 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/__manifest__.py @@ -0,0 +1,14 @@ +{ + "name": "Project Administrator Restricted Visibility", + "version": "16.0.1.0.2", + "summary": "Adds a 'Project Administrator' access group " + "with restricted visibility to 'Projects'", + "author": "Tecnativa, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "license": "AGPL-3", + "category": "Project", + "depends": ["project"], + "data": ["security/project_security.xml"], + "uninstall_hook": "uninstall_hook", + "maintainers": ["rafaelbn", "edlopen"], +} diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/hooks.py b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/hooks.py new file mode 100644 index 0000000..f4affb0 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/hooks.py @@ -0,0 +1,27 @@ +# Copyright 2023 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import SUPERUSER_ID, api + + +def uninstall_hook(cr, registry): + """Restore project.project_project_manager_rule""" + env = api.Environment(cr, SUPERUSER_ID, {}) + # Removing the 'group_full_project_manager' group before renaming the original + # 'Project: Administrator' group (project.group_project_manager) to 'Administrator' + # in order to avoid getting a SQL constraint error: + # 'duplicate key value violates unique constraint "res_groups_name_uniq'" + group_full_project_manager = env.ref( + "project_administrator_restricted_visibility.group_full_project_manager" + ) + env.ref("project.project_project_manager_rule").write( + {"groups": [(3, group_full_project_manager.id)]} + ) + group_full_project_manager.unlink() + # Rename the original 'Project: Administrator' access group back to 'Administrator' + # and reassign the access rule for projects that it previously had. + env.ref("project.group_project_manager").write( + { + "name": "Administrator", + "rule_groups": [(4, env.ref("project.project_project_manager_rule").id)], + } + ) diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/bs.po b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/bs.po new file mode 100644 index 0000000..6ffdf22 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/bs.po @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_administrator_restricted_visibility +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_administrator_restricted_visibility +#: model:res.groups,name:project_administrator_restricted_visibility.group_full_project_manager +msgid "Full Administrator" +msgstr "Puni administrator" diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/ca.po b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/ca.po new file mode 100644 index 0000000..7cd12cc --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/ca.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_administrator_restricted_visibility +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-07-23 15:58+0000\n" +"Last-Translator: Eugeni Chafer \n" +"Language-Team: none\n" +"Language: ca\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.6.2\n" + +#. module: project_administrator_restricted_visibility +#: model:res.groups,name:project_administrator_restricted_visibility.group_full_project_manager +msgid "Full Administrator" +msgstr "Administrador global" diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/es.po b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/es.po new file mode 100644 index 0000000..543cc4d --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/es.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_administrator_restricted_visibility +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-07-10 09:58+0000\n" +"Last-Translator: Pilar Vargas \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 5.6.2\n" + +#. module: project_administrator_restricted_visibility +#: model:res.groups,name:project_administrator_restricted_visibility.group_full_project_manager +msgid "Full Administrator" +msgstr "Administrador Total" diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/it.po b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/it.po new file mode 100644 index 0000000..fabd1a9 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/it.po @@ -0,0 +1,25 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_administrator_restricted_visibility +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-19 08:08+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 4.17\n" + +#. module: project_administrator_restricted_visibility +#: model:res.groups,name:project_administrator_restricted_visibility.group_full_project_manager +msgid "Full Administrator" +msgstr "Gestione completa" + +#~ msgid "Administrator" +#~ msgstr "Amministratore" diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/project_administrator_restricted_visibility.pot b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/project_administrator_restricted_visibility.pot new file mode 100644 index 0000000..d5ea1c6 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/i18n/project_administrator_restricted_visibility.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_administrator_restricted_visibility +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_administrator_restricted_visibility +#: model:res.groups,name:project_administrator_restricted_visibility.group_full_project_manager +msgid "Full Administrator" +msgstr "" diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/CONFIGURE.rst new file mode 100644 index 0000000..17a2c9d --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/CONFIGURE.rst @@ -0,0 +1,6 @@ +To configure this module, you need to: + +#. Go to *Settings > Users & Companies > Users* +#. Create a user or edit an existing one. +#. A new access group called 'Restricted Project Administrator' + under the 'Projects' category can be selected. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..c50a898 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/CONTRIBUTORS.rst @@ -0,0 +1,9 @@ +* `Tecnativa `_: + + * Ernesto Tejeda + * Pilar Vargas + +* `Moduon `_: + + * Eduardo López + * Eduardo de Miguel diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/DESCRIPTION.rst new file mode 100644 index 0000000..8910fa4 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module extends the functionality of 'Project' module to add a new +'Project Administrator' access group with restricted visibility to the projects. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/USAGE.rst b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/USAGE.rst new file mode 100644 index 0000000..62c7778 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/readme/USAGE.rst @@ -0,0 +1,2 @@ +The new group has the same access rights as the administrator +(and see the same menus), but the project visibility is restricted as a project user. diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/security/project_security.xml b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/security/project_security.xml new file mode 100644 index 0000000..dd8af5f --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/security/project_security.xml @@ -0,0 +1,30 @@ + + + + + Restricted Administrator + + + + + Project: Can manage its own projects + + [('user_id', '=', user.id)] + + + + + Full Administrator + + + + + diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/static/description/icon.png b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/static/description/index.html b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/static/description/index.html new file mode 100644 index 0000000..c767d7a --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/static/description/index.html @@ -0,0 +1,452 @@ + + + + + +Project Administrator Restricted Visibility + + + +
+

Project Administrator Restricted Visibility

+ + +

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

+

This module extends the functionality of ‘Project’ module to add a new +‘Project Administrator’ access group with restricted visibility to the projects.

+

Table of contents

+ +
+

Configuration

+

To configure this module, you need to:

+
    +
  1. Go to Settings > Users & Companies > Users
  2. +
  3. Create a user or edit an existing one.
  4. +
  5. A new access group called ‘Restricted Project Administrator’ +under the ‘Projects’ category can be selected.
  6. +
+
+
+

Usage

+

The new group has the same access rights as the administrator +(and see the same menus), but the project visibility is restricted as a project user.

+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:
      +
    • Ernesto Tejeda
    • +
    • Pilar Vargas
    • +
    +
  • +
  • Moduon:
      +
    • Eduardo López
    • +
    • Eduardo de Miguel
    • +
    +
  • +
+
+
+

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 maintainers:

+

rafaelbn edlopen

+

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/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/tests/__init__.py b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/tests/__init__.py new file mode 100644 index 0000000..0ea0fe1 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_project_administrator_restricted_visibility +from . import test_uninstall_hook diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/tests/test_project_administrator_restricted_visibility.py b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/tests/test_project_administrator_restricted_visibility.py new file mode 100644 index 0000000..509176f --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/tests/test_project_administrator_restricted_visibility.py @@ -0,0 +1,70 @@ +# Copyright 2023 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo.tests.common import TransactionCase, new_test_user, users + + +class TestProjectAdministratorRestrictedVisibility(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.user_admin = cls.env.ref("base.user_admin") + cls.user_user_padmin = new_test_user( + cls.env, + login="project-user", + groups="project.group_project_user", + ) + cls.user_restrcited_padmin = new_test_user( + cls.env, + login="restricted-project-admin", + groups="project.group_project_manager", + ) + cls.user_full_padmin = new_test_user( + cls.env, + login="project-admin", + groups="project_administrator_restricted_visibility.group_full_project_manager", + ) + cls.restricted_project = cls.env["project.project"].create( + { + "name": "Restricted project", + "privacy_visibility": "followers", + "user_id": cls.user_admin.id, + "message_partner_ids": [(6, 0, cls.user_admin.ids)], + } + ) + + def _create_defaults(self): + """Define default field values""" + self.env["ir.default"].sudo().create( + { + "field_id": self.env.ref( + "project.field_project_project__privacy_visibility" + ).id, + "json_value": '"followers"', + "user_id": self.env.user.id, + } + ) + + @users("restricted-project-admin", "project-admin") + def test_create_new_project(self): + """'Restricted project administrator' can create + projects like a 'Project administrator'. + """ + self._create_defaults() + project = self.env["project.project"].create({"name": "Another project"}) + self.assertEqual(project.privacy_visibility, "followers") + project.write({"name": "Another test project"}) + project.unlink() + + @users("restricted-project-admin", "project-user") + def test_cant_see_restricted_projects(self): + """'Restricted project administrator' has the same project restriction + as the 'Project user'. + """ + all_project = self.env["project.project"].search([]) + self.assertNotIn(self.restricted_project, all_project) + + @users("project-admin") + def test_can_see_all_projects(self): + """'Full project administrator' can see all projects.""" + all_project = self.env["project.project"].search([]) + self.assertIn(self.restricted_project, all_project) diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/tests/test_uninstall_hook.py b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/tests/test_uninstall_hook.py new file mode 100644 index 0000000..8526c70 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/project_administrator_restricted_visibility/tests/test_uninstall_hook.py @@ -0,0 +1,28 @@ +# Copyright 2024 Moduon Team S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.tests.common import TransactionCase + +from ..hooks import uninstall_hook + + +class TestUninstallHook(TransactionCase): + def test_01_uninstall_hook(self): + restricted_group = self.env.ref("project.group_project_manager") + full_group = self.env.ref( + "project_administrator_restricted_visibility.group_full_project_manager" + ) + manager_rule = self.env.ref("project.project_project_manager_rule") + # Checks Restricted Administrator Group has not project manager rule + self.assertFalse( + any(set(restricted_group.rule_groups.ids) & set(manager_rule.ids)) + ) + # Checks Full Administrator Group has project manager rule + self.assertTrue(any(set(full_group.rule_groups.ids) & set(manager_rule.ids))) + + uninstall_hook(self.env.cr, False) + + # Checks if the rules have been reset + self.assertTrue( + any(set(restricted_group.rule_groups.ids) & set(manager_rule.ids)) + ) + self.assertFalse(any(set(full_group.rule_groups.ids) & set(manager_rule.ids))) diff --git a/odoo-bringout-oca-project-project_administrator_restricted_visibility/pyproject.toml b/odoo-bringout-oca-project-project_administrator_restricted_visibility/pyproject.toml new file mode 100644 index 0000000..d73c780 --- /dev/null +++ b/odoo-bringout-oca-project-project_administrator_restricted_visibility/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_administrator_restricted_visibility" +version = "16.0.0" +description = "Project Administrator Restricted Visibility - Adds a 'Project Administrator' access group with restricted visibility to 'Projects'" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_administrator_restricted_visibility"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_department/README.md b/odoo-bringout-oca-project-project_department/README.md new file mode 100644 index 0000000..cecff8f --- /dev/null +++ b/odoo-bringout-oca-project-project_department/README.md @@ -0,0 +1,47 @@ +# Project Department Categorization + +Odoo addon: project_department + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_department +``` + +## Dependencies + +This addon depends on: +- project +- hr + +## Manifest Information + +- **Name**: Project Department Categorization +- **Version**: 16.0.1.0.0 +- **Category**: Generic Modules/Projects & Services +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_department`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_department/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_department/doc/ARCHITECTURE.md new file mode 100644 index 0000000..8ed7471 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_department Module - project_department + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_department/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_department/doc/CONFIGURATION.md new file mode 100644 index 0000000..5253c55 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_department. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_department/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_department/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_department/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_department/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a8f7d45 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) +- [hr](https://github.com/bringout/oca-ocb-hr/tree/dc1405e12dbe76ffb119a0feb323b56ae2c58522/odoo-bringout-oca-ocb-hr) diff --git a/odoo-bringout-oca-project-project_department/doc/FAQ.md b/odoo-bringout-oca-project-project_department/doc/FAQ.md new file mode 100644 index 0000000..86b31d0 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_department or install in UI. diff --git a/odoo-bringout-oca-project-project_department/doc/INSTALL.md b/odoo-bringout-oca-project-project_department/doc/INSTALL.md new file mode 100644 index 0000000..1c9d173 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_department" +# or +uv pip install odoo-bringout-oca-project-project_department" +``` diff --git a/odoo-bringout-oca-project-project_department/doc/MODELS.md b/odoo-bringout-oca-project-project_department/doc/MODELS.md new file mode 100644 index 0000000..5d5a323 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in project_department. + +```mermaid +classDiagram + class project_project + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_department/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_department/doc/OVERVIEW.md new file mode 100644 index 0000000..61c7bae --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_department. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_department +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_department/doc/REPORTS.md b/odoo-bringout-oca-project-project_department/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_department/doc/SECURITY.md b/odoo-bringout-oca-project-project_department/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_department/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_department/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_department/doc/USAGE.md b/odoo-bringout-oca-project-project_department/doc/USAGE.md new file mode 100644 index 0000000..f3fe7f3 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_department +``` diff --git a/odoo-bringout-oca-project-project_department/doc/WIZARDS.md b/odoo-bringout-oca-project-project_department/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_department/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_department/project_department/README.rst b/odoo-bringout-oca-project-project_department/project_department/README.rst new file mode 100644 index 0000000..a7cbd3e --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/README.rst @@ -0,0 +1,86 @@ +================================= +Project Department Categorization +================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5d274ae3667813d62f1d72d8217952a1c853c4becd92d57418414381a5edf8b4 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_department + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_department + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Add Department to Projects and task to corresponding tree, search and form +views. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Camptocamp +* Daniel Reis + +Contributors +~~~~~~~~~~~~ + +* Joël Grand-Guillaume +* Daniel Reis +* Yannick Vaucher +* Dave Burkholder +* Artem Kostyuk +* Vaidehi Vasani +* `Tecnativa `_ + + * Carlos Roca + +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. + +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/odoo-bringout-oca-project-project_department/project_department/__init__.py b/odoo-bringout-oca-project-project_department/project_department/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_department/project_department/__manifest__.py b/odoo-bringout-oca-project-project_department/project_department/__manifest__.py new file mode 100644 index 0000000..1e00a67 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2014 Joël Grand-Guillaume (Camptocamp) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + "name": "Project Department Categorization", + "version": "16.0.1.0.0", + "author": "Camptocamp, Daniel Reis, Odoo Community Association (OCA)", + "license": "AGPL-3", + "category": "Generic Modules/Projects & Services", + "website": "https://github.com/OCA/project", + "depends": [ + "project", + "hr", + ], + "data": ["views/project.xml"], +} diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/ar.po b/odoo-bringout-oca-project-project_department/project_department/i18n/ar.po new file mode 100644 index 0000000..70dc959 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/ar.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "مهمة" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/bs.po b/odoo-bringout-oca-project-project_department/project_department/i18n/bs.po new file mode 100644 index 0000000..92e1e5c --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/bs.po @@ -0,0 +1,36 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Odjel" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Projektni odjel" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/ca.po b/odoo-bringout-oca-project-project_department/project_department/i18n/ca.po new file mode 100644 index 0000000..35cbff4 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/ca.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2024-07-23 15:58+0000\n" +"Last-Translator: Eugeni Chafer \n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"Language: ca\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.6.2\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Departament" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "Projectes" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Departament del projecte" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tasca" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/de.po b/odoo-bringout-oca-project-project_department/project_department/i18n/de.po new file mode 100644 index 0000000..94da1e7 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/de.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2023-03-03 09:15+0000\n" +"Last-Translator: Nils Coenen \n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\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 4.14.1\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Abteilung" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Projekt Abteilung" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Aufgabe" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/el.po b/odoo-bringout-oca-project-project_department/project_department/i18n/el.po new file mode 100644 index 0000000..7f12dd2 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/el.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Greek (https://www.transifex.com/oca/teams/23907/el/)\n" +"Language: el\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Εργασία" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/es.po b/odoo-bringout-oca-project-project_department/project_department/i18n/es.po new file mode 100644 index 0000000..67fbd4a --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/es.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2023-09-03 13:36+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Departamento" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Departamento de proyecto" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/es_CR.po b/odoo-bringout-oca-project-project_department/project_department/i18n/es_CR.po new file mode 100644 index 0000000..925249b --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/es_CR.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/oca/" +"teams/23907/es_CR/)\n" +"Language: es_CR\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/es_MX.po b/odoo-bringout-oca-project-project_department/project_department/i18n/es_MX.po new file mode 100644 index 0000000..439c75a --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/es_MX.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/es_VE.po b/odoo-bringout-oca-project-project_department/project_department/i18n/es_VE.po new file mode 100644 index 0000000..ba3882e --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/es_VE.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Venezuela) (https://www.transifex.com/oca/" +"teams/23907/es_VE/)\n" +"Language: es_VE\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/fi.po b/odoo-bringout-oca-project-project_department/project_department/i18n/fi.po new file mode 100644 index 0000000..894384b --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/fi.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tehtävä" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/fr.po b/odoo-bringout-oca-project-project_department/project_department/i18n/fr.po new file mode 100644 index 0000000..5e0477b --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/fr.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2018-06-18 09:34+0000\n" +"Last-Translator: c2cdidier \n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\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.0.1\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Département" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Département du projet" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tâche" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/gl.po b/odoo-bringout-oca-project-project_department/project_department/i18n/gl.po new file mode 100644 index 0000000..157d17d --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/gl.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"Language: gl\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/hr.po b/odoo-bringout-oca-project-project_department/project_department/i18n/hr.po new file mode 100644 index 0000000..b995433 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/hr.po @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-06 02:45+0000\n" +"PO-Revision-Date: 2023-02-15 17:23+0000\n" +"Last-Translator: Bole \n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Odjel" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Projektni odjel" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/hr_HR.po b/odoo-bringout-oca-project-project_department/project_department/i18n/hr_HR.po new file mode 100644 index 0000000..2663976 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/hr_HR.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/hu.po b/odoo-bringout-oca-project-project_department/project_department/i18n/hu.po new file mode 100644 index 0000000..f8f3674 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/hu.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n" +"Language: hu\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Feladat" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/it.po b/odoo-bringout-oca-project-project_department/project_department/i18n/it.po new file mode 100644 index 0000000..84c7943 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/it.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2023-04-17 23:00+0000\n" +"Last-Translator: mymage \n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\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 4.14.1\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Reparto" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Reparto progetto" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Lavoro" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/ja.po b/odoo-bringout-oca-project-project_department/project_department/i18n/ja.po new file mode 100644 index 0000000..ccc0d19 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/ja.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Japanese (https://www.transifex.com/oca/teams/23907/ja/)\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "タスク" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/lt.po b/odoo-bringout-oca-project-project_department/project_department/i18n/lt.po new file mode 100644 index 0000000..359d1bd --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/lt.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Lithuanian (https://www.transifex.com/oca/teams/23907/lt/)\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Užduotis" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/lv.po b/odoo-bringout-oca-project-project_department/project_department/i18n/lv.po new file mode 100644 index 0000000..7b47b02 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/lv.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Latvian (https://www.transifex.com/oca/teams/23907/lv/)\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Uzdevums" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/mk.po b/odoo-bringout-oca-project-project_department/project_department/i18n/mk.po new file mode 100644 index 0000000..3f89271 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/mk.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Macedonian (https://www.transifex.com/oca/teams/23907/mk/)\n" +"Language: mk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Задача" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/mn.po b/odoo-bringout-oca-project-project_department/project_department/i18n/mn.po new file mode 100644 index 0000000..0e8b7e6 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/mn.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Mongolian (https://www.transifex.com/oca/teams/23907/mn/)\n" +"Language: mn\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Даалгавар" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/nl.po b/odoo-bringout-oca-project-project_department/project_department/i18n/nl.po new file mode 100644 index 0000000..55c9382 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/nl.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Taak" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/nl_NL.po b/odoo-bringout-oca-project-project_department/project_department/i18n/nl_NL.po new file mode 100644 index 0000000..99c610f --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/nl_NL.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Afdeling" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Projectafdeling" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Taak" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/pl.po b/odoo-bringout-oca-project-project_department/project_department/i18n/pl.po new file mode 100644 index 0000000..86a52d7 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/pl.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" +"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" +"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Zadanie" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/project_department.pot b/odoo-bringout-oca-project-project_department/project_department/i18n/project_department.pot new file mode 100644 index 0000000..b089751 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/project_department.pot @@ -0,0 +1,36 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/pt.po b/odoo-bringout-oca-project-project_department/project_department/i18n/pt.po new file mode 100644 index 0000000..b8c522d --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/pt.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/pt_BR.po b/odoo-bringout-oca-project-project_department/project_department/i18n/pt_BR.po new file mode 100644 index 0000000..29aa76d --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/pt_BR.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2023-07-30 14:10+0000\n" +"Last-Translator: Adriano Prado \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\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" +"X-Generator: Weblate 4.17\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Departamento" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Departamento de Projeto" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/pt_PT.po b/odoo-bringout-oca-project-project_department/project_department/i18n/pt_PT.po new file mode 100644 index 0000000..87c137b --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/pt_PT.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2018-09-23 22:21+0000\n" +"Last-Translator: Daniel Reis \n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/" +"teams/23907/pt_PT/)\n" +"Language: pt_PT\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.1.1\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Departamento" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Departamento do Projeto" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/ro.po b/odoo-bringout-oca-project-project_department/project_department/i18n/ro.po new file mode 100644 index 0000000..146bc1b --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/ro.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Sarcina" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/sl.po b/odoo-bringout-oca-project-project_department/project_department/i18n/sl.po new file mode 100644 index 0000000..c6d787d --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/sl.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2019-07-24 18:43+0000\n" +"Last-Translator: Matjaz Mozetic \n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\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 3.7.1\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Oddelek" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Projektni oddelek" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Opravilo" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/sv.po b/odoo-bringout-oca-project-project_department/project_department/i18n/sv.po new file mode 100644 index 0000000..d4b46b2 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/sv.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2024-02-23 13:33+0000\n" +"Last-Translator: jakobkrabbe \n" +"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n" +"Language: sv\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "Avdelning" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "Projektavdelning" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Uppgift" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/tr.po b/odoo-bringout-oca-project-project_department/project_department/i18n/tr.po new file mode 100644 index 0000000..bec0365 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/tr.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\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_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Görev" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/uk.po b/odoo-bringout-oca-project-project_department/project_department/i18n/uk.po new file mode 100644 index 0000000..7ef0459 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/uk.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Ukrainian (https://www.transifex.com/oca/teams/23907/uk/)\n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "Завдання" diff --git a/odoo-bringout-oca-project-project_department/project_department/i18n/zh_CN.po b/odoo-bringout-oca-project-project_department/project_department/i18n/zh_CN.po new file mode 100644 index 0000000..736371d --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/i18n/zh_CN.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_department +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 02:52+0000\n" +"PO-Revision-Date: 2017-06-17 02:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_department +#: model_terms:ir.ui.view,arch_db:project_department.view_project_project_filter +msgid "Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_project +msgid "Project" +msgstr "" + +#. module: project_department +#: model:ir.model.fields,field_description:project_department.field_project_project__department_id +#: model:ir.model.fields,field_description:project_department.field_project_task__project_department_id +#: model_terms:ir.ui.view,arch_db:project_department.view_task_search_form +msgid "Project Department" +msgstr "" + +#. module: project_department +#: model:ir.model,name:project_department.model_project_task +msgid "Task" +msgstr "任务" diff --git a/odoo-bringout-oca-project-project_department/project_department/models/__init__.py b/odoo-bringout-oca-project-project_department/project_department/models/__init__.py new file mode 100644 index 0000000..351a3ad --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/models/__init__.py @@ -0,0 +1 @@ +from . import project diff --git a/odoo-bringout-oca-project-project_department/project_department/models/project.py b/odoo-bringout-oca-project-project_department/project_department/models/project.py new file mode 100644 index 0000000..5109388 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/models/project.py @@ -0,0 +1,22 @@ +# © 2014 Joël Grand-Guillaume (Camptocamp) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + project_department_id = fields.Many2one( + related="project_id.department_id", + string="Project Department", + store=True, + readonly=True, + ) + + +class ProjectProject(models.Model): + _inherit = "project.project" + + department_id = fields.Many2one( + comodel_name="hr.department", string="Project Department" + ) diff --git a/odoo-bringout-oca-project-project_department/project_department/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_department/project_department/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..7d9dc35 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/readme/CONTRIBUTORS.rst @@ -0,0 +1,9 @@ +* Joël Grand-Guillaume +* Daniel Reis +* Yannick Vaucher +* Dave Burkholder +* Artem Kostyuk +* Vaidehi Vasani +* `Tecnativa `_ + + * Carlos Roca diff --git a/odoo-bringout-oca-project-project_department/project_department/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_department/project_department/readme/DESCRIPTION.rst new file mode 100644 index 0000000..facd0d9 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +Add Department to Projects and task to corresponding tree, search and form +views. diff --git a/odoo-bringout-oca-project-project_department/project_department/static/description/icon.png b/odoo-bringout-oca-project-project_department/project_department/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_department/project_department/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_department/project_department/static/description/index.html b/odoo-bringout-oca-project-project_department/project_department/static/description/index.html new file mode 100644 index 0000000..ef74b15 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/static/description/index.html @@ -0,0 +1,432 @@ + + + + + + +Project Department Categorization + + + +
+

Project Department Categorization

+ + +

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

+

Add Department to Projects and task to corresponding tree, search and form +views.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Camptocamp
  • +
  • Daniel Reis
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_department/project_department/views/project.xml b/odoo-bringout-oca-project-project_department/project_department/views/project.xml new file mode 100644 index 0000000..a1c33e7 --- /dev/null +++ b/odoo-bringout-oca-project-project_department/project_department/views/project.xml @@ -0,0 +1,88 @@ + + + project.project.form + project.project + + form + + + + + + + + + project.project.select + project.project + + search + + + + + + + + + + + + project.project.tree + project.project + + tree + child_ids + + + + + + + + + project.task.search.form + project.task + + + + + + + + + + + + + + project.task.department.form + project.task + + + + + + + + + + + project.task.department.tree + project.task + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_department/pyproject.toml b/odoo-bringout-oca-project-project_department/pyproject.toml new file mode 100644 index 0000000..74ea81d --- /dev/null +++ b/odoo-bringout-oca-project-project_department/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-project-project_department" +version = "16.0.0" +description = "Project Department Categorization - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "odoo-bringout-oca-ocb-hr>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_department"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/README.md b/odoo-bringout-oca-project-project_duplicate_subtask/README.md new file mode 100644 index 0000000..60cbc92 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/README.md @@ -0,0 +1,46 @@ +# Project Duplicate subtask + +Odoo addon: project_duplicate_subtask + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_duplicate_subtask +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Duplicate subtask +- **Version**: 16.0.1.0.0 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_duplicate_subtask`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/ARCHITECTURE.md new file mode 100644 index 0000000..e3d560a --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_duplicate_subtask Module - project_duplicate_subtask + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/CONFIGURATION.md new file mode 100644 index 0000000..a2dd5cb --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_duplicate_subtask. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/FAQ.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/FAQ.md new file mode 100644 index 0000000..4208e87 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_duplicate_subtask or install in UI. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/INSTALL.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/INSTALL.md new file mode 100644 index 0000000..23ff24b --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_duplicate_subtask" +# or +uv pip install odoo-bringout-oca-project-project_duplicate_subtask" +``` diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/MODELS.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/MODELS.md new file mode 100644 index 0000000..ed56ceb --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_duplicate_subtask. + +```mermaid +classDiagram + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/OVERVIEW.md new file mode 100644 index 0000000..a3245f1 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_duplicate_subtask. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_duplicate_subtask +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/REPORTS.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/SECURITY.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/USAGE.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/USAGE.md new file mode 100644 index 0000000..e3627bc --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_duplicate_subtask +``` diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/doc/WIZARDS.md b/odoo-bringout-oca-project-project_duplicate_subtask/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/README.rst b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/README.rst new file mode 100644 index 0000000..b4dbffa --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/README.rst @@ -0,0 +1,85 @@ +========================= +Project Duplicate subtask +========================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9195c3a0abcc8cbaf20022734c176f28ee32489ccffcf83c459e0c01fe97028b + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_duplicate_subtask + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_duplicate_subtask + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a server action that allows to duplicate a task with its child tasks. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, there are two ways: + +#. Go to a task: Action > Duplicate with subtasks. +#. Go to the tasks list view, select the tasks you want to duplicate: Action > Duplicate with subtasks. + +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 +~~~~~~~ + +* Forgeflow + +Contributors +~~~~~~~~~~~~ + +* Mateu Griful +* Lois Rilo + +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. + +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/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/__init__.py b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/__manifest__.py b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/__manifest__.py new file mode 100644 index 0000000..be61345 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright (C) 2022 ForgeFlow S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +{ + "name": "Project Duplicate subtask", + "version": "16.0.1.0.0", + "category": "Project", + "website": "https://github.com/OCA/project", + "summary": "The module adds an action to duplicate tasks with the child subtasks", + "author": "Forgeflow, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["project"], + "data": ["views/project_duplicate_action.xml"], + "installable": True, + "auto_install": False, +} diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/bs.po b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/bs.po new file mode 100644 index 0000000..e1e5fbd --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/bs.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_duplicate_subtask +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_duplicate_subtask +#: model:ir.actions.server,name:project_duplicate_subtask.action_server_duplicate_subtasks +msgid "Duplicate with subtasks" +msgstr "Dupliciraj sa podzadacima" + +#. module: project_duplicate_subtask +#: model:ir.model,name:project_duplicate_subtask.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/es.po b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/es.po new file mode 100644 index 0000000..7ca7b2a --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/es.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_duplicate_subtask +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-09-07 16:36+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_duplicate_subtask +#: model:ir.actions.server,name:project_duplicate_subtask.action_server_duplicate_subtasks +msgid "Duplicate with subtasks" +msgstr "Duplicar con subtareas" + +#. module: project_duplicate_subtask +#: model:ir.model,name:project_duplicate_subtask.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/hr.po b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/hr.po new file mode 100644 index 0000000..ac56682 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/hr.po @@ -0,0 +1,28 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_duplicate_subtask +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-06-18 11:59+0000\n" +"Last-Translator: Bole \n" +"Language-Team: none\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.17\n" + +#. module: project_duplicate_subtask +#: model:ir.actions.server,name:project_duplicate_subtask.action_server_duplicate_subtasks +msgid "Duplicate with subtasks" +msgstr "Dupliciraj sa podzadacima" + +#. module: project_duplicate_subtask +#: model:ir.model,name:project_duplicate_subtask.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/it.po b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/it.po new file mode 100644 index 0000000..62cb125 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/it.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_duplicate_subtask +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-31 10:11+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 4.17\n" + +#. module: project_duplicate_subtask +#: model:ir.actions.server,name:project_duplicate_subtask.action_server_duplicate_subtasks +msgid "Duplicate with subtasks" +msgstr "Duplica con sottolavori" + +#. module: project_duplicate_subtask +#: model:ir.model,name:project_duplicate_subtask.model_project_task +msgid "Task" +msgstr "Lavoro" diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/project_duplicate_subtask.pot b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/project_duplicate_subtask.pot new file mode 100644 index 0000000..22e930c --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/project_duplicate_subtask.pot @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_duplicate_subtask +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_duplicate_subtask +#: model:ir.actions.server,name:project_duplicate_subtask.action_server_duplicate_subtasks +msgid "Duplicate with subtasks" +msgstr "" + +#. module: project_duplicate_subtask +#: model:ir.model,name:project_duplicate_subtask.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/pt.po b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/pt.po new file mode 100644 index 0000000..41a5978 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/pt.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_duplicate_subtask +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-02-07 18:26+0000\n" +"Last-Translator: Peter Romão \n" +"Language-Team: none\n" +"Language: pt\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.6.2\n" + +#. module: project_duplicate_subtask +#: model:ir.actions.server,name:project_duplicate_subtask.action_server_duplicate_subtasks +msgid "Duplicate with subtasks" +msgstr "Duplicar com subtarefas" + +#. module: project_duplicate_subtask +#: model:ir.model,name:project_duplicate_subtask.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/pt_BR.po b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/pt_BR.po new file mode 100644 index 0000000..1cf244e --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/i18n/pt_BR.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_duplicate_subtask +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-09 02:52+0000\n" +"Last-Translator: Adriano Prado \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" +"X-Generator: Weblate 4.17\n" + +#. module: project_duplicate_subtask +#: model:ir.actions.server,name:project_duplicate_subtask.action_server_duplicate_subtasks +msgid "Duplicate with subtasks" +msgstr "Duplicar com Subtarefas" + +#. module: project_duplicate_subtask +#: model:ir.model,name:project_duplicate_subtask.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/models/__init__.py b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/models/__init__.py new file mode 100644 index 0000000..edf2d36 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/models/__init__.py @@ -0,0 +1 @@ +from . import project_task diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/models/project_task.py b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/models/project_task.py new file mode 100644 index 0000000..0e5128b --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/models/project_task.py @@ -0,0 +1,39 @@ +# Copyright (C) 2022 ForgeFlow S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from odoo import models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + def action_duplicate_subtasks(self): + action = self.env.ref("project.action_view_task") + result = action.read()[0] + task_created = self.env["project.task"] + for task in self: + new_task = task.copy() + task_created |= new_task + if task.child_ids: + + def duplicate_childs(task, new_task): + if task.child_ids: + for child in task.child_ids: + new_subtask = child.copy() + new_subtask.write({"parent_id": new_task.id}) + duplicate_childs(child, new_subtask) + + duplicate_childs(task, new_task) + + if len(task_created) == 1: + res = self.env.ref("project.view_task_form2") + result["views"] = [(res and res.id or False, "form")] + result["res_id"] = new_task.id + action["context"] = { + "form_view_initial_mode": "edit", + "force_detailed_view": "true", + } + + else: + result["domain"] = "[('id', 'in', " + str(task_created.ids) + ")]" + return result diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..087dd29 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Mateu Griful +* Lois Rilo diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/readme/DESCRIPTION.rst new file mode 100644 index 0000000..7f46cf8 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds a server action that allows to duplicate a task with its child tasks. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/readme/USAGE.rst b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/readme/USAGE.rst new file mode 100644 index 0000000..e0d34eb --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/readme/USAGE.rst @@ -0,0 +1,4 @@ +To use this module, there are two ways: + +#. Go to a task: Action > Duplicate with subtasks. +#. Go to the tasks list view, select the tasks you want to duplicate: Action > Duplicate with subtasks. diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/static/description/icon.png b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/static/description/index.html b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/static/description/index.html new file mode 100644 index 0000000..e5f1537 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +Project Duplicate subtask + + + +
+

Project Duplicate subtask

+ + +

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

+

This module adds a server action that allows to duplicate a task with its child tasks.

+

Table of contents

+ +
+

Usage

+

To use this module, there are two ways:

+
    +
  1. Go to a task: Action > Duplicate with subtasks.
  2. +
  3. Go to the tasks list view, select the tasks you want to duplicate: Action > Duplicate with subtasks.
  4. +
+
+
+

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

+
    +
  • Forgeflow
  • +
+
+ +
+

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.

+

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/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/tests/__init__.py b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/tests/__init__.py new file mode 100644 index 0000000..6a30cf0 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/tests/__init__.py @@ -0,0 +1 @@ +from . import test_project_duplicate_subtask diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/tests/test_project_duplicate_subtask.py b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/tests/test_project_duplicate_subtask.py new file mode 100644 index 0000000..5172b4e --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/tests/test_project_duplicate_subtask.py @@ -0,0 +1,51 @@ +# Copyright (C) 2021 ForgeFlow S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from odoo.tests.common import TransactionCase + + +class TestProjectDuplicateSubtask(TransactionCase): + def setUp(self): + super().setUp() + + self.project1 = self.env["project.project"].create({"name": "Project 1"}) + self.task1 = self.env["project.task"].create( + {"name": "name1", "project_id": self.project1.id} + ) + self.subtask1 = self.env["project.task"].create( + {"name": "2", "project_id": self.project1.id, "parent_id": self.task1.id} + ) + self.subtask2 = self.env["project.task"].create( + {"name": "3", "project_id": self.project1.id, "parent_id": self.task1.id} + ) + + def test_check_subtasks(self): + self.task1.action_duplicate_subtasks() + + new_task = self.env["project.task"].search( + [("name", "ilike", self.task1.name), ("name", "ilike", "copy")] + ) + self.assertEqual( + len(new_task.child_ids), 2, "Two subtasks should have been created" + ) + + def test_check_subtasks_of_substasks(self): + self.sub_subtask1_1 = self.env["project.task"].create( + {"name": "4", "project_id": self.project1.id, "parent_id": self.subtask1.id} + ) + self.task1.action_duplicate_subtasks() + + new_task = self.env["project.task"].search( + [("name", "ilike", self.task1.name), ("name", "ilike", "copy")] + ) + self.assertEqual( + len(new_task.child_ids), 2, "Two subtasks should have been created" + ) + new_subtask = self.env["project.task"].search( + [ + ("name", "=", self.subtask1.name + " (copy)"), + ] + ) + self.assertEqual( + len(new_subtask.child_ids), 1, "One subtask should have been created" + ) diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/views/project_duplicate_action.xml b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/views/project_duplicate_action.xml new file mode 100644 index 0000000..023a796 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/project_duplicate_subtask/views/project_duplicate_action.xml @@ -0,0 +1,10 @@ + + + + Duplicate with subtasks + + + code + action = records.action_duplicate_subtasks() + + diff --git a/odoo-bringout-oca-project-project_duplicate_subtask/pyproject.toml b/odoo-bringout-oca-project-project_duplicate_subtask/pyproject.toml new file mode 100644 index 0000000..9df4960 --- /dev/null +++ b/odoo-bringout-oca-project-project_duplicate_subtask/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_duplicate_subtask" +version = "16.0.0" +description = "Project Duplicate subtask - The module adds an action to duplicate tasks with the child subtasks" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_duplicate_subtask"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_hr/README.md b/odoo-bringout-oca-project-project_hr/README.md new file mode 100644 index 0000000..0d9edf6 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/README.md @@ -0,0 +1,47 @@ +# Project HR + +Odoo addon: project_hr + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_hr +``` + +## Dependencies + +This addon depends on: +- project +- hr + +## Manifest Information + +- **Name**: Project HR +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_hr`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_hr/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_hr/doc/ARCHITECTURE.md new file mode 100644 index 0000000..ad3ea71 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_hr Module - project_hr + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_hr/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_hr/doc/CONFIGURATION.md new file mode 100644 index 0000000..81c9273 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_hr. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_hr/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_hr/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_hr/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_hr/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a8f7d45 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) +- [hr](https://github.com/bringout/oca-ocb-hr/tree/dc1405e12dbe76ffb119a0feb323b56ae2c58522/odoo-bringout-oca-ocb-hr) diff --git a/odoo-bringout-oca-project-project_hr/doc/FAQ.md b/odoo-bringout-oca-project-project_hr/doc/FAQ.md new file mode 100644 index 0000000..661006c --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_hr or install in UI. diff --git a/odoo-bringout-oca-project-project_hr/doc/INSTALL.md b/odoo-bringout-oca-project-project_hr/doc/INSTALL.md new file mode 100644 index 0000000..987290d --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_hr" +# or +uv pip install odoo-bringout-oca-project-project_hr" +``` diff --git a/odoo-bringout-oca-project-project_hr/doc/MODELS.md b/odoo-bringout-oca-project-project_hr/doc/MODELS.md new file mode 100644 index 0000000..1c390d6 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/MODELS.md @@ -0,0 +1,15 @@ +# Models + +Detected core models and extensions in project_hr. + +```mermaid +classDiagram + class hr_employee + class project_project + class project_task + class res_users +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_hr/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_hr/doc/OVERVIEW.md new file mode 100644 index 0000000..b55edd0 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_hr. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_hr +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_hr/doc/REPORTS.md b/odoo-bringout-oca-project-project_hr/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_hr/doc/SECURITY.md b/odoo-bringout-oca-project-project_hr/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_hr/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_hr/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_hr/doc/USAGE.md b/odoo-bringout-oca-project-project_hr/doc/USAGE.md new file mode 100644 index 0000000..aacbf72 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_hr +``` diff --git a/odoo-bringout-oca-project-project_hr/doc/WIZARDS.md b/odoo-bringout-oca-project-project_hr/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_hr/project_hr/README.rst b/odoo-bringout-oca-project-project_hr/project_hr/README.rst new file mode 100644 index 0000000..dbe2994 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/README.rst @@ -0,0 +1,143 @@ +========== +Project HR +========== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:1bdcd198e744a57c7e0c8cb01b71534a9be6e6f8bc6048b6ba9ea1a89c1617ef + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |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/16.0/project_hr + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_hr + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This is a technical module for adding some HR information to projects and +provide technical fields with HR information: + +- Employee categories at project and task level. +- Employee linked to the user assigned to a task. +- Employee categories at user level. + +These fields can be used later for extra features like task scheduling or +security restrictions. + +It also provides some facilities on project management: + +* Limit selection of assigned users according selected employee category at + task level. +* Limit selection of employee categories at task level depending on the + selected categories at project level. All are shown if no categories at + project level. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +For setting employee categories at project level: + +#. Go to *Project > Projects*. +#. Click on the 3 vertical dots of one of the project kanban cards for + unfolding options and select "Settings". +#. Put the wanted employee categories on the field "Employee Categories". + +For setting employee categories: + +#. Go to *Project > All Tasks*. +#. Select or create a new task. +#. Put the wanted employee categories on the field "Employee categories". +#. If there's already some employee categories selected at project level, those + will be the only selectable ones in the task. + +Usage +===== + +#. Go to *Project > Search > Tasks*. +#. If there's an employee category selected in the task, you will only be able + to select those users whose employee belongs to that category. + +Known issues / Roadmap +====================== + +* Limit project and task visibility according employee categories through + overriding security methods (as through record rules is not possible without + modifying existing ones). + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Pedro M. Baeza + * Victor M.M. Torres + * Ernesto Tejeda + * Pilar Vargas + +* `CorporateHub `__ + + * Alexey Pelykh + +* Alfadil Tabar + +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-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px + :target: https://github.com/pedrobaeza + :alt: pedrobaeza + +Current `maintainer `__: + +|maintainer-pedrobaeza| + +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/odoo-bringout-oca-project-project_hr/project_hr/__init__.py b/odoo-bringout-oca-project-project_hr/project_hr/__init__.py new file mode 100644 index 0000000..69f7bab --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/odoo-bringout-oca-project-project_hr/project_hr/__manifest__.py b/odoo-bringout-oca-project-project_hr/project_hr/__manifest__.py new file mode 100644 index 0000000..c3aa4aa --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2018 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Project HR", + "summary": "Link HR with project", + "development_status": "Production/Stable", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Tecnativa, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "depends": ["project", "hr"], + "data": ["views/project_task_views.xml", "views/project_project_views.xml"], + "maintainers": ["pedrobaeza"], +} diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/bs.po b/odoo-bringout-oca-project-project_hr/project_hr/i18n/bs.po new file mode 100644 index 0000000..ac130d0 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/bs.po @@ -0,0 +1,110 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "Dozvoljene kategorije HR" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "Dozvoljeno korisnicima" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "Djelatnik" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "Kategorije djelatnika" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "HR Kategorije" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "Povezani zaposleni" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "Projekat" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "Korisnik" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "Ne možete dodeliti kategoriju koja nije dozvoljena na nivou projekta." + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/ca.po b/odoo-bringout-oca-project-project_hr/project_hr/i18n/ca.po new file mode 100644 index 0000000..56be6d8 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/ca.po @@ -0,0 +1,133 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-11-18 17:36+0000\n" +"Last-Translator: pere-aquarian \n" +"Language-Team: none\n" +"Language: ca\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.3.2\n" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "Categories de RRHH permeses" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "Usuaris/àries permesos/es" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "Empleat/da" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "Categories d'empleat/da" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "Categories de RRHH" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" +"Aquí pot enllaçar el projecte a vàries categories de l'empleat/da, que seran " +"les permeses a les tasques." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" +"Aquí pot seleccionar la categoria de l'empleat/da adequada per a realitzar " +"aquesta tasca, limitant els/les usuaris/àries seleccionables per a ser " +"assignats/ades a aquells que pertanyen a la categoria." + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "Projecte" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "Tasca" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" +"Camp tècnic per a calcular les categories de l'empleat/da permeses conforme " +"a les categories establertes a nivell de projecte." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" +"Camp tècnic per a calcular els/les usuaris/àries permesos/es conforme a les " +"categories establertes a nivell d'empleat/ada." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" +"Camp tècnic per a calcular dinàmicament les categories de l'empleat/da " +"relacionat/da a l'usuari de la companyia actual." + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "" +"No pot assignar una categoria que no està permesa a nivell de projecte." + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" +"No pot assignar un/a usuari/ària que no pertany a la categoria d'empleat/ada " +"seleccionada." + +#~ msgid "Linked employee" +#~ msgstr "Empleat/da relacionat/da" + +#~ msgid "Users" +#~ msgstr "Usuaris/àries" diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/de.po b/odoo-bringout-oca-project-project_hr/project_hr/i18n/de.po new file mode 100644 index 0000000..dc6373c --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/de.po @@ -0,0 +1,133 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-20 11:10+0000\n" +"Last-Translator: Nils Coenen \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 4.17\n" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "Erlaubte HR Kategorien" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "Erlaubte Benutzer" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "Mitarbeiter" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "Mitarbeiter-Kategorien" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "HR Kategorien" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" +"Einem Projekt können mehrere Mitarbeiter-Kategorien zugewiesen werden. Nur " +"diese können in Aufgaben ausgewählt werden." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" +"Einer Aufgabe kann eine Mitarbeiter-Kategorie zugewiesen werden. Aufgaben " +"dürfen dann nur Mitarbeitern dieser Kategorie zugewiesen werden." + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "Verknüpfte Mitarbeiter" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "Aufgabe" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" +"Dies ist ein technisch benötigtes Feld zur Berechnung der erlaubten " +"Mitarbeiter-Kategorien, die auf Projektebene festgelegt wurden." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" +"Dies ist ein technisch benötigtes Feld zur Berechnung der erlaubten " +"Mitarbeiter, die zur Mitarbeiter-Kategorie gehören." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" +"Dies ist ein technisch benötigtes Feld zur dynamischen Berechnung der " +"Mitarbeiter-Kategorien, die zum Benutzer des aktuellen Unternehmens gehören." + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "Benutzer" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "" +"Es darf keine Kategorie zu der Aufgabe hinzugefügt werden, die auf " +"Projektebene nicht erlaubt wurde." + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" +"Der Aufgabe darf kein Benutzer zugewiesen werden, der nicht zur gewählten " +"Mitarbeiter-Kategorie gehört." + +#~ msgid "Linked employee" +#~ msgstr "Zugehöriger Mitarbeiter" + +#~ msgid "Users" +#~ msgstr "Benutzer" diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/es.po b/odoo-bringout-oca-project-project_hr/project_hr/i18n/es.po new file mode 100644 index 0000000..f2df476 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/es.po @@ -0,0 +1,134 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-11-17 16:50+0000\n" +"PO-Revision-Date: 2023-09-03 13:36+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: \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_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "Categorías RRHH permitidas" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "Usuarios permitidos" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "Empleado/a" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "Categorías de empleado" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "Categorías RRHH" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" +"Aquí puede enlazar el proyecto a varias categorías de empleado, que serán " +"las permitidas en las tareas." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" +"Aquí puede seleccionar la categoría de empleado adecuada para realizar esta " +"tarea, limitando los usuarios seleccionables para ser asignados a aquellos " +"que pertenezcan a la categoría." + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "Empleados relacionados" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" +"Campo técnico para calcular las categorías de empleado permitidos conforme " +"las categorías a nivel de proyecto." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" +"Campo técnico para calcular los usuarios permitidos conforme a la categoría " +"de empleado." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" +"Campo técnico para calcular dinámicamente las categorías de empleado " +"enlazadas con el usuario en la compañía actual." + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "Usuario" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "" +"No puede asignar una categoría que no está permitida a nivel de proyecto." + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" +"No puede asignar un usuario que no pertenezca a la categoría de empleado " +"seleccionada." + +#~ msgid "Linked employee" +#~ msgstr "Empleado relacionado" + +#~ msgid "Users" +#~ msgstr "Usuarios" diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/hr.po b/odoo-bringout-oca-project-project_hr/project_hr/i18n/hr.po new file mode 100644 index 0000000..c86b30e --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/hr.po @@ -0,0 +1,114 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-12-02 16:28+0000\n" +"Last-Translator: Bole \n" +"Language-Team: none\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.9.1\n" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "Dozvoljene kategorije HR" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "Dozvoljeno korisnicima" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "Djelatnik" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "Kategorije djelatnika" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "HR Kategorije" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/it.po b/odoo-bringout-oca-project-project_hr/project_hr/i18n/it.po new file mode 100644 index 0000000..cb39387 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/it.po @@ -0,0 +1,141 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-05-29 12:09+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 4.17\n" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "Categorie RU consentite" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "Utenti consentiti" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "Dipendente" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "Categorie dipendente" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "Categorie RU" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" +"Qui è possibile collegare il progetto a diverse categorie dipendenti, che " +"verranno abilitate nei lavori." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" +"Qui è possibile selezionare la categorie dipendente adeguata ad eseguire " +"questo lavoro, limitando i dipendenti selezionabili a quelli che " +"appartengono a quella categoria." + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "Dipendente collegato" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "Lavoro" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" +"Campo tecnico per calcolare le categorie dipendenti autorizzate in accordo " +"con le categorie a livello progetto." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" +"Campo tecnico per calcolare gli utenti abilitati in accordo alle categorie " +"dipendenti." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" +"Campo tecnico per calcolare dinamicamente le categorie dipendenti collegate " +"agli utenti nell'azienda attuale." + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "Utente" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "Impossibile assegnare una categoria non consentita a livello progetto." + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" +"Impossibile assegnare un utente che non appartiene alla categoria dipendente " +"selezionata." + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" + +#~ msgid "Linked employee" +#~ msgstr "Dipendente collegato" + +#~ msgid "Users" +#~ msgstr "Utenti" diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/nl.po b/odoo-bringout-oca-project-project_hr/project_hr/i18n/nl.po new file mode 100644 index 0000000..f85b4f2 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/nl.po @@ -0,0 +1,127 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-09 02:52+0000\n" +"Last-Translator: \"Jan Tapper [Onestein]\" \n" +"Language-Team: none\n" +"Language: nl\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_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "Toegestane HR-categorieën" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "Toegestane gebruikers" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "Medewerker" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "Categorieën van werknemers" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "HR-categorieën" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" +"Hier kunt u het project koppelen aan verschillende medewerkerscategorieën, " +"die toegestaan zijn in taken." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" +"Hier kunt u de werknemerscategorie selecteren die geschikt is om deze taak " +"uit te voeren, waardoor de selecteerbare gebruikers worden beperkt tot " +"degenen die tot die categorie behoren." + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "Gekoppelde medewerkers" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "Taak" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" +"Technisch veld voor het berekenen van toegestane werknemerscategorieën " +"volgens categorieën op projectniveau." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" +"Technisch veld voor computers met toegestane gebruikers volgens " +"werknemerscategorie." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" +"Technisch veld voor het dynamisch berekenen van werknemerscategorieën die " +"zijn gekoppeld aan de gebruiker in het huidige bedrijf." + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "Gebruiker" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "" +"U kunt geen categorie toekennen die niet is toegestaan op projectniveau." + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" +"U kunt geen gebruiker toewijzen die niet tot de geselecteerde " +"werknemerscategorie behoort." diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/project_hr.pot b/odoo-bringout-oca-project-project_hr/project_hr/i18n/project_hr.pot new file mode 100644 index 0000000..39faf0f --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/project_hr.pot @@ -0,0 +1,110 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/pt_BR.po b/odoo-bringout-oca-project-project_hr/project_hr/i18n/pt_BR.po new file mode 100644 index 0000000..79a7fe8 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/pt_BR.po @@ -0,0 +1,128 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-28 13:27+0000\n" +"Last-Translator: Adriano Prado \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" +"X-Generator: Weblate 4.17\n" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "Categorias de RH permitidas" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "Usuários permitidos" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "Funcionário" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "Categorias de Funcionários" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "Categorias de RH" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" +"Aqui você pode vincular o projeto a diversas categorias de funcionários, que " +"serão permitidas nas tarefas." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" +"Aqui você pode selecionar a categoria de funcionário adequada para realizar " +"esta tarefa, limitando os usuários selecionáveis a serem atribuídos àqueles " +"que pertencem a essa categoria." + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "Funcionários vinculados" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "Tarefa" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" +"Campo técnico para calcular categorias de funcionários permitidas de acordo " +"com categorias em nível de projeto." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" +"Campo técnico para calcular usuários permitidos de acordo com a categoria " +"funcional." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" +"Campo técnico para cálculo dinâmico de categorias de funcionários vinculadas " +"ao usuário na empresa atual." + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "Usuário" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "" +"Você não pode atribuir uma categoria que não seja permitida no nível do " +"projeto." + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" +"Você não pode atribuir um usuário que não pertença à categoria de " +"funcionário selecionada." diff --git a/odoo-bringout-oca-project-project_hr/project_hr/i18n/sl.po b/odoo-bringout-oca-project-project_hr/project_hr/i18n/sl.po new file mode 100644 index 0000000..20073c5 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/i18n/sl.po @@ -0,0 +1,132 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_hr +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-10-24 07:33+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 3.8\n" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_hr_category_ids +msgid "Allowed HR categories" +msgstr "Dovoljene kategorije kadrov" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__allowed_assigned_user_ids +msgid "Allowed users" +msgstr "Dovoljeni uporabniki" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_hr_employee +msgid "Employee" +msgstr "Kader" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_project__hr_category_ids +#: model:ir.model.fields,field_description:project_hr.field_project_task__hr_category_ids +msgid "Employee Categories" +msgstr "Kategorije zaposlenih" + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_res_users__hr_category_ids +msgid "HR categories" +msgstr "Kadrovske kategorije" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_project__hr_category_ids +msgid "" +"Here you can link the project to several employee categories, that will be " +"the allowed in tasks." +msgstr "" +"Tu lahko povežete projekt z več kategorijami kadrov, ki bodo dovoljeni v " +"opravilih." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__hr_category_ids +msgid "" +"Here you can select the employee category suitable to perform this task, " +"limiting the selectable users to be assigned to those that belongs to that " +"category." +msgstr "" +"Tu lahko izberete kategorijo kadrov primerno za opravljanje tega opravila in " +"tako omejite izbor uporabnikov, ki se jim lahko opravilo dodeli na to " +"kategorijo." + +#. module: project_hr +#: model:ir.model.fields,field_description:project_hr.field_project_task__employee_ids +msgid "Linked employees" +msgstr "" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_hr +#: model:ir.model,name:project_hr.model_project_task +msgid "Task" +msgstr "Opravilo" + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_hr_category_ids +msgid "" +"Technical field for computing allowed employee categories according " +"categories at project level." +msgstr "" +"Tehnično polje za obdelavo dovoljenih kadrovskih kategorij glede na " +"kategorije na projektnem nivoju." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_project_task__allowed_assigned_user_ids +msgid "" +"Technical field for computing allowed users according employee category." +msgstr "" +"Tehnično polje za obdelavo dovoljenih uporabnikov glede na kadrovsko " +"kategorijo." + +#. module: project_hr +#: model:ir.model.fields,help:project_hr.field_res_users__hr_category_ids +msgid "" +"Technical field for computing dynamically employee categories linked to the " +"user in the current company." +msgstr "" +"Tehnično polje za dinamično obdelavo kategorij kadrov povezanih z " +"uporabnikom in trenutno družbo." + +#. module: project_hr +#: model:ir.model,name:project_hr.model_res_users +msgid "User" +msgstr "" + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "You can't assign a category that is not allowed at project level." +msgstr "Kategorije, ki ni dovoljena na projektnem nivoju, ne morete dodeliti." + +#. module: project_hr +#. odoo-python +#: code:addons/project_hr/models/project_task.py:0 +#, python-format +msgid "" +"You can't assign a user not belonging to the selected employee category." +msgstr "" +"Ne morete dodeliti uporabnika, ki ne spada v izbrano kadrovsko kategorijo." + +#~ msgid "Linked employee" +#~ msgstr "Povezani kader" + +#~ msgid "Users" +#~ msgstr "Uporabniki" diff --git a/odoo-bringout-oca-project-project_hr/project_hr/models/__init__.py b/odoo-bringout-oca-project-project_hr/project_hr/models/__init__.py new file mode 100644 index 0000000..f1a8599 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/models/__init__.py @@ -0,0 +1,6 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import project_project +from . import project_task +from . import res_users +from . import hr_employee diff --git a/odoo-bringout-oca-project-project_hr/project_hr/models/hr_employee.py b/odoo-bringout-oca-project-project_hr/project_hr/models/hr_employee.py new file mode 100644 index 0000000..27971c6 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/models/hr_employee.py @@ -0,0 +1,16 @@ +# Copyright 2019 Tecnativa - Victor M.M. Torres +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class HrEmployee(models.Model): + _inherit = "hr.employee" + + @api.model_create_multi + def create(self, vals_list): + res = super().create(vals_list) + for vals in vals_list: + if vals.get("category_ids"): + self.env["project.task"].invalidate_model() + return res diff --git a/odoo-bringout-oca-project-project_hr/project_hr/models/project_project.py b/odoo-bringout-oca-project-project_hr/project_hr/models/project_project.py new file mode 100644 index 0000000..036a5c4 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/models/project_project.py @@ -0,0 +1,15 @@ +# Copyright 2018 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProjectProject(models.Model): + _inherit = "project.project" + + hr_category_ids = fields.Many2many( + comodel_name="hr.employee.category", + string="Employee Categories", + help="Here you can link the project to several employee categories, " + "that will be the allowed in tasks.", + ) diff --git a/odoo-bringout-oca-project-project_hr/project_hr/models/project_task.py b/odoo-bringout-oca-project-project_hr/project_hr/models/project_task.py new file mode 100644 index 0000000..3ed11c9 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/models/project_task.py @@ -0,0 +1,95 @@ +# Copyright 2018 Tecnativa - Pedro M. Baeza +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, exceptions, fields, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + employee_ids = fields.Many2many( + comodel_name="hr.employee", + string="Linked employees", + compute="_compute_employee_ids", + store=True, + ) + hr_category_ids = fields.Many2many( + comodel_name="hr.employee.category", + string="Employee Categories", + domain="[('id', 'in', allowed_hr_category_ids)]", + help="Here you can select the employee category suitable to perform " + "this task, limiting the selectable users to be assigned to " + "those that belongs to that category.", + ) + allowed_hr_category_ids = fields.Many2many( + comodel_name="hr.employee.category", + string="Allowed HR categories", + compute="_compute_allowed_hr_category_ids", + help="Technical field for computing allowed employee categories " + "according categories at project level.", + ) + # This field could have been named allowed_user_ids but a field with + # that name already exists in the Odoo core 'project' module + allowed_assigned_user_ids = fields.Many2many( + comodel_name="res.users", + string="Allowed users", + compute="_compute_allowed_assigned_user_ids", + help="Technical field for computing allowed users according employee " + "category.", + ) + + @api.depends("user_ids", "company_id") + def _compute_employee_ids(self): + for task in self.filtered("user_ids"): + task.employee_ids = task.user_ids.employee_ids.filtered( + lambda x: x.company_id == task.company_id + ) + + @api.depends("project_id", "project_id.hr_category_ids") + def _compute_allowed_hr_category_ids(self): + hr_category_obj = self.env["hr.employee.category"] + for task in self: + if task.project_id.hr_category_ids: + task.allowed_hr_category_ids = task.project_id.hr_category_ids + else: + task.allowed_hr_category_ids = hr_category_obj.search([]) + + @api.depends("hr_category_ids", "company_id") + def _compute_allowed_assigned_user_ids(self): + user_obj = self.env["res.users"] + for task in self: + domain = [] + if task.hr_category_ids: + domain = [ + ("employee_ids.company_id", "=", task.company_id.id), + ("employee_ids.category_ids", "in", task.hr_category_ids.ids), + ] + task.allowed_assigned_user_ids = user_obj.search(domain) + + @api.constrains("hr_category_ids", "user_ids") + def _check_employee_category_user(self): + """Check user's employee belong to the selected category.""" + for task in self.filtered(lambda x: x.hr_category_ids and x.user_ids): + if any( + x not in task.employee_ids.category_ids for x in task.hr_category_ids + ): + raise exceptions.ValidationError( + _( + "You can't assign a user not belonging to the selected " + "employee category." + ) + ) + + @api.constrains("hr_category_ids", "project_id") + def _check_employee_category_project(self): + for task in self.filtered("hr_category_ids"): + if task.project_id.hr_category_ids and bool( + task.hr_category_ids - task.project_id.hr_category_ids + ): + raise exceptions.ValidationError( + _( + "You can't assign a category that is not allowed at " + "project level." + ) + ) diff --git a/odoo-bringout-oca-project-project_hr/project_hr/models/res_users.py b/odoo-bringout-oca-project-project_hr/project_hr/models/res_users.py new file mode 100644 index 0000000..b045ade --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/models/res_users.py @@ -0,0 +1,23 @@ +# Copyright 2018 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + hr_category_ids = fields.Many2many( + comodel_name="hr.employee.category", + string="HR categories", + compute="_compute_hr_category_ids", + help="Technical field for computing dynamically employee categories " + "linked to the user in the current company.", + ) + + @api.depends("company_id", "employee_ids", "employee_ids.category_ids") + def _compute_hr_category_ids(self): + for user in self: + user.hr_category_ids = user.employee_ids.filtered( + lambda x: x.company_id == user.company_id + )[:1].category_ids diff --git a/odoo-bringout-oca-project-project_hr/project_hr/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_hr/project_hr/readme/CONFIGURE.rst new file mode 100644 index 0000000..967d430 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/readme/CONFIGURE.rst @@ -0,0 +1,14 @@ +For setting employee categories at project level: + +#. Go to *Project > Projects*. +#. Click on the 3 vertical dots of one of the project kanban cards for + unfolding options and select "Settings". +#. Put the wanted employee categories on the field "Employee Categories". + +For setting employee categories: + +#. Go to *Project > All Tasks*. +#. Select or create a new task. +#. Put the wanted employee categories on the field "Employee categories". +#. If there's already some employee categories selected at project level, those + will be the only selectable ones in the task. diff --git a/odoo-bringout-oca-project-project_hr/project_hr/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_hr/project_hr/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..636f366 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/readme/CONTRIBUTORS.rst @@ -0,0 +1,12 @@ +* `Tecnativa `_: + + * Pedro M. Baeza + * Victor M.M. Torres + * Ernesto Tejeda + * Pilar Vargas + +* `CorporateHub `__ + + * Alexey Pelykh + +* Alfadil Tabar diff --git a/odoo-bringout-oca-project-project_hr/project_hr/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_hr/project_hr/readme/DESCRIPTION.rst new file mode 100644 index 0000000..a39167e --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/readme/DESCRIPTION.rst @@ -0,0 +1,17 @@ +This is a technical module for adding some HR information to projects and +provide technical fields with HR information: + +- Employee categories at project and task level. +- Employee linked to the user assigned to a task. +- Employee categories at user level. + +These fields can be used later for extra features like task scheduling or +security restrictions. + +It also provides some facilities on project management: + +* Limit selection of assigned users according selected employee category at + task level. +* Limit selection of employee categories at task level depending on the + selected categories at project level. All are shown if no categories at + project level. diff --git a/odoo-bringout-oca-project-project_hr/project_hr/readme/ROADMAP.rst b/odoo-bringout-oca-project-project_hr/project_hr/readme/ROADMAP.rst new file mode 100644 index 0000000..321da2d --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/readme/ROADMAP.rst @@ -0,0 +1,3 @@ +* Limit project and task visibility according employee categories through + overriding security methods (as through record rules is not possible without + modifying existing ones). diff --git a/odoo-bringout-oca-project-project_hr/project_hr/readme/USAGE.rst b/odoo-bringout-oca-project-project_hr/project_hr/readme/USAGE.rst new file mode 100644 index 0000000..03e7d0b --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/readme/USAGE.rst @@ -0,0 +1,3 @@ +#. Go to *Project > Search > Tasks*. +#. If there's an employee category selected in the task, you will only be able + to select those users whose employee belongs to that category. diff --git a/odoo-bringout-oca-project-project_hr/project_hr/static/description/icon.png b/odoo-bringout-oca-project-project_hr/project_hr/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_hr/project_hr/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_hr/project_hr/static/description/index.html b/odoo-bringout-oca-project-project_hr/project_hr/static/description/index.html new file mode 100644 index 0000000..33c1b8d --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/static/description/index.html @@ -0,0 +1,487 @@ + + + + + + +Project HR + + + +
+

Project HR

+ + +

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

+

This is a technical module for adding some HR information to projects and +provide technical fields with HR information:

+
    +
  • Employee categories at project and task level.
  • +
  • Employee linked to the user assigned to a task.
  • +
  • Employee categories at user level.
  • +
+

These fields can be used later for extra features like task scheduling or +security restrictions.

+

It also provides some facilities on project management:

+
    +
  • Limit selection of assigned users according selected employee category at +task level.
  • +
  • Limit selection of employee categories at task level depending on the +selected categories at project level. All are shown if no categories at +project level.
  • +
+

Table of contents

+ +
+

Configuration

+

For setting employee categories at project level:

+
    +
  1. Go to Project > Projects.
  2. +
  3. Click on the 3 vertical dots of one of the project kanban cards for +unfolding options and select “Settings”.
  4. +
  5. Put the wanted employee categories on the field “Employee Categories”.
  6. +
+

For setting employee categories:

+
    +
  1. Go to Project > All Tasks.
  2. +
  3. Select or create a new task.
  4. +
  5. Put the wanted employee categories on the field “Employee categories”.
  6. +
  7. If there’s already some employee categories selected at project level, those +will be the only selectable ones in the task.
  8. +
+
+
+

Usage

+
    +
  1. Go to Project > Search > Tasks.
  2. +
  3. If there’s an employee category selected in the task, you will only be able +to select those users whose employee belongs to that category.
  4. +
+
+
+

Known issues / Roadmap

+
    +
  • Limit project and task visibility according employee categories through +overriding security methods (as through record rules is not possible without +modifying existing ones).
  • +
+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

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:

+

pedrobaeza

+

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/odoo-bringout-oca-project-project_hr/project_hr/tests/__init__.py b/odoo-bringout-oca-project-project_hr/project_hr/tests/__init__.py new file mode 100644 index 0000000..7b64f44 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/tests/__init__.py @@ -0,0 +1 @@ +from . import test_project_hr diff --git a/odoo-bringout-oca-project-project_hr/project_hr/tests/test_project_hr.py b/odoo-bringout-oca-project-project_hr/project_hr/tests/test_project_hr.py new file mode 100644 index 0000000..a514e81 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/tests/test_project_hr.py @@ -0,0 +1,119 @@ +# Copyright 2018 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import logging + +from odoo.exceptions import ValidationError +from odoo.tests.common import TransactionCase + +_logger = logging.getLogger(__name__) + + +class TestProjectHr(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + user_group_employee = cls.env.ref("base.group_user") + user_group_project_user = cls.env.ref("project.group_project_user") + # Test users to use through the various tests + Users = cls.env["res.users"].with_context(no_reset_password=True) + cls.user1 = Users.create( + { + "name": "Test User1", + "login": "user1", + "password": "user1", + "email": "user1.projecthr@example.com", + "groups_id": [ + (6, 0, [user_group_employee.id, user_group_project_user.id]) + ], + } + ) + cls.user2 = Users.create( + { + "name": "Test User2", + "login": "user2", + "password": "user2", + "email": "user2.projecthr@example.com", + "groups_id": [ + (6, 0, [user_group_employee.id, user_group_project_user.id]) + ], + } + ) + cls.hr_category = cls.env["hr.employee.category"].create( + {"name": "Test employee category"} + ) + cls.hr_category_2 = cls.env["hr.employee.category"].create( + {"name": "Test employee category 2"} + ) + + cls.hr_category_3 = cls.env["hr.employee.category"].create( + {"name": "Test employee category 3"} + ) + + cls.employee = cls.env["hr.employee"].create( + { + "name": "Test employee", + "user_id": cls.user1.id, + "category_ids": [(6, 0, cls.hr_category.ids)], + } + ) + cls.project = cls.env["project.project"].create( + {"name": "Test project", "hr_category_ids": [(4, cls.hr_category.id)]} + ) + cls.task = cls.env["project.task"].create( + { + "name": "Test task", + "project_id": cls.project.id, + "hr_category_ids": [(4, cls.hr_category.id)], + "user_ids": [(6, 0, [cls.user1.id])], + } + ) + + def test_user(self): + self.assertEqual(self.user1.hr_category_ids, self.hr_category) + self.employee.category_ids = [(4, self.hr_category_2.id)] + self.assertEqual( + self.user1.hr_category_ids, self.hr_category + self.hr_category_2 + ) + # Check if need invalidate cache + self.employee.category_ids = [(4, self.hr_category_3.id)] + self.assertEqual( + self.user1.hr_category_ids, + self.hr_category + self.hr_category_2 + self.hr_category_3, + ) + + def test_task(self): + # check computed values on task + self.assertEqual(self.task.employee_ids, self.employee) + self.assertEqual(self.task.allowed_hr_category_ids, self.hr_category) + self.assertEqual(self.task.allowed_assigned_user_ids, self.user1) + self.project.hr_category_ids = [(4, self.hr_category_2.id)] + self.assertEqual( + self.task.allowed_hr_category_ids, self.hr_category + self.hr_category_2 + ) + self.env["hr.employee"].create( + { + "name": "Test employee 2", + "user_id": self.user2.id, + "category_ids": [(6, 0, self.hr_category.ids)], + } + ) + self.assertEqual(self.task.allowed_assigned_user_ids, self.user1 + self.user2) + # Test _check_employee_category_user constraint + with self.assertRaises(ValidationError): + self.task.hr_category_ids = [(4, self.hr_category_2.id)] + # Test _check_employee_category_project constraint + self.project.hr_category_ids = [(4, self.hr_category_2.id)] + with self.assertRaises(ValidationError): + self.task.hr_category_ids = [(4, self.hr_category_2.id)] + # add employee to category hr_category_3 + self.employee.category_ids = [(4, self.hr_category_3.id)] + # test assign a category no in project categories + with self.assertRaises(ValidationError): + self.task.hr_category_ids = [(4, self.hr_category_3.id)] + + def test_task_project_wo_categories(self): + self.project.hr_category_ids = False + self.assertTrue(self.task.allowed_hr_category_ids) + # This operation shouldn't give error + self.task.hr_category_ids = [(4, self.hr_category.id)] diff --git a/odoo-bringout-oca-project-project_hr/project_hr/views/project_project_views.xml b/odoo-bringout-oca-project-project_hr/project_hr/views/project_project_views.xml new file mode 100644 index 0000000..d8a2e76 --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/views/project_project_views.xml @@ -0,0 +1,15 @@ + + + + + Project form: Add employee categories + project.project + + + + + + + + diff --git a/odoo-bringout-oca-project-project_hr/project_hr/views/project_task_views.xml b/odoo-bringout-oca-project-project_hr/project_hr/views/project_task_views.xml new file mode 100644 index 0000000..a0c077b --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/project_hr/views/project_task_views.xml @@ -0,0 +1,62 @@ + + + + + Project task form: Add linked employee and Employee category + project.task + + + + + + + + + [('id', 'in', allowed_assigned_user_ids)] + + + + + + + + project.task.form.quick_create + project.task + + + + + + + [('id', 'in', allowed_assigned_user_ids)] + + + + + project.task.tree + project.task + + + + + + + [('id', 'in', allowed_assigned_user_ids)] + + + + diff --git a/odoo-bringout-oca-project-project_hr/pyproject.toml b/odoo-bringout-oca-project-project_hr/pyproject.toml new file mode 100644 index 0000000..04496ad --- /dev/null +++ b/odoo-bringout-oca-project-project_hr/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-project-project_hr" +version = "16.0.0" +description = "Project HR - Link HR with project" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "odoo-bringout-oca-ocb-hr>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_hr"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/README.md b/odoo-bringout-oca-project-project_internal_access_from_portal/README.md new file mode 100644 index 0000000..6522abe --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/README.md @@ -0,0 +1,46 @@ +# Internal Project Available in Portal + +Odoo addon: project_internal_access_from_portal + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_internal_access_from_portal +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Internal Project Available in Portal +- **Version**: 16.0.1.0.1 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_internal_access_from_portal`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/ARCHITECTURE.md new file mode 100644 index 0000000..fc4f05d --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_internal_access_from_portal Module - project_internal_access_from_portal + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/CONFIGURATION.md new file mode 100644 index 0000000..21630c8 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_internal_access_from_portal. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/FAQ.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/FAQ.md new file mode 100644 index 0000000..f88e0f4 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_internal_access_from_portal or install in UI. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/INSTALL.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/INSTALL.md new file mode 100644 index 0000000..4684728 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_internal_access_from_portal" +# or +uv pip install odoo-bringout-oca-project-project_internal_access_from_portal" +``` diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/MODELS.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/MODELS.md new file mode 100644 index 0000000..a0c9bef --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_internal_access_from_portal. + +```mermaid +classDiagram + class project_project +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/OVERVIEW.md new file mode 100644 index 0000000..d22cfb6 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_internal_access_from_portal. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_internal_access_from_portal +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/REPORTS.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/SECURITY.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/SECURITY.md new file mode 100644 index 0000000..3cd9587 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/SECURITY.md @@ -0,0 +1,64 @@ +# Security + +Access control and security definitions in project_internal_access_from_portal. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[bosnian_translations.json](../bosnian_translations.json)** + - 50 model access rules +- **[bosnian_translations_output.json](../bosnian_translations_output.json)** + - 444 model access rules +- **[CHANGELOG.md](../CHANGELOG.md)** + - 132 model access rules +- **[doc](../doc)** +- **[docker](../docker)** +- **[input](../input)** +- **[nix](../nix)** +- **[odoo.conf](../odoo.conf)** + - 58 model access rules +- **[odoo_packages_bez_l10n.txt](../odoo_packages_bez_l10n.txt)** + - 1947 model access rules +- **[odoo_packages_bringout.txt](../odoo_packages_bringout.txt)** + - 1947 model access rules +- **[odoo_packages.txt](../odoo_packages.txt)** + - 2085 model access rules +- **[output](../output)** +- **[packages](../packages)** +- **[README.md](../README.md)** + - 338 model access rules +- **[scripts](../scripts)** +- **[temp](../temp)** +- **[TRANSLATION_BS_SUMMARY.md](../TRANSLATION_BS_SUMMARY.md)** + - 146 model access rules + +## Record Rules + +Row-level security rules defined in: +- **[portal_project_rules.xml](../project_internal_access_from_portal/security/portal_project_rules.xml)** + +## Security Groups & Configuration + +Security groups and permissions defined in: +- **[portal_project_rules.xml](../project_internal_access_from_portal/security/portal_project_rules.xml)** + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[portal_project_rules.xml](../project_internal_access_from_portal/security/portal_project_rules.xml)** + - Security groups, categories, and XML-based rules + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/USAGE.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/USAGE.md new file mode 100644 index 0000000..e78e511 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_internal_access_from_portal +``` diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/doc/WIZARDS.md b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/README.rst b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/README.rst new file mode 100644 index 0000000..b81f16d --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/README.rst @@ -0,0 +1,103 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +==================================== +Internal Project Available in Portal +==================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:1d997faa0146fe9b522e84e6041808b7586a79361b9e6fd4a4d02e9682601373 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-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/16.0/project_internal_access_from_portal + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_internal_access_from_portal + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds an additional option to the project settings which +allows portal users to access internal projects and tasks. + +**Table of contents** + +.. contents:: + :local: + +Use Cases / Context +=================== + +Sometimes you need to provide access to a project to portal users. Even +if this project privacy is set to the "Invited internal users" + +Configuration +============= + +Go to "Project > Configuration > Projects" and open a project. In the +"Settings" tab, set "Visibility" to "Invited internal/portal users". + +Usage +===== + +When a portal user a configured project. The user can now access the +project in the portal. When a portal user a configured project task. The +user can now access the task in the portal. + +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 +------- + +* Cetmix + +Contributors +------------ + +Cetmix + +- Ivan Sokolov +- Andrei Loukachov + +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. + +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/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/__init__.py b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/__init__.py new file mode 100644 index 0000000..2139908 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import models diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/__manifest__.py b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/__manifest__.py new file mode 100644 index 0000000..e5ba597 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Internal Project Available in Portal", + "version": "16.0.1.0.1", + "summary": "Show internal projects in portal", + "author": "Cetmix, Odoo Community Association (OCA)", + "license": "AGPL-3", + "category": "Project", + "website": "https://github.com/OCA/project", + "depends": ["project"], + "data": [ + "security/portal_project_rules.xml", + ], + "demo": ["demo/demo_data.xml"], + "installable": True, + "application": False, +} diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/demo/demo_data.xml b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/demo/demo_data.xml new file mode 100644 index 0000000..49dea7f --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/demo/demo_data.xml @@ -0,0 +1,20 @@ + + + + Demo Internal/Portal Project + portal_internal + + + + + Demo Task 1 + + + + + + Demo Task 2 + + + + diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/i18n/bs.po b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/i18n/bs.po new file mode 100644 index 0000000..de9cf79 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/i18n/bs.po @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_internal_access_from_portal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_internal_access_from_portal +#: model:project.project,name:project_internal_access_from_portal.demo_portal_internal_project +msgid "Demo Internal/Portal Project" +msgstr "Demo Interni/Portal Projekat" + +#. module: project_internal_access_from_portal +#: model:ir.model.fields.selection,name:project_internal_access_from_portal.selection__project_project__privacy_visibility__portal_internal +msgid "Invited internal/portal users" +msgstr "Pozvani interni/portal korisnici" + +#. module: project_internal_access_from_portal +#: model:ir.model.fields,help:project_internal_access_from_portal.field_project_project__privacy_visibility +msgid "" +"People to whom this project and its tasks will be visible.\n" +"\n" +"- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n" +" A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n" +"\n" +"- All internal users: all internal users can access the project and all of its tasks without distinction.\n" +"\n" +"- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\n" +"When following a project, portal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n" +"\n" +"When a project is shared in read-only, the portal user is redirected to their portal. They can view the tasks, but not edit them.\n" +"When a project is shared in edit, the portal user is redirected to the kanban and list views of the tasks. They can modify a selected number of fields on the tasks.\n" +"\n" +"In any case, an internal user with no project access rights can still access a task, provided that they are given the corresponding URL (and that they are part of the followers if the project is private)." +msgstr "" + +#. module: project_internal_access_from_portal +#: model:ir.model,name:project_internal_access_from_portal.model_project_project +msgid "Project" +msgstr "Projekat" + +#. module: project_internal_access_from_portal +#: model:project.project,label_tasks:project_internal_access_from_portal.demo_portal_internal_project +msgid "Tasks" +msgstr "Zadaci" + +#. module: project_internal_access_from_portal +#: model:ir.model.fields,field_description:project_internal_access_from_portal.field_project_project__privacy_visibility +msgid "Visibility" +msgstr "Vidljivost" diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/i18n/it.po b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/i18n/it.po new file mode 100644 index 0000000..e746b67 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/i18n/it.po @@ -0,0 +1,90 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_internal_access_from_portal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-06-25 09:25+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_internal_access_from_portal +#: model:project.project,name:project_internal_access_from_portal.demo_portal_internal_project +msgid "Demo Internal/Portal Project" +msgstr "Progetto demo interno/portale" + +#. module: project_internal_access_from_portal +#: model:ir.model.fields.selection,name:project_internal_access_from_portal.selection__project_project__privacy_visibility__portal_internal +msgid "Invited internal/portal users" +msgstr "Utenti interni/portale invitati" + +#. module: project_internal_access_from_portal +#: model:ir.model.fields,help:project_internal_access_from_portal.field_project_project__privacy_visibility +msgid "" +"People to whom this project and its tasks will be visible.\n" +"\n" +"- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n" +" A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n" +"\n" +"- All internal users: all internal users can access the project and all of its tasks without distinction.\n" +"\n" +"- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\n" +"When following a project, portal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n" +"\n" +"When a project is shared in read-only, the portal user is redirected to their portal. They can view the tasks, but not edit them.\n" +"When a project is shared in edit, the portal user is redirected to the kanban and list views of the tasks. They can modify a selected number of fields on the tasks.\n" +"\n" +"In any case, an internal user with no project access rights can still access a task, provided that they are given the corresponding URL (and that they are part of the followers if the project is private)." +msgstr "" +"Persone a cui questo progetto e le sue attività saranno visibili.\n" +"\n" +"- Utenti interni invitati: quando seguono un progetto, gli utenti interni " +"avranno accesso a tutte le sue attività indistintamente. In caso contrario, " +"avranno accesso solo alle attività specifiche che stanno seguendo.\n" +"Un utente con il livello di accesso \"progetto > amministratore\" può " +"comunque accedere a questo progetto e alle sue attività, anche se non fa " +"esplicitamente parte dei follower.\n" +"\n" +"- Tutti gli utenti interni: tutti gli utenti interni possono accedere al " +"progetto e a tutte le sue attività indistintamente.\n" +"\n" +"- Utenti del portale invitati e tutti gli utenti interni: tutti gli utenti " +"interni possono accedere al progetto e a tutte le sue attività " +"indistintamente.\n" +"Quando seguono un progetto, gli utenti del portale avranno accesso a tutte " +"le sue attività indistintamente. In caso contrario, avranno accesso solo " +"alle attività specifiche che stanno seguendo.\n" +"\n" +"Quando un progetto è condiviso in sola lettura, l'utente del portale viene " +"reindirizzato al proprio portale. Può visualizzare le attività, ma non " +"modificarle.\n" +"Quando un progetto è condiviso in modalità di modifica, l'utente del portale " +"viene reindirizzato alle viste Kanban e Elenco delle attività. Possono " +"modificare un numero selezionato di campi nelle attività.\n" +"\n" +"In ogni caso, un utente interno senza diritti di accesso al progetto può " +"comunque accedere a un'attività, a condizione che gli venga fornito l'URL " +"corrispondente (e che faccia parte dei follower se il progetto è privato)." + +#. module: project_internal_access_from_portal +#: model:ir.model,name:project_internal_access_from_portal.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_internal_access_from_portal +#: model:project.project,label_tasks:project_internal_access_from_portal.demo_portal_internal_project +msgid "Tasks" +msgstr "Lavori" + +#. module: project_internal_access_from_portal +#: model:ir.model.fields,field_description:project_internal_access_from_portal.field_project_project__privacy_visibility +msgid "Visibility" +msgstr "Visibilità" diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/i18n/project_internal_access_from_portal.pot b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/i18n/project_internal_access_from_portal.pot new file mode 100644 index 0000000..8ad27bd --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/i18n/project_internal_access_from_portal.pot @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_internal_access_from_portal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_internal_access_from_portal +#: model:project.project,name:project_internal_access_from_portal.demo_portal_internal_project +msgid "Demo Internal/Portal Project" +msgstr "" + +#. module: project_internal_access_from_portal +#: model:ir.model.fields.selection,name:project_internal_access_from_portal.selection__project_project__privacy_visibility__portal_internal +msgid "Invited internal/portal users" +msgstr "" + +#. module: project_internal_access_from_portal +#: model:ir.model.fields,help:project_internal_access_from_portal.field_project_project__privacy_visibility +msgid "" +"People to whom this project and its tasks will be visible.\n" +"\n" +"- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n" +" A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n" +"\n" +"- All internal users: all internal users can access the project and all of its tasks without distinction.\n" +"\n" +"- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\n" +"When following a project, portal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n" +"\n" +"When a project is shared in read-only, the portal user is redirected to their portal. They can view the tasks, but not edit them.\n" +"When a project is shared in edit, the portal user is redirected to the kanban and list views of the tasks. They can modify a selected number of fields on the tasks.\n" +"\n" +"In any case, an internal user with no project access rights can still access a task, provided that they are given the corresponding URL (and that they are part of the followers if the project is private)." +msgstr "" + +#. module: project_internal_access_from_portal +#: model:ir.model,name:project_internal_access_from_portal.model_project_project +msgid "Project" +msgstr "" + +#. module: project_internal_access_from_portal +#: model:project.project,label_tasks:project_internal_access_from_portal.demo_portal_internal_project +msgid "Tasks" +msgstr "" + +#. module: project_internal_access_from_portal +#: model:ir.model.fields,field_description:project_internal_access_from_portal.field_project_project__privacy_visibility +msgid "Visibility" +msgstr "" diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/models/__init__.py b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/models/__init__.py new file mode 100644 index 0000000..ca0fe22 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/models/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import project_project diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/models/project_project.py b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/models/project_project.py new file mode 100644 index 0000000..0eae28b --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/models/project_project.py @@ -0,0 +1,12 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class ProjectProject(models.Model): + _inherit = "project.project" + + privacy_visibility = fields.Selection( + selection_add=[("portal_internal", "Invited internal/portal users")], + ondelete={"portal_internal": "set default"}, + ) diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/CONFIGURE.md b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/CONFIGURE.md new file mode 100644 index 0000000..93a5e94 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/CONFIGURE.md @@ -0,0 +1,2 @@ +Go to "Project > Configuration > Projects" and open a project. +In the "Settings" tab, set "Visibility" to "Invited internal/portal users". diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/CONTEXT.md b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/CONTEXT.md new file mode 100644 index 0000000..26c735d --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/CONTEXT.md @@ -0,0 +1 @@ +Sometimes you need to provide access to a project to portal users. Even if this project privacy is set to the "Invited internal users" diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/CONTRIBUTORS.md b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/CONTRIBUTORS.md new file mode 100644 index 0000000..cbbe164 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/CONTRIBUTORS.md @@ -0,0 +1,4 @@ +Cetmix + +- Ivan Sokolov +- Andrei Loukachov \ No newline at end of file diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/DESCRIPTION.md b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/DESCRIPTION.md new file mode 100644 index 0000000..0a13771 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/DESCRIPTION.md @@ -0,0 +1 @@ +This module adds an additional option to the project settings which allows portal users to access internal projects and tasks. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/USAGE.md b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/USAGE.md new file mode 100644 index 0000000..8c56e9e --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/readme/USAGE.md @@ -0,0 +1,2 @@ +When a portal user a configured project. The user can now access the project in the portal. +When a portal user a configured project task. The user can now access the task in the portal. diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/security/portal_project_rules.xml b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/security/portal_project_rules.xml new file mode 100644 index 0000000..710799b --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/security/portal_project_rules.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + Internal: Project Visibility + + + [ + '|', + ('privacy_visibility', 'not in', ['followers', 'portal_internal']), + ('message_partner_ids', 'in', [user.partner_id.id]) + ] + + + + + + + Internal: Task Visibility + + + [ + '|', + '&', + ('project_id', '!=', False), + '|', + ('project_id.privacy_visibility', 'not in', ['followers', 'portal_internal']), + ('project_id.message_partner_ids', 'in', [user.partner_id.id]), + '|', + ('message_partner_ids', 'in', [user.partner_id.id]), + ('user_ids', 'in', user.id) + ] + + + + + + + Portal: read invited internal projects + + + [ ('privacy_visibility','=','portal_internal'), + ('active', '=', True), + ('message_partner_ids','child_of',[user.partner_id.commercial_partner_id.id]) ] + + + + + + + + + + + Portal: read invited internal tasks + + + [ + ('project_id.privacy_visibility','=','portal_internal'), + ('active','=',True), + '|', + ('project_id.message_partner_ids','child_of',[user.partner_id.commercial_partner_id.id]), + ('message_partner_ids','child_of',[user.partner_id.commercial_partner_id.id]) + ] + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/static/description/icon.png b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/static/description/icon.png new file mode 100644 index 0000000..1dcc49c Binary files /dev/null and b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/static/description/index.html b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/static/description/index.html new file mode 100644 index 0000000..520b6d1 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/static/description/index.html @@ -0,0 +1,451 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Internal Project Available in Portal

+ +

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

+

This module adds an additional option to the project settings which +allows portal users to access internal projects and tasks.

+

Table of contents

+ +
+

Use Cases / Context

+

Sometimes you need to provide access to a project to portal users. Even +if this project privacy is set to the “Invited internal users”

+
+
+

Configuration

+

Go to “Project > Configuration > Projects” and open a project. In the +“Settings” tab, set “Visibility” to “Invited internal/portal users”.

+
+
+

Usage

+

When a portal user a configured project. The user can now access the +project in the portal. When a portal user a configured project task. The +user can now access the task in the portal.

+
+
+

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

+
    +
  • Cetmix
  • +
+
+
+

Contributors

+

Cetmix <cetmix.com>

+
    +
  • Ivan Sokolov
  • +
  • Andrei Loukachov
  • +
+
+
+

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.

+

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/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/tests/__init__.py b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/tests/__init__.py new file mode 100644 index 0000000..c884409 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/tests/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import test_portal_internal_access diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/tests/test_portal_internal_access.py b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/tests/test_portal_internal_access.py new file mode 100644 index 0000000..8804a49 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/project_internal_access_from_portal/tests/test_portal_internal_access.py @@ -0,0 +1,108 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# -*- coding: utf-8 -*- +from odoo.exceptions import AccessError + +from odoo.addons.project.tests.test_access_rights import TestAccessRights + + +class TestPortalInternalAccess(TestAccessRights): + """ + Tests for the `portal_internal` visibility mode: + - Portal user may read only when subscribed + - Portal user cannot write/create/unlink projects and tasks + """ + + @classmethod + def setUpClass(cls): + super(TestPortalInternalAccess, cls).setUpClass() + # Switch the demo project to the new portal_internal mode + cls.project_pigs.privacy_visibility = "portal_internal" + cls.env.flush_all() + + def test_project_no_read_without_subscription(self): + """Portal user cannot read project before subscribing""" + with self.assertRaises(AccessError): + _ = self.project_pigs.with_user(self.portal).name + + def test_project_read_with_subscription(self): + """Portal user reads project after subscribing""" + self.project_pigs.message_subscribe([self.portal.partner_id.id]) + _ = self.project_pigs.with_user(self.portal).name + + def test_project_write_unlink_forbidden(self): + """Portal user cannot write or unlink at any time""" + # write + with self.assertRaises(AccessError): + self.project_pigs.with_user(self.portal).write({"name": "New Name"}) + # unlink + self.project_pigs.message_subscribe([self.portal.partner_id.id]) + with self.assertRaises(AccessError): + self.project_pigs.with_user(self.portal).unlink() + + def test_task_no_read_without_subscription(self): + """Portal user cannot read task before subscribing""" + with self.assertRaises(AccessError): + _ = self.task.with_user(self.portal).name + + def test_task_read_with_subscription(self): + """Portal user reads task after subscribing""" + self.project_pigs.message_subscribe([self.portal.partner_id.id]) + self.task.flush_model() + _ = self.task.with_user(self.portal).name + + def test_task_write_forbidden(self): + """Portal user cannot write tasks""" + self.project_pigs.message_subscribe([self.portal.partner_id.id]) + self.task.flush_model() + with self.assertRaises(AccessError): + self.task.with_user(self.portal).write({"name": "X"}) + + def test_task_create_forbidden(self): + """Portal user cannot create tasks""" + self.project_pigs.message_subscribe([self.portal.partner_id.id]) + with self.assertRaises(AccessError): + self.env["project.task"].with_user(self.portal).create( + { + "name": "ShouldFail", + "project_id": self.project_pigs.id, + } + ) + + def test_task_unlink_forbidden(self): + """Portal user cannot unlink tasks""" + self.project_pigs.message_subscribe([self.portal.partner_id.id]) + self.task.flush_model() + with self.assertRaises(AccessError): + self.task.with_user(self.portal).unlink() + + def test_internal_user_project_no_read_without_subscription(self): + """Internal user cannot read portal_internal project without subscription""" + with self.assertRaises(AccessError): + _ = self.project_pigs.with_user(self.user).name + + def test_internal_user_project_read_with_subscription(self): + """Internal user can read portal_internal project after subscribing""" + self.project_pigs.message_subscribe([self.user.partner_id.id]) + self.env["project.project"].flush_model() + _ = self.project_pigs.with_user(self.user).name + + def test_internal_user_task_no_read_without_subscription(self): + """Internal user cannot read tasks of portal_internal project without subscription""" + with self.assertRaises(AccessError): + _ = self.task.with_user(self.user).name + + def test_internal_user_task_read_with_subscription(self): + """Internal user can read tasks of portal_internal project after subscribing""" + self.project_pigs.message_subscribe([self.user.partner_id.id]) + self.task.flush_model() + _ = self.task.with_user(self.user).name + + def test_internal_user_task_assigned_user_can_read(self): + """Internal user can read task if assigned in user_ids""" + # Unsubscribe to ensure only assignment grants access + self.project_pigs.message_unsubscribe([self.user.partner_id.id]) + # Assign user to task + self.task.write({"user_ids": [(4, self.user.id)]}) + self.task.flush_model() + _ = self.task.with_user(self.user).name diff --git a/odoo-bringout-oca-project-project_internal_access_from_portal/pyproject.toml b/odoo-bringout-oca-project-project_internal_access_from_portal/pyproject.toml new file mode 100644 index 0000000..3df6a14 --- /dev/null +++ b/odoo-bringout-oca-project-project_internal_access_from_portal/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_internal_access_from_portal" +version = "16.0.0" +description = "Internal Project Available in Portal - Show internal projects in portal" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_internal_access_from_portal"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_key/README.md b/odoo-bringout-oca-project-project_key/README.md new file mode 100644 index 0000000..d4ba6bd --- /dev/null +++ b/odoo-bringout-oca-project-project_key/README.md @@ -0,0 +1,46 @@ +# Project Key + +Odoo addon: project_key + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_key +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Key +- **Version**: 16.0.1.0.3 +- **Category**: Project +- **License**: LGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_key`. + +## License + +This package maintains the original LGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_key/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_key/doc/ARCHITECTURE.md new file mode 100644 index 0000000..3504bff --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_key Module - project_key + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_key/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_key/doc/CONFIGURATION.md new file mode 100644 index 0000000..5bbdeb4 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_key. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_key/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_key/doc/CONTROLLERS.md new file mode 100644 index 0000000..ff097c0 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/CONTROLLERS.md @@ -0,0 +1,17 @@ +# Controllers + +HTTP routes provided by this module. + +```mermaid +sequenceDiagram + participant U as User/Client + participant C as Module Controllers + participant O as ORM/Views + + U->>C: HTTP GET/POST (routes) + C->>O: ORM operations, render templates + O-->>U: HTML/JSON/PDF +``` + +Notes +- See files in controllers/ for route definitions. diff --git a/odoo-bringout-oca-project-project_key/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_key/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_key/doc/FAQ.md b/odoo-bringout-oca-project-project_key/doc/FAQ.md new file mode 100644 index 0000000..9e0553c --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_key or install in UI. diff --git a/odoo-bringout-oca-project-project_key/doc/INSTALL.md b/odoo-bringout-oca-project-project_key/doc/INSTALL.md new file mode 100644 index 0000000..ca1c1f1 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_key" +# or +uv pip install odoo-bringout-oca-project-project_key" +``` diff --git a/odoo-bringout-oca-project-project_key/doc/MODELS.md b/odoo-bringout-oca-project-project_key/doc/MODELS.md new file mode 100644 index 0000000..a74fd8c --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in project_key. + +```mermaid +classDiagram + class project_project + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_key/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_key/doc/OVERVIEW.md new file mode 100644 index 0000000..af14311 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_key. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_key +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_key/doc/REPORTS.md b/odoo-bringout-oca-project-project_key/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_key/doc/SECURITY.md b/odoo-bringout-oca-project-project_key/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_key/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_key/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_key/doc/USAGE.md b/odoo-bringout-oca-project-project_key/doc/USAGE.md new file mode 100644 index 0000000..66c52d9 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_key +``` diff --git a/odoo-bringout-oca-project-project_key/doc/WIZARDS.md b/odoo-bringout-oca-project-project_key/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_key/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_key/project_key/README.rst b/odoo-bringout-oca-project-project_key/project_key/README.rst new file mode 100644 index 0000000..535e5b4 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/README.rst @@ -0,0 +1,121 @@ +=========== +Project Key +=========== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:20ffd47dc4de9ec005e18c523ee79f5635635ea7f76640194786d92eeec1367c + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github + :target: https://github.com/OCA/project/tree/16.0/project_key + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_key + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides functionality to uniquely identify projects and tasks by simple ``key`` field. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module functionality you just need to: + +On ``project.project`` level: + +In Kanban View: + +#. Go to Project > Dashboard +#. Create +#. Enter project name and use auto generated key or simply override value by entering your own key value. + +In Tree View: + +#. Go to Project > Configuration > Projects +#. Create +#. Enter project name and use auto generated key or simply override value by entering your own key value. + +In form View: + +#. Go to Project > Dashboard +#. Open the projects settings +#. Modify the "key" value +#. After modifying project key the key of any existing tasks related to that project will be updated automatically. + +When you create a project, under the hood a ir.sequence record gets creted with prefix: ``-``. + +On ``project.task`` level: + +#. Actually there is nothing to be done here +#. Task keys are auto generated based on project key value with per project auto incremented number (i.e. PA-1, PA-2, etc) + +In browser address bar: + +#. Navigate to your project by entering following url: http://<>/projects/PROJECT-KEY +#. Navigate to your task by entering following url: http://<>/tasks/TASK-KEY + +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 +~~~~~~~ + +* Modoolar + +Contributors +~~~~~~~~~~~~ + +* Petar Najman +* Sladjan Kantar +* `CorporateHub `__ + + * Alexey Pelykh + +* Saran Lim. +* Tharathip Chaweewongphan + +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. + +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/odoo-bringout-oca-project-project_key/project_key/__init__.py b/odoo-bringout-oca-project-project_key/project_key/__init__.py new file mode 100644 index 0000000..2474bef --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/__init__.py @@ -0,0 +1,5 @@ +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from . import models +from . import controllers +from .hooks import post_init_hook diff --git a/odoo-bringout-oca-project-project_key/project_key/__manifest__.py b/odoo-bringout-oca-project-project_key/project_key/__manifest__.py new file mode 100644 index 0000000..3d99958 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2017 - 2018 Modoolar +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +{ + "name": "Project Key", + "summary": "Module decorates projects and tasks with Project Key", + "category": "Project", + "version": "16.0.1.0.3", + "license": "LGPL-3", + "author": "Modoolar, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "depends": ["project"], + "data": ["views/project_key_views.xml"], + "post_init_hook": "post_init_hook", +} diff --git a/odoo-bringout-oca-project-project_key/project_key/controllers/__init__.py b/odoo-bringout-oca-project-project_key/project_key/controllers/__init__.py new file mode 100644 index 0000000..4e80e13 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/controllers/__init__.py @@ -0,0 +1,3 @@ +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from . import main diff --git a/odoo-bringout-oca-project-project_key/project_key/controllers/main.py b/odoo-bringout-oca-project-project_key/project_key/controllers/main.py new file mode 100644 index 0000000..e70d1f1 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/controllers/main.py @@ -0,0 +1,41 @@ +# Copyright 2017 - 2018 Modoolar +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +import werkzeug + +from odoo import http + +# from odoo.http import request + + +class ProjectBrowser(http.Controller): + def get_record_url(self, model, domain, action_xml_id): + env = http.request.env() + + records = env[model].search(domain) + record_id = records and records.id or -1 + action_id = env.ref(action_xml_id).id + + return "/web#id={}&view_type=form&model={}&action={}".format( + record_id, model, action_id + ) + + def get_task_url(self, key): + return self.get_record_url( + "project.task", [("key", "=ilike", key)], "project.action_view_task" + ) + + def get_project_url(self, key): + return self.get_record_url( + "project.project", + [("key", "=ilike", key)], + "project.open_view_project_all_config", + ) + + @http.route(["/projects/"], type="http", auth="user") + def open_project(self, key, **kwargs): + return werkzeug.utils.redirect(self.get_project_url(key), 301) + + @http.route(["/tasks/"], type="http", auth="user") + def open_task(self, key, **kwargs): + return werkzeug.utils.redirect(self.get_task_url(key), 301) diff --git a/odoo-bringout-oca-project-project_key/project_key/hooks.py b/odoo-bringout-oca-project-project_key/project_key/hooks.py new file mode 100644 index 0000000..a3f5141 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/hooks.py @@ -0,0 +1,9 @@ +# Copyright 2017 - 2018 Modoolar +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + + +def post_init_hook(cr, registry): + from odoo import SUPERUSER_ID, api + + env = api.Environment(cr, SUPERUSER_ID, {}) + env["project.project"]._set_default_project_key() diff --git a/odoo-bringout-oca-project-project_key/project_key/i18n/bs.po b/odoo-bringout-oca-project-project_key/project_key/i18n/bs.po new file mode 100644 index 0000000..548aa68 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/i18n/bs.po @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_key +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_key +#: model:ir.model.fields,field_description:project_key.field_project_project__key +#: model:ir.model.fields,field_description:project_key.field_project_task__key +msgid "Key" +msgstr "Ključ" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__task_key_sequence_id +msgid "Key Sequence" +msgstr "Ključna sekvenca" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_project +msgid "Project" +msgstr "Projekat" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_project_project_key_unique +msgid "Project key must be unique" +msgstr "Ključ projekta mora biti jedinstven" + +#. module: project_key +#. odoo-python +#: code:addons/project_key/models/project_project.py:0 +#, python-format +msgid "Project task sequence for project" +msgstr "Sekvenca zadatka projekta za projekat" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_task_task_key_unique +msgid "Task key must be unique!" +msgstr "Ključ zadatka mora biti jedinstven!" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_task__url +msgid "URL" +msgstr "URL" diff --git a/odoo-bringout-oca-project-project_key/project_key/i18n/de.po b/odoo-bringout-oca-project-project_key/project_key/i18n/de.po new file mode 100644 index 0000000..a0ab2ad --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/i18n/de.po @@ -0,0 +1,67 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_key +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-07-12 15:43+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.7.1\n" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__key +#: model:ir.model.fields,field_description:project_key.field_project_task__key +msgid "Key" +msgstr "Nummerierungsmuster" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__task_key_sequence_id +msgid "Key Sequence" +msgstr "Musterfolge" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_project_project_key_unique +msgid "Project key must be unique" +msgstr "Das Nummerierungsmuster für Projekte muss eindeutig sein." + +#. module: project_key +#. odoo-python +#: code:addons/project_key/models/project_project.py:0 +#, python-format +msgid "Project task sequence for project" +msgstr "" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_task +msgid "Task" +msgstr "Aufgabe" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_task_task_key_unique +msgid "Task key must be unique!" +msgstr "Aufgabennummerierung muss eindeutig sein!" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_task__url +msgid "URL" +msgstr "URL" + +#~ msgid "key" +#~ msgstr "Nummer" + +#, python-format +#~ msgid "Project task sequence for project " +#~ msgstr "Aufgabennummerierung für Projekt " diff --git a/odoo-bringout-oca-project-project_key/project_key/i18n/es_AR.po b/odoo-bringout-oca-project-project_key/project_key/i18n/es_AR.po new file mode 100644 index 0000000..7d6b1f1 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/i18n/es_AR.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_key +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-02-21 00:08+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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.14.1\n" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__key +#: model:ir.model.fields,field_description:project_key.field_project_task__key +msgid "Key" +msgstr "Clave" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__task_key_sequence_id +msgid "Key Sequence" +msgstr "Secuencia de la Clave" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_project_project_key_unique +msgid "Project key must be unique" +msgstr "La clave del proyecto debe ser única" + +#. module: project_key +#. odoo-python +#: code:addons/project_key/models/project_project.py:0 +#, python-format +msgid "Project task sequence for project" +msgstr "Secuencia de tareas del proyecto para el proyecto" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_task_task_key_unique +msgid "Task key must be unique!" +msgstr "¡La clave de la tarea debe ser única!" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_task__url +msgid "URL" +msgstr "URL" + +#~ msgid "Display Name" +#~ msgstr "Mostrar Nombre" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última Modificación el" + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" + +#~ msgid "key" +#~ msgstr "clave" diff --git a/odoo-bringout-oca-project-project_key/project_key/i18n/fr.po b/odoo-bringout-oca-project-project_key/project_key/i18n/fr.po new file mode 100644 index 0000000..5d197e2 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/i18n/fr.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_key +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-18 15:37+0000\n" +"PO-Revision-Date: 2024-03-29 08:13+0000\n" +"Last-Translator: Vincent Hatakeyama \n" +"Language-Team: none\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__key +#: model:ir.model.fields,field_description:project_key.field_project_task__key +msgid "Key" +msgstr "Clé" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__task_key_sequence_id +msgid "Key Sequence" +msgstr "Séquence de clé" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_project +msgid "Project" +msgstr "Projet" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_project_project_key_unique +msgid "Project key must be unique" +msgstr "La clé de projet doit être unique" + +#. module: project_key +#. odoo-python +#: code:addons/project_key/models/project_project.py:0 +#, python-format +msgid "Project task sequence for project" +msgstr "Séquence des tâches pour le projet" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_task +msgid "Task" +msgstr "Tâche" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_task_task_key_unique +msgid "Task key must be unique!" +msgstr "La clé de tâche doit être unique !" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_task__url +msgid "URL" +msgstr "Adresse universelle" + +#~ msgid "key" +#~ msgstr "Clé" diff --git a/odoo-bringout-oca-project-project_key/project_key/i18n/it.po b/odoo-bringout-oca-project-project_key/project_key/i18n/it.po new file mode 100644 index 0000000..8f7dd24 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/i18n/it.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_key +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-12 12:35+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 4.14.1\n" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__key +#: model:ir.model.fields,field_description:project_key.field_project_task__key +msgid "Key" +msgstr "Chiave" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__task_key_sequence_id +msgid "Key Sequence" +msgstr "Sequenza chiave" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_project_project_key_unique +msgid "Project key must be unique" +msgstr "La chiave del progetto deve essere univoca" + +#. module: project_key +#. odoo-python +#: code:addons/project_key/models/project_project.py:0 +#, python-format +msgid "Project task sequence for project" +msgstr "Sequenza lavoro per il progetto" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_task +msgid "Task" +msgstr "Lavoro" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_task_task_key_unique +msgid "Task key must be unique!" +msgstr "La chiave del lavoro deve essere univoca!" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_task__url +msgid "URL" +msgstr "URL" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" + +#~ msgid "key" +#~ msgstr "chiave" diff --git a/odoo-bringout-oca-project-project_key/project_key/i18n/project_key.pot b/odoo-bringout-oca-project-project_key/project_key/i18n/project_key.pot new file mode 100644 index 0000000..aa3d207 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/i18n/project_key.pot @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_key +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_key +#: model:ir.model.fields,field_description:project_key.field_project_project__key +#: model:ir.model.fields,field_description:project_key.field_project_task__key +msgid "Key" +msgstr "" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_project__task_key_sequence_id +msgid "Key Sequence" +msgstr "" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_project +msgid "Project" +msgstr "" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_project_project_key_unique +msgid "Project key must be unique" +msgstr "" + +#. module: project_key +#. odoo-python +#: code:addons/project_key/models/project_project.py:0 +#, python-format +msgid "Project task sequence for project" +msgstr "" + +#. module: project_key +#: model:ir.model,name:project_key.model_project_task +msgid "Task" +msgstr "" + +#. module: project_key +#: model:ir.model.constraint,message:project_key.constraint_project_task_task_key_unique +msgid "Task key must be unique!" +msgstr "" + +#. module: project_key +#: model:ir.model.fields,field_description:project_key.field_project_task__url +msgid "URL" +msgstr "" diff --git a/odoo-bringout-oca-project-project_key/project_key/models/__init__.py b/odoo-bringout-oca-project-project_key/project_key/models/__init__.py new file mode 100644 index 0000000..443c6f4 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/models/__init__.py @@ -0,0 +1,4 @@ +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from . import project_project +from . import project_task diff --git a/odoo-bringout-oca-project-project_key/project_key/models/project_project.py b/odoo-bringout-oca-project-project_key/project_key/models/project_project.py new file mode 100644 index 0000000..946c99d --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/models/project_project.py @@ -0,0 +1,208 @@ +# Copyright 2017 - 2018 Modoolar +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from odoo import _, api, fields, models +from odoo.tools import config + + +class Project(models.Model): + _inherit = "project.project" + _rec_names_search = ["key", "name", "id"] + + task_key_sequence_id = fields.Many2one( + comodel_name="ir.sequence", string="Key Sequence", ondelete="restrict" + ) + + key = fields.Char(size=10, required=False, index=True, copy=False) + + _sql_constraints = [ + ("project_key_unique", "UNIQUE(key)", "Project key must be unique") + ] + + @api.onchange("name") + def _onchange_project_name(self): + for rec in self: + if rec.key: + continue + + if rec.name: + rec.key = self.generate_project_key(rec.name) + else: + rec.key = "" + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + key = vals.get("key", False) + if not key: + vals["key"] = self.generate_project_key(vals["name"]) + + # Tasks must be created after the project. + if vals.get("task_ids", False): + task_vals = vals.pop("task_ids") + else: + task_vals = [] + + # The key sequences to create stories and tasks with keys, created with + # a project, must be linked to the project company to avoid security + # issues. + # Propagate the company ID, using the context key, to fill the + # sequences company. + company_id = vals.get("company_id") + if company_id: + self = self.with_context(project_sequence_company=company_id) + + new_project = super(Project, self).create(vals) + new_project.create_sequence() + + # Tasks must be created after the project. + if task_vals: + new_project.write({"task_ids": task_vals}) + + return new_project + + def write(self, values): + update_key = False + + if "key" in values: + key = values["key"] + update_key = self.key != key + + res = super(Project, self).write(values) + + if update_key: + # Here we don't expect to have more than one record + # because we can not have multiple projects with the same KEY. + self.update_sequence() + self._update_task_keys() + + return res + + def unlink(self): + for project in self: + sequence = project.task_key_sequence_id + project.task_key_sequence_id = False + sequence.sudo().unlink() + return super(Project, self).unlink() + + def create_sequence(self): + """ + This method creates ir.sequence fot the current project + :return: Returns create sequence + """ + self.ensure_one() + sequence_data = self._prepare_sequence_data() + sequence = self.env["ir.sequence"].sudo().create(sequence_data) + self.write({"task_key_sequence_id": sequence.id}) + return sequence + + def update_sequence(self): + """ + This method updates existing task sequence + :return: + """ + sequence_data = self._prepare_sequence_data(init=False) + self.task_key_sequence_id.sudo().write(sequence_data) + + def _prepare_sequence_data(self, init=True): + """ + This method prepares data for create/update_sequence methods + :param init: Set to False in case you don't want to set initial values + for number_increment and number_next_actual + """ + values = { + "name": "{} {}".format(_("Project task sequence for project"), self.name), + "implementation": "standard", + "code": "project.task.key.{}".format(self.id), + "prefix": "{}-".format(self.key), + "use_date_range": False, + } + + # The key sequences to create stories and tasks with keys, created with + # a project, must be linked to the project company to avoid security + # issues. + company_id = self.env.context.get("project_sequence_company") + if company_id: + values["company_id"] = company_id + + if init: + values.update(dict(number_increment=1, number_next_actual=1)) + + return values + + def get_next_task_key(self): + test_project_key = self.env.context.get("test_project_key") + if (config["test_enable"] and not test_project_key) or ( + config["demo"].get("project_key") and not test_project_key + ): + return False + return self.sudo().task_key_sequence_id.next_by_id() + + def generate_project_key(self, text): + test_project_key = self.env.context.get("test_project_key") + if (config["test_enable"] and not test_project_key) or ( + config["demo"].get("project_key") and not test_project_key + ): + return False + + if not text: + return "" + + data = text.split(" ") + if len(data) == 1: + return self._generate_project_unique_key(data[0][:3].upper()) + + key = [] + for item in data: + key.append(item[:1].upper()) + return self._generate_project_unique_key("".join(key)) + + def _generate_project_unique_key(self, text): + self_context = self.with_context(active_test=False) + res = text + unique_key = False + counter = 0 + while not unique_key: + if counter != 0: + res = "%s%s" % (text, counter) + unique_key = not bool(self_context.search([("key", "=", res)])) + counter += 1 + + return res + + def _update_task_keys(self): + """ + This method will update task keys of the current project. + """ + self.ensure_one() + self.flush_model() + reindex_query = """ + UPDATE project_task + SET key = x.key + FROM ( + SELECT t.id, p.key || '-' || split_part(t.key, '-', 2) AS key + FROM project_task t + INNER JOIN project_project p ON t.project_id = p.id + WHERE t.project_id = %s + ) AS x + WHERE project_task.id = x.id; + """ + + self.env.cr.execute(reindex_query, (self.id,)) + self.task_ids.invalidate_model(["key"]) + + @api.model + def _set_default_project_key(self): + """ + This method will be called from the post_init hook in order to set + default values on project.project and + project.task, so we leave those tables nice and clean after module + installation. + :return: + """ + for project in self.search([("key", "=", False)]): + project.key = self.generate_project_key(project.name) + project.create_sequence() + + for task in project.task_ids: + task.key = project.get_next_task_key() diff --git a/odoo-bringout-oca-project-project_key/project_key/models/project_task.py b/odoo-bringout-oca-project-project_key/project_key/models/project_task.py new file mode 100644 index 0000000..97ba748 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/models/project_task.py @@ -0,0 +1,75 @@ +# Copyright 2017 - 2018 Modoolar +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from odoo import api, fields, models + +TASK_URL = "/web#id=%s&view_type=form&model=project.task&action=%s" + + +class Task(models.Model): + _inherit = "project.task" + _rec_names_search = ["key", "name"] + + key = fields.Char(size=20, required=False, index=True) + + url = fields.Char(string="URL", compute="_compute_task_url") + + _sql_constraints = [("task_key_unique", "UNIQUE(key)", "Task key must be unique!")] + + def _compute_task_url(self): + action_id = self.env.ref("project.action_view_task").id + for task in self: + task.url = TASK_URL % (task.id, action_id) + + @api.model_create_multi + def create(self, vals_list): + ctx = self.env.context.get + for vals in vals_list: + project_id = vals.get("project_id", False) + if not project_id: + project_id = ctx("default_project_id", False) + + if not project_id and ctx("active_model", False) == "project.project": + project_id = ctx("active_id", False) + + if project_id: + project = self.env["project.project"].browse(project_id) + vals["key"] = project.get_next_task_key() + return super(Task, self).create(vals_list) + + def write(self, vals): + project_id = vals.get("project_id", False) + if not project_id: + return super(Task, self).write(vals) + + project = self.env["project.project"].browse(project_id) + for task in self: + if task.key and task.project_id.id == project.id: + continue + + values = self.prepare_task_for_project_switch(task, project) + super(Task, task).write(values) + + return super(Task, self).write(vals) + + def prepare_task_for_project_switch(self, task, project): + data = {"key": project.get_next_task_key(), "project_id": project.id} + + if len(task.child_ids) > 0: + data["child_ids"] = [ + (1, child.id, self.prepare_task_for_project_switch(child, project)) + for child in task.child_ids + ] + return data + + def name_get(self): + result = [] + + for record in self: + task_name = [] + if record.key: + task_name.append(record.key) + task_name.append(record.name) + result.append((record.id, " - ".join(task_name))) + + return result diff --git a/odoo-bringout-oca-project-project_key/project_key/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_key/project_key/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..7585716 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/readme/CONTRIBUTORS.rst @@ -0,0 +1,8 @@ +* Petar Najman +* Sladjan Kantar +* `CorporateHub `__ + + * Alexey Pelykh + +* Saran Lim. +* Tharathip Chaweewongphan diff --git a/odoo-bringout-oca-project-project_key/project_key/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_key/project_key/readme/DESCRIPTION.rst new file mode 100644 index 0000000..9b7adc7 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module provides functionality to uniquely identify projects and tasks by simple ``key`` field. diff --git a/odoo-bringout-oca-project-project_key/project_key/readme/USAGE.rst b/odoo-bringout-oca-project-project_key/project_key/readme/USAGE.rst new file mode 100644 index 0000000..206ca8b --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/readme/USAGE.rst @@ -0,0 +1,34 @@ +To use this module functionality you just need to: + +On ``project.project`` level: + +In Kanban View: + +#. Go to Project > Dashboard +#. Create +#. Enter project name and use auto generated key or simply override value by entering your own key value. + +In Tree View: + +#. Go to Project > Configuration > Projects +#. Create +#. Enter project name and use auto generated key or simply override value by entering your own key value. + +In form View: + +#. Go to Project > Dashboard +#. Open the projects settings +#. Modify the "key" value +#. After modifying project key the key of any existing tasks related to that project will be updated automatically. + +When you create a project, under the hood a ir.sequence record gets creted with prefix: ``-``. + +On ``project.task`` level: + +#. Actually there is nothing to be done here +#. Task keys are auto generated based on project key value with per project auto incremented number (i.e. PA-1, PA-2, etc) + +In browser address bar: + +#. Navigate to your project by entering following url: http://<>/projects/PROJECT-KEY +#. Navigate to your task by entering following url: http://<>/tasks/TASK-KEY diff --git a/odoo-bringout-oca-project-project_key/project_key/static/description/icon.png b/odoo-bringout-oca-project-project_key/project_key/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_key/project_key/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_key/project_key/static/description/index.html b/odoo-bringout-oca-project-project_key/project_key/static/description/index.html new file mode 100644 index 0000000..265dd8e --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/static/description/index.html @@ -0,0 +1,466 @@ + + + + + +Project Key + + + +
+

Project Key

+ + +

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

+

This module provides functionality to uniquely identify projects and tasks by simple key field.

+

Table of contents

+ +
+

Usage

+

To use this module functionality you just need to:

+

On project.project level:

+

In Kanban View:

+
    +
  1. Go to Project > Dashboard
  2. +
  3. Create
  4. +
  5. Enter project name and use auto generated key or simply override value by entering your own key value.
  6. +
+

In Tree View:

+
    +
  1. Go to Project > Configuration > Projects
  2. +
  3. Create
  4. +
  5. Enter project name and use auto generated key or simply override value by entering your own key value.
  6. +
+

In form View:

+
    +
  1. Go to Project > Dashboard
  2. +
  3. Open the projects settings
  4. +
  5. Modify the “key” value
  6. +
  7. After modifying project key the key of any existing tasks related to that project will be updated automatically.
  8. +
+

When you create a project, under the hood a ir.sequence record gets creted with prefix: <project-key>-.

+

On project.task level:

+
    +
  1. Actually there is nothing to be done here
  2. +
  3. Task keys are auto generated based on project key value with per project auto incremented number (i.e. PA-1, PA-2, etc)
  4. +
+

In browser address bar:

+
    +
  1. Navigate to your project by entering following url: http://<<your-domain>>/projects/PROJECT-KEY
  2. +
  3. Navigate to your task by entering following url: http://<<your-domain>>/tasks/TASK-KEY
  4. +
+
+
+

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

+
    +
  • Modoolar
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_key/project_key/tests/__init__.py b/odoo-bringout-oca-project-project_key/project_key/tests/__init__.py new file mode 100644 index 0000000..31f0029 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/tests/__init__.py @@ -0,0 +1,5 @@ +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from . import test_project +from . import test_task +from . import test_controller diff --git a/odoo-bringout-oca-project-project_key/project_key/tests/test_common.py b/odoo-bringout-oca-project-project_key/project_key/tests/test_common.py new file mode 100644 index 0000000..08c3fd5 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/tests/test_common.py @@ -0,0 +1,55 @@ +# Copyright 2017 - 2018 Modoolar +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from odoo.tests.common import HttpCase, TransactionCase + + +class TestMixin(object): + @staticmethod + def _setup_records(class_or_instance): + self = class_or_instance + self.Project = self.env["project.project"].with_context(test_project_key=True) + self.Task = self.env["project.task"].with_context(test_project_key=True) + + self.project_action = self.env.ref("project.open_view_project_all_config") + self.task_action = self.env.ref("project.action_view_task") + + self.project_1 = self.Project.create({"name": "OCA"}) + self.project_2 = self.Project.create({"name": "Odoo", "key": "ODOO"}) + self.project_3 = self.Project.create({"name": "Python"}) + + self.task11 = self.Task.create({"name": "1", "project_id": self.project_1.id}) + + self.task12 = self.Task.create( + {"name": "2", "parent_id": self.task11.id, "project_id": self.project_1.id} + ) + + self.task21 = self.Task.create({"name": "3", "project_id": self.project_2.id}) + + self.task30 = self.Task.create({"name": "3"}) + + def get_record_url(self, record, model, action): + return "/web#id={}&view_type=form&model={}&action={}".format( + record.id, model, action + ) + + def get_task_url(self, task): + return self.get_record_url(task, task._name, self.task_action.id) + + def get_project_url(self, project): + return self.get_record_url(project, project._name, self.project_action.id) + + +class TestCommon(TransactionCase, TestMixin): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls._setup_records(cls) + + +class HttpTestCommon(HttpCase, TestMixin): + def setUp(self): + super().setUp() + self.env = self.env(context=dict(self.env.context, tracking_disable=True)) + self._setup_records(self) diff --git a/odoo-bringout-oca-project-project_key/project_key/tests/test_controller.py b/odoo-bringout-oca-project-project_key/project_key/tests/test_controller.py new file mode 100644 index 0000000..dc65dbd --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/tests/test_controller.py @@ -0,0 +1,22 @@ +# Copyright 2017 - 2018 Modoolar +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from .test_common import HttpTestCommon + + +class TestController(HttpTestCommon): + def test_01_project_browse(self): + self.authenticate("admin", "admin") + response = self.url_open("/projects/" + self.project_1.key) + self.assertEqual(response.status_code, 200) + self.assertTrue( + response.url.endswith(self.get_project_url(self.project_1)), response.url + ) + + def test_02_task_browse(self): + self.authenticate("admin", "admin") + response = self.url_open("/tasks/" + self.task11.key) + self.assertEqual(response.status_code, 200) + self.assertTrue( + response.url.endswith(self.get_task_url(self.task11)), response.url + ) diff --git a/odoo-bringout-oca-project-project_key/project_key/tests/test_project.py b/odoo-bringout-oca-project-project_key/project_key/tests/test_project.py new file mode 100644 index 0000000..2b7432e --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/tests/test_project.py @@ -0,0 +1,76 @@ +# Copyright 2017 - 2018 Modoolar +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from odoo.tools import mute_logger + +from .test_common import TestCommon + + +class TestProject(TestCommon): + def test_01_key(self): + self.assertEqual(self.project_1.key, "OCA") + self.assertEqual(self.project_2.key, "ODOO") + self.assertEqual(self.project_3.key, "PYT") + + def test_02_change_key(self): + self.project_1.key = "XXX" + + self.assertEqual(self.task11.key, "XXX-1") + self.assertEqual(self.task12.key, "XXX-2") + + def test_03_name_search(self): + + projects = self.Project.name_search("ODO") + self.assertEqual(len(projects), 1) + + non_odoo_projects = [ + x[0] for x in self.Project.name_search("ODO", operator="not ilike") + ] + + odoo_projects = self.Project.browse(non_odoo_projects).filtered( + lambda x: x.id == self.project_2.id + ) + + self.assertEqual(len(odoo_projects), 0) + + def test_04_name_search_empty(self): + projects = self.Project.name_search("") + self.assertGreater(len(projects), 0) + + def test_05_name_onchange(self): + project = self.Project.new({"name": "Software Development"}) + project._onchange_project_name() + self.assertEqual(project.key, "SD") + + def test_06_name_onchange(self): + project = self.Project.new({}) + project._onchange_project_name() + self.assertEqual(project.key, "") + + @mute_logger("odoo.models.unlink") + def test_07_delete(self): + self.project_1.task_ids.unlink() + self.project_1.unlink() + + self.project_2.task_ids.unlink() + self.project_2.unlink() + + self.project_3.unlink() + + def test_08_generate_empty_project_key(self): + empty_key = self.Project.generate_project_key(False) + self.assertEqual(empty_key, "") + + def test_09_name_onchange_with_key(self): + project = self.Project.new({"name": "Software Development", "key": "TEST"}) + project._onchange_project_name() + self.assertEqual(project.key, "TEST") + + def test_10_generate_unique_key_with_counter(self): + project = self.Project.create({"name": "OCA"}) + self.assertEqual(project.key, "OCA1") + + def test_11_generate_unique_key_with_counter_inactive(self): + self.project_1.active = False + project = self.Project.create({"name": "OCA"}) + self.assertEqual(project.key, "OCA1") diff --git a/odoo-bringout-oca-project-project_key/project_key/tests/test_task.py b/odoo-bringout-oca-project-project_key/project_key/tests/test_task.py new file mode 100644 index 0000000..7ad37a2 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/tests/test_task.py @@ -0,0 +1,54 @@ +# Copyright 2017 - 2018 Modoolar +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from .test_common import TestCommon + + +class TestTask(TestCommon): + def test_01_key(self): + self.assertEqual(self.task11.key, "OCA-1") + self.assertEqual(self.task12.key, "OCA-2") + self.assertEqual(self.task21.key, "ODOO-1") + self.assertEqual(self.task30.key, False) + + def test_02_compute_task_url(self): + task_url = self.get_task_url(self.task11) + + self.task11._compute_task_url() + self.assertEqual(self.task11.url, task_url) + + def test_03_create_task_project_in_context(self): + self.Task.with_context( + active_model="project.project", active_id=self.project_1.id + ).create({"name": "4"}) + + def test_04_no_switch_project(self): + self.task11.write({"project_id": self.project_1.id}) + self.assertEqual(self.task11.key, "OCA-1") + self.assertEqual(self.task12.key, "OCA-2") + + def test_05_switch_project(self): + self.task11.write({"project_id": self.project_2.id}) + self.assertEqual(self.task11.key, "ODOO-2") + self.assertEqual(self.task12.key, "ODOO-3") + + def test_06_name_search(self): + oca_tasks = self.Task.name_search("OCA") + self.assertEqual(len(oca_tasks), 2) + + non_oca_task_ids = [ + x[0] for x in self.Task.name_search("OCA", operator="not ilike") + ] + + oca_tasks = self.Task.browse(non_oca_task_ids).filtered( + lambda x: x.project_id.id == self.project_1.id + ) + + self.assertEqual(len(oca_tasks), 0) + + def test_07_name_search_empty(self): + tasks = self.Task.name_search("") + self.assertGreater(len(tasks), 0) + + def test_08_create_new_company(self): + self.env["res.company"].create({"name": "New company"}) diff --git a/odoo-bringout-oca-project-project_key/project_key/views/project_key_views.xml b/odoo-bringout-oca-project-project_key/project_key/views/project_key_views.xml new file mode 100644 index 0000000..11ff0c7 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/project_key/views/project_key_views.xml @@ -0,0 +1,114 @@ + + + + + project.edit.project.inherited + project.project + + + + + + + + + project.project.tree + project.project + + + + + + + + + project.project.select + project.project + + + + ['|',('name','ilike',self),('key','ilike',self)] + + + + + project.task.form.key + project.task + + + + + + + + + project.task.tree + project.task + + + + + + + + + + project.task.search.key + project.task + + + + ['|',('name','ilike',self),('key','ilike',self)] + + + + + project.task.kanban.key + project.task + + + + + + + + + + + + + + + project.project.view.form.simplified + project.project + + +
+ +
+
+
+ + project.project.kanban + project.project + + + + + + + - + + + +
diff --git a/odoo-bringout-oca-project-project_key/pyproject.toml b/odoo-bringout-oca-project-project_key/pyproject.toml new file mode 100644 index 0000000..28a4d95 --- /dev/null +++ b/odoo-bringout-oca-project-project_key/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_key" +version = "16.0.0" +description = "Project Key - Module decorates projects and tasks with Project Key" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_key"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_list/README.md b/odoo-bringout-oca-project-project_list/README.md new file mode 100644 index 0000000..2fb54ae --- /dev/null +++ b/odoo-bringout-oca-project-project_list/README.md @@ -0,0 +1,46 @@ +# Projects List View + +Odoo addon: project_list + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_list +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Projects List View +- **Version**: 16.0.1.0.1 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_list`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_list/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_list/doc/ARCHITECTURE.md new file mode 100644 index 0000000..c18fb14 --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_list Module - project_list + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_list/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_list/doc/CONFIGURATION.md new file mode 100644 index 0000000..f4a6ee0 --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_list. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_list/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_list/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_list/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_list/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_list/doc/FAQ.md b/odoo-bringout-oca-project-project_list/doc/FAQ.md new file mode 100644 index 0000000..f2a0fa5 --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_list or install in UI. diff --git a/odoo-bringout-oca-project-project_list/doc/INSTALL.md b/odoo-bringout-oca-project-project_list/doc/INSTALL.md new file mode 100644 index 0000000..e6a3eaa --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_list" +# or +uv pip install odoo-bringout-oca-project-project_list" +``` diff --git a/odoo-bringout-oca-project-project_list/doc/MODELS.md b/odoo-bringout-oca-project-project_list/doc/MODELS.md new file mode 100644 index 0000000..5d387de --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/MODELS.md @@ -0,0 +1,11 @@ +# Models + +Detected core models and extensions in project_list. + +```mermaid +classDiagram +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_list/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_list/doc/OVERVIEW.md new file mode 100644 index 0000000..81306ce --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_list. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_list +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_list/doc/REPORTS.md b/odoo-bringout-oca-project-project_list/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_list/doc/SECURITY.md b/odoo-bringout-oca-project-project_list/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_list/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_list/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_list/doc/USAGE.md b/odoo-bringout-oca-project-project_list/doc/USAGE.md new file mode 100644 index 0000000..aa931df --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_list +``` diff --git a/odoo-bringout-oca-project-project_list/doc/WIZARDS.md b/odoo-bringout-oca-project-project_list/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_list/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_list/project_list/README.rst b/odoo-bringout-oca-project-project_list/project_list/README.rst new file mode 100644 index 0000000..1bc199b --- /dev/null +++ b/odoo-bringout-oca-project-project_list/project_list/README.rst @@ -0,0 +1,80 @@ +================== +Projects List View +================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d25ecb9253bc6737b5345d6ad0b45c91d67f6ae9fbcd03ee11ed613d50e4cd38 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_list + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_list + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows viewing projects as list. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* CorporateHub + +Contributors +~~~~~~~~~~~~ + +* `CorporateHub `__ + + * Alexey Pelykh + +* Saran Lim. + +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. + +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/odoo-bringout-oca-project-project_list/project_list/__init__.py b/odoo-bringout-oca-project-project_list/project_list/__init__.py new file mode 100644 index 0000000..c71289a --- /dev/null +++ b/odoo-bringout-oca-project-project_list/project_list/__init__.py @@ -0,0 +1 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). diff --git a/odoo-bringout-oca-project-project_list/project_list/__manifest__.py b/odoo-bringout-oca-project-project_list/project_list/__manifest__.py new file mode 100644 index 0000000..4b91dae --- /dev/null +++ b/odoo-bringout-oca-project-project_list/project_list/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Projects List View", + "version": "16.0.1.0.1", + "category": "Project", + "website": "https://github.com/OCA/project", + "author": "CorporateHub, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "application": False, + "summary": "Projects list view", + "depends": ["project"], + "data": ["views/project_project.xml"], +} diff --git a/odoo-bringout-oca-project-project_list/project_list/i18n/de.po b/odoo-bringout-oca-project-project_list/project_list/i18n/de.po new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-project-project_list/project_list/i18n/es_AR.po b/odoo-bringout-oca-project-project_list/project_list/i18n/es_AR.po new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-project-project_list/project_list/i18n/fa_IR.po b/odoo-bringout-oca-project-project_list/project_list/i18n/fa_IR.po new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-project-project_list/project_list/i18n/it.po b/odoo-bringout-oca-project-project_list/project_list/i18n/it.po new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-project-project_list/project_list/i18n/project_list.pot b/odoo-bringout-oca-project-project_list/project_list/i18n/project_list.pot new file mode 100644 index 0000000..78d58d5 --- /dev/null +++ b/odoo-bringout-oca-project-project_list/project_list/i18n/project_list.pot @@ -0,0 +1,13 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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" diff --git a/odoo-bringout-oca-project-project_list/project_list/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_list/project_list/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..1d4aab8 --- /dev/null +++ b/odoo-bringout-oca-project-project_list/project_list/readme/CONTRIBUTORS.rst @@ -0,0 +1,5 @@ +* `CorporateHub `__ + + * Alexey Pelykh + +* Saran Lim. diff --git a/odoo-bringout-oca-project-project_list/project_list/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_list/project_list/readme/DESCRIPTION.rst new file mode 100644 index 0000000..60fadb6 --- /dev/null +++ b/odoo-bringout-oca-project-project_list/project_list/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows viewing projects as list. diff --git a/odoo-bringout-oca-project-project_list/project_list/static/description/icon.png b/odoo-bringout-oca-project-project_list/project_list/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_list/project_list/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_list/project_list/static/description/index.html b/odoo-bringout-oca-project-project_list/project_list/static/description/index.html new file mode 100644 index 0000000..33eef7a --- /dev/null +++ b/odoo-bringout-oca-project-project_list/project_list/static/description/index.html @@ -0,0 +1,427 @@ + + + + + +Projects List View + + + +
+

Projects List View

+ + +

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

+

This module allows viewing projects as list.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • CorporateHub
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_list/project_list/views/project_project.xml b/odoo-bringout-oca-project-project_list/project_list/views/project_project.xml new file mode 100644 index 0000000..4465477 --- /dev/null +++ b/odoo-bringout-oca-project-project_list/project_list/views/project_project.xml @@ -0,0 +1,51 @@ + + + + + + + + + kanban + 1 + + + + + tree + 2 + + + + + kanban + 2 + + + + + tree + 1 + + + + tree,kanban,form + {} + + + tree,kanban,form + {} + + diff --git a/odoo-bringout-oca-project-project_list/pyproject.toml b/odoo-bringout-oca-project-project_list/pyproject.toml new file mode 100644 index 0000000..f4a1066 --- /dev/null +++ b/odoo-bringout-oca-project-project_list/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_list" +version = "16.0.0" +description = "Projects List View - Projects list view" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_list"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_merge/README.md b/odoo-bringout-oca-project-project_merge/README.md new file mode 100644 index 0000000..6fc245f --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/README.md @@ -0,0 +1,46 @@ +# Project Task Merge + +Odoo addon: project_merge + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_merge +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Task Merge +- **Version**: 16.0.1.0.0 +- **Category**: After-Sales +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_merge`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_merge/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_merge/doc/ARCHITECTURE.md new file mode 100644 index 0000000..cf10c52 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_merge Module - project_merge + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_merge/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_merge/doc/CONFIGURATION.md new file mode 100644 index 0000000..6826337 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_merge. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_merge/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_merge/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_merge/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_merge/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_merge/doc/FAQ.md b/odoo-bringout-oca-project-project_merge/doc/FAQ.md new file mode 100644 index 0000000..af84b07 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_merge or install in UI. diff --git a/odoo-bringout-oca-project-project_merge/doc/INSTALL.md b/odoo-bringout-oca-project-project_merge/doc/INSTALL.md new file mode 100644 index 0000000..a5e80c5 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_merge" +# or +uv pip install odoo-bringout-oca-project-project_merge" +``` diff --git a/odoo-bringout-oca-project-project_merge/doc/MODELS.md b/odoo-bringout-oca-project-project_merge/doc/MODELS.md new file mode 100644 index 0000000..a3abb23 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/MODELS.md @@ -0,0 +1,11 @@ +# Models + +Detected core models and extensions in project_merge. + +```mermaid +classDiagram +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_merge/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_merge/doc/OVERVIEW.md new file mode 100644 index 0000000..d25251e --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_merge. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_merge +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_merge/doc/REPORTS.md b/odoo-bringout-oca-project-project_merge/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_merge/doc/SECURITY.md b/odoo-bringout-oca-project-project_merge/doc/SECURITY.md new file mode 100644 index 0000000..b67266f --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in project_merge. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../project_merge/security/ir.model.access.csv)** + - 1 model access rules + +## Record Rules + +Row-level security rules defined in: + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[ir.model.access.csv](../project_merge/security/ir.model.access.csv)** + - Model access permissions (CRUD rights) + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_merge/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_merge/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_merge/doc/USAGE.md b/odoo-bringout-oca-project-project_merge/doc/USAGE.md new file mode 100644 index 0000000..149d0c6 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_merge +``` diff --git a/odoo-bringout-oca-project-project_merge/doc/WIZARDS.md b/odoo-bringout-oca-project-project_merge/doc/WIZARDS.md new file mode 100644 index 0000000..dddca69 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/doc/WIZARDS.md @@ -0,0 +1,8 @@ +# Wizards + +Transient models exposed as UI wizards in project_merge. + +```mermaid +classDiagram + class ProjectTaskMerge +``` diff --git a/odoo-bringout-oca-project-project_merge/project_merge/README.rst b/odoo-bringout-oca-project-project_merge/project_merge/README.rst new file mode 100644 index 0000000..fe9604c --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/README.rst @@ -0,0 +1,85 @@ +================== +Project Task Merge +================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:169c683973aa2368cd095eb4987cd42d805d74555c48565f2b6ce85fb2f271a8 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_merge + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_merge + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a wizard to merge project tasks. + +A wizard that can be called from tree view of project task. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. Merge Project Task + +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 +~~~~~~~ + +* Onestein + +Contributors +~~~~~~~~~~~~ + +* `Onestein `_ + +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. + +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/odoo-bringout-oca-project-project_merge/project_merge/__init__.py b/odoo-bringout-oca-project-project_merge/project_merge/__init__.py new file mode 100644 index 0000000..4027237 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/__init__.py @@ -0,0 +1 @@ +from . import wizard diff --git a/odoo-bringout-oca-project-project_merge/project_merge/__manifest__.py b/odoo-bringout-oca-project-project_merge/project_merge/__manifest__.py new file mode 100644 index 0000000..440fba7 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2024 Onestein +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Project Task Merge", + "summary": "Wizard to merge project tasks", + "version": "16.0.1.0.0", + "author": "Onestein, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "license": "AGPL-3", + "category": "After-Sales", + "depends": ["project"], + "data": [ + "security/ir.model.access.csv", + "wizard/project_task_merge_views.xml", + ], + "installable": True, +} diff --git a/odoo-bringout-oca-project-project_merge/project_merge/i18n/bs.po b/odoo-bringout-oca-project-project_merge/project_merge/i18n/bs.po new file mode 100644 index 0000000..3195bb1 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/i18n/bs.po @@ -0,0 +1,106 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_merge +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_merge +#: model_terms:ir.ui.view,arch_db:project_merge.project_task_merge_view_form +msgid "" +"NB: This will archive the selected tasks (Except " +"the destination task)" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__user_ids +msgid "Assignees" +msgstr "Odgovoran" + +#. module: project_merge +#: model_terms:ir.ui.view,arch_db:project_merge.project_task_merge_view_form +msgid "Cancel" +msgstr "Otkaži" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__create_new_task +msgid "Create a new task" +msgstr "Kreiraj novi zadatak" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__dst_project_id +msgid "Destination Project" +msgstr "Odredišni projekat" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__id +msgid "ID" +msgstr "ID" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: project_merge +#: model:ir.actions.act_window,name:project_merge.action_project_task_merge +msgid "Merge Project Tasks" +msgstr "Spoji zadatke projekta" + +#. module: project_merge +#: model_terms:ir.ui.view,arch_db:project_merge.project_task_merge_view_form +msgid "Merge Tasks" +msgstr "Spoji zadatke" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__dst_task_id +msgid "Merge into an existing task" +msgstr "Spoji u postojeći zadatak" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__dst_task_name +msgid "New task name" +msgstr "Ime novog zadatka" + +#. module: project_merge +#: model:ir.model,name:project_merge.model_project_task_merge +msgid "Project Task Merge" +msgstr "Spajanje zadatka projekta" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__task_ids +msgid "Tasks to Merge" +msgstr "Zadaci za spajanje" diff --git a/odoo-bringout-oca-project-project_merge/project_merge/i18n/it.po b/odoo-bringout-oca-project-project_merge/project_merge/i18n/it.po new file mode 100644 index 0000000..8ee2a38 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/i18n/it.po @@ -0,0 +1,111 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_merge +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-09-16 12:06+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.6.2\n" + +#. module: project_merge +#: model_terms:ir.ui.view,arch_db:project_merge.project_task_merge_view_form +msgid "" +"NB: This will archive the selected tasks (Except " +"the destination task)" +msgstr "" +"NB: questo archivierà i lavori selezionati (" +"tranne il lavoro di destinazione)" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__user_ids +msgid "Assignees" +msgstr "Assegnatari" + +#. module: project_merge +#: model_terms:ir.ui.view,arch_db:project_merge.project_task_merge_view_form +msgid "Cancel" +msgstr "Annulla" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__create_new_task +msgid "Create a new task" +msgstr "Crea un nuovo lavoro" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__dst_project_id +msgid "Destination Project" +msgstr "Progetto di destinazione" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__id +msgid "ID" +msgstr "ID" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: project_merge +#: model:ir.actions.act_window,name:project_merge.action_project_task_merge +msgid "Merge Project Tasks" +msgstr "Unisci lavori progetto" + +#. module: project_merge +#: model_terms:ir.ui.view,arch_db:project_merge.project_task_merge_view_form +msgid "Merge Tasks" +msgstr "Unisci lavori" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__dst_task_id +msgid "Merge into an existing task" +msgstr "Unisci in un lavoro esistente" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__dst_task_name +msgid "New task name" +msgstr "Nome nuovo lavoro" + +#. module: project_merge +#: model:ir.model,name:project_merge.model_project_task_merge +msgid "Project Task Merge" +msgstr "Unione lavoro progetto" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__task_ids +msgid "Tasks to Merge" +msgstr "Lavori da unite" diff --git a/odoo-bringout-oca-project-project_merge/project_merge/i18n/project_merge.pot b/odoo-bringout-oca-project-project_merge/project_merge/i18n/project_merge.pot new file mode 100644 index 0000000..6f54f33 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/i18n/project_merge.pot @@ -0,0 +1,106 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_merge +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_merge +#: model_terms:ir.ui.view,arch_db:project_merge.project_task_merge_view_form +msgid "" +"NB: This will archive the selected tasks (Except " +"the destination task)" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__user_ids +msgid "Assignees" +msgstr "" + +#. module: project_merge +#: model_terms:ir.ui.view,arch_db:project_merge.project_task_merge_view_form +msgid "Cancel" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__create_new_task +msgid "Create a new task" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__create_uid +msgid "Created by" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__create_date +msgid "Created on" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__dst_project_id +msgid "Destination Project" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__display_name +msgid "Display Name" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__id +msgid "ID" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_merge +#: model:ir.actions.act_window,name:project_merge.action_project_task_merge +msgid "Merge Project Tasks" +msgstr "" + +#. module: project_merge +#: model_terms:ir.ui.view,arch_db:project_merge.project_task_merge_view_form +msgid "Merge Tasks" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__dst_task_id +msgid "Merge into an existing task" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__dst_task_name +msgid "New task name" +msgstr "" + +#. module: project_merge +#: model:ir.model,name:project_merge.model_project_task_merge +msgid "Project Task Merge" +msgstr "" + +#. module: project_merge +#: model:ir.model.fields,field_description:project_merge.field_project_task_merge__task_ids +msgid "Tasks to Merge" +msgstr "" diff --git a/odoo-bringout-oca-project-project_merge/project_merge/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_merge/project_merge/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..85125ab --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* `Onestein `_ diff --git a/odoo-bringout-oca-project-project_merge/project_merge/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_merge/project_merge/readme/DESCRIPTION.rst new file mode 100644 index 0000000..a21dc24 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module adds a wizard to merge project tasks. + +A wizard that can be called from tree view of project task. diff --git a/odoo-bringout-oca-project-project_merge/project_merge/readme/USAGE.rst b/odoo-bringout-oca-project-project_merge/project_merge/readme/USAGE.rst new file mode 100644 index 0000000..d2b535c --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/readme/USAGE.rst @@ -0,0 +1,3 @@ +To use this module, you need to: + +#. Merge Project Task diff --git a/odoo-bringout-oca-project-project_merge/project_merge/security/ir.model.access.csv b/odoo-bringout-oca-project-project_merge/project_merge/security/ir.model.access.csv new file mode 100644 index 0000000..807b059 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_project_task_merge_user,access_project_task_merge_user,model_project_task_merge,project.group_project_user,1,1,1,1 diff --git a/odoo-bringout-oca-project-project_merge/project_merge/static/description/icon.png b/odoo-bringout-oca-project-project_merge/project_merge/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_merge/project_merge/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_merge/project_merge/static/description/index.html b/odoo-bringout-oca-project-project_merge/project_merge/static/description/index.html new file mode 100644 index 0000000..e40ebdd --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/static/description/index.html @@ -0,0 +1,432 @@ + + + + + +Project Task Merge + + + +
+

Project Task Merge

+ + +

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

+

This module adds a wizard to merge project tasks.

+

A wizard that can be called from tree view of project task.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Merge Project Task
  2. +
+
+
+

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

+
    +
  • Onestein
  • +
+
+ +
+

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.

+

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/odoo-bringout-oca-project-project_merge/project_merge/tests/__init__.py b/odoo-bringout-oca-project-project_merge/project_merge/tests/__init__.py new file mode 100644 index 0000000..378a95f --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2024 Onestein +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_project_merge diff --git a/odoo-bringout-oca-project-project_merge/project_merge/tests/test_project_merge.py b/odoo-bringout-oca-project-project_merge/project_merge/tests/test_project_merge.py new file mode 100644 index 0000000..da70c44 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/tests/test_project_merge.py @@ -0,0 +1,22 @@ +from odoo.addons.project.tests.test_project_base import TestProjectCommon + + +class TestProjectMerge(TestProjectCommon): + @classmethod + def setUpClass(cls): + super(TestProjectMerge, cls).setUpClass() + cls.ProjectMerge = cls.env["project.task.merge"] + + def test_project_task_merge_create_new_task(self): + self.task_merge_1 = self.ProjectMerge.with_context( + active_ids=[self.task_1.id, self.task_2.id] + ).create({"create_new_task": True, "dst_task_name": "Test 1"}) + self.task_merge_1.merge_tasks() + self.assertEqual(self.task_merge_1.dst_task_id.name, "Test 1") + + def test_project_task_merge_with_existing_ticket(self): + self.task_merge_2 = self.ProjectMerge.with_context( + active_ids=[self.task_1.id, self.task_2.id] + ).create({}) + self.task_merge_2.merge_tasks() + self.assertEqual(self.task_merge_2.dst_task_id.name, "Pigs UserTask") diff --git a/odoo-bringout-oca-project-project_merge/project_merge/wizard/__init__.py b/odoo-bringout-oca-project-project_merge/project_merge/wizard/__init__.py new file mode 100644 index 0000000..b201c46 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/wizard/__init__.py @@ -0,0 +1 @@ +from . import project_task_merge diff --git a/odoo-bringout-oca-project-project_merge/project_merge/wizard/project_task_merge.py b/odoo-bringout-oca-project-project_merge/project_merge/wizard/project_task_merge.py new file mode 100644 index 0000000..92d1a17 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/wizard/project_task_merge.py @@ -0,0 +1,94 @@ +from odoo import _, fields, models + + +class ProjectTaskMerge(models.TransientModel): + _name = "project.task.merge" + _description = "Project Task Merge" + + task_ids = fields.Many2many("project.task", string="Tasks to Merge", required=True) + user_ids = fields.Many2many("res.users", string="Assignees") + create_new_task = fields.Boolean("Create a new task") + dst_task_name = fields.Char("New task name") + dst_project_id = fields.Many2one("project.project", string="Destination Project") + dst_task_id = fields.Many2one("project.task", string="Merge into an existing task") + + def merge_tasks(self): + tag_ids = self.task_ids.mapped("tag_ids").ids + attachment_ids = self.task_ids.mapped("attachment_ids").ids + values = { + "description": self.merge_description(), + "tag_ids": [(4, tag_id) for tag_id in tag_ids], + "attachment_ids": [(4, attachment_id) for attachment_id in attachment_ids], + "user_ids": self.user_ids.ids, + } + if self.create_new_task: + partner_ids = self.task_ids.mapped("partner_id") + priorities = self.task_ids.mapped("priority") + values.update( + { + "name": self.dst_task_name, + "project_id": self.dst_project_id.id, + "partner_id": len(set(partner_ids)) == 1 + and partner_ids[0].id + or False, + "priority": len(set(priorities)) == 1 and priorities[0] or False, + } + ) + self.dst_task_id = self.env["project.task"].create(values) + else: + self.dst_task_id.write(values) + merged_tasks = self.task_ids - self.dst_task_id + self._merge_followers(merged_tasks) + for task in merged_tasks: + self._add_message("to", self.dst_task_id.name, task) + task_names = ", ".join(merged_tasks.mapped("name")) + self._add_message("from", task_names, self.dst_task_id) + merged_tasks.write({"active": False}) + return { + "type": "ir.actions.act_window", + "res_model": "project.task", + "views": [[False, "form"]], + "res_id": self.dst_task_id.id, + } + + def merge_description(self): + return "
".join( + self.task_ids.filtered(lambda t: t.description).mapped( + lambda task: "Description from task %s:
%s" + % (task.name, task.description) + ) + ) + + def _merge_followers(self, merged_tasks): + self.dst_task_id.message_subscribe( + partner_ids=(merged_tasks).mapped("message_partner_ids").ids + ) + + def default_get(self, fields): + result = super(ProjectTaskMerge, self).default_get(fields) + selected_tasks = self.env["project.task"].browse( + self.env.context.get("active_ids", False) + ) + assigned_tasks = selected_tasks.filtered(lambda task: task.user_ids) + result.update( + { + "task_ids": selected_tasks.ids, + "user_ids": assigned_tasks + and assigned_tasks.mapped("user_ids").ids + or False, + "dst_project_id": selected_tasks[0].project_id.id, + "dst_task_id": selected_tasks[0].id, + } + ) + return result + + def _add_message(self, way, task_names, task): + """Send a message post with to advise the project task about the merge. + :param way : choice between "from" or "to" + :param task_names : list of project task names to add in the body + :param task : the task where the message will be posted + """ + subject = "Merge project task" + body = _(f"This project task has been merged {way} {task_names}") + + task.message_post(body=body, subject=subject, content_subtype="plaintext") diff --git a/odoo-bringout-oca-project-project_merge/project_merge/wizard/project_task_merge_views.xml b/odoo-bringout-oca-project-project_merge/project_merge/wizard/project_task_merge_views.xml new file mode 100644 index 0000000..520ae73 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/project_merge/wizard/project_task_merge_views.xml @@ -0,0 +1,62 @@ + + + + project.task.merge.form + project.task.merge + +
+ + + + + + + + + + + + + + NB: This will archive the selected tasks (Except the destination task) + +
+
+
+
+
+ + + + Merge Project Tasks + ir.actions.act_window + project.task.merge + form + + new + + +
diff --git a/odoo-bringout-oca-project-project_merge/pyproject.toml b/odoo-bringout-oca-project-project_merge/pyproject.toml new file mode 100644 index 0000000..b1edcd9 --- /dev/null +++ b/odoo-bringout-oca-project-project_merge/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_merge" +version = "16.0.0" +description = "Project Task Merge - Wizard to merge project tasks" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_merge"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_milestone_status/README.md b/odoo-bringout-oca-project-project_milestone_status/README.md new file mode 100644 index 0000000..dd4dd7c --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/README.md @@ -0,0 +1,46 @@ +# Project Milestone Status + +Odoo addon: project_milestone_status + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_milestone_status +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Milestone Status +- **Version**: 16.0.1.0.0 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_milestone_status`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_milestone_status/doc/ARCHITECTURE.md new file mode 100644 index 0000000..c103e0b --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_milestone_status Module - project_milestone_status + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_milestone_status/doc/CONFIGURATION.md new file mode 100644 index 0000000..b64f624 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_milestone_status. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_milestone_status/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_milestone_status/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/FAQ.md b/odoo-bringout-oca-project-project_milestone_status/doc/FAQ.md new file mode 100644 index 0000000..54c65d5 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_milestone_status or install in UI. diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/INSTALL.md b/odoo-bringout-oca-project-project_milestone_status/doc/INSTALL.md new file mode 100644 index 0000000..2968acc --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_milestone_status" +# or +uv pip install odoo-bringout-oca-project-project_milestone_status" +``` diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/MODELS.md b/odoo-bringout-oca-project-project_milestone_status/doc/MODELS.md new file mode 100644 index 0000000..9baaef2 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in project_milestone_status. + +```mermaid +classDiagram + class project_milestone + class project_project +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_milestone_status/doc/OVERVIEW.md new file mode 100644 index 0000000..b7fa65b --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_milestone_status. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_milestone_status +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/REPORTS.md b/odoo-bringout-oca-project-project_milestone_status/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/SECURITY.md b/odoo-bringout-oca-project-project_milestone_status/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_milestone_status/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/USAGE.md b/odoo-bringout-oca-project-project_milestone_status/doc/USAGE.md new file mode 100644 index 0000000..e043737 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_milestone_status +``` diff --git a/odoo-bringout-oca-project-project_milestone_status/doc/WIZARDS.md b/odoo-bringout-oca-project-project_milestone_status/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/README.rst b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/README.rst new file mode 100644 index 0000000..8824a2b --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/README.rst @@ -0,0 +1,82 @@ +======================== +Project Milestone Status +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5d1c9b95cab4feb86a69042881bdd649e8f512c4a7fb537afeec9226ee62a9ae + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-APSL--Nagarro%2Fcustom-lightgray.png?logo=github + :target: https://github.com/APSL-Nagarro/custom/tree/16.0/project_milestone_status + :alt: APSL-Nagarro/custom + +|badge1| |badge2| |badge3| + +This module allows you to have the percentage of the execution of a +project. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Execution: It is the percentage between hours of tasks completed and +pending tasks Dedication: It is the percentage between planned hours and +effective hours. + +These percentages are shown in Milestones and Project Updates of +projects. + +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 +------- + +* Lansana Barry Sow +* APSL-Nagarro + +Contributors +------------ + +[APSL-Nagarro](https://apsl.tech): + +- Lansana Barry Sow + +Maintainers +----------- + +.. |maintainer-lbarry-apsl| image:: https://github.com/lbarry-apsl.png?size=40px + :target: https://github.com/lbarry-apsl + :alt: lbarry-apsl + +Current maintainer: + +|maintainer-lbarry-apsl| + +This module is part of the `APSL-Nagarro/custom `_ project on GitHub. + +You are welcome to contribute. diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/__init__.py b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/__manifest__.py b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/__manifest__.py new file mode 100644 index 0000000..4a28e7e --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2025 Lansana Barry Sow(APSL-Nagarro) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Project Milestone Status", + "version": "16.0.1.0.0", + "category": "Project", + "website": "https://github.com/OCA/project", + "author": "Lansana Barry Sow, APSL-Nagarro, Odoo Community Association (OCA)", + "maintainers": ["lbarry-apsl"], + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": [ + "project", + ], + "data": [ + "views/project_milestone_views.xml", + "views/project_views.xml", + ], +} diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/bs.po b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/bs.po new file mode 100644 index 0000000..e269be2 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/bs.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_milestone_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#. module: project_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#: model:ir.model.fields,field_description:project_milestone_status.field_project_milestone__dedication +#, python-format +msgid "Dedication" +msgstr "Posvećenost" + +#. module: project_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#: model:ir.model.fields,field_description:project_milestone_status.field_project_milestone__execution +#, python-format +msgid "Execution" +msgstr "Izvršavanje" + +#. module: project_milestone_status +#: model_terms:ir.actions.act_window,help:project_milestone_status.act_excuted_project_task +msgid "" +"Keep track of the progress of your tasks from creation to completion.
\n" +" Collaborate efficiently by chatting in real-time or via email." +msgstr "" + +#. module: project_milestone_status +#: model_terms:ir.actions.act_window,help:project_milestone_status.act_excuted_project_task +msgid "No tasks found. Let's create one!" +msgstr "Nema pronađenih zadataka. Kreiraj novi!" + +#. module: project_milestone_status +#: model:ir.model,name:project_milestone_status.model_project_project +msgid "Project" +msgstr "Projekat" + +#. module: project_milestone_status +#: model:ir.model,name:project_milestone_status.model_project_milestone +msgid "Project Milestone" +msgstr "Prekretnica projekta" + +#. module: project_milestone_status +#: model:ir.actions.act_window,name:project_milestone_status.act_excuted_project_task +msgid "Tasks" +msgstr "Zadaci" diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/es.po b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/es.po new file mode 100644 index 0000000..3cfc8eb --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/es.po @@ -0,0 +1,70 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_milestone_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-03-19 07:22+0000\n" +"PO-Revision-Date: 2025-03-19 08:25+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.5\n" + +#. module: project_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#, python-format +msgid "%(name)s" +msgstr "" + +#. module: project_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#: model:ir.model.fields,field_description:project_milestone_status.field_project_milestone__dedication +#, python-format +msgid "Dedication" +msgstr "Dedicación" + +#. module: project_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#: model:ir.model.fields,field_description:project_milestone_status.field_project_milestone__execution +#, python-format +msgid "Execution" +msgstr "Ejecución" + +#. module: project_milestone_status +#: model_terms:ir.actions.act_window,help:project_milestone_status.act_excuted_project_task +msgid "" +"Keep track of the progress of your tasks from creation to completion.
\n" +" Collaborate efficiently by chatting in real-time or via email." +msgstr "" +"Monitorea el progreso de tus tareas desde su creación hasta su finalización.
\n" +"Colabora eficientemente chateando en tiempo real o por correo electrónico." + +#. module: project_milestone_status +#: model_terms:ir.actions.act_window,help:project_milestone_status.act_excuted_project_task +msgid "No tasks found. Let's create one!" +msgstr "No se encontraron tareas. ¡Creemos una!" + +#. module: project_milestone_status +#: model:ir.model,name:project_milestone_status.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_milestone_status +#: model:ir.model,name:project_milestone_status.model_project_milestone +msgid "Project Milestone" +msgstr "Hito de proyecto" + +#. module: project_milestone_status +#: model:ir.actions.act_window,name:project_milestone_status.act_excuted_project_task +msgid "Tasks" +msgstr "Tareas" diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/it.po b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/it.po new file mode 100644 index 0000000..ca411df --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/it.po @@ -0,0 +1,71 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_milestone_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-05-10 14:23+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_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#. module: project_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#: model:ir.model.fields,field_description:project_milestone_status.field_project_milestone__dedication +#, python-format +msgid "Dedication" +msgstr "Dedizione" + +#. module: project_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#: model:ir.model.fields,field_description:project_milestone_status.field_project_milestone__execution +#, python-format +msgid "Execution" +msgstr "Esecuzione" + +#. module: project_milestone_status +#: model_terms:ir.actions.act_window,help:project_milestone_status.act_excuted_project_task +msgid "" +"Keep track of the progress of your tasks from creation to completion.
\n" +" Collaborate efficiently by chatting in real-time or via email." +msgstr "" +"Tiene traccia dell'avanzamento dei propri lavori dalla creazione al " +"completamento.
\n" +" Collabora efficientemente dialogando in tempo reale o per " +"e-mail." + +#. module: project_milestone_status +#: model_terms:ir.actions.act_window,help:project_milestone_status.act_excuted_project_task +msgid "No tasks found. Let's create one!" +msgstr "Nessun lavoro trovato! Creiamone uno!" + +#. module: project_milestone_status +#: model:ir.model,name:project_milestone_status.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_milestone_status +#: model:ir.model,name:project_milestone_status.model_project_milestone +msgid "Project Milestone" +msgstr "Milestone progetto" + +#. module: project_milestone_status +#: model:ir.actions.act_window,name:project_milestone_status.act_excuted_project_task +msgid "Tasks" +msgstr "Lavori" diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/project_milestone_status.pot b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/project_milestone_status.pot new file mode 100644 index 0000000..c145c85 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/i18n/project_milestone_status.pot @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_milestone_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#, python-format +msgid "%(name)s" +msgstr "" + +#. module: project_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#: model:ir.model.fields,field_description:project_milestone_status.field_project_milestone__dedication +#, python-format +msgid "Dedication" +msgstr "" + +#. module: project_milestone_status +#. odoo-python +#: code:addons/project_milestone_status/models/project.py:0 +#: model:ir.model.fields,field_description:project_milestone_status.field_project_milestone__execution +#, python-format +msgid "Execution" +msgstr "" + +#. module: project_milestone_status +#: model_terms:ir.actions.act_window,help:project_milestone_status.act_excuted_project_task +msgid "" +"Keep track of the progress of your tasks from creation to completion.
\n" +" Collaborate efficiently by chatting in real-time or via email." +msgstr "" + +#. module: project_milestone_status +#: model_terms:ir.actions.act_window,help:project_milestone_status.act_excuted_project_task +msgid "No tasks found. Let's create one!" +msgstr "" + +#. module: project_milestone_status +#: model:ir.model,name:project_milestone_status.model_project_project +msgid "Project" +msgstr "" + +#. module: project_milestone_status +#: model:ir.model,name:project_milestone_status.model_project_milestone +msgid "Project Milestone" +msgstr "" + +#. module: project_milestone_status +#: model:ir.actions.act_window,name:project_milestone_status.act_excuted_project_task +msgid "Tasks" +msgstr "" diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/models/__init__.py b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/models/__init__.py new file mode 100644 index 0000000..ede3cbe --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/models/__init__.py @@ -0,0 +1,2 @@ +from . import project_milestone +from . import project diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/models/project.py b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/models/project.py new file mode 100644 index 0000000..c54dfdf --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/models/project.py @@ -0,0 +1,103 @@ +import ast +import json + +from odoo import _, models + + +class Project(models.Model): + _inherit = "project.project" + + def _get_execution(self): + all_tasks = self.env["project.task"].search( + [ + ("project_id", "=", self.id), + ] + ) + executed_tasks = all_tasks.filtered("stage_id.fold") + + total_planned_hours = sum(all_tasks.mapped("planned_hours")) + total_excuted_hours = sum(executed_tasks.mapped("planned_hours")) + + if total_excuted_hours and total_planned_hours: + execution = total_excuted_hours * 100 / total_planned_hours + else: + execution = 0 + + return { + "all_task": len(all_tasks), + "excuted": round(total_excuted_hours), + "percent": round(execution), + } + + def _get_dedication(self): + all_tasks = self.env["project.task"].search( + [ + ("project_id", "=", self.id), + ] + ) + total_planned_hours = sum(all_tasks.mapped("planned_hours")) + total_dedicated_hours = sum(all_tasks.mapped("effective_hours")) + + if total_dedicated_hours and total_planned_hours: + dedication = total_dedicated_hours * 100 / total_planned_hours + else: + dedication = 0 + + return {"dedicated": round(total_dedicated_hours), "percent": round(dedication)} + + def action_view_excuted_tasks(self): + action = ( + self.env["ir.actions.act_window"] + .with_context(active_id=self.id) + ._for_xml_id("project_milestone_status.act_excuted_project_task") + ) + action["display_name"] = _("%(name)s", name=self.name) + context = action["context"].replace("active_id", str(self.id)) + context = ast.literal_eval(context) + context.update({"create": self.active, "active_test": self.active}) + action["context"] = context + action["domain"] = [("project_id", "=", self.id), ("stage_id.fold", "=", True)] + return action + + def _get_stat_buttons(self): + buttons = super()._get_stat_buttons() + execution = self._get_execution() + dedication = self._get_dedication() + + if self.task_count and execution["all_task"]: + percent_tasks = round(self.task_count * 100 / execution["all_task"]) + else: + percent_tasks = 0 + + buttons[0][ + "number" + ] = f"{self.task_count} / {execution['all_task']} ({percent_tasks}%)" + buttons.append( + { + "icon": "check-circle-o", + "text": _("Execution"), + "number": f"{execution['percent']}% ({execution['excuted']}h)", + "action_type": "object", + "action": "action_view_excuted_tasks", + "show": True, + "sequence": 5, + } + ) + + buttons.append( + { + "icon": "clock-o", + "text": _("Dedication"), + "number": f"{dedication['percent']}% ({dedication['dedicated']}h)", + "action_type": "action", + "action": "hr_timesheet.act_hr_timesheet_line_by_project", + "additional_context": json.dumps( + { + "active_id": self.id, + } + ), + "show": True, + "sequence": 6, + } + ) + return buttons diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/models/project_milestone.py b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/models/project_milestone.py new file mode 100644 index 0000000..ad00d2a --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/models/project_milestone.py @@ -0,0 +1,32 @@ +from odoo import api, fields, models + + +class ProjectMilestone(models.Model): + _inherit = "project.milestone" + + execution = fields.Integer(compute="_compute_execution") + dedication = fields.Integer(compute="_compute_dedication") + + @api.depends("task_ids") + def _compute_execution(self): + for milestone in self: + executed_tasks = milestone.task_ids.filtered("stage_id.fold") + + total_planned_hours = sum(milestone.task_ids.mapped("planned_hours")) + total_excuted_hours = sum(executed_tasks.mapped("planned_hours")) + + if total_excuted_hours and total_planned_hours: + milestone.execution = total_excuted_hours * 100 / total_planned_hours + else: + milestone.execution = 0 + + @api.depends("task_ids") + def _compute_dedication(self): + for milestone in self: + total_planned_hours = sum(milestone.task_ids.mapped("planned_hours")) + total_dedicated_hours = sum(milestone.task_ids.mapped("effective_hours")) + + if total_dedicated_hours and total_planned_hours: + milestone.dedication = total_dedicated_hours * 100 / total_planned_hours + else: + milestone.dedication = 0 diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/readme/CONTRIBUTORS.md b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/readme/CONTRIBUTORS.md new file mode 100644 index 0000000..6331254 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +\[APSL-Nagarro\](): + - Lansana Barry Sow \<\> \ No newline at end of file diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/readme/DESCRIPTION.md b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/readme/DESCRIPTION.md new file mode 100644 index 0000000..958f2c9 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/readme/DESCRIPTION.md @@ -0,0 +1 @@ +This module allows you to have the percentage of the execution of a project. diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/readme/USAGE.md b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/readme/USAGE.md new file mode 100644 index 0000000..33eb35d --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/readme/USAGE.md @@ -0,0 +1,4 @@ +Execution: It is the percentage between hours of tasks completed and pending tasks +Dedication: It is the percentage between planned hours and effective hours. + +These percentages are shown in Milestones and Project Updates of projects. diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/static/description/icon.png b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/static/description/icon.svg b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/static/description/icon.svg new file mode 100644 index 0000000..a7a26d0 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/static/description/icon.svg @@ -0,0 +1,79 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/static/description/index.html b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/static/description/index.html new file mode 100644 index 0000000..6a332b9 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/static/description/index.html @@ -0,0 +1,430 @@ + + + + + +Project Milestone Status + + + +
+

Project Milestone Status

+ + +

Beta License: AGPL-3 APSL-Nagarro/custom

+

This module allows you to have the percentage of the execution of a +project.

+

Table of contents

+ +
+

Usage

+

Execution: It is the percentage between hours of tasks completed and +pending tasks Dedication: It is the percentage between planned hours and +effective hours.

+

These percentages are shown in Milestones and Project Updates of +projects.

+
+
+

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

+
    +
  • Lansana Barry Sow
  • +
  • APSL-Nagarro
  • +
+
+
+

Contributors

+

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

+ +
+
+

Maintainers

+

Current maintainer:

+

lbarry-apsl

+

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

+

You are welcome to contribute.

+
+
+
+ + diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/__init__.py b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/__init__.py new file mode 100644 index 0000000..2c694e4 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_project_milestone_status +from . import test_project_status diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/common.py b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/common.py new file mode 100644 index 0000000..bb416c7 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/common.py @@ -0,0 +1,39 @@ +from odoo.tests import new_test_user +from odoo.tests.common import TransactionCase + + +class ProjectMilestoneStatusCommon(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.timesheet_line_model = cls.env["account.analytic.line"] + cls.project1 = cls.env["project.project"].create({"name": "Project 1"}) + cls.milestone1 = cls.env["project.milestone"].create( + {"name": "Milestone 1", "project_id": cls.project1.id} + ) + cls.user = new_test_user( + cls.env, login="test-user", groups="hr_timesheet.group_hr_timesheet_user" + ) + cls.employee_1 = cls.env["hr.employee"].create( + { + "name": "Test employee 1", + "user_id": cls.user.id, + } + ) + cls.task1 = cls.env["project.task"].create( + { + "name": "name1", + "project_id": cls.project1.id, + "milestone_id": cls.milestone1.id, + "planned_hours": 5.0, + } + ) + cls.task2 = cls.env["project.task"].create( + { + "name": "name2", + "project_id": cls.project1.id, + "milestone_id": cls.milestone1.id, + "planned_hours": 5.0, + } + ) diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/test_project_milestone_status.py b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/test_project_milestone_status.py new file mode 100644 index 0000000..0fce94a --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/test_project_milestone_status.py @@ -0,0 +1,51 @@ +from odoo.addons.project_milestone_status.tests.common import ( + ProjectMilestoneStatusCommon, +) + + +class TestProjectMilestoneStatus(ProjectMilestoneStatusCommon): + def test_check_execution_empty(self): + project_milestone_id = self.project1.milestone_ids.browse(self.milestone1.id) + self.assertEqual( + project_milestone_id.execution, 0, "There is no execution at the milestone" + ) + + def test_check_execution_done(self): + project_milestone_id = self.project1.milestone_ids.browse(self.milestone1.id) + self.task1.write( + { + "stage_id": self.env["project.task.type"] + .search([("fold", "=", True)], limit=1) + .id + } + ) + self.assertEqual( + project_milestone_id.execution, + 50, + "There is a 50 percent execution of the milestone", + ) + + def test_check_dedication_empty(self): + project_milestone_id = self.project1.milestone_ids.browse(self.milestone1.id) + self.assertEqual( + project_milestone_id.dedication, + 0, + "There is no dedication in the milestone", + ) + + def test_check_dedication_done(self): + project_milestone_id = self.project1.milestone_ids.browse(self.milestone1.id) + self.timesheet_line_model.create( + { + "name": "test", + "employee_id": self.employee_1.id, + "unit_amount": 2.0, + "project_id": self.project1.id, + "task_id": self.task1.id, + } + ) + self.assertEqual( + project_milestone_id.dedication, + 20, + "There is a 20 percent dedication in the milestone", + ) diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/test_project_status.py b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/test_project_status.py new file mode 100644 index 0000000..af76bbb --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/tests/test_project_status.py @@ -0,0 +1,40 @@ +from odoo.addons.project_milestone_status.tests.common import ( + ProjectMilestoneStatusCommon, +) + + +class TestProjectStatus(ProjectMilestoneStatusCommon): + def test_check_execution_empty(self): + self.assertEqual(self.project1._get_execution()["all_task"], 2) + self.assertEqual(self.project1._get_execution()["excuted"], 0) + self.assertEqual(self.project1._get_execution()["percent"], 0) + + def test_check_execution_done(self): + self.task1.write( + { + "stage_id": self.env["project.task.type"] + .search([("fold", "=", True)], limit=1) + .id + } + ) + self.assertEqual(self.project1._get_execution()["all_task"], 2) + self.assertEqual(self.project1._get_execution()["excuted"], 5) + self.assertEqual(self.project1._get_execution()["percent"], 50) + + def test_check_dedication_empty(self): + self.assertEqual(self.project1._get_dedication()["dedicated"], 0) + self.assertEqual(self.project1._get_dedication()["percent"], 0) + + def test_check_dedication_done(self): + self.project1.milestone_ids.browse(self.milestone1.id) + self.timesheet_line_model.create( + { + "name": "test", + "employee_id": self.employee_1.id, + "unit_amount": 2.0, + "project_id": self.project1.id, + "task_id": self.task1.id, + } + ) + self.assertEqual(self.project1._get_dedication()["dedicated"], 2) + self.assertEqual(self.project1._get_dedication()["percent"], 20) diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/views/project_milestone_views.xml b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/views/project_milestone_views.xml new file mode 100644 index 0000000..30cb461 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/views/project_milestone_views.xml @@ -0,0 +1,23 @@ + + + + project.milestone + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/views/project_views.xml b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/views/project_views.xml new file mode 100644 index 0000000..bbdc8b1 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/project_milestone_status/views/project_views.xml @@ -0,0 +1,24 @@ + + + + Tasks + project.task + tree,form + [('display_project_id', '=', active_id)] + { + 'default_project_id': active_id, + 'show_project_update': True, + } + + +

+ No tasks found. Let's create one! +

+

+ Keep track of the progress of your tasks from creation to completion.
+ Collaborate efficiently by chatting in real-time or via email. +

+
+
+
diff --git a/odoo-bringout-oca-project-project_milestone_status/pyproject.toml b/odoo-bringout-oca-project-project_milestone_status/pyproject.toml new file mode 100644 index 0000000..c96e2e1 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_status/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_milestone_status" +version = "16.0.0" +description = "Project Milestone Status - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_milestone_status"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_milestone_tree/README.md b/odoo-bringout-oca-project-project_milestone_tree/README.md new file mode 100644 index 0000000..0824dd1 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/README.md @@ -0,0 +1,46 @@ +# Project Milestones Tree View + +Odoo addon: project_milestone_tree + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_milestone_tree +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Milestones Tree View +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_milestone_tree`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_milestone_tree/doc/ARCHITECTURE.md new file mode 100644 index 0000000..28c8dbc --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_milestone_tree Module - project_milestone_tree + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_milestone_tree/doc/CONFIGURATION.md new file mode 100644 index 0000000..c6d7493 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_milestone_tree. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_milestone_tree/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_milestone_tree/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/FAQ.md b/odoo-bringout-oca-project-project_milestone_tree/doc/FAQ.md new file mode 100644 index 0000000..45fbb95 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_milestone_tree or install in UI. diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/INSTALL.md b/odoo-bringout-oca-project-project_milestone_tree/doc/INSTALL.md new file mode 100644 index 0000000..ca254b7 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_milestone_tree" +# or +uv pip install odoo-bringout-oca-project-project_milestone_tree" +``` diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/MODELS.md b/odoo-bringout-oca-project-project_milestone_tree/doc/MODELS.md new file mode 100644 index 0000000..763b4ff --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/MODELS.md @@ -0,0 +1,11 @@ +# Models + +Detected core models and extensions in project_milestone_tree. + +```mermaid +classDiagram +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_milestone_tree/doc/OVERVIEW.md new file mode 100644 index 0000000..64bcead --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_milestone_tree. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_milestone_tree +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/REPORTS.md b/odoo-bringout-oca-project-project_milestone_tree/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/SECURITY.md b/odoo-bringout-oca-project-project_milestone_tree/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_milestone_tree/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/USAGE.md b/odoo-bringout-oca-project-project_milestone_tree/doc/USAGE.md new file mode 100644 index 0000000..162fcf5 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_milestone_tree +``` diff --git a/odoo-bringout-oca-project-project_milestone_tree/doc/WIZARDS.md b/odoo-bringout-oca-project-project_milestone_tree/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/README.rst b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/README.rst new file mode 100644 index 0000000..663d53e --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/README.rst @@ -0,0 +1,66 @@ +============================ +Project Milestones Tree View +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:c0dadc5ea6d569e710ffdf2943096d81c8b42f9c419a010ad68e34e5b60aa9af + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_milestone_tree + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_milestone_tree + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds an access to the Milestone tree view. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +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. + +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/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/__init__.py b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/__manifest__.py b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/__manifest__.py new file mode 100644 index 0000000..d9012b5 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/__manifest__.py @@ -0,0 +1,16 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Project Milestones Tree View", + "summary": "This module adds an access to the Milestone tree view.", + "author": "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "category": "Project Management", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "depends": ["project"], + "data": [ + "views/project_milestone.xml", + ], + "application": False, +} diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/bs.po b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/bs.po new file mode 100644 index 0000000..4c7bbda --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/bs.po @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_milestone_tree +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_milestone_tree +#: model:ir.actions.act_window,name:project_milestone_tree.project_milestone_tree_action +#: model:ir.ui.menu,name:project_milestone_tree.project_menu_config_milestone +msgid "Milestones" +msgstr "Prekretnice" diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/es.po b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/es.po new file mode 100644 index 0000000..704f303 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/es.po @@ -0,0 +1,23 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_milestone_tree +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-07-18 13:01+0000\n" +"Last-Translator: iaranburu \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 5.10.4\n" + +#. module: project_milestone_tree +#: model:ir.actions.act_window,name:project_milestone_tree.project_milestone_tree_action +#: model:ir.ui.menu,name:project_milestone_tree.project_menu_config_milestone +msgid "Milestones" +msgstr "Hitos" diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/eu_ES.po b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/eu_ES.po new file mode 100644 index 0000000..b2ed218 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/eu_ES.po @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_milestone_tree +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: eu_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" + +#. module: project_milestone_tree +#: model:ir.actions.act_window,name:project_milestone_tree.project_milestone_tree_action +#: model:ir.ui.menu,name:project_milestone_tree.project_menu_config_milestone +msgid "Milestones" +msgstr "" diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/it.po b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/it.po new file mode 100644 index 0000000..4ecd297 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/it.po @@ -0,0 +1,23 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_milestone_tree +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-05-12 12:36+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 4.17\n" + +#. module: project_milestone_tree +#: model:ir.actions.act_window,name:project_milestone_tree.project_milestone_tree_action +#: model:ir.ui.menu,name:project_milestone_tree.project_menu_config_milestone +msgid "Milestones" +msgstr "Milestone" diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/project_milestone_tree.pot b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/project_milestone_tree.pot new file mode 100644 index 0000000..cc654f5 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/i18n/project_milestone_tree.pot @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_milestone_tree +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_milestone_tree +#: model:ir.actions.act_window,name:project_milestone_tree.project_milestone_tree_action +#: model:ir.ui.menu,name:project_milestone_tree.project_menu_config_milestone +msgid "Milestones" +msgstr "" diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/readme/DESCRIPTION.rst new file mode 100644 index 0000000..9b35fd5 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds an access to the Milestone tree view. diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/static/description/icon.png b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/static/description/index.html b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/static/description/index.html new file mode 100644 index 0000000..08fc9d3 --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/static/description/index.html @@ -0,0 +1,407 @@ + + + + + + +Project Milestones Tree View + + + +
+

Project Milestones Tree View

+ + +

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

+

This module adds an access to the Milestone tree view.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

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.

+

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/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/views/project_milestone.xml b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/views/project_milestone.xml new file mode 100644 index 0000000..eb6dd8a --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/project_milestone_tree/views/project_milestone.xml @@ -0,0 +1,12 @@ + + + Milestones + project.milestone + tree,form + + + diff --git a/odoo-bringout-oca-project-project_milestone_tree/pyproject.toml b/odoo-bringout-oca-project-project_milestone_tree/pyproject.toml new file mode 100644 index 0000000..eafa3ad --- /dev/null +++ b/odoo-bringout-oca-project-project_milestone_tree/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_milestone_tree" +version = "16.0.0" +description = "Project Milestones Tree View - This module adds an access to the Milestone tree view." +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_milestone_tree"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_parent/README.md b/odoo-bringout-oca-project-project_parent/README.md new file mode 100644 index 0000000..6a0a1d9 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/README.md @@ -0,0 +1,46 @@ +# Project Parent + +Odoo addon: project_parent + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_parent +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Parent +- **Version**: 16.0.1.1.0 +- **Category**: project +- **License**: LGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_parent`. + +## License + +This package maintains the original LGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_parent/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_parent/doc/ARCHITECTURE.md new file mode 100644 index 0000000..ad52fdd --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_parent Module - project_parent + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_parent/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_parent/doc/CONFIGURATION.md new file mode 100644 index 0000000..7ba9e8b --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_parent. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_parent/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_parent/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_parent/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_parent/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_parent/doc/FAQ.md b/odoo-bringout-oca-project-project_parent/doc/FAQ.md new file mode 100644 index 0000000..924327b --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_parent or install in UI. diff --git a/odoo-bringout-oca-project-project_parent/doc/INSTALL.md b/odoo-bringout-oca-project-project_parent/doc/INSTALL.md new file mode 100644 index 0000000..8b97e81 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_parent" +# or +uv pip install odoo-bringout-oca-project-project_parent" +``` diff --git a/odoo-bringout-oca-project-project_parent/doc/MODELS.md b/odoo-bringout-oca-project-project_parent/doc/MODELS.md new file mode 100644 index 0000000..ec66998 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_parent. + +```mermaid +classDiagram + class project_project +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_parent/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_parent/doc/OVERVIEW.md new file mode 100644 index 0000000..6cbea9b --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_parent. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_parent +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_parent/doc/REPORTS.md b/odoo-bringout-oca-project-project_parent/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_parent/doc/SECURITY.md b/odoo-bringout-oca-project-project_parent/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_parent/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_parent/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_parent/doc/USAGE.md b/odoo-bringout-oca-project-project_parent/doc/USAGE.md new file mode 100644 index 0000000..06df922 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_parent +``` diff --git a/odoo-bringout-oca-project-project_parent/doc/WIZARDS.md b/odoo-bringout-oca-project-project_parent/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_parent/project_parent/README.rst b/odoo-bringout-oca-project-project_parent/project_parent/README.rst new file mode 100644 index 0000000..d6cbd76 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/README.rst @@ -0,0 +1,98 @@ +============== +Project Parent +============== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5f7c90f172e78c341ddae8697528d842da9d463a96a6f319065f196e3bbcd38b + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github + :target: https://github.com/OCA/project/tree/16.0/project_parent + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_parent + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module introduces project parent and childs fields. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +In Kanban View: + +#. Go to Project > Dashboard +#. Group by "Parent" + +In Tree View: + +#. Go to Project >Configuration > Projects +#. Group by "Parent" + +In form View: + +#. Go to Project > Dashboard +#. Open the projects settings +#. Modify the "Parent" in settings tab + +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 +~~~~~~~ + +* Therp B.V. +* Elico Corp + +Contributors +~~~~~~~~~~~~ + +* Eric Caudal +* Giovanni Francesco Capalbo +* Thomas Fossoul + +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. + +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/odoo-bringout-oca-project-project_parent/project_parent/__init__.py b/odoo-bringout-oca-project-project_parent/project_parent/__init__.py new file mode 100644 index 0000000..83e553a --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/odoo-bringout-oca-project-project_parent/project_parent/__manifest__.py b/odoo-bringout-oca-project-project_parent/project_parent/__manifest__.py new file mode 100644 index 0000000..5e763d1 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/__manifest__.py @@ -0,0 +1,13 @@ +# © 2017-2019 Elico Corp (https://www.elico-corp.com). +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +{ + "name": "Project Parent", + "version": "16.0.1.1.0", + "license": "LGPL-3", + "category": "project", + "author": "Therp B.V., Elico Corp, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "depends": ["project"], + "data": ["views/project_parent_views.xml"], + "demo": ["demo/project_project_demo.xml"], +} diff --git a/odoo-bringout-oca-project-project_parent/project_parent/demo/project_project_demo.xml b/odoo-bringout-oca-project-project_parent/project_parent/demo/project_project_demo.xml new file mode 100644 index 0000000..7a9f8ec --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/demo/project_project_demo.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/bs.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/bs.po new file mode 100644 index 0000000..bc5b769 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/bs.po @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "Broj podređenih projekata" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "Podređeni projekti" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "Putanja nadređenih" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "Nadređeni projekt" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "Sub-projekti" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/es.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/es.po new file mode 100644 index 0000000..76c7dd9 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/es.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +# Translators: +# enjolras , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-02 01:51+0000\n" +"PO-Revision-Date: 2023-10-12 15:38+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\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_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "Recuento de ID de niños" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "Proyectos Hijos" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "Ruta Parental" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "Proyecto Padre" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "Sub-proyectos" + +#~ msgid "Analytic Account" +#~ msgstr "Cuenta analítica" + +#~ msgid "Parent" +#~ msgstr "Padre" + +#~ msgid "WBS element" +#~ msgstr "WBS elemento" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/fr.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/fr.po new file mode 100644 index 0000000..698304d --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/fr.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-08-25 16:43+0000\n" +"PO-Revision-Date: 2020-08-25 16:43+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "Sous projets" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "Chemin du Parent" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "Projet Parent" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "Projet" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "Sous projets" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/hr.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/hr.po new file mode 100644 index 0000000..0b1ad78 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/hr.po @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +# Translators: +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-02 01:51+0000\n" +"PO-Revision-Date: 2024-09-11 13:06+0000\n" +"Last-Translator: Bole \n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.6.2\n" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "Broj podređenih projekata" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "Podređeni projekti" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "Putanja nadređenih" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "Nadređeni projekt" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "Sub-projekti" + +#~ msgid "Analytic Account" +#~ msgstr "Analitički konto" + +#~ msgid "Parent" +#~ msgstr "Nadređeni" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/it.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/it.po new file mode 100644 index 0000000..d154eb2 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/it.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-11-30 12:06+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.6.2\n" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "Conteggio ID figli" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "Progetti figli" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "Percorso padre" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "Progetto padre" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "Sotto progetto" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/nl.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/nl.po new file mode 100644 index 0000000..b11e503 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/nl.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-11-07 11:39+0000\n" +"Last-Translator: Thijs van Oers \n" +"Language-Team: none\n" +"Language: nl\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_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "Aantal onderliggende ids" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "Onderliggende projecten" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "Bovenliggend pad" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "Hoofdproject" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "Project" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "Sub projecten" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/nl_NL.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/nl_NL.po new file mode 100644 index 0000000..e3830b3 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/nl_NL.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-22 01:55+0000\n" +"PO-Revision-Date: 2017-12-22 01:55+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\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_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "Analytische Rekening" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/project_parent.pot b/odoo-bringout-oca-project-project_parent/project_parent/i18n/project_parent.pot new file mode 100644 index 0000000..f88a5ba --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/project_parent.pot @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/pt.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/pt.po new file mode 100644 index 0000000..c746ca0 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/pt.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-02-07 18:16+0000\n" +"Last-Translator: Peter Romão \n" +"Language-Team: none\n" +"Language: pt\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.6.2\n" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "Número de IDs Descendentes" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "Projetos Descendentes" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "Caminho Ascendente" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "Projeto Ascendente" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "Sub-projetos" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/pt_BR.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/pt_BR.po new file mode 100644 index 0000000..cf38a96 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/pt_BR.po @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +# Translators: +# Mateus Lopes , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-22 01:55+0000\n" +"PO-Revision-Date: 2023-10-28 09:42+0000\n" +"Last-Translator: Adriano Prado \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/" +"23907/pt_BR/)\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" +"X-Generator: Weblate 4.17\n" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "Nº de Filhos" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "Projetos Filhos" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "Caminho Superior" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "Projeto Pai" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "Sub-projetos" + +#~ msgid "Analytic Account" +#~ msgstr "Conta Analítica" + +#~ msgid "Parent" +#~ msgstr "Pai" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/i18n/sl.po b/odoo-bringout-oca-project-project_parent/project_parent/i18n/sl.po new file mode 100644 index 0000000..1cef8d9 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/i18n/sl.po @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent +# +# Translators: +# Matjaž Mozetič , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-02 01:51+0000\n" +"PO-Revision-Date: 2018-02-02 01:51+0000\n" +"Last-Translator: Matjaž Mozetič , 2018\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\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" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids_count +msgid "Child Ids Count" +msgstr "" + +#. module: project_parent +#: model_terms:ir.ui.view,arch_db:project_parent.edit_project +msgid "Child Projects" +msgstr "" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_path +msgid "Parent Path" +msgstr "" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__parent_id +msgid "Parent Project" +msgstr "Nadrejeni projekt" + +#. module: project_parent +#: model:ir.model,name:project_parent.model_project_project +#, fuzzy +msgid "Project" +msgstr "Nadrejeni projekt" + +#. module: project_parent +#: model:ir.model.fields,field_description:project_parent.field_project_project__child_ids +msgid "Sub-projects" +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "Analitični konto" + +#~ msgid "Parent" +#~ msgstr "Nadrejeni" diff --git a/odoo-bringout-oca-project-project_parent/project_parent/models/__init__.py b/odoo-bringout-oca-project-project_parent/project_parent/models/__init__.py new file mode 100644 index 0000000..d527100 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import project_project diff --git a/odoo-bringout-oca-project-project_parent/project_parent/models/project_project.py b/odoo-bringout-oca-project-project_parent/project_parent/models/project_project.py new file mode 100644 index 0000000..8dd4e1a --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/models/project_project.py @@ -0,0 +1,42 @@ +# Copyright 2019 Therp BV +# 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" + _parent_store = True + _parent_name = "parent_id" + + parent_id = fields.Many2one( + comodel_name="project.project", string="Parent Project", index=True + ) + child_ids = fields.One2many( + comodel_name="project.project", inverse_name="parent_id", string="Sub-projects" + ) + + parent_path = fields.Char(index="btree", unaccent=False) + + child_ids_count = fields.Integer(compute="_compute_child_ids_count", store=True) + + @api.depends("child_ids") + def _compute_child_ids_count(self): + for project in self: + project.child_ids_count = len(project.child_ids) + + def action_open_child_project(self): + self.ensure_one() + ctx = self.env.context.copy() + ctx.update(default_parent_id=self.id) + domain = [("parent_id", "=", self.id)] + return { + "type": "ir.actions.act_window", + "view_type": "form", + "name": "Children of %s" % self.name, + "view_mode": "tree,form,graph", + "res_model": "project.project", + "target": "current", + "context": ctx, + "domain": domain, + } diff --git a/odoo-bringout-oca-project-project_parent/project_parent/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_parent/project_parent/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..a38b89c --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Eric Caudal +* Giovanni Francesco Capalbo +* Thomas Fossoul diff --git a/odoo-bringout-oca-project-project_parent/project_parent/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_parent/project_parent/readme/DESCRIPTION.rst new file mode 100644 index 0000000..2c34aa0 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module introduces project parent and childs fields. diff --git a/odoo-bringout-oca-project-project_parent/project_parent/readme/USAGE.rst b/odoo-bringout-oca-project-project_parent/project_parent/readme/USAGE.rst new file mode 100644 index 0000000..7088ba6 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/readme/USAGE.rst @@ -0,0 +1,15 @@ +In Kanban View: + +#. Go to Project > Dashboard +#. Group by "Parent" + +In Tree View: + +#. Go to Project >Configuration > Projects +#. Group by "Parent" + +In form View: + +#. Go to Project > Dashboard +#. Open the projects settings +#. Modify the "Parent" in settings tab diff --git a/odoo-bringout-oca-project-project_parent/project_parent/static/description/icon.png b/odoo-bringout-oca-project-project_parent/project_parent/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_parent/project_parent/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_parent/project_parent/static/description/index.html b/odoo-bringout-oca-project-project_parent/project_parent/static/description/index.html new file mode 100644 index 0000000..ab56755 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/static/description/index.html @@ -0,0 +1,446 @@ + + + + + +Project Parent + + + +
+

Project Parent

+ + +

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

+

This module introduces project parent and childs fields.

+

Table of contents

+ +
+

Usage

+

In Kanban View:

+
    +
  1. Go to Project > Dashboard
  2. +
  3. Group by “Parent”
  4. +
+

In Tree View:

+
    +
  1. Go to Project >Configuration > Projects
  2. +
  3. Group by “Parent”
  4. +
+

In form View:

+
    +
  1. Go to Project > Dashboard
  2. +
  3. Open the projects settings
  4. +
  5. Modify the “Parent” in settings tab
  6. +
+
+
+

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

+
    +
  • Therp B.V.
  • +
  • Elico Corp
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_parent/project_parent/tests/__init__.py b/odoo-bringout-oca-project-project_parent/project_parent/tests/__init__.py new file mode 100644 index 0000000..5e34567 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_project_parent diff --git a/odoo-bringout-oca-project-project_parent/project_parent/tests/test_project_parent.py b/odoo-bringout-oca-project-project_parent/project_parent/tests/test_project_parent.py new file mode 100644 index 0000000..0239234 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/tests/test_project_parent.py @@ -0,0 +1,28 @@ +# Copyright 2020 haulogy SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestProjectParent(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.project_project_1 = cls.env.ref("project.project_project_1") + cls.project_project_2 = cls.env.ref("project.project_project_2") + cls.project_project_3 = cls.env["project.project"].create( + {"name": "TestProject", "parent_id": cls.project_project_1.id} + ) + + def test_parent_childs_project(self): + self.assertIn(self.project_project_2, self.project_project_1.child_ids) + self.assertIn(self.project_project_3, self.project_project_1.child_ids) + + def test_action_open_child_project(self): + res = self.project_project_1.action_open_child_project() + self.assertEqual( + res.get("domain"), [("parent_id", "=", self.project_project_1.id)] + ) + self.assertEqual( + res.get("context").get("default_parent_id"), self.project_project_1.id + ) diff --git a/odoo-bringout-oca-project-project_parent/project_parent/views/project_parent_views.xml b/odoo-bringout-oca-project-project_parent/project_parent/views/project_parent_views.xml new file mode 100644 index 0000000..b0acc31 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/project_parent/views/project_parent_views.xml @@ -0,0 +1,71 @@ + + + + + project.project.form + project.project + + + + + +
+ +
+
+
+ + project.project.tree + project.project + + + + + + + + + project.project.kanban.inherited + project.project + + + + + + +
+ + + +
+
+
+
+ + project.project.filter + project.project + + search + + + + + + +
diff --git a/odoo-bringout-oca-project-project_parent/pyproject.toml b/odoo-bringout-oca-project-project_parent/pyproject.toml new file mode 100644 index 0000000..1fc0bb6 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_parent" +version = "16.0.0" +description = "Project Parent - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_parent"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_parent_task_filter/README.md b/odoo-bringout-oca-project-project_parent_task_filter/README.md new file mode 100644 index 0000000..f66f01c --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/README.md @@ -0,0 +1,46 @@ +# Project Parent Task Filter + +Odoo addon: project_parent_task_filter + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_parent_task_filter +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Parent Task Filter +- **Version**: 16.0.1.1.0 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_parent_task_filter`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/ARCHITECTURE.md new file mode 100644 index 0000000..9b8a0dc --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_parent_task_filter Module - project_parent_task_filter + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/CONFIGURATION.md new file mode 100644 index 0000000..ecf3627 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_parent_task_filter. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/FAQ.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/FAQ.md new file mode 100644 index 0000000..d0ab71f --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_parent_task_filter or install in UI. diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/INSTALL.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/INSTALL.md new file mode 100644 index 0000000..2fecdab --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_parent_task_filter" +# or +uv pip install odoo-bringout-oca-project-project_parent_task_filter" +``` diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/MODELS.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/MODELS.md new file mode 100644 index 0000000..f63c418 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_parent_task_filter. + +```mermaid +classDiagram + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/OVERVIEW.md new file mode 100644 index 0000000..c7f3564 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_parent_task_filter. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_parent_task_filter +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/REPORTS.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/SECURITY.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/USAGE.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/USAGE.md new file mode 100644 index 0000000..c305e0f --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_parent_task_filter +``` diff --git a/odoo-bringout-oca-project-project_parent_task_filter/doc/WIZARDS.md b/odoo-bringout-oca-project-project_parent_task_filter/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/README.rst b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/README.rst new file mode 100644 index 0000000..dec6b16 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/README.rst @@ -0,0 +1,96 @@ +========================== +Project Parent Task Filter +========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:c49a04029b165ad313ff4bf31ef33f3f88c4b0a03ef390c15ce1ba7b05feb6da + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_parent_task_filter + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_parent_task_filter + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a filter to show only the parent tasks in a project and +a group to sort tasks by its parent tasks. +It also adds the subtask number in the kanban view and activates the use +of subtasks in the project settings. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. Activate the subtasks for each project record individually +#. Select the filter or the filter group Parent tasks in a Project + +Known issues / Roadmap +====================== + +* In Products of type Service add an option to create a subtask of an existing task + +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 +~~~~~~~ + +* C2i Change 2 improve + +Contributors +~~~~~~~~~~~~ + +* `C2i Change 2 improve `_: + + * Eduardo Magdalena + +* Stephan Keller + +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. + +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/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/__init__.py b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/__init__.py new file mode 100644 index 0000000..2d5c661 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/__init__.py @@ -0,0 +1,17 @@ +from . import models + +from odoo import api, SUPERUSER_ID + + +def _add_task_display_project(cr, registry): + """This hook is used to set display_project_id field to the tasks that have a project_id set + but empty display_project_id. + This makes subtasks created in the Sub-task page of the parent Task visible in the project + kanban view""" + + env = api.Environment(cr, SUPERUSER_ID, {}) + tasks = env["project.task"].search( + [("parent_id", "!=", False), ("display_project_id", "=", False)] + ) + for task in tasks: + task.write({"display_project_id": task.parent_id.project_id.id}) diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/__manifest__.py b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/__manifest__.py new file mode 100644 index 0000000..caa42ec --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2017 C2i Change 2 improve - Eduardo Magdalena +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Project Parent Task Filter", + "summary": "Add a filter to show the parent tasks", + "version": "16.0.1.1.0", + "category": "Project", + "website": "https://github.com/OCA/project", + "author": "C2i Change 2 improve, " "Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["project"], + "data": ["data/res_config_data.xml", "views/project_task.xml"], + "installable": True, + "post_init_hook": "_add_task_display_project", +} diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/data/res_config_data.xml b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/data/res_config_data.xml new file mode 100644 index 0000000..aade88f --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/data/res_config_data.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/bs.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/bs.po new file mode 100644 index 0000000..3115a11 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/bs.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Nadređeni zadaci" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/ca.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/ca.po new file mode 100644 index 0000000..c5f069d --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/ca.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-02-02 21:13+0000\n" +"Last-Translator: eduardgm \n" +"Language-Team: none\n" +"Language: ca\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_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Tasques pares" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "" + +#~ msgid "Parent task" +#~ msgstr "Tasca pare" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/de.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/de.po new file mode 100644 index 0000000..7ea4e7a --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/de.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-07-09 13:43+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.7.1\n" + +#. module: project_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Übergeordnete Aufgaben" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "" + +#~ msgid "Parent task" +#~ msgstr "Übergeordnete Aufgabe" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/es.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/es.po new file mode 100644 index 0000000..e4f618b --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/es.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-12 15:38+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_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Tareas padre" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "Tarea" + +#~ msgid "Parent task" +#~ msgstr "Tarea padre" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/es_AR.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/es_AR.po new file mode 100644 index 0000000..7838b7a --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/es_AR.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-29 23:49+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Tareas de padres" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/es_ES.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/es_ES.po new file mode 100644 index 0000000..19565c8 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/es_ES.po @@ -0,0 +1,25 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +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: es_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" + +#. module: project_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/fr.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/fr.po new file mode 100644 index 0000000..a960c90 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/fr.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-05-14 18:47+0000\n" +"Last-Translator: Yves Le Doeuff \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 4.3.2\n" + +#. module: project_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Tâches parentes" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/fr_FR.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/fr_FR.po new file mode 100644 index 0000000..cec5b8f --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/fr_FR.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-04-11 16:46+0000\n" +"Last-Translator: Yves Le Doeuff \n" +"Language-Team: none\n" +"Language: fr_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 4.3.2\n" + +#. module: project_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Tâches parentes" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/it.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/it.po new file mode 100644 index 0000000..5e336c1 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/it.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-05-15 11:30+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 4.14.1\n" + +#. module: project_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Lavori padre" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "Lavoro" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/nl_NL.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/nl_NL.po new file mode 100644 index 0000000..b562419 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/nl_NL.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-01-28 09:44+0000\n" +"Last-Translator: Cas Vissers \n" +"Language-Team: none\n" +"Language: nl_NL\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.3.2\n" + +#. module: project_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Bovenliggende taken" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/project_parent_task_filter.pot b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/project_parent_task_filter.pot new file mode 100644 index 0000000..5a606d1 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/project_parent_task_filter.pot @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/pt_BR.po b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/pt_BR.po new file mode 100644 index 0000000..fc52f63 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/i18n/pt_BR.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_parent_task_filter +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-30 14:10+0000\n" +"Last-Translator: Adriano Prado \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" +"X-Generator: Weblate 4.17\n" + +#. module: project_parent_task_filter +#: model_terms:ir.ui.view,arch_db:project_parent_task_filter.view_task_search_form +msgid "Parent tasks" +msgstr "Tarefas pai" + +#. module: project_parent_task_filter +#: model:ir.model,name:project_parent_task_filter.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/models/__init__.py b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/models/__init__.py new file mode 100644 index 0000000..edf2d36 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/models/__init__.py @@ -0,0 +1 @@ +from . import project_task diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/models/project_task.py b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/models/project_task.py new file mode 100644 index 0000000..5f9a01a --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/models/project_task.py @@ -0,0 +1,49 @@ +from odoo import api, models + + +class TaskSub(models.Model): + _inherit = "project.task" + + @api.model_create_multi + def create(self, vals_list): + res = super(TaskSub, self).create(vals_list) + for vals in vals_list: + if vals.get("parent_id", False): + res["display_project_id"] = ( + self.env["project.task"].browse(vals.get("parent_id")).project_id.id + ) + return res + + def action_subtask(self): + if self._context.get("default_project_id"): + default_project = self.env["project.project"].browse( + self.env.context["default_project_id"] + ) + else: + default_project = self.project_id or self.project_id.subtask_project_id + ctx = dict(self.env.context) + ctx = {k: v for k, v in ctx.items() if not k.startswith("search_default_")} + ctx.update( + { + "default_name": self.env.context.get("name", self.name) + ": ", + "default_parent_id": self.id, + "default_company_id": default_project.company_id.id + if default_project + else self.env.company.id, + } + ) + action = { + "type": "ir.actions.act_window", + "name": "Subtasks of " + self.name, + "res_model": "project.task", + "view_mode": "kanban,tree,form,calendar,pivot,graph,activity", + "search_view_id": [ + self.env.ref("project.view_task_search_form").id, + "search", + ], + "domain": [("id", "!=", self.id), ("id", "child_of", self.id)], + } + + action["context"] = ctx + + return action diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..260e05f --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/CONTRIBUTORS.rst @@ -0,0 +1,5 @@ +* `C2i Change 2 improve `_: + + * Eduardo Magdalena + +* Stephan Keller diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/DESCRIPTION.rst new file mode 100644 index 0000000..b94cc83 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +This module adds a filter to show only the parent tasks in a project and +a group to sort tasks by its parent tasks. +It also adds the subtask number in the kanban view and activates the use +of subtasks in the project settings. diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/ROADMAP.rst b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/ROADMAP.rst new file mode 100644 index 0000000..08041fb --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/ROADMAP.rst @@ -0,0 +1 @@ +* In Products of type Service add an option to create a subtask of an existing task diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/USAGE.rst b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/USAGE.rst new file mode 100644 index 0000000..3103e2a --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/readme/USAGE.rst @@ -0,0 +1,4 @@ +To use this module, you need to: + +#. Activate the subtasks for each project record individually +#. Select the filter or the filter group Parent tasks in a Project diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/static/description/icon.png b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/static/description/index.html b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/static/description/index.html new file mode 100644 index 0000000..b8122ad --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/static/description/index.html @@ -0,0 +1,443 @@ + + + + + +Project Parent Task Filter + + + +
+

Project Parent Task Filter

+ + +

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

+

This module adds a filter to show only the parent tasks in a project and +a group to sort tasks by its parent tasks. +It also adds the subtask number in the kanban view and activates the use +of subtasks in the project settings.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Activate the subtasks for each project record individually
  2. +
  3. Select the filter or the filter group Parent tasks in a Project
  4. +
+
+
+

Known issues / Roadmap

+
    +
  • In Products of type Service add an option to create a subtask of an existing task
  • +
+
+
+

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

+
    +
  • C2i Change 2 improve
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/views/project_task.xml b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/views/project_task.xml new file mode 100644 index 0000000..4fd53cd --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/project_parent_task_filter/views/project_task.xml @@ -0,0 +1,65 @@ + + + + + Project Parent Tasks View Search Form + project.task + + + + + + + + + + + + + project.task.kanban + project.task + + + + + + + + + + + +
+ + + + + + + + +
+
+
+
+
diff --git a/odoo-bringout-oca-project-project_parent_task_filter/pyproject.toml b/odoo-bringout-oca-project-project_parent_task_filter/pyproject.toml new file mode 100644 index 0000000..4e21a85 --- /dev/null +++ b/odoo-bringout-oca-project-project_parent_task_filter/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_parent_task_filter" +version = "16.0.0" +description = "Project Parent Task Filter - Add a filter to show the parent tasks" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_parent_task_filter"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_pivot/README.md b/odoo-bringout-oca-project-project_pivot/README.md new file mode 100644 index 0000000..6861533 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/README.md @@ -0,0 +1,46 @@ +# Pivot view for projects + +Odoo addon: project_pivot + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_pivot +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Pivot view for projects +- **Version**: 16.0.1.0.1 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_pivot`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_pivot/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_pivot/doc/ARCHITECTURE.md new file mode 100644 index 0000000..b7a449b --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_pivot Module - project_pivot + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_pivot/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_pivot/doc/CONFIGURATION.md new file mode 100644 index 0000000..34f4613 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_pivot. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_pivot/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_pivot/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_pivot/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_pivot/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_pivot/doc/FAQ.md b/odoo-bringout-oca-project-project_pivot/doc/FAQ.md new file mode 100644 index 0000000..c94b890 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_pivot or install in UI. diff --git a/odoo-bringout-oca-project-project_pivot/doc/INSTALL.md b/odoo-bringout-oca-project-project_pivot/doc/INSTALL.md new file mode 100644 index 0000000..b37ffd5 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_pivot" +# or +uv pip install odoo-bringout-oca-project-project_pivot" +``` diff --git a/odoo-bringout-oca-project-project_pivot/doc/MODELS.md b/odoo-bringout-oca-project-project_pivot/doc/MODELS.md new file mode 100644 index 0000000..6b05065 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/MODELS.md @@ -0,0 +1,11 @@ +# Models + +Detected core models and extensions in project_pivot. + +```mermaid +classDiagram +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_pivot/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_pivot/doc/OVERVIEW.md new file mode 100644 index 0000000..ddcd4c7 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_pivot. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_pivot +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_pivot/doc/REPORTS.md b/odoo-bringout-oca-project-project_pivot/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_pivot/doc/SECURITY.md b/odoo-bringout-oca-project-project_pivot/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_pivot/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_pivot/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_pivot/doc/USAGE.md b/odoo-bringout-oca-project-project_pivot/doc/USAGE.md new file mode 100644 index 0000000..d49851b --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_pivot +``` diff --git a/odoo-bringout-oca-project-project_pivot/doc/WIZARDS.md b/odoo-bringout-oca-project-project_pivot/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_pivot/project_pivot/README.rst b/odoo-bringout-oca-project-project_pivot/project_pivot/README.rst new file mode 100644 index 0000000..b47e455 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/project_pivot/README.rst @@ -0,0 +1,83 @@ +======================= +Pivot view for projects +======================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:20eb0f47018353e25a5c25e671a6ac08d20fc5e0ee96a7fff152c456535b167f + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_pivot + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_pivot + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module introduces a pivot view for the projects, so that you can analyze easily some data such as project planning dates, project status and other information. + +**Table of contents** + +.. contents:: + :local: + +Known issues / Roadmap +====================== + +This module is not compatible with 'project_list' and 'project_timeline' because both modules replace the same actions. + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* Tecnativa (https://www.tecnativa.com): + + * Carolina Fernandez + +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. + +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/odoo-bringout-oca-project-project_pivot/project_pivot/__init__.py b/odoo-bringout-oca-project-project_pivot/project_pivot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-project-project_pivot/project_pivot/__manifest__.py b/odoo-bringout-oca-project-project_pivot/project_pivot/__manifest__.py new file mode 100644 index 0000000..389b066 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/project_pivot/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Pivot view for projects", + "version": "16.0.1.0.1", + "category": "Project", + "website": "https://github.com/OCA/project", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "application": False, + "depends": ["project"], + "data": ["views/project_project.xml"], +} diff --git a/odoo-bringout-oca-project-project_pivot/project_pivot/i18n/it.po b/odoo-bringout-oca-project-project_pivot/project_pivot/i18n/it.po new file mode 100644 index 0000000..7338855 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/project_pivot/i18n/it.po @@ -0,0 +1,14 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\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" diff --git a/odoo-bringout-oca-project-project_pivot/project_pivot/i18n/project_pivot.pot b/odoo-bringout-oca-project-project_pivot/project_pivot/i18n/project_pivot.pot new file mode 100644 index 0000000..78d58d5 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/project_pivot/i18n/project_pivot.pot @@ -0,0 +1,13 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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" diff --git a/odoo-bringout-oca-project-project_pivot/project_pivot/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_pivot/project_pivot/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..7df7b6b --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/project_pivot/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Tecnativa (https://www.tecnativa.com): + + * Carolina Fernandez diff --git a/odoo-bringout-oca-project-project_pivot/project_pivot/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_pivot/project_pivot/readme/DESCRIPTION.rst new file mode 100644 index 0000000..580aaf6 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/project_pivot/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module introduces a pivot view for the projects, so that you can analyze easily some data such as project planning dates, project status and other information. diff --git a/odoo-bringout-oca-project-project_pivot/project_pivot/readme/ROADMAP.rst b/odoo-bringout-oca-project-project_pivot/project_pivot/readme/ROADMAP.rst new file mode 100644 index 0000000..60b8a57 --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/project_pivot/readme/ROADMAP.rst @@ -0,0 +1 @@ +This module is not compatible with 'project_list' and 'project_timeline' because both modules replace the same actions. diff --git a/odoo-bringout-oca-project-project_pivot/project_pivot/static/description/icon.png b/odoo-bringout-oca-project-project_pivot/project_pivot/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_pivot/project_pivot/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_pivot/project_pivot/static/description/index.html b/odoo-bringout-oca-project-project_pivot/project_pivot/static/description/index.html new file mode 100644 index 0000000..98c331e --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/project_pivot/static/description/index.html @@ -0,0 +1,431 @@ + + + + + +Pivot view for projects + + + +
+

Pivot view for projects

+ + +

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

+

This module introduces a pivot view for the projects, so that you can analyze easily some data such as project planning dates, project status and other information.

+

Table of contents

+ +
+

Known issues / Roadmap

+

This module is not compatible with ‘project_list’ and ‘project_timeline’ because both modules replace the same actions.

+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_pivot/project_pivot/views/project_project.xml b/odoo-bringout-oca-project-project_pivot/project_pivot/views/project_project.xml new file mode 100644 index 0000000..28b476b --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/project_pivot/views/project_project.xml @@ -0,0 +1,29 @@ + + + + + project.project.pivot + project.project + + + + + + + + + + + + kanban,tree,form,pivot + + + kanban,tree,form,calendar,pivot,activity + + diff --git a/odoo-bringout-oca-project-project_pivot/pyproject.toml b/odoo-bringout-oca-project-project_pivot/pyproject.toml new file mode 100644 index 0000000..c1b6d9a --- /dev/null +++ b/odoo-bringout-oca-project-project_pivot/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_pivot" +version = "16.0.0" +description = "Pivot view for projects - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_pivot"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_purchase_link/README.md b/odoo-bringout-oca-project-project_purchase_link/README.md new file mode 100644 index 0000000..5755bd1 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/README.md @@ -0,0 +1,48 @@ +# Project Purchase Link + +Odoo addon: project_purchase_link + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_purchase_link +``` + +## Dependencies + +This addon depends on: +- project +- purchase +- hr_timesheet + +## Manifest Information + +- **Name**: Project Purchase Link +- **Version**: 16.0.1.0.0 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_purchase_link`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_purchase_link/doc/ARCHITECTURE.md new file mode 100644 index 0000000..8d94f3f --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_purchase_link Module - project_purchase_link + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_purchase_link/doc/CONFIGURATION.md new file mode 100644 index 0000000..9d8e50d --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_purchase_link. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_purchase_link/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_purchase_link/doc/DEPENDENCIES.md new file mode 100644 index 0000000..eac9cc0 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/DEPENDENCIES.md @@ -0,0 +1,7 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) +- [purchase](https://github.com/bringout/oca-ocb-core/tree/b3e6fb998e53b9eb1bc9669d992017616c2bd7b3/odoo-bringout-oca-ocb-purchase) +- [hr_timesheet](https://github.com/bringout/oca-ocb-hr/tree/dc1405e12dbe76ffb119a0feb323b56ae2c58522/odoo-bringout-oca-ocb-hr_timesheet) diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/FAQ.md b/odoo-bringout-oca-project-project_purchase_link/doc/FAQ.md new file mode 100644 index 0000000..8cfcca2 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_purchase_link or install in UI. diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/INSTALL.md b/odoo-bringout-oca-project-project_purchase_link/doc/INSTALL.md new file mode 100644 index 0000000..08bad95 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_purchase_link" +# or +uv pip install odoo-bringout-oca-project-project_purchase_link" +``` diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/MODELS.md b/odoo-bringout-oca-project-project_purchase_link/doc/MODELS.md new file mode 100644 index 0000000..5f676e0 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_purchase_link. + +```mermaid +classDiagram + class project_project +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_purchase_link/doc/OVERVIEW.md new file mode 100644 index 0000000..c45db92 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_purchase_link. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_purchase_link +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/REPORTS.md b/odoo-bringout-oca-project-project_purchase_link/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/SECURITY.md b/odoo-bringout-oca-project-project_purchase_link/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_purchase_link/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/USAGE.md b/odoo-bringout-oca-project-project_purchase_link/doc/USAGE.md new file mode 100644 index 0000000..9fba382 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_purchase_link +``` diff --git a/odoo-bringout-oca-project-project_purchase_link/doc/WIZARDS.md b/odoo-bringout-oca-project-project_purchase_link/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/README.rst b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/README.rst new file mode 100644 index 0000000..ac9f937 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/README.rst @@ -0,0 +1,88 @@ +===================== +Project Purchase Link +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:bc3abdd1cd2f2a13f043452d3847993c032e2b1cc99a2a1774a0edfa57f5abdc + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_purchase_link + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_purchase_link + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +With this module you can access to purchase orders and invoices related to the +project. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. Belong to the "Show Full Accounting Features" and "Analytic Accounting" groups. +#. On the lines of purchase orders or invoices, indicate the analytical account associated with the project. + +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 +~~~~~~~ + +* AvanzOSC + +Contributors +~~~~~~~~~~~~ + +* Oihane Crucelaegui +* Ana Juaristi +* Alberto Martín Cortada +* Zina Rasoamanana + +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. + +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/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/__init__.py b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/__init__.py new file mode 100644 index 0000000..4209851 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Oihane Crucelaegui - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import models diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/__manifest__.py b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/__manifest__.py new file mode 100644 index 0000000..0462cf9 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2018 Gontzal Gomez - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "Project Purchase Link", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "depends": ["project", "purchase", "hr_timesheet"], + "author": "AvanzOSC, " "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "category": "Project", + "data": ["views/project_project_view.xml"], + "installable": True, +} diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/bs.po b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/bs.po new file mode 100644 index 0000000..0473f03 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/bs.po @@ -0,0 +1,72 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_purchase_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_count +msgid "# Purchase" +msgstr "# Nabavka" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_count +msgid "# Purchase Invoice" +msgstr "# Nabavna faktura" + +#. module: project_purchase_link +#: model:ir.model,name:project_purchase_link.model_project_project +msgid "Project" +msgstr "Projekat" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Invoice Lines" +msgstr "Linije nabavne fakture" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoice Total" +msgstr "Ukupno nabavne fakture" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoices" +msgstr "Nabavne fakture" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order" +msgstr "Nalog za nabavu" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order Lines" +msgstr "Stavke narudžbenice" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Total" +msgstr "Ukupno nabavke" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchases" +msgstr "Nabavke" diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/es.po b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/es.po new file mode 100644 index 0000000..dc85a2e --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/es.po @@ -0,0 +1,79 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_purchase_utilities +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-01-25 08:47+0000\n" +"PO-Revision-Date: 2023-09-03 13:36+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: \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_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_count +msgid "# Purchase" +msgstr "N.º de compras" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_count +msgid "# Purchase Invoice" +msgstr "N.º de facturas de compra" + +#. module: project_purchase_link +#: model:ir.model,name:project_purchase_link.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Invoice Lines" +msgstr "Líneas de factura de compra" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoice Total" +msgstr "Total de facturas de compra" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoices" +msgstr "Facturas de compra" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order" +msgstr "Pedido de compra" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order Lines" +msgstr "Líneas de pedido de compra" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Total" +msgstr "Total de compras" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchases" +msgstr "Compras" + +#~ msgid "Purchase Lines" +#~ msgstr "Líneas de compra" diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/it.po b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/it.po new file mode 100644 index 0000000..e62a4f9 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/it.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_purchase_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-09-04 18:40+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 4.17\n" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_count +msgid "# Purchase" +msgstr "N° acquisto" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_count +msgid "# Purchase Invoice" +msgstr "N° fattura di acquisto" + +#. module: project_purchase_link +#: model:ir.model,name:project_purchase_link.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Invoice Lines" +msgstr "Righe fattura di acquisto" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoice Total" +msgstr "Totale fattura di acquisto" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoices" +msgstr "Fatture di acquisto" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order" +msgstr "Ordine di acquisto" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order Lines" +msgstr "Righe ordine di acquisto" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Total" +msgstr "Totale acquisti" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchases" +msgstr "Acquisti" diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/project_purchase_link.pot b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/project_purchase_link.pot new file mode 100644 index 0000000..c906241 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/project_purchase_link.pot @@ -0,0 +1,72 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_purchase_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_count +msgid "# Purchase" +msgstr "" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_count +msgid "# Purchase Invoice" +msgstr "" + +#. module: project_purchase_link +#: model:ir.model,name:project_purchase_link.model_project_project +msgid "Project" +msgstr "" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Invoice Lines" +msgstr "" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoice Total" +msgstr "" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoices" +msgstr "" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order" +msgstr "" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order Lines" +msgstr "" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Total" +msgstr "" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchases" +msgstr "" diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/pt_BR.po b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/pt_BR.po new file mode 100644 index 0000000..f9ad419 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/pt_BR.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_purchase_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-31 10:11+0000\n" +"Last-Translator: Adriano Prado \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" +"X-Generator: Weblate 4.17\n" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_count +msgid "# Purchase" +msgstr "# Compra" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_count +msgid "# Purchase Invoice" +msgstr "# Fatura de Compra" + +#. module: project_purchase_link +#: model:ir.model,name:project_purchase_link.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Invoice Lines" +msgstr "Linhas da Fatura de Compra" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoice Total" +msgstr "Total da Fatura de Compra" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoices" +msgstr "Faturas de Compra" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order" +msgstr "Pedido de Compra" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order Lines" +msgstr "Linhas do Pedido de Compra" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Total" +msgstr "Total Compra" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchases" +msgstr "Compras" diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/sl.po b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/sl.po new file mode 100644 index 0000000..8ccffe5 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/i18n/sl.po @@ -0,0 +1,79 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_purchase_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-03-31 10:14+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 3.10\n" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_count +msgid "# Purchase" +msgstr "# nabava" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_count +msgid "# Purchase Invoice" +msgstr "# prejeti račun" + +#. module: project_purchase_link +#: model:ir.model,name:project_purchase_link.model_project_project +msgid "Project" +msgstr "" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Invoice Lines" +msgstr "Postavke prejetega računa" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_invoice_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoice Total" +msgstr "Prejeti račun skupaj" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Invoices" +msgstr "Prejeti računi" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order" +msgstr "Nabavni nalog" + +#. module: project_purchase_link +#. odoo-python +#: code:addons/project_purchase_link/models/project_project.py:0 +#, python-format +msgid "Purchase Order Lines" +msgstr "Postavke nabavnega naloga" + +#. module: project_purchase_link +#: model:ir.model.fields,field_description:project_purchase_link.field_project_project__purchase_line_total +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchase Total" +msgstr "Skupaj nabava" + +#. module: project_purchase_link +#: model_terms:ir.ui.view,arch_db:project_purchase_link.project_project_view_form +msgid "Purchases" +msgstr "Nabave" + +#~ msgid "WBS element" +#~ msgstr "Projektni člen" diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/models/__init__.py b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/models/__init__.py new file mode 100644 index 0000000..6fe8885 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/models/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Oihane Crucelaegui - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import project_project diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/models/project_project.py b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/models/project_project.py new file mode 100644 index 0000000..b60dca1 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/models/project_project.py @@ -0,0 +1,180 @@ +# Copyright 2019 Oihane Crucelaegui - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import _, fields, models +from odoo.osv import expression +from odoo.tools.safe_eval import safe_eval + + +class ProjectProject(models.Model): + _inherit = "project.project" + + purchase_count = fields.Integer( + compute="_compute_purchase_info", string="# Purchase" + ) + purchase_line_total = fields.Integer( + compute="_compute_purchase_info", string="Purchase Total" + ) + purchase_invoice_count = fields.Integer( + compute="_compute_purchase_invoice_info", string="# Purchase Invoice" + ) + purchase_invoice_line_total = fields.Float( + compute="_compute_purchase_invoice_info", string="Purchase Invoice Total" + ) + + def _domain_purchase_order(self): + query = self.env["purchase.order.line"]._search( + [ + ("order_id.state", "!=", "cancel"), + ] + ) + # check if analytic_distribution contains id of analytic account + query.add_where( + "purchase_order_line.analytic_distribution ?| array[%s]", + [str(project.analytic_account_id.id) for project in self], + ) + + query.order = None + query_string, query_param = query.select( + "purchase_order_line.order_id as order_id", + ) + self._cr.execute(query_string, query_param) + purchase_lines_ids = [ + int(record.get("order_id")) for record in self._cr.dictfetchall() + ] + domain = [("id", "in", purchase_lines_ids)] + return domain + + def _domain_purchase_order_line(self): + query = self.env["purchase.order.line"]._search( + [ + ("order_id.state", "!=", "cancel"), + ] + ) + # check if analytic_distribution contains id of analytic account + query.add_where( + "purchase_order_line.analytic_distribution ?| array[%s]", + [str(project.analytic_account_id.id) for project in self], + ) + + query.order = None + query_string, query_param = query.select( + "purchase_order_line.id as id", + ) + self._cr.execute(query_string, query_param) + purchase_lines_ids = [ + int(record.get("id")) for record in self._cr.dictfetchall() + ] + domain = [("id", "in", purchase_lines_ids)] + return domain + + def _domain_purchase_invoice(self): + query = self.env["account.move.line"]._search( + [ + ("move_id.state", "!=", "cancel"), + ] + ) + # check if analytic_distribution contains id of analytic account + query.add_where( + "account_move_line.analytic_distribution ?| array[%s]", + [str(project.analytic_account_id.id) for project in self], + ) + query.order = None + query_string, query_param = query.select( + "DISTINCT(account_move_line.move_id) as move_id", + ) + self._cr.execute(query_string, query_param) + purchase_invoice_ids = [ + int(record.get("move_id")) for record in self._cr.dictfetchall() + ] + domain = [("id", "in", purchase_invoice_ids)] + return domain + + def _domain_purchase_invoice_line(self): + query = self.env["account.move.line"]._search( + [ + ("move_id.state", "!=", "cancel"), + ("move_id.move_type", "=", "in_invoice"), + ] + ) + # check if analytic_distribution contains id of analytic account + query.add_where( + "account_move_line.analytic_distribution ?| array[%s]", + [str(project.analytic_account_id.id) for project in self], + ) + query.order = None + query_string, query_param = query.select( + "account_move_line.id as id", + ) + self._cr.execute(query_string, query_param) + purchase_invoice_lines_ids = [ + int(record.get("id")) for record in self._cr.dictfetchall() + ] + domain = [("id", "in", purchase_invoice_lines_ids)] + return domain + + def _compute_purchase_info(self): + for project in self: + groups = self.env["purchase.order.line"].read_group( + project._domain_purchase_order_line(), + ["price_subtotal"], + ["order_id"], + ) + purchase_line_total = 0 + for group in groups: + purchase_line_total += group["price_subtotal"] + project.purchase_count = len(groups) + project.purchase_line_total = purchase_line_total + + def _compute_purchase_invoice_info(self): + for project in self: + groups = self.env["account.move.line"].read_group( + project._domain_purchase_invoice_line(), + ["price_subtotal"], + ["move_id"], + ) + purchase_invoice_line_total = 0 + for group in groups: + purchase_invoice_line_total += group["price_subtotal"] + project.purchase_invoice_count = len(groups) + project.purchase_invoice_line_total = purchase_invoice_line_total + + def button_open_purchase_order(self): + self.ensure_one() + return { + "name": _("Purchase Order"), + "domain": self._domain_purchase_order(), + "type": "ir.actions.act_window", + "view_mode": "tree,form", + "res_model": "purchase.order", + } + + def button_open_purchase_order_line(self): + self.ensure_one() + return { + "name": _("Purchase Order Lines"), + "domain": self._domain_purchase_order_line(), + "type": "ir.actions.act_window", + "view_mode": "tree,form", + "res_model": "purchase.order.line", + } + + def button_open_purchase_invoice(self): + self.ensure_one() + action = self.env.ref("account.action_move_in_invoice_type") + action_dict = action.sudo().read()[0] if action else {} + domain = expression.AND( + [safe_eval(action.domain or "[]"), self._domain_purchase_invoice()] + ) + action_dict.update({"domain": domain}) + return action_dict + + def button_open_purchase_invoice_line(self): + self.ensure_one() + return { + "name": _("Purchase Invoice Lines"), + "domain": self._domain_purchase_invoice_line(), + "type": "ir.actions.act_window", + "view_mode": "tree,form", + "res_model": "account.move.line", + } diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..f04f5a2 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* Oihane Crucelaegui +* Ana Juaristi +* Alberto Martín Cortada +* Zina Rasoamanana diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/readme/DESCRIPTION.rst new file mode 100644 index 0000000..81a04d1 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +With this module you can access to purchase orders and invoices related to the +project. diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/readme/USAGE.rst b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/readme/USAGE.rst new file mode 100644 index 0000000..97b4f6b --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/readme/USAGE.rst @@ -0,0 +1,4 @@ +To use this module, you need to: + +#. Belong to the "Show Full Accounting Features" and "Analytic Accounting" groups. +#. On the lines of purchase orders or invoices, indicate the analytical account associated with the project. diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/static/description/icon.png b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/static/description/index.html b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/static/description/index.html new file mode 100644 index 0000000..b5a1cdb --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/static/description/index.html @@ -0,0 +1,434 @@ + + + + + + +Project Purchase Link + + + + + + diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/tests/__init__.py b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/tests/__init__.py new file mode 100644 index 0000000..f60408d --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Oihane Crucelaegui - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import test_project_purchase_link diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/tests/test_project_purchase_link.py b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/tests/test_project_purchase_link.py new file mode 100644 index 0000000..450b365 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/tests/test_project_purchase_link.py @@ -0,0 +1,111 @@ +# Copyright 2019 Oihane Crucelaegui - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo.osv import expression +from odoo.tests import common +from odoo.tools.safe_eval import safe_eval + + +class TestProjectPurchaseUtilities(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls.project_model = cls.env["project.project"] + cls.project = cls.project_model.create({"name": "Test Project"}) + cls.purchase_model = cls.env["purchase.order"] + cls.partner = cls.env.ref("base.res_partner_2") + cls.product = cls.env["product.product"].create( + { + "name": "Product Product 4", + "standard_price": 500.0, + "list_price": 750.0, + "type": "consu", + "categ_id": cls.env.ref("product.product_category_all").id, + } + ) + cls.purchase = cls.purchase_model.create( + { + "partner_id": cls.partner.id, + } + ) + cls.invoice_model = cls.env["account.move"] + cls.invoice_line_model = cls.env["account.move.line"] + + def test_project_purchase(self): + self.assertTrue(self.purchase) + self.purchase.write({"invoice_status": "to invoice"}) + self.assertFalse(self.project.purchase_count) + self.assertFalse(self.project.purchase_line_total) + self.assertFalse(self.project.purchase_invoice_count) + self.assertFalse(self.project.purchase_invoice_line_total) + self.purchase.write( + { + "order_line": [ + ( + 0, + 0, + { + "name": "Test line", + "analytic_distribution": { + self.project.analytic_account_id.id: 100 + }, + "price_unit": 50, + "product_qty": 4, + "qty_received": 4, + "product_uom": self.product.uom_id.id, + "product_id": self.product.id, + }, + ) + ] + } + ) + + self.env.invalidate_all() + + self.assertEqual(self.project.purchase_count, 1) + self.assertEqual(self.project.purchase_line_total, 200) + self.assertFalse(self.project.purchase_invoice_count) + self.assertFalse(self.project.purchase_invoice_line_total) + self.purchase.button_confirm() + invoice = self.invoice_model.create( + { + "partner_id": self.purchase.partner_id.id, + "purchase_id": self.purchase.id, + "move_type": "in_invoice", + } + ) + for line in self.purchase.order_line: + categ_id = line.product_id.categ_id + account_id = categ_id.property_account_expense_categ_id.id + vals = { + "move_id": invoice.id, + "name": line.name, + "account_id": account_id, + "analytic_distribution": line.analytic_distribution, + } + self.invoice_line_model.create(vals) + self.env.invalidate_all() + self.assertEqual(self.project.purchase_invoice_count, 1) + + purchase_domain = self.project._domain_purchase_order_line() + + lines = self.env["purchase.order.line"].search(purchase_domain) + order_domain = [("id", "in", lines.mapped("order_id").ids)] + purchase_dict = self.project.button_open_purchase_order() + self.assertEqual(purchase_dict.get("domain"), order_domain) + purchase_line_dict = self.project.button_open_purchase_order_line() + self.assertEqual(purchase_line_dict.get("domain"), purchase_domain) + + action = self.env.ref("account.action_move_in_invoice_type") + invoice_domain = expression.AND( + [safe_eval(action.domain or "[]"), self.project._domain_purchase_invoice()] + ) # only one test invoice (line) + + invoice_dict = self.project.button_open_purchase_invoice() + self.assertEqual(invoice_dict.get("domain"), invoice_domain) + + invoice_line_domain = self.project._domain_purchase_invoice_line() + + invoice_line_dict = self.project.button_open_purchase_invoice_line() + self.assertEqual(invoice_line_dict.get("domain"), invoice_line_domain) diff --git a/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/views/project_project_view.xml b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/views/project_project_view.xml new file mode 100644 index 0000000..1dfbfef --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/project_purchase_link/views/project_project_view.xml @@ -0,0 +1,55 @@ + + + + project.project + + +
+ + + + +
+
+
+
diff --git a/odoo-bringout-oca-project-project_purchase_link/pyproject.toml b/odoo-bringout-oca-project-project_purchase_link/pyproject.toml new file mode 100644 index 0000000..538db90 --- /dev/null +++ b/odoo-bringout-oca-project-project_purchase_link/pyproject.toml @@ -0,0 +1,44 @@ +[project] +name = "odoo-bringout-oca-project-project_purchase_link" +version = "16.0.0" +description = "Project Purchase Link - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "odoo-bringout-oca-ocb-purchase>=16.0.0", + "odoo-bringout-oca-ocb-hr_timesheet>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_purchase_link"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_risk/README.md b/odoo-bringout-oca-project-project_risk/README.md new file mode 100644 index 0000000..372efe3 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/README.md @@ -0,0 +1,46 @@ +# Project Risk + +Odoo addon: project_risk + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_risk +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Risk +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_risk`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_risk/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_risk/doc/ARCHITECTURE.md new file mode 100644 index 0000000..83ebc6e --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_risk Module - project_risk + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_risk/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_risk/doc/CONFIGURATION.md new file mode 100644 index 0000000..6d564c7 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_risk. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_risk/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_risk/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_risk/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_risk/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_risk/doc/FAQ.md b/odoo-bringout-oca-project-project_risk/doc/FAQ.md new file mode 100644 index 0000000..21c4005 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_risk or install in UI. diff --git a/odoo-bringout-oca-project-project_risk/doc/INSTALL.md b/odoo-bringout-oca-project-project_risk/doc/INSTALL.md new file mode 100644 index 0000000..7eec793 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_risk" +# or +uv pip install odoo-bringout-oca-project-project_risk" +``` diff --git a/odoo-bringout-oca-project-project_risk/doc/MODELS.md b/odoo-bringout-oca-project-project_risk/doc/MODELS.md new file mode 100644 index 0000000..3c017ce --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/MODELS.md @@ -0,0 +1,16 @@ +# Models + +Detected core models and extensions in project_risk. + +```mermaid +classDiagram + class project_risk + class project_risk_category + class project_risk_response + class project_risk_response_category + class project_project +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_risk/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_risk/doc/OVERVIEW.md new file mode 100644 index 0000000..7894f40 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_risk. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_risk +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_risk/doc/REPORTS.md b/odoo-bringout-oca-project-project_risk/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_risk/doc/SECURITY.md b/odoo-bringout-oca-project-project_risk/doc/SECURITY.md new file mode 100644 index 0000000..c508c8b --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/SECURITY.md @@ -0,0 +1,63 @@ +# Security + +Access control and security definitions in project_risk. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[bosnian_translations.json](../bosnian_translations.json)** + - 50 model access rules +- **[bosnian_translations_output.json](../bosnian_translations_output.json)** + - 444 model access rules +- **[CHANGELOG.md](../CHANGELOG.md)** + - 132 model access rules +- **[doc](../doc)** +- **[docker](../docker)** +- **[input](../input)** +- **[nix](../nix)** +- **[odoo.conf](../odoo.conf)** + - 58 model access rules +- **[odoo_packages_bez_l10n.txt](../odoo_packages_bez_l10n.txt)** + - 1947 model access rules +- **[odoo_packages_bringout.txt](../odoo_packages_bringout.txt)** + - 1947 model access rules +- **[odoo_packages.txt](../odoo_packages.txt)** + - 2085 model access rules +- **[output](../output)** +- **[packages](../packages)** +- **[README.md](../README.md)** + - 338 model access rules +- **[scripts](../scripts)** +- **[temp](../temp)** +- **[TRANSLATION_BS_SUMMARY.md](../TRANSLATION_BS_SUMMARY.md)** + - 146 model access rules + +## Record Rules + +Row-level security rules defined in: + +## Security Groups & Configuration + +Security groups and permissions defined in: +- **[ir_model_access.xml](../project_risk/security/ir_model_access.xml)** + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[ir_model_access.xml](../project_risk/security/ir_model_access.xml)** + - Security groups, categories, and XML-based rules + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_risk/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_risk/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_risk/doc/USAGE.md b/odoo-bringout-oca-project-project_risk/doc/USAGE.md new file mode 100644 index 0000000..995f319 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_risk +``` diff --git a/odoo-bringout-oca-project-project_risk/doc/WIZARDS.md b/odoo-bringout-oca-project-project_risk/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_risk/project_risk/README.rst b/odoo-bringout-oca-project-project_risk/project_risk/README.rst new file mode 100644 index 0000000..898de95 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/README.rst @@ -0,0 +1,111 @@ +============ +Project Risk +============ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5b481bbebba8e2ffb6ee88aba41d04e7bfb0bcad3b26bd097f7201626d870cc1 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_risk + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_risk + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +With this module you can manage your projects risk using the MOR method. + +https://www.axelos.com/best-practice-solutions/mor/what-is-mor + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +This module provides a number of default risk categories, but you can add more at *Project > Configuration > Risk Categories*. +For risk response categories you need to go to *Project > Configuration > Risk Response Categories*. + +Usage +===== + +To define risks for your projects: + +#. Go to *Project > Risks*; +#. create a new risk; +#. the rating is automatically calculated based on this risk matrix: + .. image:: https://raw.githubusercontent.com/OCA/project/16.0/project_risk/static/description/matrix.png + :alt: Risk matrix +#. set the state to 'Active' if the risk is in effect; +#. set the state to 'Closed' if the risk is processed or e.g. completely avoided. + +The list of risks is by default ordered by rating and proximity. +Risks with a rating higher than rating 'Medium-High' become red. + +Known issues / Roadmap +====================== + +* Create a task based on a risk response: it would be nice if a task can automatically be created based on the risk response information. + +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 +~~~~~~~ + +* Onestein + +Contributors +~~~~~~~~~~~~ + +* Dennis Sluijk +* `Tecnativa `_: + + * Manuel Calero + * Ernesto Tejeda + +* `Heliconia Solutions Pvt. Ltd. `_ + +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. + +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/odoo-bringout-oca-project-project_risk/project_risk/__init__.py b/odoo-bringout-oca-project-project_risk/project_risk/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_risk/project_risk/__manifest__.py b/odoo-bringout-oca-project-project_risk/project_risk/__manifest__.py new file mode 100644 index 0000000..1a3b0e3 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/__manifest__.py @@ -0,0 +1,21 @@ +{ + "name": "Project Risk", + "summary": "MOR risk management method", + "author": "Onestein, Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/OCA/project", + "category": "Project Management", + "version": "16.0.1.0.0", + "depends": ["project"], + "data": [ + "security/ir_model_access.xml", + "data/project_risk_response_category_data.xml", + "data/project_risk_category_data.xml", + "views/project_risk_response_category_view.xml", + "views/project_risk_category_view.xml", + "views/project_risk_view.xml", + "views/project_project_view.xml", + "views/menuitems.xml", + ], + "installable": True, +} diff --git a/odoo-bringout-oca-project-project_risk/project_risk/data/project_risk_category_data.xml b/odoo-bringout-oca-project-project_risk/project_risk/data/project_risk_category_data.xml new file mode 100644 index 0000000..76abce7 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/data/project_risk_category_data.xml @@ -0,0 +1,17 @@ + + + + + Quality + + + Network + + + Legal + + + Supplier + + diff --git a/odoo-bringout-oca-project-project_risk/project_risk/data/project_risk_response_category_data.xml b/odoo-bringout-oca-project-project_risk/project_risk/data/project_risk_response_category_data.xml new file mode 100644 index 0000000..028aca4 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/data/project_risk_response_category_data.xml @@ -0,0 +1,41 @@ + + + + + Avoid + + + Reduce + + + Fall back + + + Transfer + + + Accept + + + Share + + diff --git a/odoo-bringout-oca-project-project_risk/project_risk/i18n/bs.po b/odoo-bringout-oca-project-project_risk/project_risk/i18n/bs.po new file mode 100644 index 0000000..5fb7fab --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/i18n/bs.po @@ -0,0 +1,421 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_risk +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction +msgid "Action Needed" +msgstr "Potrebna akcija" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__actionee_id +msgid "Actionee" +msgstr "Izvršilac radnje" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__active +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Active" +msgstr "Aktivan" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_attachment_count +msgid "Attachment Count" +msgstr "Broj priloga" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_category_id +msgid "Category" +msgstr "Kategorija" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__closed +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Closed" +msgstr "Zatvoreno" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__10 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Critical" +msgstr "Kritično" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__description +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__description +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Description" +msgstr "Opis" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__draft +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Draft" +msgstr "U pripremi" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__5 +msgid "Extreme" +msgstr "Ekstremni" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_follower_ids +msgid "Followers" +msgstr "Pratioci" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_partner_ids +msgid "Followers (Partners)" +msgstr "Pratioci (Partneri)" + +#. module: project_risk +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Group By..." +msgstr "Grupiši po..." + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__has_message +msgid "Has Message" +msgstr "Ima poruku" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__4 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__8 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "High" +msgstr "Visoki" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__id +msgid "ID" +msgstr "ID" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Ako je zakačeno, nove poruke će zahtjevati vašu pažnju" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Ako je označeno neke poruke mogu imati grešku u dostavi." + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__6 +msgid "Imminent" +msgstr "Neposredan" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__impact +msgid "Impact" +msgstr "Uticaj" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_is_follower +msgid "Is Follower" +msgstr "Pratilac" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__4 +msgid "Likely" +msgstr "Verojatan" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__2 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__4 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low" +msgstr "Nizak" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__5 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low-Medium" +msgstr "Nisko-srednji" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_main_attachment_id +msgid "Main Attachment" +msgstr "Glavna zakačka" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__3 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__6 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium" +msgstr "Medijum" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__7 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium-High" +msgstr "Srednji-visok" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error +msgid "Message Delivery error" +msgstr "Greška pri isporuci poruke" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_ids +msgid "Messages" +msgstr "Poruke" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__2 +msgid "Minor" +msgstr "Manji" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__3 +msgid "Moderate" +msgstr "Umeren" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__1 +msgid "N/A" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__name +msgid "Name" +msgstr "Naziv:" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction_counter +msgid "Number of Actions" +msgstr "Broj akcija" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error_counter +msgid "Number of errors" +msgstr "Broj grešaka" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Broj poruka koje zahtijevaju aktivnost" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Broj poruka sa greškama pri isporuci" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__owner_id +msgid "Owner" +msgstr "Vlasnik" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__3 +msgid "Possible" +msgstr "Moguć" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__probability +msgid "Probability" +msgstr "Vjerovatnoća" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_project +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_id +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Project" +msgstr "Projekat" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_ids +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__project_risk_id +msgid "Project Risk" +msgstr "Rizik projekta" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_count +msgid "Project Risk Count" +msgstr "Broj rizika projekta" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_category +msgid "Project Risks Categories" +msgstr "Kategorije rizika projekta" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response +msgid "Project Risks Responses" +msgstr "Odgovori na rizike projekta" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response_category +msgid "Project Risks Responses Categories" +msgstr "Kategorije odgovora na rizike projekta" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__proximity +msgid "Proximity" +msgstr "Blizina" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__1 +msgid "Rare" +msgstr "Redak" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__rating +msgid "Rating" +msgstr "Ocijena" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_ids +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Response" +msgstr "Odgovor" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_category_id +msgid "Response Category" +msgstr "Kategorija odgovora" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_category_menu +msgid "Risk Categories" +msgstr "Kategorije rizika" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_response_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_response_category_menu +msgid "Risk Response Categories" +msgstr "Kategorije odgovora na rizik" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_action +#: model:ir.ui.menu,name:project_risk.project_risk_menu +#: model_terms:ir.ui.view,arch_db:project_risk.edit_project +#: model_terms:ir.ui.view,arch_db:project_risk.project_completion_kanban +msgid "Risks" +msgstr "Rizici" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__sequence +msgid "Sequence" +msgstr "Sekvenca" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__4 +msgid "Significant" +msgstr "Značajan" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__state +msgid "State" +msgstr "Status" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__1 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__2 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Trivial" +msgstr "Beznačajan" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__2 +msgid "Unlikely" +msgstr "Malo verojatan" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__5 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__9 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very High" +msgstr "Veoma visoko" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__3 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very Low" +msgstr "Veoma nisko" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__5 +msgid "Very likely" +msgstr "Vrlo vjerojatno" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__1 +msgid "Very low" +msgstr "Vrlo nisko" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__website_message_ids +msgid "Website Messages" +msgstr "Poruke sa website-a" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__website_message_ids +msgid "Website communication history" +msgstr "Povijest komunikacije Web stranice" diff --git a/odoo-bringout-oca-project-project_risk/project_risk/i18n/es.po b/odoo-bringout-oca-project-project_risk/project_risk/i18n/es.po new file mode 100644 index 0000000..6957c57 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/i18n/es.po @@ -0,0 +1,440 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_risk +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"X-Generator: Poedit 2.2.4\n" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction +#, fuzzy +msgid "Action Needed" +msgstr "Actionee" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__actionee_id +msgid "Actionee" +msgstr "Actionee" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__active +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Active" +msgstr "Activo" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_category_id +msgid "Category" +msgstr "Categoria" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__closed +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Closed" +msgstr "Cerrado" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__10 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Critical" +msgstr "Critico" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__description +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__description +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Description" +msgstr "Descripción" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__display_name +msgid "Display Name" +msgstr "Nombre a mostar" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__draft +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Draft" +msgstr "Borrador" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__5 +msgid "Extreme" +msgstr "Extremo" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: project_risk +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Group By..." +msgstr "Agrupado por..." + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__has_message +msgid "Has Message" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__4 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__8 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "High" +msgstr "Alto" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__id +msgid "ID" +msgstr "ID" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__6 +msgid "Imminent" +msgstr "Inminente" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__impact +msgid "Impact" +msgstr "Impacto" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category____last_update +msgid "Last Modified on" +msgstr "Última modificación en " + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__4 +msgid "Likely" +msgstr "Como" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__2 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__4 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low" +msgstr "Bajo" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__5 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low-Medium" +msgstr "Bajo-Medio" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__3 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__6 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium" +msgstr "Medio" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__7 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium-High" +msgstr "Medio-Alto" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_ids +msgid "Messages" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__2 +msgid "Minor" +msgstr "Menor" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__3 +msgid "Moderate" +msgstr "Moderado" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__1 +msgid "N/A" +msgstr "N/A" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__name +msgid "Name" +msgstr "Nombre" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__owner_id +msgid "Owner" +msgstr "Propietario" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__3 +msgid "Possible" +msgstr "Posible" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__probability +msgid "Probability" +msgstr "Probabilidad" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_project +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_id +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Project" +msgstr "Proyecto" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_ids +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__project_risk_id +msgid "Project Risk" +msgstr "" +"12/5000\n" +"Riesgo del proyecto" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_count +msgid "Project Risk Count" +msgstr "Cuenta de riesgo del proyecto" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_category +#, fuzzy +msgid "Project Risks Categories" +msgstr "Categoría de riesgo" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response +#, fuzzy +msgid "Project Risks Responses" +msgstr "Cuenta de riesgo del proyecto" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response_category +#, fuzzy +msgid "Project Risks Responses Categories" +msgstr "Categorías de respuesta al riesgo" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__proximity +msgid "Proximity" +msgstr "Proximidad" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__1 +msgid "Rare" +msgstr "Raro" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__rating +msgid "Rating" +msgstr "Clasificación" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_ids +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Response" +msgstr "Respuesta" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_category_id +msgid "Response Category" +msgstr "Categoría de respuesta" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_category_menu +msgid "Risk Categories" +msgstr "Categoría de riesgo" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_response_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_response_category_menu +msgid "Risk Response Categories" +msgstr "Categorías de respuesta al riesgo" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_action +#: model:ir.ui.menu,name:project_risk.project_risk_menu +#: model_terms:ir.ui.view,arch_db:project_risk.edit_project +#: model_terms:ir.ui.view,arch_db:project_risk.project_completion_kanban +msgid "Risks" +msgstr "Riesgos" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__sequence +msgid "Sequence" +msgstr "Secuencia" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__4 +msgid "Significant" +msgstr "Significativo" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__state +msgid "State" +msgstr "Estado" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__1 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__2 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Trivial" +msgstr "Trivial" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__2 +msgid "Unlikely" +msgstr "Improbable" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__5 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__9 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very High" +msgstr "Muy Alta" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__3 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very Low" +msgstr "Muy Baja" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__5 +msgid "Very likely" +msgstr "Muy probable" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__1 +msgid "Very low" +msgstr "Muy baja" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__website_message_ids +msgid "Website communication history" +msgstr "" + +#~ msgid "project.risk.category" +#~ msgstr "project.risk.category" + +#~ msgid "project.risk.response" +#~ msgstr "project.risk.response" + +#~ msgid "project.risk.response.category" +#~ msgstr "project.risk.response.category" diff --git a/odoo-bringout-oca-project-project_risk/project_risk/i18n/it.po b/odoo-bringout-oca-project-project_risk/project_risk/i18n/it.po new file mode 100644 index 0000000..dc0428f --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/i18n/it.po @@ -0,0 +1,451 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_risk +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-02-11 11:06+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.6.2\n" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction +msgid "Action Needed" +msgstr "Azione richiesta" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__actionee_id +msgid "Actionee" +msgstr "Esecutore" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__active +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Active" +msgstr "Attivo" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_attachment_count +msgid "Attachment Count" +msgstr "Numero allegati" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_category_id +msgid "Category" +msgstr "Categoria" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__closed +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Closed" +msgstr "Chiuso" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__10 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Critical" +msgstr "Critica" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__description +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__description +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Description" +msgstr "Descrizione" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__draft +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Draft" +msgstr "Bozza" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__5 +msgid "Extreme" +msgstr "Estremo" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_follower_ids +msgid "Followers" +msgstr "Seguito da" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguito da (partner)" + +#. module: project_risk +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Group By..." +msgstr "Raggruppa per..." + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__has_message +msgid "Has Message" +msgstr "Ha un messaggio" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__4 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__8 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "High" +msgstr "Alta" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__id +msgid "ID" +msgstr "ID" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Se selezionata, nuovi messaggi richiedono attenzione." + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__6 +msgid "Imminent" +msgstr "Imminente" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__impact +msgid "Impact" +msgstr "Impatto" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_is_follower +msgid "Is Follower" +msgstr "Segue" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__4 +msgid "Likely" +msgstr "Probabile" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__2 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__4 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low" +msgstr "Bassa" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__5 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low-Medium" +msgstr "Medio-bassa" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_main_attachment_id +msgid "Main Attachment" +msgstr "Allegato principale" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__3 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__6 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium" +msgstr "Media" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__7 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium-High" +msgstr "Medio-alta" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error +msgid "Message Delivery error" +msgstr "Errore di consegna messaggio" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_ids +msgid "Messages" +msgstr "Messaggi" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__2 +msgid "Minor" +msgstr "Minore" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__3 +msgid "Moderate" +msgstr "Moderato" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__1 +msgid "N/A" +msgstr "N/D" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__name +msgid "Name" +msgstr "Nome" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction_counter +msgid "Number of Actions" +msgstr "Numero di azioni" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error_counter +msgid "Number of errors" +msgstr "Numero di errori" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Numero di messaggi che richiedono un'azione" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Numero di messaggi con errore di consegna" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__owner_id +msgid "Owner" +msgstr "Proprietario" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__3 +msgid "Possible" +msgstr "Possibile" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__probability +msgid "Probability" +msgstr "Probabilità" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_project +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_id +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Project" +msgstr "Progetto" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_ids +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__project_risk_id +msgid "Project Risk" +msgstr "Rischio di progetto" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_count +msgid "Project Risk Count" +msgstr "Numero rischi di progetto" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_category +msgid "Project Risks Categories" +msgstr "Categorie rischi di progetto" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response +msgid "Project Risks Responses" +msgstr "Risposte rischi progetto" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response_category +msgid "Project Risks Responses Categories" +msgstr "Categorie risposte rischi progetto" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__proximity +msgid "Proximity" +msgstr "Prossimità" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__1 +msgid "Rare" +msgstr "Raro" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__rating +msgid "Rating" +msgstr "Valutazione" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_ids +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Response" +msgstr "Risposta" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_category_id +msgid "Response Category" +msgstr "Categoria risposta" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_category_menu +msgid "Risk Categories" +msgstr "Categorie di rischio" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_response_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_response_category_menu +msgid "Risk Response Categories" +msgstr "Categoria risposta rischio" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_action +#: model:ir.ui.menu,name:project_risk.project_risk_menu +#: model_terms:ir.ui.view,arch_db:project_risk.edit_project +#: model_terms:ir.ui.view,arch_db:project_risk.project_completion_kanban +msgid "Risks" +msgstr "Rischi" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__sequence +msgid "Sequence" +msgstr "Sequenza" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__4 +msgid "Significant" +msgstr "Significativo" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__state +msgid "State" +msgstr "Stato" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__1 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__2 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Trivial" +msgstr "Irrilevante" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__2 +msgid "Unlikely" +msgstr "Improbabile" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__5 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__9 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very High" +msgstr "Molto alta" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__3 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very Low" +msgstr "Molto bassa" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__5 +msgid "Very likely" +msgstr "Molto probabile" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__1 +msgid "Very low" +msgstr "Molto bassa" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__website_message_ids +msgid "Website Messages" +msgstr "Messaggi sito web" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__website_message_ids +msgid "Website communication history" +msgstr "Cronologia comunicazioni sito web" + +#~ msgid "Followers (Channels)" +#~ msgstr "Seguito da (canali)" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Numero di messaggi che richiedono un'azione" + +#~ msgid "Number of unread messages" +#~ msgstr "Numero di messaggi non letti" + +#~ msgid "SMS Delivery error" +#~ msgstr "Errore consegna SMS" + +#~ msgid "Unread Messages" +#~ msgstr "Messaggi non letti" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Numero messaggi non letti" + +#~ msgid "If checked new messages require your attention." +#~ msgstr "Se selezionata, nuovi messaggi richiedono attenzione." + +#~ msgid "Number of error" +#~ msgstr "Numero di errori" + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" diff --git a/odoo-bringout-oca-project-project_risk/project_risk/i18n/project_risk.pot b/odoo-bringout-oca-project-project_risk/project_risk/i18n/project_risk.pot new file mode 100644 index 0000000..23e3928 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/i18n/project_risk.pot @@ -0,0 +1,421 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_risk +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__actionee_id +msgid "Actionee" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__active +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Active" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_category_id +msgid "Category" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__closed +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Closed" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_uid +msgid "Created by" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_date +msgid "Created on" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__10 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Critical" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__description +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__description +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Description" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__display_name +msgid "Display Name" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__draft +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Draft" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__5 +msgid "Extreme" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: project_risk +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Group By..." +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__has_message +msgid "Has Message" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__4 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__8 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "High" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__id +msgid "ID" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__6 +msgid "Imminent" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__impact +msgid "Impact" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__4 +msgid "Likely" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__2 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__4 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__5 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low-Medium" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__3 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__6 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__7 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium-High" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_ids +msgid "Messages" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__2 +msgid "Minor" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__3 +msgid "Moderate" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__1 +msgid "N/A" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__name +msgid "Name" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__owner_id +msgid "Owner" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__3 +msgid "Possible" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__probability +msgid "Probability" +msgstr "" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_project +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_id +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Project" +msgstr "" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_ids +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__project_risk_id +msgid "Project Risk" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_count +msgid "Project Risk Count" +msgstr "" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_category +msgid "Project Risks Categories" +msgstr "" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response +msgid "Project Risks Responses" +msgstr "" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response_category +msgid "Project Risks Responses Categories" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__proximity +msgid "Proximity" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__1 +msgid "Rare" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__rating +msgid "Rating" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_ids +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Response" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_category_id +msgid "Response Category" +msgstr "" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_category_menu +msgid "Risk Categories" +msgstr "" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_response_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_response_category_menu +msgid "Risk Response Categories" +msgstr "" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_action +#: model:ir.ui.menu,name:project_risk.project_risk_menu +#: model_terms:ir.ui.view,arch_db:project_risk.edit_project +#: model_terms:ir.ui.view,arch_db:project_risk.project_completion_kanban +msgid "Risks" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__sequence +msgid "Sequence" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__4 +msgid "Significant" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__state +msgid "State" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__1 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__2 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Trivial" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__2 +msgid "Unlikely" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__5 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__9 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very High" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__3 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very Low" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__5 +msgid "Very likely" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__1 +msgid "Very low" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__website_message_ids +msgid "Website communication history" +msgstr "" diff --git a/odoo-bringout-oca-project-project_risk/project_risk/i18n/sl.po b/odoo-bringout-oca-project-project_risk/project_risk/i18n/sl.po new file mode 100644 index 0000000..896154b --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/i18n/sl.po @@ -0,0 +1,451 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_risk +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-12 13:34+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_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction +msgid "Action Needed" +msgstr "Potrebno ukrepanje" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__actionee_id +msgid "Actionee" +msgstr "Zadolženi" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__active +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Active" +msgstr "Aktivno" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_attachment_count +msgid "Attachment Count" +msgstr "Št. priponk" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_category_id +msgid "Category" +msgstr "Kategorija" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__closed +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Closed" +msgstr "Zaključeno" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_uid +msgid "Created by" +msgstr "Ustvaril" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__create_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__create_date +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__10 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Critical" +msgstr "Kritično" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__description +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__description +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Description" +msgstr "Opis" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__display_name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__state__draft +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Draft" +msgstr "Osnutek" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__5 +msgid "Extreme" +msgstr "Ekstremno" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_follower_ids +msgid "Followers" +msgstr "Sledilci" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_partner_ids +msgid "Followers (Partners)" +msgstr "Sledilci (partnerji)" + +#. module: project_risk +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Group By..." +msgstr "Združi po..." + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__has_message +msgid "Has Message" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__4 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__8 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "High" +msgstr "Visoka" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__id +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__id +msgid "ID" +msgstr "ID" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Če označeno pomeni, da nova sporočila zahtevajo vašo pozornost." + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" +"Če označeno pomeni, da je pri nekaterih sporočilih prišlo do napake pri " +"dostavi." + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__6 +msgid "Imminent" +msgstr "Neizogibno" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__impact +msgid "Impact" +msgstr "Vpliv" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_is_follower +msgid "Is Follower" +msgstr "Je sledilec" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response____last_update +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category____last_update +msgid "Last Modified on" +msgstr "Zadnjič spremenjeno" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_uid +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_uid +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__write_date +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__write_date +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__4 +msgid "Likely" +msgstr "Verjetno" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__2 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__4 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low" +msgstr "Nizka" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__5 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Low-Medium" +msgstr "Nizko-srednje" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_main_attachment_id +msgid "Main Attachment" +msgstr "Glavna priponka" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__3 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__6 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium" +msgstr "Srednje" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__7 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Medium-High" +msgstr "Srednje-visoko" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error +msgid "Message Delivery error" +msgstr "Napaka ob dostavi sporočila" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_ids +msgid "Messages" +msgstr "Sporočila" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__2 +msgid "Minor" +msgstr "Majhno" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__3 +msgid "Moderate" +msgstr "Zmerno" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__1 +msgid "N/A" +msgstr "N/A" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_category__name +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response_category__name +msgid "Name" +msgstr "Naziv" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_needaction_counter +msgid "Number of Actions" +msgstr "Število ukrepov" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Število sporočil z napako ob dostavi" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__owner_id +msgid "Owner" +msgstr "Lastnik" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__3 +msgid "Possible" +msgstr "Mogoče" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__probability +msgid "Probability" +msgstr "Verjetnost" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_project +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_id +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_search_view +msgid "Project" +msgstr "Projekt" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_ids +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__project_risk_id +msgid "Project Risk" +msgstr "Projektno tveganje" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_project__project_risk_count +msgid "Project Risk Count" +msgstr "Število proj. tveganj" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_category +msgid "Project Risks Categories" +msgstr "Kategorije proj. tveganj" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response +msgid "Project Risks Responses" +msgstr "Odzivi na proj. tveganja" + +#. module: project_risk +#: model:ir.model,name:project_risk.model_project_risk_response_category +msgid "Project Risks Responses Categories" +msgstr "Kategorije odzivov na proj. tveganja" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__proximity +msgid "Proximity" +msgstr "Bližina" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__1 +msgid "Rare" +msgstr "Redko" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__rating +msgid "Rating" +msgstr "Ocena" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_ids +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Response" +msgstr "Odziv" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__project_risk_response_category_id +msgid "Response Category" +msgstr "Kategorija odziva" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_category_menu +msgid "Risk Categories" +msgstr "Kategorije tveganj" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_response_category_action +#: model:ir.ui.menu,name:project_risk.project_risk_response_category_menu +msgid "Risk Response Categories" +msgstr "Kategorije odzivov na tveganje" + +#. module: project_risk +#: model:ir.actions.act_window,name:project_risk.project_risk_action +#: model:ir.ui.menu,name:project_risk.project_risk_menu +#: model_terms:ir.ui.view,arch_db:project_risk.edit_project +#: model_terms:ir.ui.view,arch_db:project_risk.project_completion_kanban +msgid "Risks" +msgstr "Tveganja" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk_response__sequence +msgid "Sequence" +msgstr "Zaporedje" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__4 +msgid "Significant" +msgstr "Znatno" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__state +msgid "State" +msgstr "Stanje" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__impact__1 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__2 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Trivial" +msgstr "Trivialno" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__2 +msgid "Unlikely" +msgstr "Malo verjetno" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__5 +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__9 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very High" +msgstr "Zelo visoka" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__rating__3 +#: model_terms:ir.ui.view,arch_db:project_risk.project_risk_form_view +msgid "Very Low" +msgstr "Zelo nizko" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__probability__5 +msgid "Very likely" +msgstr "Precej verjetno" + +#. module: project_risk +#: model:ir.model.fields.selection,name:project_risk.selection__project_risk__proximity__1 +msgid "Very low" +msgstr "Zelo nizko" + +#. module: project_risk +#: model:ir.model.fields,field_description:project_risk.field_project_risk__website_message_ids +msgid "Website Messages" +msgstr "Sporočila spletne strani" + +#. module: project_risk +#: model:ir.model.fields,help:project_risk.field_project_risk__website_message_ids +msgid "Website communication history" +msgstr "Kronologija komunikacij spletne strani" + +#~ msgid "Followers (Channels)" +#~ msgstr "Sledilci (kanali)" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Število sporočil, kjer je potrebno ukrepati" + +#~ msgid "Number of unread messages" +#~ msgstr "Število neprebranih sporočil" + +#~ msgid "Unread Messages" +#~ msgstr "Neprebrana sporočila" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Št. neprebranih sporočil" + +#~ msgid "If checked new messages require your attention." +#~ msgstr "Če označeno pomeni, da nova sporočila zahtevajo vašo pozornost." + +#~ msgid "Number of error" +#~ msgstr "Število napak" + +#~ msgid "WBS element" +#~ msgstr "Projektni člen" diff --git a/odoo-bringout-oca-project-project_risk/project_risk/migration_version.rst b/odoo-bringout-oca-project-project_risk/project_risk/migration_version.rst new file mode 100644 index 0000000..3cfeea9 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/migration_version.rst @@ -0,0 +1,4 @@ +================================================== +Version of migration time : 13.0.1.0.0 +Odoo 16 Version : 16.0.1.0.0 +================================================== diff --git a/odoo-bringout-oca-project-project_risk/project_risk/models/__init__.py b/odoo-bringout-oca-project-project_risk/project_risk/models/__init__.py new file mode 100644 index 0000000..df86268 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/models/__init__.py @@ -0,0 +1,5 @@ +from . import project_risk_category +from . import project_risk_response_category +from . import project_risk_response +from . import project_risk +from . import project_project diff --git a/odoo-bringout-oca-project-project_risk/project_risk/models/project_project.py b/odoo-bringout-oca-project-project_risk/project_risk/models/project_project.py new file mode 100644 index 0000000..996152b --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/models/project_project.py @@ -0,0 +1,28 @@ +# Copyright 2019 Onestein +# Copyright 2020 Manuel Calero - Tecnativa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class Project(models.Model): + _inherit = "project.project" + + project_risk_ids = fields.One2many( + comodel_name="project.risk", inverse_name="project_id" + ) + + project_risk_count = fields.Integer(compute="_compute_risk_count") + + def _compute_risk_count(self): + for project in self: + project.project_risk_count = len(project.project_risk_ids) + + def view_risk(self): + self.ensure_one() + action = self.env["ir.actions.act_window"]._for_xml_id( + "project_risk.project_risk_action" + ) + action["context"] = {"default_project_id": self.id} + action["domain"] = [("project_id", "=", self.id)] + return action diff --git a/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk.py b/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk.py new file mode 100644 index 0000000..e7085cd --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk.py @@ -0,0 +1,107 @@ +# Copyright 2019 Onestein +# Copyright 2020 Manuel Calero - Tecnativa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class ProjectRisk(models.Model): + _inherit = ["mail.thread"] + _name = "project.risk" + _description = "Project Risk" + + project_id = fields.Many2one(comodel_name="project.project", required=True) + + project_risk_category_id = fields.Many2one( + string="Category", + comodel_name="project.risk.category", + required=True, + ) + + name = fields.Char(required=1) + + description = fields.Html() + + probability = fields.Selection( + required=True, + selection=[ + ("1", "Rare"), + ("2", "Unlikely"), + ("3", "Possible"), + ("4", "Likely"), + ("5", "Very likely"), + ], + tracking=True, + ) + + impact = fields.Selection( + required=True, + selection=[ + ("1", "Trivial"), + ("2", "Minor"), + ("3", "Moderate"), + ("4", "Significant"), + ("5", "Extreme"), + ], + ) + + rating = fields.Selection( + compute="_compute_rating", + store=True, + selection=[ + ("1", "N/A"), + ("2", "Trivial"), + ("3", "Very Low"), + ("4", "Low"), + ("5", "Low-Medium"), + ("6", "Medium"), + ("7", "Medium-High"), + ("8", "High"), + ("9", "Very High"), + ("10", "Critical"), + ], + ) + + proximity = fields.Selection( + selection=[ + ("1", "Very low"), + ("2", "Low"), + ("3", "Medium"), + ("4", "High"), + ("5", "Very High"), + ("6", "Imminent"), + ], + tracking=True, + ) + + project_risk_response_category_id = fields.Many2one( + comodel_name="project.risk.response.category", + string="Response Category", + ) + + state = fields.Selection( + selection=[("draft", "Draft"), ("active", "Active"), ("closed", "Closed")], + default="draft", + tracking=True, + ) + + owner_id = fields.Many2one(string="Owner", comodel_name="res.users", tracking=True) + + actionee_id = fields.Many2one( + string="Actionee", + comodel_name="res.users", + tracking=True, + ) + + project_risk_response_ids = fields.One2many( + string="Response", + comodel_name="project.risk.response", + inverse_name="project_risk_id", + ) + + @api.depends("probability", "impact") + def _compute_rating(self): + for risk in self: + risk.rating = False + if risk.probability and risk.impact: + risk.rating = str(int(risk.probability) + int(risk.impact)) diff --git a/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk_category.py b/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk_category.py new file mode 100644 index 0000000..e161019 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk_category.py @@ -0,0 +1,11 @@ +# Copyright 2019 Onestein +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProjectRiskCategory(models.Model): + _name = "project.risk.category" + _description = "Project Risks Categories" + + name = fields.Char(required=True) diff --git a/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk_response.py b/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk_response.py new file mode 100644 index 0000000..77171e7 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk_response.py @@ -0,0 +1,15 @@ +# Copyright 2019 Onestein +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProjectRiskResponse(models.Model): + _name = "project.risk.response" + _description = "Project Risks Responses" + + project_risk_id = fields.Many2one(comodel_name="project.risk") + + sequence = fields.Integer() + + description = fields.Char() diff --git a/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk_response_category.py b/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk_response_category.py new file mode 100644 index 0000000..11cb824 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/models/project_risk_response_category.py @@ -0,0 +1,11 @@ +# Copyright 2019 Onestein +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProjectRiskResponseCategory(models.Model): + _name = "project.risk.response.category" + _description = "Project Risks Responses Categories" + + name = fields.Char(required=True) diff --git a/odoo-bringout-oca-project-project_risk/project_risk/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_risk/project_risk/readme/CONFIGURE.rst new file mode 100644 index 0000000..55e2f91 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/readme/CONFIGURE.rst @@ -0,0 +1,2 @@ +This module provides a number of default risk categories, but you can add more at *Project > Configuration > Risk Categories*. +For risk response categories you need to go to *Project > Configuration > Risk Response Categories*. diff --git a/odoo-bringout-oca-project-project_risk/project_risk/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_risk/project_risk/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..4d8b6bf --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/readme/CONTRIBUTORS.rst @@ -0,0 +1,7 @@ +* Dennis Sluijk +* `Tecnativa `_: + + * Manuel Calero + * Ernesto Tejeda + +* `Heliconia Solutions Pvt. Ltd. `_ diff --git a/odoo-bringout-oca-project-project_risk/project_risk/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_risk/project_risk/readme/DESCRIPTION.rst new file mode 100644 index 0000000..5118b7c --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +With this module you can manage your projects risk using the MOR method. + +https://www.axelos.com/best-practice-solutions/mor/what-is-mor diff --git a/odoo-bringout-oca-project-project_risk/project_risk/readme/ROADMAP.rst b/odoo-bringout-oca-project-project_risk/project_risk/readme/ROADMAP.rst new file mode 100644 index 0000000..ad9ba73 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/readme/ROADMAP.rst @@ -0,0 +1 @@ +* Create a task based on a risk response: it would be nice if a task can automatically be created based on the risk response information. diff --git a/odoo-bringout-oca-project-project_risk/project_risk/readme/USAGE.rst b/odoo-bringout-oca-project-project_risk/project_risk/readme/USAGE.rst new file mode 100644 index 0000000..58c423e --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/readme/USAGE.rst @@ -0,0 +1,12 @@ +To define risks for your projects: + +#. Go to *Project > Risks*; +#. create a new risk; +#. the rating is automatically calculated based on this risk matrix: + .. image:: ../static/description/matrix.png + :alt: Risk matrix +#. set the state to 'Active' if the risk is in effect; +#. set the state to 'Closed' if the risk is processed or e.g. completely avoided. + +The list of risks is by default ordered by rating and proximity. +Risks with a rating higher than rating 'Medium-High' become red. diff --git a/odoo-bringout-oca-project-project_risk/project_risk/security/ir_model_access.xml b/odoo-bringout-oca-project-project_risk/project_risk/security/ir_model_access.xml new file mode 100644 index 0000000..7acc625 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/security/ir_model_access.xml @@ -0,0 +1,81 @@ + + + + + + project_risk_user_access + + + + + + + + + project_risk_manager_access + + + + + + + + + + project_risk_category_user_access + + + + + + + + + project_risk_category_manager_access + + + + + + + + + + project_risk_response_user_access + + + + + + + + + project_risk_response_manager_access + + + + + + + + + + project_risk_response_category_user_access + + + + + + + + + project_risk_response_category_manager_access + + + + + + + + diff --git a/odoo-bringout-oca-project-project_risk/project_risk/static/description/icon.png b/odoo-bringout-oca-project-project_risk/project_risk/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_risk/project_risk/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_risk/project_risk/static/description/index.html b/odoo-bringout-oca-project-project_risk/project_risk/static/description/index.html new file mode 100644 index 0000000..e093ea4 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/static/description/index.html @@ -0,0 +1,466 @@ + + + + + +Project Risk + + + +
+

Project Risk

+ + +

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

+

With this module you can manage your projects risk using the MOR method.

+

https://www.axelos.com/best-practice-solutions/mor/what-is-mor

+

Table of contents

+ +
+

Configuration

+

This module provides a number of default risk categories, but you can add more at Project > Configuration > Risk Categories. +For risk response categories you need to go to Project > Configuration > Risk Response Categories.

+
+
+

Usage

+

To define risks for your projects:

+
    +
  1. Go to Project > Risks;

    +
  2. +
  3. create a new risk;

    +
  4. +
  5. +
    the rating is automatically calculated based on this risk matrix:
    +
    Risk matrix +
    +
    +
  6. +
  7. set the state to ‘Active’ if the risk is in effect;

    +
  8. +
  9. set the state to ‘Closed’ if the risk is processed or e.g. completely avoided.

    +
  10. +
+

The list of risks is by default ordered by rating and proximity. +Risks with a rating higher than rating ‘Medium-High’ become red.

+
+
+

Known issues / Roadmap

+
    +
  • Create a task based on a risk response: it would be nice if a task can automatically be created based on the risk response information.
  • +
+
+
+

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

+
    +
  • Onestein
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_risk/project_risk/static/description/matrix.png b/odoo-bringout-oca-project-project_risk/project_risk/static/description/matrix.png new file mode 100644 index 0000000..51c6da6 Binary files /dev/null and b/odoo-bringout-oca-project-project_risk/project_risk/static/description/matrix.png differ diff --git a/odoo-bringout-oca-project-project_risk/project_risk/tests/__init__.py b/odoo-bringout-oca-project-project_risk/project_risk/tests/__init__.py new file mode 100644 index 0000000..58b7fde --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/tests/__init__.py @@ -0,0 +1 @@ +from . import test_project_risk diff --git a/odoo-bringout-oca-project-project_risk/project_risk/tests/test_project_risk.py b/odoo-bringout-oca-project-project_risk/project_risk/tests/test_project_risk.py new file mode 100644 index 0000000..96c1e8d --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/tests/test_project_risk.py @@ -0,0 +1,30 @@ +from odoo.tests.common import TransactionCase + + +class TestProjectRisk(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.project = cls.env["project.project"].create( + {"name": "Research & Development", "privacy_visibility": "followers"} + ) + cls.risk_category = cls.env["project.risk.category"].create({"name": "Quality"}) + cls.risk = cls.env["project.risk"].create( + { + "name": "Risk X", + "project_id": cls.project.id, + "project_risk_category_id": cls.risk_category.id, + "probability": "2", + "impact": "2", + } + ) + + def test_project(self): + self.assertEqual(self.project.project_risk_count, 1) + action = self.project.view_risk() + self.assertEqual(action["context"]["default_project_id"], self.project.id) + self.assertListEqual(action["domain"], [("project_id", "=", self.project.id)]) + + def test_risk(self): + self.risk.write({"actionee_id": self.env.user.id, "owner_id": self.env.user.id}) + self.assertEqual(self.risk.rating, "4") diff --git a/odoo-bringout-oca-project-project_risk/project_risk/views/menuitems.xml b/odoo-bringout-oca-project-project_risk/project_risk/views/menuitems.xml new file mode 100644 index 0000000..c78b5df --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/views/menuitems.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/odoo-bringout-oca-project-project_risk/project_risk/views/project_project_view.xml b/odoo-bringout-oca-project-project_risk/project_risk/views/project_project_view.xml new file mode 100644 index 0000000..c6222c3 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/views/project_project_view.xml @@ -0,0 +1,37 @@ + + + + + edit.project + project.project + + + + + + + + + project.completion.kanban + project.project + + + +
+ Risks +
+
+
+
+
diff --git a/odoo-bringout-oca-project-project_risk/project_risk/views/project_risk_category_view.xml b/odoo-bringout-oca-project-project_risk/project_risk/views/project_risk_category_view.xml new file mode 100644 index 0000000..78597bf --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/views/project_risk_category_view.xml @@ -0,0 +1,29 @@ + + + + + project.risk.category + +
+ + + + + +
+
+
+ + project.risk.category + + + + + + + + Risk Categories + project.risk.category + +
diff --git a/odoo-bringout-oca-project-project_risk/project_risk/views/project_risk_response_category_view.xml b/odoo-bringout-oca-project-project_risk/project_risk/views/project_risk_response_category_view.xml new file mode 100644 index 0000000..3b3c930 --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/views/project_risk_response_category_view.xml @@ -0,0 +1,29 @@ + + + + + project.risk.response.category + +
+ + + + + +
+
+
+ + project.risk.response.category + + + + + + + + Risk Response Categories + project.risk.response.category + +
diff --git a/odoo-bringout-oca-project-project_risk/project_risk/views/project_risk_view.xml b/odoo-bringout-oca-project-project_risk/project_risk/views/project_risk_view.xml new file mode 100644 index 0000000..b29a30d --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/project_risk/views/project_risk_view.xml @@ -0,0 +1,180 @@ + + + + + project.risk + +
+
+ +
+ + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+
+ + project.risk + + + + + + + + + + + + project.risk + + + + + + + + + + + + + + + Risks + project.risk + +
diff --git a/odoo-bringout-oca-project-project_risk/pyproject.toml b/odoo-bringout-oca-project-project_risk/pyproject.toml new file mode 100644 index 0000000..325b1fa --- /dev/null +++ b/odoo-bringout-oca-project-project_risk/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_risk" +version = "16.0.0" +description = "Project Risk - MOR risk management method" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_risk"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_role/README.md b/odoo-bringout-oca-project-project_role/README.md new file mode 100644 index 0000000..6080bb5 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/README.md @@ -0,0 +1,47 @@ +# Project Roles + +Odoo addon: project_role + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_role +``` + +## Dependencies + +This addon depends on: +- project +- mail + +## Manifest Information + +- **Name**: Project Roles +- **Version**: 16.0.1.0.4 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_role`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_role/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_role/doc/ARCHITECTURE.md new file mode 100644 index 0000000..1e7d5db --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_role Module - project_role + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_role/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_role/doc/CONFIGURATION.md new file mode 100644 index 0000000..7d03bbc --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_role. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_role/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_role/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_role/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_role/doc/DEPENDENCIES.md new file mode 100644 index 0000000..7de9a05 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) +- [mail](https://github.com/bringout/oca-ocb-core/tree/b3e6fb998e53b9eb1bc9669d992017616c2bd7b3/odoo-bringout-oca-ocb-mail) diff --git a/odoo-bringout-oca-project-project_role/doc/FAQ.md b/odoo-bringout-oca-project-project_role/doc/FAQ.md new file mode 100644 index 0000000..5457384 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_role or install in UI. diff --git a/odoo-bringout-oca-project-project_role/doc/INSTALL.md b/odoo-bringout-oca-project-project_role/doc/INSTALL.md new file mode 100644 index 0000000..f20a561 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_role" +# or +uv pip install odoo-bringout-oca-project-project_role" +``` diff --git a/odoo-bringout-oca-project-project_role/doc/MODELS.md b/odoo-bringout-oca-project-project_role/doc/MODELS.md new file mode 100644 index 0000000..8950442 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/MODELS.md @@ -0,0 +1,16 @@ +# Models + +Detected core models and extensions in project_role. + +```mermaid +classDiagram + class project_assignment + class project_role + class project_project + class res_company + class res_config_settings +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_role/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_role/doc/OVERVIEW.md new file mode 100644 index 0000000..59c874b --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_role. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_role +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_role/doc/REPORTS.md b/odoo-bringout-oca-project-project_role/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_role/doc/SECURITY.md b/odoo-bringout-oca-project-project_role/doc/SECURITY.md new file mode 100644 index 0000000..90eafba --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/SECURITY.md @@ -0,0 +1,41 @@ +# Security + +Access control and security definitions in project_role. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../project_role/security/ir.model.access.csv)** + - 6 model access rules + +## Record Rules + +Row-level security rules defined in: + +## Security Groups & Configuration + +Security groups and permissions defined in: +- **[project_role.xml](../project_role/security/project_role.xml)** + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[ir.model.access.csv](../project_role/security/ir.model.access.csv)** + - Model access permissions (CRUD rights) +- **[project_role.xml](../project_role/security/project_role.xml)** + - Security groups, categories, and XML-based rules + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_role/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_role/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_role/doc/USAGE.md b/odoo-bringout-oca-project-project_role/doc/USAGE.md new file mode 100644 index 0000000..b8980d0 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_role +``` diff --git a/odoo-bringout-oca-project-project_role/doc/WIZARDS.md b/odoo-bringout-oca-project-project_role/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_role/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_role/project_role/README.rst b/odoo-bringout-oca-project-project_role/project_role/README.rst new file mode 100644 index 0000000..ca6db74 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/README.rst @@ -0,0 +1,115 @@ +============= +Project Roles +============= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:3548d16022364d2ad035fe913cefd2b7bce880df8142804cb8c0861922fb646e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_role + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_role + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows maintaining project roster based on roles and assignments. +List of roles is configured at company level, while assignments can be created +on project, company, and cross-company levels, with configurable inheritance. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure the list of roles avalable: + +#. Go to *Project > Configuration > Project Roles* +#. Add/remove roles according to your business processes + +To manage assignments on particular project: + +#. Go to *Project > Projects* +#. Open project of interest +#. Click on *Assignments* smart-button +#. Add/remove assignments as needed + +To manage assignments: + +#. Go to *Project > Assignments* +#. Add/remove assignments as needed + +Also, it's recommended to consider using ``web_m2x_options`` module in order to +avoid unneeded creation of roles and projects using Quick Create action by +setting the ``web_m2x_options.create`` system parameter to ``False``. + +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 +~~~~~~~ + +* CorporateHub + +Contributors +~~~~~~~~~~~~ + +* `CorporateHub `__ + + * Alexey Pelykh + +* Alfadil Mustafa +* Tharathip Chaweewongphan + +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-alexey-pelykh| image:: https://github.com/alexey-pelykh.png?size=40px + :target: https://github.com/alexey-pelykh + :alt: alexey-pelykh + +Current `maintainer `__: + +|maintainer-alexey-pelykh| + +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/odoo-bringout-oca-project-project_role/project_role/__init__.py b/odoo-bringout-oca-project-project_role/project_role/__init__.py new file mode 100644 index 0000000..4b76c7b --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/odoo-bringout-oca-project-project_role/project_role/__manifest__.py b/odoo-bringout-oca-project-project_role/project_role/__manifest__.py new file mode 100644 index 0000000..df74c42 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2018-2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020-2022 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Project Roles", + "version": "16.0.1.0.4", + "category": "Project", + "website": "https://github.com/OCA/project", + "author": "CorporateHub, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "application": False, + "summary": "Project role-based roster", + "depends": ["project", "mail"], + "data": [ + "security/ir.model.access.csv", + "security/project_role.xml", + "views/project_assignment.xml", + "views/project_project.xml", + "views/project_role.xml", + "views/res_config_settings.xml", + ], + "maintainers": ["alexey-pelykh"], +} diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/bs.po b/odoo-bringout-oca-project-project_role/project_role/i18n/bs.po new file mode 100644 index 0000000..88de4e5 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/bs.po @@ -0,0 +1,424 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "%(USER)s kao %(ROLE)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "%(USER)s kao %(ROLE)s na %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "%(USER)s kao %(ROLE)s na %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "%(parent)s / %(own)s" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "Potrebne radnje" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "Aktivno" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "Arhivirano" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "Zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "Broj priloga" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "Označite, da bi projekti naslijedili zaduženja tvrtke kao zadane." + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "Označite za postavljanje projekata na ograničenje uloga za zaduživanje." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "Podređene uloge" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "Tvrtke" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "Tvrtka" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "Unutra tvrtke" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "Puni naziv" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "Postavke" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "Postavite skup uloga, dostupnih na projektima." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "Opis" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "Pratitelji" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Pratitelji (partneri)" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "Grupiraj po" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "Ima poruka" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "ID" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Ako je označeno, nove poruke traže vašu pažnju." + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Ako je označeno, neke poruke imaju greške pri isporuci." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "Nasljedi zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "Je pratitelj" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "Zadnje modificirano" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "Ograniči uloge na projektu na zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "Ograniči uloge na zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Glavni prilog" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "Greška pri isporuci poruke" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "Poruke" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "Moja zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "Naziv" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "Broj radnji" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "Broj grešaka" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Broj poruka koje zahtijevaju aktivnost" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Broj poruka sa greškama pri isporuci" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "Nadređena putanja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "Nadređena uloga" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "Molimo prije aktivirajte nadređenu ulogu %s" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "Projekt" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "Uloga na projektu" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "Projektna zaduženja" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "Projektna uloga" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "Projektne uloge" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "Projekti nasljeđuju zaduženja" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "Projekti nasljeđuju zaduženja tvrtke" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "Uloga" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "Uloga \"%s\" je u konfliktu sa drugom ulogom zbog istog naziva." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "Uloga istog imena već postoji unutar tvrtke!" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "Uloge i Zaduženja" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "Postavke projektnih uloga" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "Dijeljena uloga istog naziva već postoji!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "Korisnik" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "Korisniku %(USER)s nije moguće dodijeliti ulogu %(ROLE)s na %(PROJECT)s." + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "Korisniku %(USER)s nije moguće dodijeliti ulogu %(ROLE)s." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "Korisniku možete dodijeliti ulogu samo jednom unutar tvrtke!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "Korisniku može biti dodijeljeno zaduženje samo unutar projekta!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "Korisniku zaduženje može biti dodijeljeno samo jednom!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "Poruke sa webstranica" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "Povijest komunikacije webstranica" diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/de.po b/odoo-bringout-oca-project-project_role/project_role/i18n/de.po new file mode 100644 index 0000000..1d0cffc --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/de.po @@ -0,0 +1,552 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-08 14:10+0000\n" +"Last-Translator: Nils Coenen \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 4.17\n" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "%(USER)s als %(ROLE)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "%(USER)s als %(ROLE)s in %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "%(USER)s als %(ROLE)s auf %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "%(parent)s / %(own)s" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" +"Projektrollen\n" +" " + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "Aktion benötigt" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "Aktiv" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "Archiviert" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" +"Zuweisung %(ASSIGNMENT)s hat einen Konflikt mit einer anderen Zuweisung: " +"%(OTHER_ASSIGNMENT)s" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "Rollenzuweisungen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "Anhangsanzahl" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "" +"Aktivieren Sie diese Option, um Projekte so zu konfigurieren, dass sie " +"Unternehmenszuweisungen standardmäßig erben." + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "" +"Aktivieren Sie diese Option, um Projekte so zu konfigurieren, dass die Rolle " +"standardmäßig auf Zuweisungen beschränkt wird." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "Untergeordnete Rollen" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "Unternehmen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "Unternehmen" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "unternehmensweit" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "Vollständige Bezeichnung" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "Konfigurationseinstellungen" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "Bitte Projektrollen für Projekte konfigurieren." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "Erstellt von" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "Erstellt am" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "Beschreibung" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "Anzeigename" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "Abonnenten" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Abonnenten (Partner)" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "Gruppieren nach" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "Hat Nachricht" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "ID" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Wenn es gesetzt ist, erfordern neue Nachrichten Ihre Aufmerksamkeit." + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" +"Wenn es gesetzt ist, gibt es einige Nachrichten mit einem Übertragungsfehler." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "Zuweisungen erben" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "Ist Abonnent" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "Zuletzt geändert am" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "Zuletzt aktualisiert von" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "Zuletzt aktualisiert am" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "Projekt-Rollenzuweisungen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "Beschränken Sie die Rolle auf Zuweisungen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Haupt-Anhang" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "Nachrichten-Übertragungsfehler" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "Nachrichten" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "Meine Rollenzuweisungen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "Bezeichnung" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "Anzahl der Aktionen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "Anzahl der Fehler" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Dies ist die Anzahl von Nachrichten mit einem Übertragungsfehler." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "Übergeordneter Pfad" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "Übergeordnete Rolle" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "Bitte zuerst die übergeordnete Rolle %s aktivieren" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "Projekt" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "Projekt-Rollenzuweisung" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "Projekt-Rollenzuweisungen" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "Projektrolle" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "Projektrollen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +#, fuzzy +msgid "Projects Inherit Assignments" +msgstr "Projekt-Rollenzuweisungen" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +#, fuzzy +msgid "Projects inherit Company assignments" +msgstr "Projekt-Rollenzuweisungen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "Rolle" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "" +"Die Rolle \"%s\" steht im Konflikt mit einer anderen Rolle, die denselben " +"Namen hat." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "Eine Rolle mit demselben Namen existiert in dem Unternehmen bereits!" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "Rollen und Zuweisungen" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "Projektrollen anlegen" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "Eine geteilte Rolle mit diesem Namen existiert bereits!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "Benutzer" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" +"Benutzer %(USER)s kann keiner Rolle zugeordnet werden: %(ROLE)s in " +"%(PROJECT)s." + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "Benutzer %(USER)s kann der Rolle nicht zugeordnet werden: %(ROLE)s." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "" +"Der Benutzer sollte einer Rolle innerhalb eines Unternehmens nur einmal " +"zugewiesen sein!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "" +"Der Benutzer sollte einer Rolle innerhalb eines Projekts nur einmal " +"zugewiesen sein!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "Der Benutzer sollte einer Rolle nur einmal zugewiesen sein!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "Website-Nachrichten" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "Website-Kommunikationshistorie" + +#, fuzzy +#~ msgid "SMS Delivery error" +#~ msgstr "Nachrichten-Übertragungsfehler" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Dies ist die Anzahl von Nachrichten, die eine Aktion benötigen." + +#, python-format +#~ msgid "%s as %s" +#~ msgstr "%s als %s" + +#, python-format +#~ msgid "%s as %s in %s" +#~ msgstr "%s als %s für %s" + +#, python-format +#~ msgid "%s as %s on %s" +#~ msgstr "%s als %s für %s" + +#, python-format +#~ msgid "Assignment %s conflicts with another assignment: %s" +#~ msgstr "" +#~ "Die Rollenzuweisung %s steht im Konflikt mit einer anderen Zuweisung: %s" + +#~ msgid "Followers (Channels)" +#~ msgstr "Abonnenten (Kanäle)" + +#~ msgid "Inactive" +#~ msgstr "Inaktiv" + +#~ msgid "Inherit assignments" +#~ msgstr "Zuweisung vererben" + +#, fuzzy +#~ msgid "Limit role to assignments" +#~ msgstr "Projekt-Rollenzuweisungen" + +#~ msgid "Number of unread messages" +#~ msgstr "Dies ist die Anzahl von ungelesenen Nachrichten." + +#~ msgid "Unread Messages" +#~ msgstr "Ungelesene Nachrichten" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Zähler für ungelesene Nachrichten" + +#, python-format +#~ msgid "User %s can not be assigned to role %s on %s." +#~ msgstr "" +#~ "Der Benutzer %s kann der Rolle %s in dem Projekt %s nicht zugewiesen " +#~ "werden." + +#, python-format +#~ msgid "User %s can not be assigned to role %s." +#~ msgstr "Der Benutzer %s kann der Rolle %s nicht zugewiesen werden." + +#~ msgid "If checked new messages require your attention." +#~ msgstr "" +#~ "Wenn es gesetzt ist, erfordern neue Nachrichten Ihre Aufmerksamkeit." + +#~ msgid "You cannot create recursive roles." +#~ msgstr "Es können keine rekursive Rollen erstellt werden." + +#~ msgid "Activity State" +#~ msgstr "Aktivitätsstatus" + +#~ msgid "Next Activity Deadline" +#~ msgstr "Frist für die nächste Aktivität" + +#~ msgid "Next Activity Summary" +#~ msgstr "Zusammenfassung der nächsten Aktivität" + +#~ msgid "Next Activity Type" +#~ msgstr "Typ der nächsten Aktivität" + +#~ msgid "Overdue" +#~ msgstr "Überfällig" + +#~ msgid "Planned" +#~ msgstr "Geplant" + +#~ msgid "Responsible User" +#~ msgstr "Verantwortlicher Benutzer" + +#~ msgid "" +#~ "Status based on activities\n" +#~ "Overdue: Due date is already passed\n" +#~ "Today: Activity date is today\n" +#~ "Planned: Future activities." +#~ msgstr "" +#~ "Der Status hängt von den Aktivitäten ab.\n" +#~ "Überfällig: Das Fälligkeitsdatum der Aktivität ist überschritten.\n" +#~ "Heute: Die Aktivität findet heute statt.\n" +#~ "Geplant: Die Aktivitäten findet in der Zukunft statt." + +#~ msgid "Today" +#~ msgstr "Heute" diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/es.po b/odoo-bringout-oca-project-project_role/project_role/i18n/es.po new file mode 100644 index 0000000..d5d6785 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/es.po @@ -0,0 +1,453 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-09-20 20:21+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_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "%(USER)s como %(ROLE)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "%(USER)s como %(ROLE)s en %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "%(USER)s como %(ROLE)s en %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "%(parent)s / %(own)s" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" +"Roles del proyecto\n" +" " + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "Acción Requerida" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "Activo" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "Archivado" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" +"La asignación %(ASSIGNMENT)s entra en conflicto con otra asignación: " +"%(OTHER_ASSIGNMENT)s" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "Asignaciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "Cuenta de asignaciones" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "" +"Marque para configurar los proyectos para heredar las asignaciones de la " +"empresa de forma predeterminada." + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "" +"Marque para configurar los proyectos para limitar el rol a las asignaciones " +"de forma predeterminada." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "Roles hijos" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "Empresas" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "Empresa" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "Toda la empresa" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "Nombre completo" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "Opciones de Configuración" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "Configure un conjunto de roles, disponibles en los proyectos." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "Descripción" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "Seguidores" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidores (Socios)" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "Agrupar por" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "Tiene mensaje" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "ID" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Si está marcada, los nuevos mensajes requieren su atención." + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Si está marcado algunos mensajes tienen error de entrega." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "Heredar asignaciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "Es Seguidor" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "Limitar el Rol del Proyecto a las Asignaciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "Limitar rol a asignaciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Adjunto Principal" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "Mensaje de Error de Entrega" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "Mensajes" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "Mis Asignaciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "Nombre" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de Acciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "Número de errores" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Número de mensajes que requieren una acción" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensajes con error de entrega" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "Ruta padre" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "Rol padre" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "Por favor active el rol %s del primer padre" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "Proyecto" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "Asignación de Proyecto" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "Asignaciones de Proyecto" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "Rol del Proyecto" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "Roles del Proyecto" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "Asignaciones Heredadas de los Proyectos" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "Proyectos que Heredan Asignaciones de la Compañía" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "Rol" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "El Rol \"%s\" entra en conflicto con otro rol debido al mismo nombre." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "¡El Rol con ese nombre ya existe en la compañía!" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "Roles y Asignaciones" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "Configurar roles de proyecto" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "¡El Rol compartido con ese nombre ya existe!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "Usuario" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" +"El usuario %(USER)s no se puede asignar al rol %(ROLE)s en %(PROJECT)s." + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "El usuario %(USER)s no se puede asignar al rol %(ROLE)s." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "" +"¡El usuario puede ser asignado por rol solo una vez dentro de una empresa!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "" +"¡El usuario puede ser asignado por rol solo una vez dentro de un proyecto!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "¡El usuario puede ser asignado por rol solo una vez!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "Mensajes del Sitio Web" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "Historial de comunicación del Sitio Web" + +#~ msgid "SMS Delivery error" +#~ msgstr "Error de Entrega SMS" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Número de mensajes que requieren una acción" diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/es_AR.po b/odoo-bringout-oca-project-project_role/project_role/i18n/es_AR.po new file mode 100644 index 0000000..d543ba8 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/es_AR.po @@ -0,0 +1,495 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-11-06 05:32+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "%(USER)s como %(ROLE)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "%(USER)s como %(ROLE)s en %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "%(USER)s como %(ROLE)s en %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "%(parent)s / %(own)s" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" +"Roles de Proyecto\n" +" " + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "Acción Requerida" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "Activo" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "Archivado" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" +"La tarea %(ASSIGNMENT)s entra en conflicto con otra tarea: " +"%(OTHER_ASSIGNMENT)s" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "Asignaciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "Cuenta de Adjuntos" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "" +"Marque para configurar proyectos para heredar las asignaciones de la empresa " +"de forma predeterminada." + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "" +"Marque para configurar proyectos para limitar el rol a las asignaciones de " +"forma predeterminada." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "Roles Hijos" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "Compañías" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "Compañía" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "Toda la Empresa" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "Nombre Completo" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "Configurar Ajustes" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "Configure un conjunto de roles, disponibles en los proyectos." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "Descripción" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "Seguidores" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidores (Contactos)" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "Agrupar Por" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "Tiene un Mensaje" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "ID" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Si está seleccionado, los nuevos mensajes requieren su atención." + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Si está seleccionado, algunos mensajes tienen error de entrega." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "Tareas Heredadas" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "Es Seguidor" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "Última actualización realizada por" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "Limitar el Rol del Proyecto a las Asignaciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "Limitar Rol a Tareas" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Adjunto Principal" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "Mensaje de Error de Entrega" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "Mensajes" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "Mis Asignaciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "Nombre" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de Acciones" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "Número de errores" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Número de mensajes que requieren una acción" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensajes con error de entrega" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "Ruta del Padre" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "Rol del Padre" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "Por favor active el rol %s del primer padre" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "Proyecto" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "Asignación de Proyecto" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "Asignaciones de Proyecto" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "Rol del Proyecto" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "Roles del Proyecto" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "Asignaciones Heredadas de los Proyectos" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "Proyectos que Heredan Asignaciones de la Compañía" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "Rol" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "El Rol \"%s\" entra en conflicto con otro rol debido al mismo nombre." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "¡El Rol con ese nombre ya existe en la compañía!" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "Roles & Asignaciones" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "Configurar roles de proyecto" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "¡El Rol compartido con ese nombre ya existe!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "Usuario" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" +"El usuario %(USER)s no puede ser asignado al rol %(ROLE)s en %(PROJECT)s." + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "El usuario %(USER)s no puede ser asignado al rol %(ROLE)s." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "" +"¡El usuario puede ser asignado por rol solo una vez dentro de una empresa!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "" +"¡El usuario puede ser asignado por rol solo una vez dentro de un proyecto!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "¡El usuario puede ser asignado por rol solo una vez!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "Mensajes del Sitio Web" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "Historial de comunicación del Sitio Web" + +#~ msgid "SMS Delivery error" +#~ msgstr "Error de Entrega SMS" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Número de mensajes que requieren una acción" + +#, python-format +#~ msgid "%s as %s" +#~ msgstr "%s como %s" + +#, python-format +#~ msgid "%s as %s in %s" +#~ msgstr "%s como %s en %s" + +#, python-format +#~ msgid "%s as %s on %s" +#~ msgstr "%s como %s el %s" + +#, python-format +#~ msgid "Assignment %s conflicts with another assignment: %s" +#~ msgstr "La asignación %s entra en conflicto con otra asignación: %s" + +#~ msgid "Followers (Channels)" +#~ msgstr "Seguidores (Canales)" + +#~ msgid "Inherit assignments" +#~ msgstr "Asignaciones heredadas" + +#~ msgid "Limit role to assignments" +#~ msgstr "Limitar rol a asignaciones" + +#~ msgid "Number of unread messages" +#~ msgstr "Número de mensajes sin leer" + +#~ msgid "Unread Messages" +#~ msgstr "Mensajes sin Leer" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Contador de los Mensajes sin Leer" + +#, python-format +#~ msgid "User %s can not be assigned to role %s on %s." +#~ msgstr "El usuario %s no se puede asignar al rol %s en %s." + +#, python-format +#~ msgid "User %s can not be assigned to role %s." +#~ msgstr "El usuario %s no se puede asignar al rol %s." diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/es_PA.po b/odoo-bringout-oca-project-project_role/project_role/i18n/es_PA.po new file mode 100644 index 0000000..efbd45c --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/es_PA.po @@ -0,0 +1,427 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es_PA\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_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "" diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/fr.po b/odoo-bringout-oca-project-project_role/project_role/i18n/fr.po new file mode 100644 index 0000000..dfb6e03 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/fr.po @@ -0,0 +1,471 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-05-14 18:47+0000\n" +"Last-Translator: Yves Le Doeuff \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 4.3.2\n" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "Actif" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "Archivé" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "Affectations" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "Nombre d'attachements" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "" +"Cochez cette case pour configurer les projets afin qu'ils héritent des " +"affectations de l'entreprise par défaut." + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "" +"Cochez cette case pour configurer les projets afin de limiter le rôle aux " +"affectations par défaut." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "Rôles enfants" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "Sociétés" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "Société" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "Dans toute l'entreprise" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "Nom complet" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "Configurer un ensemble de rôles, disponibles sur les projets." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "Abonnés" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Abonnés (Partenaires)" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "Groupe par" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "Est abonné" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "Limiter le rôle du projet aux affectations" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Pièce jointe principale" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "Mes affectations" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "Nom" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "Nombre d'actions" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "Nombre d'erreurs" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "Chemin parent" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "Rôle parent" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "Veuillez activé le rôle parent %s" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "Projet" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "Affectation du projet" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "Affectations du projet" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "Rôle du projet" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "Rôles du projet" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "Affectations héritées du projet" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "Affectations de la société héritées du projet" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "Rôle" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "" +"Le rôle \"%s\" est en conflit avec un autre rôle à cause d'un nom identique." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "Un rôle avec ce nom existe déjà dans la société !" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "Rôles & Affectations" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "Configurer les rôles du projet" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "Le rôle partagé avec ce nom existe déjà !" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "Utilisateur" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "" +"Un utilisateur ne peut être affecté qu'une seule fois par rôle au sein d'une " +"même entreprise !" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "" +"Un utilisateur ne peut se voir attribuer un rôle qu'une seule fois dans un " +"projet !" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "Chaque rôle ne peut être attribué qu'une seule fois à un utilisateur !" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Nombre de messages qui nécessitent une action" + +#, python-format +#~ msgid "Assignment %s conflicts with another assignment: %s" +#~ msgstr "L'affectation %s est en conflit avec une autre affectation : %s" + +#~ msgid "Followers (Channels)" +#~ msgstr "Abonnés (Canaux)" + +#~ msgid "Inherit assignments" +#~ msgstr "Affectations héritées" + +#~ msgid "Limit role to assignments" +#~ msgstr "Limiter le rôle aux affectations" + +#~ msgid "Number of unread messages" +#~ msgstr "Nombre de messages non lus" + +#~ msgid "Unread Messages" +#~ msgstr "Messages non lus" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Messages non lus" + +#, python-format +#~ msgid "User %s can not be assigned to role %s on %s." +#~ msgstr "L'utilisateur %s ne peut pas se voir affecter le rôle %s sur %s." + +#, python-format +#~ msgid "User %s can not be assigned to role %s." +#~ msgstr "L'utilisateur %s ne peut pas se voir affecter le rôle %s." diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/hr.po b/odoo-bringout-oca-project-project_role/project_role/i18n/hr.po new file mode 100644 index 0000000..da87a06 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/hr.po @@ -0,0 +1,447 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-02-15 17:23+0000\n" +"Last-Translator: Bole \n" +"Language-Team: none\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "%(USER)s kao %(ROLE)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "%(USER)s kao %(ROLE)s na %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "%(USER)s kao %(ROLE)s na %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "%(parent)s / %(own)s" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" +"Uloge na projektima\n" +" " + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "Potrebne radnje" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "Aktivno" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "Arhivirano" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" +"Uloga %(ASSIGNMENT)s je u sukobu sa drugom ulogom: %(OTHER_ASSIGNMENT)s" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "Zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "Broj priloga" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "Označite, da bi projekti naslijedili zaduženja tvrtke kao zadane." + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "" +"Označite za postavljanje projekata na ograničenje uloga za zaduživanje." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "Podređene uloge" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "Tvrtke" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "Tvrtka" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "Unutra tvrtke" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "Puni naziv" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "Postavke" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "Postavite skup uloga, dostupnih na projektima." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "Opis" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "Pratitelji" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Pratitelji (partneri)" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "Grupiraj po" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "Ima poruka" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "ID" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Ako je označeno, nove poruke traže vašu pažnju." + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Ako je označeno, neke poruke imaju greške pri isporuci." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "Nasljedi zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "Je pratitelj" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "Zadnje modificirano" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "Ograniči uloge na projektu na zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "Ograniči uloge na zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Glavni prilog" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "Greška pri isporuci poruke" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "Poruke" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "Moja zaduženja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "Naziv" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "Broj radnji" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "Broj grešaka" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Broj poruka sa greškama pri isporuci" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "Nadređena putanja" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "Nadređena uloga" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "Molimo prije aktivirajte nadređenu ulogu %s" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "Projekt" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "Uloga na projektu" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "Projektna zaduženja" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "Projektna uloga" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "Projektne uloge" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "Projekti nasljeđuju zaduženja" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "Projekti nasljeđuju zaduženja tvrtke" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "Uloga" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "Uloga \"%s\" je u konfliktu sa drugom ulogom zbog istog naziva." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "Uloga istog imena već postoji unutar tvrtke!" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "Uloge i Zaduženja" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "Postavke projektnih uloga" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "Dijeljena uloga istog naziva već postoji!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "Korisnik" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" +"Korisniku %(USER)s nije moguće dodijeliti ulogu %(ROLE)s na %(PROJECT)s." + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "Korisniku %(USER)s nije moguće dodijeliti ulogu %(ROLE)s." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "Korisniku možete dodijeliti ulogu samo jednom unutar tvrtke!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "Korisniku može biti dodijeljeno zaduženje samo unutar projekta!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "Korisniku zaduženje može biti dodijeljeno samo jednom!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "Poruke sa webstranica" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "Povijest komunikacije webstranica" + +#~ msgid "SMS Delivery error" +#~ msgstr "Greška isporuke SMSa" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Broj poruka koje zahtijevaju pažnju" diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/it.po b/odoo-bringout-oca-project-project_role/project_role/i18n/it.po new file mode 100644 index 0000000..b12c7df --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/it.po @@ -0,0 +1,452 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-09-04 18:40+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 4.17\n" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "%(USER)s come %(ROLE)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "%(USER)s come %(ROLE)s in %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "%(USER)s come %(ROLE)s in %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "%(parent)s / %(own)s" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" +"Ruoli progetto\n" +" " + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "Azione richiesta" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "Attivo" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "In archivio" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" +"L'incarico %(ASSIGNMENT)s è in conflitto con un altro incarico: " +"%(OTHER_ASSIGNMENT)s" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "Incarichi" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "Conteggio allegati" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "" +"Selezionare per configurare i progetti per ereditare in modo predefinito gli " +"incarichi dell'azienda." + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "" +"Selezionare per configurare i progetti per limitare il ruolo agli incarichi " +"in modo predefinito." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "Ruoli figli" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "Aziende" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "Azienda" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "Tutta l'azienda" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "Nome completo" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "Impostazioni configurazione" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "Configurare gruppi di ruoli, disponibili nei progetti." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "Descrizione" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "Seguito da" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguito da (partner)" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "Raggruppa per" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "Ha un messaggio" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "ID" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Se selezionata, nuovi messaggi richiedono attenzione." + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "Eredita incarichi" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "Segue" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "Limita ruolo progetto agli incarichi" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "Limita il ruolo agli incarichi" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Allegato principale" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "Errore di consegna messaggio" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "Messaggi" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "Miei incarichi" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "Nome" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "Numero di azioni" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "Numero di errori" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Numero di messaggi che richiedono un'azione" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Numero di messaggi con errore di consegna" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "Percorso padre" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "Ruolo padre" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "Attivare prima il ruolo padre %s" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "Progetto" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "Incarico progetto" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "Incarichi progetto" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "Ruolo progetto" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "Ruoli progetto" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "Incarichi ereditati dal progetto" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "I progetti ereditano gli incarichi azienda" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "Ruolo" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "Il ruolo \"%s\" è in conflitto con un altro ruolo con lo stesso nome." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "Esiste già un ruolo con questo nome nell'azienda!" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "Ruoli & incarichi" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "Configura ruoli progetto" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "Esiste già un ruolo condiviso con lo stesso nome!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "Utente" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" +"L'utente %(USER)s non può essere assegnato al ruolo %(ROLE)s in %(PROJECT)s." + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "L'utente %(USER)s non può essere assegnato al ruolo %(ROLE)s." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "" +"Un utente può essere assegnato ad un solo ruolo alla volta in una azienda!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "" +"Un utente può essere assegnato ad un solo ruolo alla volta in un progetto!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "Un utente può essere assegnato ad un ruolo alla volta!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "Messaggi sito web" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "Storico comunicazioni sito web" + +#~ msgid "SMS Delivery error" +#~ msgstr "Errore consegna SMS" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Numero di messaggi che richiedono un'azione" diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/nl.po b/odoo-bringout-oca-project-project_role/project_role/i18n/nl.po new file mode 100644 index 0000000..3850dc6 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/nl.po @@ -0,0 +1,452 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-09 02:52+0000\n" +"Last-Translator: \"Jan Tapper [Onestein]\" \n" +"Language-Team: none\n" +"Language: nl\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_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "%(USER)s als %(ROLE)s op %(PROJECT)s" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" +"Projectrollen\n" +" " + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "Actie nodig" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "Actief" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "Gearchiveerd" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" +"Opdracht %(ASSIGNMENT)s conflicteert met een andere opdracht: " +"%(OTHER_ASSIGNMENT)s" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "Opdrachten" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "Aantal bijlagen" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "" +"Vink dit aan om projecten zo te configureren dat ze standaard " +"bedrijfstoewijzingen overnemen." + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "" +"Vink dit aan om projecten zo te configureren dat de rol standaard wordt " +"beperkt tot toewijzingen." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "Kindrollen" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "Bedrijven" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "Bedrijf" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "Bedrijfsbreed" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "Volledige naam" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "Configuratie-instellingen" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "Configureer een set rollen, beschikbaar voor projecten." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "Gemaakt door" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "Gemaakt op" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "Beschrijving" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "Weergavenaam" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "Volgers" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Volgers (partners)" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "Groeperen op" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "Heeft bericht" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Indien aangevinkt, vereisen nieuwe berichten uw aandacht." + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Indien aangevinkt, hebben sommige berichten een bezorgfout." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "Toewijzingen overnemen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "Is volger" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "Laatst gewijzigd op" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "Laatst geupdate op" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "Beperk de projectrol tot toewijzingen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "Beperk de rol tot opdrachten" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Hoofdbijlage" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "Berichtbezorgingsfout" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "Berichten" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "Mijn opdrachten" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "Naam" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "Aantal acties" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "Aantal fouten" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Aantal berichten waarvoor actie vereist is" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Aantal berichten met bezorgfout" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "Ouderpad" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "Ouderrol" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "Activeer alstublieft eerst de ouderrol %s" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "Projectopdracht" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "Projectopdrachten" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "Projectrol" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "Projectrollen" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "Projecten nemen toegewezen opdrachten over" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "Projecten nemen bedrijfsopdrachten over" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "Rol" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "Rol \"%s\" conflicteert met een andere rol vanwege dezelfde naam." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "Een functie met een dergelijke naam bestaat al in het bedrijf!" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "Rollen & Opdrachten" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "Projectrollen instellen" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "Een gedeelde rol met een dergelijke naam bestaat al!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "Gebruiker" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" +"Gebruiker %(USER)s kan niet worden toegewezen aan de rol %(ROLE)s op " +"%(PROJECT)s." + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "Gebruiker %(USER)s kan niet worden toegewezen aan rol %(ROLE)s." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "" +"Binnen een bedrijf mag een gebruiker per rol slechts één keer worden " +"toegewezen!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "" +"Binnen een project mag een gebruiker slechts één keer per rol worden " +"toegewezen!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "Gebruiker kan per rol slechts één keer worden toegewezen!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "Websiteberichten" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "Communicatiegeschiedenis van websites" + +#~ msgid "SMS Delivery error" +#~ msgstr "SMS-bezorgfout" diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/project_role.pot b/odoo-bringout-oca-project-project_role/project_role/i18n/project_role.pot new file mode 100644 index 0000000..286ab20 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/project_role.pot @@ -0,0 +1,424 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "" diff --git a/odoo-bringout-oca-project-project_role/project_role/i18n/sl.po b/odoo-bringout-oca-project-project_role/project_role/i18n/sl.po new file mode 100644 index 0000000..b453b0b --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/i18n/sl.po @@ -0,0 +1,502 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_role +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-12 13:35+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_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s in %(PROJECT)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "%(USER)s as %(ROLE)s on %(PROJECT)s" +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "%(parent)s / %(own)s" +msgstr "%(parent)s / %(own)s" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "" +"Project Roles\n" +" " +msgstr "" +"Projektne vloge\n" +" " + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction +msgid "Action Needed" +msgstr "Potrebno ukrepanje" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__active +#: model:ir.model.fields,field_description:project_role.field_project_role__active +msgid "Active" +msgstr "Aktivno" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_form +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_search +#: model_terms:ir.ui.view,arch_db:project_role.project_role_view_form +msgid "Archived" +msgstr "Arhivirano" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "" +"Assignment %(ASSIGNMENT)s conflicts with another assignment: " +"%(OTHER_ASSIGNMENT)s" +msgstr "" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_project_action +#: model:ir.ui.menu,name:project_role.menu_project_assignments +#: model_terms:ir.ui.view,arch_db:project_role.edit_project +msgid "Assignments" +msgstr "Zadolžitve" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_attachment_count +msgid "Attachment Count" +msgstr "Št. priponk" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to inherit company assignments by default." +msgstr "Označite, da bi projekti privzeto dedovali zadolžitve družbe." + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Check to configure projects to limit role to assignments by default." +msgstr "Označite, da bi privzeto omejili projektno vlogo na zadolžitve." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__child_ids +msgid "Child Roles" +msgstr "Podrejene vloge" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_company +msgid "Companies" +msgstr "Družbe" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__company_id +#: model:ir.model.fields,field_description:project_role.field_project_role__company_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company" +msgstr "Družba" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Company-Wide" +msgstr "V sklopu družbe" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__complete_name +msgid "Complete Name" +msgstr "Poln naziv" + +#. module: project_role +#: model:ir.model,name:project_role.model_res_config_settings +msgid "Config Settings" +msgstr "Nastavitve" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Configure set of roles, available on projects." +msgstr "Nastavi sklop pravil na voljo pri projektih." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__create_uid +msgid "Created by" +msgstr "Ustvaril" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__create_date +#: model:ir.model.fields,field_description:project_role.field_project_role__create_date +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__description +msgid "Description" +msgstr "Opis" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__display_name +#: model:ir.model.fields,field_description:project_role.field_project_role__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_follower_ids +msgid "Followers" +msgstr "Sledilci" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_partner_ids +msgid "Followers (Partners)" +msgstr "Sledilci (partnerji)" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Group By" +msgstr "Združi po" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__has_message +msgid "Has Message" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__id +#: model:ir.model.fields,field_description:project_role.field_project_role__id +msgid "ID" +msgstr "ID" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Če označeno pomeni, da nova sporočila zahtevajo vašo pozornost." + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" +"Če označeno pomeni, da je pri nekaterih sporočilih prišlo do napake pri " +"dostavi." + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__inherit_assignments +msgid "Inherit Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_is_follower +msgid "Is Follower" +msgstr "Je sledilec" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment____last_update +#: model:ir.model.fields,field_description:project_role.field_project_role____last_update +msgid "Last Modified on" +msgstr "Zadnjič spremenjeno" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_uid +#: model:ir.model.fields,field_description:project_role.field_project_role__write_uid +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__write_date +#: model:ir.model.fields,field_description:project_role.field_project_role__write_date +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_limit_role_to_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_limit_role_to_assignments +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Limit Project Role to Assignments" +msgstr "Omeji projektne vloge na zadolžitve" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_project__limit_role_to_assignments +msgid "Limit Role To Assignments" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_main_attachment_id +msgid "Main Attachment" +msgstr "Glavna priponka" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error +msgid "Message Delivery error" +msgstr "Napaka ob dostavi sporočila" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_ids +msgid "Messages" +msgstr "Sporočila" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "My Assignments" +msgstr "Moje zadolžitve" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__name +#: model:ir.model.fields,field_description:project_role.field_project_role__name +msgid "Name" +msgstr "Naziv" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_needaction_counter +msgid "Number of Actions" +msgstr "Število ukrepov" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__message_has_error_counter +#, fuzzy +msgid "Number of errors" +msgstr "Število napak" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Število sporočil z napako ob dostavi" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_path +msgid "Parent Path" +msgstr "Nadrejena pot" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_role__parent_id +msgid "Parent Role" +msgstr "Nadrejena vloga" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Please activate first parent role %s" +msgstr "Najprej aktivirajte nadrejeno vlogo %s" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_project +#: model:ir.model.fields,field_description:project_role.field_project_assignment__project_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Project" +msgstr "Projekt" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_assignment +msgid "Project Assignment" +msgstr "Projektna zadolžitev" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.project_assignment_view_all_action +#: model:ir.model.fields,field_description:project_role.field_project_project__assignment_ids +msgid "Project Assignments" +msgstr "Projektne zadolžitve" + +#. module: project_role +#: model:ir.model,name:project_role.model_project_role +msgid "Project Role" +msgstr "Projektna vloga" + +#. module: project_role +#: model:ir.actions.act_window,name:project_role.company_project_roles_action +#: model:ir.ui.menu,name:project_role.project_menu_config_roles +msgid "Project Roles" +msgstr "Projektne vloge" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_res_company__project_inherit_assignments +#: model:ir.model.fields,field_description:project_role.field_res_config_settings__project_inherit_assignments +msgid "Projects Inherit Assignments" +msgstr "Projekti dedujejo zadolžitve" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Projects inherit Company assignments" +msgstr "Projekti dedujejo zadolžitve iz družbe" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__role_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "Role" +msgstr "Vloga" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_role.py:0 +#, python-format +msgid "Role \"%s\" conflicts with another role due to same name." +msgstr "Vloga \"%s\" je v konfliktu z drugo vlogo z istim nazivom." + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_company_uniq +msgid "Role with such name already exists in the company!" +msgstr "Vloga s takim nazivom že obstaja v sklopu družbe!" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Roles & Assignments" +msgstr "Vloge in zadolžitve" + +#. module: project_role +#: model_terms:ir.ui.view,arch_db:project_role.res_config_settings_view_form +msgid "Setup project roles" +msgstr "Nastavi projektne vloge" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_role_name_nocompany_uniq +msgid "Shared role with such name already exists!" +msgstr "Vloga v souporabi s takim nazivom že obstaja!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__user_id +#: model_terms:ir.ui.view,arch_db:project_role.project_assignment_search +msgid "User" +msgstr "Uporabnik" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." +msgstr "" + +#. module: project_role +#. odoo-python +#: code:addons/project_role/models/project_assignment.py:0 +#, python-format +msgid "User %(USER)s can not be assigned to role %(ROLE)s." +msgstr "" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_company_role_user_uniq +msgid "User may be assigned per role only once within a company!" +msgstr "Uporabniku se lahko dodeli določena vloga le enkrat v sklopu družbe!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_project_role_user_uniq +msgid "User may be assigned per role only once within a project!" +msgstr "Uporabniku se lahko dodeli določena vloga le enkrat v sklopu projekta!" + +#. module: project_role +#: model:ir.model.constraint,message:project_role.constraint_project_assignment_nocompany_role_user_uniq +msgid "User may be assigned per role only once!" +msgstr "Uporabniku se lahko dodeli določeno vlogo le enkrat!" + +#. module: project_role +#: model:ir.model.fields,field_description:project_role.field_project_assignment__website_message_ids +msgid "Website Messages" +msgstr "Sporočila spletne strani" + +#. module: project_role +#: model:ir.model.fields,help:project_role.field_project_assignment__website_message_ids +msgid "Website communication history" +msgstr "Kronologija komunikacij spletne strani" + +#, fuzzy +#~ msgid "SMS Delivery error" +#~ msgstr "Napaka ob dostavi sporočila" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Število sporočil, kjer je potrebno ukrepati" + +#, python-format +#~ msgid "%s as %s" +#~ msgstr "%s kot %s" + +#, python-format +#~ msgid "%s as %s in %s" +#~ msgstr "%s kot %s v %s" + +#, python-format +#~ msgid "%s as %s on %s" +#~ msgstr "%s kot %s na %s" + +#, python-format +#~ msgid "Assignment %s conflicts with another assignment: %s" +#~ msgstr "Zadolžitev %s je v konfliktu z zadolžitvijo: %s" + +#~ msgid "Followers (Channels)" +#~ msgstr "Sledilci (kanali)" + +#~ msgid "Inactive" +#~ msgstr "Neaktivno" + +#~ msgid "Inherit assignments" +#~ msgstr "Deduj zadolžitve" + +#~ msgid "Limit role to assignments" +#~ msgstr "Omeji vlogo na zadolžitve" + +#~ msgid "Number of unread messages" +#~ msgstr "Število neprebranih sporočil" + +#~ msgid "Unread Messages" +#~ msgstr "Neprebrana sporočila" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Št. neprebranih sporočil" + +#, python-format +#~ msgid "User %s can not be assigned to role %s on %s." +#~ msgstr "Uporabniku %s ni mogoče dodeliti vloge %s na %s." + +#, python-format +#~ msgid "User %s can not be assigned to role %s." +#~ msgstr "Uporabniku %s ni mogoče dodeliti vloge %s." + +#~ msgid "If checked new messages require your attention." +#~ msgstr "Če označeno pomeni, da nova sporočila zahtevajo vašo pozornost." + +#~ msgid "WBS element" +#~ msgstr "Projektni člen" + +#~ msgid "You cannot create recursive roles." +#~ msgstr "Rekurzivne vloge niso dovoljene." diff --git a/odoo-bringout-oca-project-project_role/project_role/models/__init__.py b/odoo-bringout-oca-project-project_role/project_role/models/__init__.py new file mode 100644 index 0000000..84f6330 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/models/__init__.py @@ -0,0 +1,7 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import res_config_settings +from . import res_company +from . import project_role +from . import project_assignment +from . import project_project diff --git a/odoo-bringout-oca-project-project_role/project_role/models/project_assignment.py b/odoo-bringout-oca-project-project_role/project_role/models/project_assignment.py new file mode 100644 index 0000000..95525cd --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/models/project_assignment.py @@ -0,0 +1,157 @@ +# Copyright 2018-2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class ProjectAssignment(models.Model): + _name = "project.assignment" + _description = "Project Assignment" + _inherit = ["mail.thread"] + + active = fields.Boolean( + default=True, + ) + name = fields.Char( + compute="_compute_name", + store=True, + index=True, + ) + company_id = fields.Many2one( + comodel_name="res.company", + string="Company", + default=lambda self: self.env.company, + ondelete="cascade", + ) + project_id = fields.Many2one( + comodel_name="project.project", + string="Project", + ondelete="cascade", + ) + role_id = fields.Many2one( + comodel_name="project.role", + string="Role", + required=True, + ondelete="restrict", + ) + user_id = fields.Many2one( + comodel_name="res.users", + string="User", + required=True, + ondelete="restrict", + ) + + _sql_constraints = [ + ( + "project_role_user_uniq", + "UNIQUE (project_id, role_id, user_id)", + "User may be assigned per role only once within a project!", + ), + ( + "company_role_user_uniq", + ( + "EXCLUDE (" + " company_id WITH =, role_id WITH =, user_id WITH =" + ") WHERE (" + " project_id IS NULL" + ")" + ), + "User may be assigned per role only once within a company!", + ), + ( + "nocompany_role_user_uniq", + ( + "EXCLUDE (role_id WITH =, user_id WITH =) WHERE (" + " project_id IS NULL AND company_id IS NULL" + ")" + ), + "User may be assigned per role only once!", + ), + ] + + @api.depends( + "company_id.name", + "project_id.name", + "role_id.name", + "user_id.name", + ) + def _compute_name(self): + for assignment in self: + if assignment.project_id: + assignment.name = _("%(USER)s as %(ROLE)s on %(PROJECT)s") % { + "USER": assignment.user_id.name, + "ROLE": assignment.role_id.name, + "PROJECT": assignment.project_id.name, + } + elif assignment.company_id: + assignment.name = _("%(USER)s as %(ROLE)s in %(PROJECT)s") % { + "USER": assignment.user_id.name, + "ROLE": assignment.role_id.name, + "PROJECT": assignment.company_id.name, + } + else: + assignment.name = _("%(USER)s as %(ROLE)s") % { + "USER": assignment.user_id.name, + "ROLE": assignment.role_id.name, + } + + def _get_conflicting_domain(self): + self.ensure_one() + return ( + [ + ("id", "!=", self.id), + ("role_id", "=", self.role_id.id), + ("user_id", "=", self.user_id.id), + ] + + ( + [("company_id", "in", [False, self.company_id.id])] + if self.company_id + else [] + ) + + ( + [("project_id", "in", [False, self.project_id.id])] + if self.project_id + else [] + ) + ) + + @api.constrains("company_id", "project_id", "role_id", "user_id") + def _check(self): + """ + Check if assignment conflicts with any already-existing assignment and + if specific role can be assigned at all (extension hook). + """ + for assignment in self: + conflicting_assignment = self.search( + assignment._get_conflicting_domain(), + limit=1, + ) + if conflicting_assignment: + raise ValidationError( + _( + "Assignment %(ASSIGNMENT)s conflicts with another assignment: " + "%(OTHER_ASSIGNMENT)s" + ) + % { + "ASSIGNMENT": assignment.name, + "OTHER_ASSIGNMENT": conflicting_assignment.name, + } + ) + if not assignment.role_id.can_assign( + assignment.user_id, assignment.project_id + ): + if assignment.project_id: + error = _( + "User %(USER)s can not be assigned to role %(ROLE)s on %(PROJECT)s." + ) % { + "USER": assignment.user_id.name, + "ROLE": assignment.role_id.name, + "PROJECT": assignment.project_id.name, + } + else: + error = _("User %(USER)s can not be assigned to role %(ROLE)s.") % { + "USER": assignment.user_id.name, + "ROLE": assignment.role_id.name, + } + raise ValidationError(error) diff --git a/odoo-bringout-oca-project-project_role/project_role/models/project_project.py b/odoo-bringout-oca-project-project_role/project_role/models/project_project.py new file mode 100644 index 0000000..c611e7f --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/models/project_project.py @@ -0,0 +1,57 @@ +# Copyright 2018-2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class ProjectProject(models.Model): + _inherit = "project.project" + + assignment_ids = fields.One2many( + string="Project Assignments", + comodel_name="project.assignment", + inverse_name="project_id", + tracking=True, + ) + inherit_assignments = fields.Boolean( + default=lambda self: self._default_inherit_assignments(), + ) + limit_role_to_assignments = fields.Boolean( + default=lambda self: self._default_limit_role_to_assignments(), + ) + + @api.model + def _default_inherit_assignments(self): + company = self.env["res.company"].browse( + self._context.get("company_id", self.env.company.id) + ) + return company.project_inherit_assignments + + @api.model + def _default_limit_role_to_assignments(self): + company = self.env["res.company"].browse( + self._context.get("company_id", self.env.company.id) + ) + return company.project_limit_role_to_assignments + + def _project_role_create_assignment_values(self, vals_list): + """Complete values with default assignments from company""" + company_ids = [v["company_id"] for v in vals_list if v.get("company_id")] + companies = self.env["res.company"].browse(company_ids) + for values in vals_list: + company = None + if values.get("company_id"): + company = companies.filtered(lambda c: c.id == values["company_id"]) + if company and "inherit_assignments" not in values: + values["inherit_assignments"] = company.project_inherit_assignments + + if company and "limit_role_to_assignments" not in values: + values[ + "limit_role_to_assignments" + ] = company.project_limit_role_to_assignments + return vals_list + + @api.model_create_multi + def create(self, vals_list): + vals_list = self._project_role_create_assignment_values(vals_list) + return super().create(vals_list) diff --git a/odoo-bringout-oca-project-project_role/project_role/models/project_role.py b/odoo-bringout-oca-project-project_role/project_role/models/project_role.py new file mode 100644 index 0000000..be06bf9 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/models/project_role.py @@ -0,0 +1,135 @@ +# Copyright 2018-2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError +from odoo.tools.translate import html_translate + + +class ProjectRole(models.Model): + _name = "project.role" + _description = "Project Role" + _parent_name = "parent_id" + _parent_store = True + _rec_name = "complete_name" + _order = "complete_name" + + active = fields.Boolean( + default=True, + ) + parent_path = fields.Char(index=True, unaccent=False) + parent_id = fields.Many2one( + string="Parent Role", + comodel_name="project.role", + index=True, + ondelete="cascade", + ) + child_ids = fields.One2many( + string="Child Roles", + comodel_name="project.role", + inverse_name="parent_id", + copy=True, + ) + complete_name = fields.Char( + compute="_compute_complete_name", store=True, recursive=True + ) + name = fields.Char( + translate=True, + required=True, + ) + description = fields.Html( + translate=html_translate, + ) + company_id = fields.Many2one( + comodel_name="res.company", + string="Company", + default=lambda self: self.env.company, + ondelete="cascade", + ) + + _sql_constraints = [ + ( + "name_company_uniq", + "UNIQUE (name, company_id)", + "Role with such name already exists in the company!", + ), + ( + "name_nocompany_uniq", + ("EXCLUDE (name WITH =) WHERE (" " company_id IS NULL" ")"), + "Shared role with such name already exists!", + ), + ] + + @api.constrains("name") + def _check_name(self): + for role in self: + if self.search( + [ + ("company_id", "=" if role.company_id else "!=", False), + ("name", "=", role.name), + ], + limit=1, + ): + raise ValidationError( + _('Role "%s" conflicts with another role due to same name.') + % (role.name,) + ) + + @api.depends("name", "parent_id.complete_name") + def _compute_complete_name(self): + for role in self: + if role.parent_id: + role.complete_name = _("%(parent)s / %(own)s") % { + "parent": role.parent_id.complete_name, + "own": role.name, + } + else: + role.complete_name = role.name + + @api.constrains("active") + def _check_active(self): + for role in self: + if ( + role.active + and role.parent_id + and role.parent_id not in self + and not role.parent_id.active + ): + raise ValidationError( + _("Please activate first parent role %s") + % (role.parent_id.complete_name,) + ) + + def can_assign(self, user_id, project_id): + """Extension point to check if user can be assigned to this role""" + self.ensure_one() + return self.active + + @api.model + def get_available_roles(self, user_id, project_id): + """ + Get domain on roles that can be assumed by given user on a specific + project, depending on company and project assignments configuration. + """ + if not user_id or not project_id: + return self + + if not project_id.limit_role_to_assignments: + if project_id.inherit_assignments: + domain = [("company_id", "in", [False, user_id.company_id.id])] + else: + domain = [("company_id", "=", user_id.company_id.id)] + return self.search(domain) + + domain = [("user_id", "=", user_id.id)] + if project_id.inherit_assignments: + domain += [ + ("project_id", "in", [False, project_id.id]), + ("company_id", "in", [False, user_id.company_id.id]), + ] + else: + domain += [ + ("project_id", "=", project_id.id), + ("company_id", "=", user_id.company_id.id), + ] + return self.env["project.assignment"].search(domain).mapped("role_id") diff --git a/odoo-bringout-oca-project-project_role/project_role/models/res_company.py b/odoo-bringout-oca-project-project_role/project_role/models/res_company.py new file mode 100644 index 0000000..0c21db8 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/models/res_company.py @@ -0,0 +1,17 @@ +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + project_inherit_assignments = fields.Boolean( + string="Projects Inherit Assignments", + default=True, + ) + project_limit_role_to_assignments = fields.Boolean( + string="Limit Project Role to Assignments", + default=False, + ) diff --git a/odoo-bringout-oca-project-project_role/project_role/models/res_config_settings.py b/odoo-bringout-oca-project-project_role/project_role/models/res_config_settings.py new file mode 100644 index 0000000..d6e8b8e --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/models/res_config_settings.py @@ -0,0 +1,17 @@ +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + project_inherit_assignments = fields.Boolean( + related="company_id.project_inherit_assignments", + readonly=False, + ) + project_limit_role_to_assignments = fields.Boolean( + related="company_id.project_limit_role_to_assignments", + readonly=False, + ) diff --git a/odoo-bringout-oca-project-project_role/project_role/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_role/project_role/readme/CONFIGURE.rst new file mode 100644 index 0000000..9fceb7b --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/readme/CONFIGURE.rst @@ -0,0 +1,20 @@ +To configure the list of roles avalable: + +#. Go to *Project > Configuration > Project Roles* +#. Add/remove roles according to your business processes + +To manage assignments on particular project: + +#. Go to *Project > Projects* +#. Open project of interest +#. Click on *Assignments* smart-button +#. Add/remove assignments as needed + +To manage assignments: + +#. Go to *Project > Assignments* +#. Add/remove assignments as needed + +Also, it's recommended to consider using ``web_m2x_options`` module in order to +avoid unneeded creation of roles and projects using Quick Create action by +setting the ``web_m2x_options.create`` system parameter to ``False``. diff --git a/odoo-bringout-oca-project-project_role/project_role/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_role/project_role/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..3071ef0 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* `CorporateHub `__ + + * Alexey Pelykh + +* Alfadil Mustafa +* Tharathip Chaweewongphan diff --git a/odoo-bringout-oca-project-project_role/project_role/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_role/project_role/readme/DESCRIPTION.rst new file mode 100644 index 0000000..4082e1d --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module allows maintaining project roster based on roles and assignments. +List of roles is configured at company level, while assignments can be created +on project, company, and cross-company levels, with configurable inheritance. diff --git a/odoo-bringout-oca-project-project_role/project_role/security/ir.model.access.csv b/odoo-bringout-oca-project-project_role/project_role/security/ir.model.access.csv new file mode 100644 index 0000000..bcffac1 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_project_role_assignee,project.role,model_project_role,base.group_user,1,0,0,0 +access_project_role_user,project.role,model_project_role,project.group_project_user,1,0,0,0 +access_project_role_manager,project.role,model_project_role,base.group_system,1,1,1,1 +access_project_assignment_assignee,project.assignment,model_project_assignment,base.group_user,1,0,0,0 +access_project_assignment_user,project.assignment,model_project_assignment,project.group_project_user,1,0,0,0 +access_project_assignment_manager,project.assignment,model_project_assignment,project.group_project_manager,1,1,1,1 diff --git a/odoo-bringout-oca-project-project_role/project_role/security/project_role.xml b/odoo-bringout-oca-project-project_role/project_role/security/project_role.xml new file mode 100644 index 0000000..5096807 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/security/project_role.xml @@ -0,0 +1,23 @@ + + + + + Project Role multi-company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + + Project Assignment multi-company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + diff --git a/odoo-bringout-oca-project-project_role/project_role/static/description/icon.png b/odoo-bringout-oca-project-project_role/project_role/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_role/project_role/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_role/project_role/static/description/index.html b/odoo-bringout-oca-project-project_role/project_role/static/description/index.html new file mode 100644 index 0000000..9e9b6a7 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/static/description/index.html @@ -0,0 +1,453 @@ + + + + + +Project Roles + + + +
+

Project Roles

+ + +

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

+

This module allows maintaining project roster based on roles and assignments. +List of roles is configured at company level, while assignments can be created +on project, company, and cross-company levels, with configurable inheritance.

+

Table of contents

+ +
+

Configuration

+

To configure the list of roles avalable:

+
    +
  1. Go to Project > Configuration > Project Roles
  2. +
  3. Add/remove roles according to your business processes
  4. +
+

To manage assignments on particular project:

+
    +
  1. Go to Project > Projects
  2. +
  3. Open project of interest
  4. +
  5. Click on Assignments smart-button
  6. +
  7. Add/remove assignments as needed
  8. +
+

To manage assignments:

+
    +
  1. Go to Project > Assignments
  2. +
  3. Add/remove assignments as needed
  4. +
+

Also, it’s recommended to consider using web_m2x_options module in order to +avoid unneeded creation of roles and projects using Quick Create action by +setting the web_m2x_options.create system parameter to False.

+
+
+

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

+
    +
  • CorporateHub
  • +
+
+
+

Contributors

+ +
+
+

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:

+

alexey-pelykh

+

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/odoo-bringout-oca-project-project_role/project_role/tests/__init__.py b/odoo-bringout-oca-project-project_role/project_role/tests/__init__.py new file mode 100644 index 0000000..5560a00 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import test_project_role diff --git a/odoo-bringout-oca-project-project_role/project_role/tests/test_project_role.py b/odoo-bringout-oca-project-project_role/project_role/tests/test_project_role.py new file mode 100644 index 0000000..e3eb7f8 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/tests/test_project_role.py @@ -0,0 +1,312 @@ +# Copyright 2018-2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from unittest import mock + +from psycopg2 import IntegrityError + +from odoo.exceptions import UserError, ValidationError +from odoo.tests import common +from odoo.tools.misc import mute_logger + +_module_ns = "odoo.addons.project_role" +_project_role_class = _module_ns + ".models.project_role.ProjectRole" + + +class TestProjectRole(common.TransactionCase): + def setUp(self): + super().setUp() + + self.ResUsers = self.env["res.users"] + self.Company = self.env["res.company"] + self.Project = self.env["project.project"] + self.Role = self.env["project.role"] + self.Assignment = self.env["project.assignment"] + self.company_id = self.env.company + + def test_create_assignment(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + project = self.Project.create({"name": "Project"}) + role = self.Role.create({"name": "Role"}) + self.Assignment.create( + {"project_id": project.id, "role_id": role.id, "user_id": user.id} + ) + + self.assertEqual(self.Role.get_available_roles(user, project).ids, role.ids) + + def test_no_duplicate_assignment(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + project = self.Project.create({"name": "Project"}) + role = self.Role.create({"name": "Role"}) + self.Assignment.create( + {"project_id": project.id, "role_id": role.id, "user_id": user.id} + ) + + with self.assertRaises(IntegrityError), mute_logger("odoo.sql_db"): + self.Assignment.create( + {"project_id": project.id, "role_id": role.id, "user_id": user.id} + ) + + def test_restrict_assign(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + project = self.Project.create({"name": "Project"}) + role = self.Role.create({"name": "Role"}) + company_1 = self.Company.create({"name": "Company #1"}) + with mock.patch( + _project_role_class + ".can_assign", + return_value=False, + ): + with self.assertRaises(ValidationError): + self.Assignment.create( + {"project_id": project.id, "role_id": role.id, "user_id": user.id} + ) + with self.assertRaises(ValidationError): + self.Assignment.create( + {"role_id": role.id, "user_id": user.id, "company_id": company_1.id} + ) + with self.assertRaises(ValidationError): + self.Assignment.create( + { + "company_id": self.company_id.id, + "role_id": role.id, + "user_id": user.id, + } + ) + + def test_multicompany_roles(self): + company_1 = self.Company.create({"name": "Company #1"}) + self.Role.create({"name": "Role", "company_id": company_1.id}) + + company_2 = self.Company.create({"name": "Company #2"}) + self.Role.create({"name": "Role", "company_id": company_2.id}) + + def test_unique_crosscompany_role(self): + self.Role.create({"name": "Role", "company_id": False}) + + with self.assertRaises(ValidationError): + self.Role.create({"name": "Role"}) + + def test_nonconflicting_crosscompany_role(self): + self.Role.create({"name": "Role"}) + + with self.assertRaises(ValidationError): + self.Role.create({"name": "Role", "company_id": False}) + + def test_child_role(self): + parent_role = self.Role.create({"name": "Parent Role"}) + child_role = self.Role.create( + {"name": "Child Role", "parent_id": parent_role.id} + ) + + self.assertTrue(child_role.complete_name, "Parent Role / Child Role") + + with self.assertRaises(UserError): + parent_role.parent_id = child_role + + child_role.active = False + parent_role.active = False + with self.assertRaises(ValidationError): + child_role.active = True + + def test_companywide_assignments_1(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + role = self.Role.create({"name": "Role"}) + + self.Assignment.create({"role_id": role.id, "user_id": user.id}) + + with self.assertRaises(IntegrityError), mute_logger("odoo.sql_db"): + self.Assignment.create({"role_id": role.id, "user_id": user.id}) + + def test_companywide_assignments_2(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + role_1 = self.Role.create({"name": "Role 1"}) + role_2 = self.Role.create({"name": "Role 2"}) + project = self.Project.create({"name": "Project"}) + + self.Assignment.create({"role_id": role_1.id, "user_id": user.id}) + + with self.assertRaises(ValidationError): + self.Assignment.create( + {"role_id": role_1.id, "user_id": user.id, "project_id": project.id} + ) + + self.Assignment.create({"role_id": role_2.id, "user_id": user.id}) + + def test_companywide_assignments_3(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + role_1 = self.Role.create({"name": "Role 1"}) + role_2 = self.Role.create({"name": "Role 2"}) + + self.Assignment.create({"role_id": role_1.id, "user_id": user.id}) + + self.Assignment.create({"role_id": role_2.id, "user_id": user.id}) + + def test_crosscompany_assignments_1(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + role = self.Role.create({"name": "Role", "company_id": False}) + + self.Assignment.create( + {"role_id": role.id, "user_id": user.id, "company_id": False} + ) + + with self.assertRaises(ValidationError): + self.Assignment.with_context( + company_id=self.company_id.id, + ).create({"role_id": role.id, "user_id": user.id}) + + def test_crosscompany_assignments_2(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + role = self.Role.create({"name": "Role", "company_id": False}) + project = self.Project.create({"name": "Project"}) + + self.Assignment.create( + {"role_id": role.id, "user_id": user.id, "company_id": False} + ) + + with self.assertRaises(ValidationError): + self.Assignment.with_context( + company_id=self.company_id.id, + ).create({"role_id": role.id, "user_id": user.id, "project_id": project.id}) + + def test_crosscompany_assignments_3(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + role_1 = self.Role.create({"name": "Role 1", "company_id": False}) + role_2 = self.Role.create({"name": "Role 2", "company_id": False}) + + self.Assignment.create( + {"role_id": role_1.id, "user_id": user.id, "company_id": False} + ) + + self.Assignment.with_context( + company_id=self.company_id.id, + ).create({"role_id": role_2.id, "user_id": user.id}) + + def test_no_project(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + self.Role.create({"name": "Role"}) + self.assertFalse(self.Role.get_available_roles(user, False)) + + def test_inherit_assignments(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + role = self.Role.create({"name": "Role"}) + project = self.Project.create( + {"name": "Project", "limit_role_to_assignments": True} + ) + self.Assignment.create({"role_id": role.id, "user_id": user.id}) + + self.assertEqual(self.Role.get_available_roles(user, project).ids, role.ids) + + project.inherit_assignments = False + self.assertFalse(self.Role.get_available_roles(user, project)) + + def test_limit_role_to_assignments(self): + user = self.ResUsers.sudo().create( + { + "name": "User", + "login": "user", + "email": "user@example.com", + "company_id": self.company_id.id, + } + ) + role = self.Role.create({"name": "Role"}) + project = self.Project.create({"name": "Project"}) + + self.assertEqual(self.Role.get_available_roles(user, project).ids, role.ids) + + project.inherit_assignments = False + self.assertEqual(self.Role.get_available_roles(user, project).ids, role.ids) + + def test_defaults(self): + company = self.Company.create( + { + "name": "Company", + "project_inherit_assignments": False, + "project_limit_role_to_assignments": True, + } + ) + project = self.Project.create({"name": "Project", "company_id": company.id}) + self.Role.create({"name": "Role"}) + self.assertEqual(project.company_id.id, company.id) + self.assertEqual( + project.inherit_assignments, company.project_inherit_assignments + ) + self.assertEqual( + project.limit_role_to_assignments, company.project_limit_role_to_assignments + ) diff --git a/odoo-bringout-oca-project-project_role/project_role/views/project_assignment.xml b/odoo-bringout-oca-project-project_role/project_role/views/project_assignment.xml new file mode 100644 index 0000000..4d58448 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/views/project_assignment.xml @@ -0,0 +1,198 @@ + + + + + project.assignment.form + project.assignment + +
+
+ +
+ + + + + + + + + + +
+ + +
+ +
+ + + project.assignment.tree + project.assignment + + + + + + + + + + + project.assignment.pivot + project.assignment + + + + + + + + + + + project.assignment.kanban + project.assignment + + + + + + + + +
+
+
+ +
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+
+
+
+ + project.assignment.search + project.assignment + + + + + + + + + + + + + + + + + + + + + + Project Assignments + project.assignment + tree,kanban,form,pivot,graph + + {'search_default_groupby_project': 1} + + + Assignments + project.assignment + kanban,tree,form,pivot,graph + + {'default_project_id': active_id} + [('project_id','=',active_id)] + + + diff --git a/odoo-bringout-oca-project-project_role/project_role/views/project_project.xml b/odoo-bringout-oca-project-project_role/project_role/views/project_project.xml new file mode 100644 index 0000000..9812fd4 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/views/project_project.xml @@ -0,0 +1,29 @@ + + + + + project.project.form + project.project + + +
+
+ + + + + + +
+
+
diff --git a/odoo-bringout-oca-project-project_role/project_role/views/project_role.xml b/odoo-bringout-oca-project-project_role/project_role/views/project_role.xml new file mode 100644 index 0000000..188e76c --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/views/project_role.xml @@ -0,0 +1,67 @@ + + + + + project.role.view.tree + project.role + + + + + + + + + project.role.view.form + project.role + +
+ +
+ + + + + + + + + + + + + + + + project.role.search + project.role + + + + + + + + + Project Roles + project.role + tree,form + + + diff --git a/odoo-bringout-oca-project-project_role/project_role/views/res_config_settings.xml b/odoo-bringout-oca-project-project_role/project_role/views/res_config_settings.xml new file mode 100644 index 0000000..fb59d4c --- /dev/null +++ b/odoo-bringout-oca-project-project_role/project_role/views/res_config_settings.xml @@ -0,0 +1,93 @@ + + + + + res.config.settings.view.form.project_role + res.config.settings + + + +
+

Roles & Assignments

+
+
+
+
+
+ Project Roles + +
+ Configure set of roles, available on projects. +
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
diff --git a/odoo-bringout-oca-project-project_role/pyproject.toml b/odoo-bringout-oca-project-project_role/pyproject.toml new file mode 100644 index 0000000..8ced486 --- /dev/null +++ b/odoo-bringout-oca-project-project_role/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-project-project_role" +version = "16.0.0" +description = "Project Roles - Project role-based roster" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "odoo-bringout-oca-ocb-mail>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_role"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_scrum/README.md b/odoo-bringout-oca-project-project_scrum/README.md new file mode 100644 index 0000000..2e92d05 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/README.md @@ -0,0 +1,46 @@ +# Project Scrum + +Odoo addon: project_scrum + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_scrum +``` + +## Dependencies + +This addon depends on: +- project_timeline + +## Manifest Information + +- **Name**: Project Scrum +- **Version**: 16.0.1.0.0 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_scrum`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_scrum/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_scrum/doc/ARCHITECTURE.md new file mode 100644 index 0000000..b022ed8 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_scrum Module - project_scrum + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_scrum/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_scrum/doc/CONFIGURATION.md new file mode 100644 index 0000000..679bddc --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_scrum. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_scrum/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_scrum/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_scrum/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_scrum/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a82a2b2 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project_timeline](https://github.com/bringout/oca-workflow-process) diff --git a/odoo-bringout-oca-project-project_scrum/doc/FAQ.md b/odoo-bringout-oca-project-project_scrum/doc/FAQ.md new file mode 100644 index 0000000..dc59a37 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_scrum or install in UI. diff --git a/odoo-bringout-oca-project-project_scrum/doc/INSTALL.md b/odoo-bringout-oca-project-project_scrum/doc/INSTALL.md new file mode 100644 index 0000000..7c50931 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_scrum" +# or +uv pip install odoo-bringout-oca-project-project_scrum" +``` diff --git a/odoo-bringout-oca-project-project_scrum/doc/MODELS.md b/odoo-bringout-oca-project-project_scrum/doc/MODELS.md new file mode 100644 index 0000000..145309a --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in project_scrum. + +```mermaid +classDiagram + class project_sprint + class project_project + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_scrum/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_scrum/doc/OVERVIEW.md new file mode 100644 index 0000000..8e67c24 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_scrum. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_scrum +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_scrum/doc/REPORTS.md b/odoo-bringout-oca-project-project_scrum/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_scrum/doc/SECURITY.md b/odoo-bringout-oca-project-project_scrum/doc/SECURITY.md new file mode 100644 index 0000000..049d32c --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in project_scrum. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../project_scrum/security/ir.model.access.csv)** + - 2 model access rules + +## Record Rules + +Row-level security rules defined in: + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[ir.model.access.csv](../project_scrum/security/ir.model.access.csv)** + - Model access permissions (CRUD rights) + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_scrum/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_scrum/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_scrum/doc/USAGE.md b/odoo-bringout-oca-project-project_scrum/doc/USAGE.md new file mode 100644 index 0000000..77dd35b --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_scrum +``` diff --git a/odoo-bringout-oca-project-project_scrum/doc/WIZARDS.md b/odoo-bringout-oca-project-project_scrum/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/README.rst b/odoo-bringout-oca-project-project_scrum/project_scrum/README.rst new file mode 100644 index 0000000..cdb52cb --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/README.rst @@ -0,0 +1,97 @@ +============= +Project Scrum +============= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9205339e8f7a2d8db0498032ce054de9c0db6a0555bdab29eb354e8393711c9b + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_scrum + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_scrum + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This addon allow you to manage your project with scrum methodology. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +This addon you can create and manage your project with scrum methodology. +For create a sprint you need to go to the project and click on the "Sprint" button. +You can create a sprint with a name, a start date, an end date, a project and a objetive. +You can create a sprint from configuration menu. +You can access the all options from the project options on kanban view or from project view form. +From the project options on kanban view you can access the sprint timeline view and the backlog 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 +~~~~~~~ + +* Binhex + +Contributors +~~~~~~~~~~~~ + +* `Binhex _`: + + * Adasat Torres de León + + +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-adasatorres| image:: https://github.com/adasatorres.png?size=40px + :target: https://github.com/adasatorres + :alt: adasatorres + +Current `maintainer `__: + +|maintainer-adasatorres| + +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/odoo-bringout-oca-project-project_scrum/project_scrum/__init__.py b/odoo-bringout-oca-project-project_scrum/project_scrum/__init__.py new file mode 100644 index 0000000..4b76c7b --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/__manifest__.py b/odoo-bringout-oca-project-project_scrum/project_scrum/__manifest__.py new file mode 100644 index 0000000..c0e7aba --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2024 Binhex - Adasat Torres de León (https://www.binhex.cloud) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Project Scrum", + "version": "16.0.1.0.0", + "category": "Project", + "website": "https://github.com/OCA/project", + "author": "Binhex, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "application": False, + "summary": "This addon allow use the scrum methodology in projects", + "depends": ["project_timeline"], + "data": [ + "security/ir.model.access.csv", + "views/project_sprint_views.xml", + "views/project_task_views.xml", + "views/project_views.xml", + "data/ir_cron_data.xml", + ], + "maintainers": ["adasatorres"], +} diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/data/ir_cron_data.xml b/odoo-bringout-oca-project-project_scrum/project_scrum/data/ir_cron_data.xml new file mode 100644 index 0000000..c942470 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/data/ir_cron_data.xml @@ -0,0 +1,14 @@ + + + + Update sprint state + + 5 + minutes + -1 + code + + model.cron_update_sprint_state() + + + diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/bs.po b/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/bs.po new file mode 100644 index 0000000..364a0e2 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/bs.po @@ -0,0 +1,476 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_scrum +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_months +#, python-format +msgid "1 Month" +msgstr "1 mjesec" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_weeks +#, python-format +msgid "1 Week" +msgstr "1 tjedan" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_years +#, python-format +msgid "1 Year" +msgstr "1 godina" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_months +#, python-format +msgid "2 Month" +msgstr "2 meseca" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_weeks +#, python-format +msgid "2 Weeks" +msgstr "2 nedelje" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_years +#, python-format +msgid "2 Years" +msgstr "2 godine" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +msgid "" +"\n" +" Tasks\n" +" " +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_form_inherit +msgid "" +"\n" +" Backlog\n" +" " +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_form_inherit +msgid "" +"\n" +" Sprints\n" +" " +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_needaction +msgid "Action Needed" +msgstr "Potrebna akcija" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_ids +msgid "Activities" +msgstr "Aktivnosti" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Dekoracija iznimke aktivnosti" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_state +msgid "Activity State" +msgstr "Status aktivnosti" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_type_icon +msgid "Activity Type Icon" +msgstr "Ikona tipa aktivnosti" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_attachment_count +msgid "Attachment Count" +msgstr "Broj priloga" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +#, python-format +msgid "Backlog" +msgstr "Zaostatak" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_project__backlog_count +msgid "Backlog Count" +msgstr "Broj zaostaka" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__custom +#, python-format +msgid "Custom" +msgstr "Prilagođeno" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Date End" +msgstr "Datum završetka" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_option +msgid "Date Option" +msgstr "Opcija datuma" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Date Start" +msgstr "Datum početka" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__description +msgid "Description" +msgstr "Opis" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__done +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Done" +msgstr "Gotovo" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__draft +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Draft" +msgstr "U pripremi" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_end +msgid "End Date" +msgstr "Datum završetka" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.constraint,message:project_scrum.constraint_project_sprint_date_check +#, python-format +msgid "Error: End date must be greater than start date!" +msgstr "Greška: Datum završetka mora biti veći od datuma početka!" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_follower_ids +msgid "Followers" +msgstr "Pratioci" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_partner_ids +msgid "Followers (Partners)" +msgstr "Pratioci (Partneri)" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Font awesome ikona npr. fa-tasks" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Group By" +msgstr "Grupiši po" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__has_message +msgid "Has Message" +msgstr "Ima poruku" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__id +msgid "ID" +msgstr "ID" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_exception_icon +msgid "Icon" +msgstr "Ikona" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Ikona za prikaz iznimki." + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Ako je zakačeno, nove poruke će zahtjevati vašu pažnju" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Ako je označeno neke poruke mogu imati grešku u dostavi." + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "In Progress" +msgstr "U Toku" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__in_progress +msgid "In progress" +msgstr "U tijeku" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_is_follower +msgid "Is Follower" +msgstr "Pratilac" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_main_attachment_id +msgid "Main Attachment" +msgstr "Glavna zakačka" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__user_ids +msgid "Members" +msgstr "Članovi" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_has_error +msgid "Message Delivery error" +msgstr "Greška pri isporuci poruke" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_ids +msgid "Messages" +msgstr "Poruke" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Rok za moju aktivnost" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__name +msgid "Name" +msgstr "Naziv:" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Krajnji rok za sljedeću aktivnost" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_summary +msgid "Next Activity Summary" +msgstr "Pregled sljedeće aktivnosti" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_type_id +msgid "Next Activity Type" +msgstr "Tip sljedeće aktivnosti" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_needaction_counter +msgid "Number of Actions" +msgstr "Broj akcija" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_has_error_counter +msgid "Number of errors" +msgstr "Broj grešaka" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Broj poruka koje zahtijevaju aktivnost" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Broj poruka sa greškama pri isporuci" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_project +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__project_id +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Project" +msgstr "Projekat" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_sprint +msgid "Project Sprint" +msgstr "Sprint projekta" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_user_id +msgid "Responsible User" +msgstr "Odgovorni korisnik" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_task__sprint_id +#: model_terms:ir.ui.view,arch_db:project_scrum.project_task_inherit_search_view +msgid "Sprint" +msgstr "Sprint" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_project__sprint_count +msgid "Sprint Count" +msgstr "Broj sprintova" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_task_inherit_search_view +msgid "Sprint In Progress" +msgstr "Sprint u toku" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_task__sprint_state +msgid "Sprint State" +msgstr "Stanje sprinta" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#, python-format +msgid "Sprint Timeline" +msgstr "Vremenska linija sprinta" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#: model:ir.actions.act_window,name:project_scrum.project_sprint_action +#: model:ir.model.fields,field_description:project_scrum.field_project_project__sprint_ids +#: model:ir.ui.menu,name:project_scrum.project_sprint_menu +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +#: model_terms:ir.ui.view,arch_db:project_scrum.view_sprint_timeline +#, python-format +msgid "Sprints" +msgstr "Sprintovi" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +msgid "Sprints Timeline" +msgstr "Vremenska linija sprintova" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +msgid "Start" +msgstr "Započni" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_start +msgid "Start Date" +msgstr "Početni datum" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__state +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "State" +msgstr "Status" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__task_ids +#, python-format +msgid "Tasks" +msgstr "Zadaci" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__tasks_count +msgid "Tasks Count" +msgstr "Broj zadataka" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_task.py:0 +#, python-format +msgid "The assignees must be part of the sprint." +msgstr "Dodeljeni moraju biti deo sprinta." + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Vrsta aktivnosti iznimke na zapisu." + +#. module: project_scrum +#: model:ir.actions.server,name:project_scrum.cron_update_sprint_state_ir_actions_server +#: model:ir.cron,cron_name:project_scrum.cron_update_sprint_state +msgid "Update sprint state" +msgstr "Ažuriraj stanje sprinta" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__website_message_ids +msgid "Website Messages" +msgstr "Poruke sa website-a" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__website_message_ids +msgid "Website communication history" +msgstr "Povijest komunikacije Web stranice" diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/it.po b/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/it.po new file mode 100644 index 0000000..edee254 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/it.po @@ -0,0 +1,492 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_scrum +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-11-28 23:06+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.6.2\n" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_months +#, python-format +msgid "1 Month" +msgstr "1 mese" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_weeks +#, python-format +msgid "1 Week" +msgstr "1 settimana" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_years +#, python-format +msgid "1 Year" +msgstr "1 anno" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_months +#, python-format +msgid "2 Month" +msgstr "2 mesi" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_weeks +#, python-format +msgid "2 Weeks" +msgstr "2 settimane" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_years +#, python-format +msgid "2 Years" +msgstr "2 anni" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +msgid "" +"\n" +" Tasks\n" +" " +msgstr "" +"\n" +" Lavori\n" +" " + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_form_inherit +msgid "" +"\n" +" Backlog\n" +" " +msgstr "" +"\n" +" Backlog\n" +" " + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_form_inherit +msgid "" +"\n" +" Sprints\n" +" " +msgstr "" +"\n" +" Sprint\n" +" " + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_needaction +msgid "Action Needed" +msgstr "Azione richiesta" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_ids +msgid "Activities" +msgstr "Attività" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decorazione eccezione attività" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_state +msgid "Activity State" +msgstr "Stato attività" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_type_icon +msgid "Activity Type Icon" +msgstr "Icona tipo attività" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_attachment_count +msgid "Attachment Count" +msgstr "Conteggio allegati" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +#, python-format +msgid "Backlog" +msgstr "Backlog" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_project__backlog_count +msgid "Backlog Count" +msgstr "Conteggio backlog" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__custom +#, python-format +msgid "Custom" +msgstr "Personalizzato" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Date End" +msgstr "Data fine" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_option +msgid "Date Option" +msgstr "Opzione data" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Date Start" +msgstr "Data inizio" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__description +msgid "Description" +msgstr "Descrizione" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__done +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Done" +msgstr "Eseguito" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__draft +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Draft" +msgstr "Bozza" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_end +msgid "End Date" +msgstr "Data fine" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.constraint,message:project_scrum.constraint_project_sprint_date_check +#, python-format +msgid "Error: End date must be greater than start date!" +msgstr "Errore: la data fine deve essere maggiore della data inizio!" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_follower_ids +msgid "Followers" +msgstr "Seguito da" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguito da (partner)" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Icona Font Awesome es. fa-tasks" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Group By" +msgstr "Raggruppa per" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__has_message +msgid "Has Message" +msgstr "Ha un messaggio" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__id +msgid "ID" +msgstr "ID" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_exception_icon +msgid "Icon" +msgstr "Icona" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icona per indicare un'attività eccezione." + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Se selezionata, nuovi messaggi richiedono attenzione." + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "In Progress" +msgstr "In corso" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__in_progress +msgid "In progress" +msgstr "In corso" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_is_follower +msgid "Is Follower" +msgstr "Segue" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_main_attachment_id +msgid "Main Attachment" +msgstr "Allegato principale" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__user_ids +msgid "Members" +msgstr "Membri" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_has_error +msgid "Message Delivery error" +msgstr "Errore di consegna messaggio" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_ids +msgid "Messages" +msgstr "Messaggi" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Scadenza mia attività" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__name +msgid "Name" +msgstr "Nome" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Scadenza prossima attività" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_summary +msgid "Next Activity Summary" +msgstr "Riepilogo prossima attività" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_type_id +msgid "Next Activity Type" +msgstr "Tipo prossima attività" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_needaction_counter +msgid "Number of Actions" +msgstr "Numero di azioni" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_has_error_counter +msgid "Number of errors" +msgstr "Numero di errori" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Numero di messaggi che richiedono un'azione" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Numero di messaggi con errore di consegna" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_project +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__project_id +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Project" +msgstr "Progetto" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_sprint +msgid "Project Sprint" +msgstr "Sprint progetto" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_user_id +msgid "Responsible User" +msgstr "Utente responsabile" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_task__sprint_id +#: model_terms:ir.ui.view,arch_db:project_scrum.project_task_inherit_search_view +msgid "Sprint" +msgstr "Sprint" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_project__sprint_count +msgid "Sprint Count" +msgstr "Conteggio sprint" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_task_inherit_search_view +msgid "Sprint In Progress" +msgstr "Sprint in corso" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_task__sprint_state +msgid "Sprint State" +msgstr "Stato sprint" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#, python-format +msgid "Sprint Timeline" +msgstr "Timeline sprint" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#: model:ir.actions.act_window,name:project_scrum.project_sprint_action +#: model:ir.model.fields,field_description:project_scrum.field_project_project__sprint_ids +#: model:ir.ui.menu,name:project_scrum.project_sprint_menu +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +#: model_terms:ir.ui.view,arch_db:project_scrum.view_sprint_timeline +#, python-format +msgid "Sprints" +msgstr "Sprint" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +msgid "Sprints Timeline" +msgstr "Timeline print" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +msgid "Start" +msgstr "Avvio" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_start +msgid "Start Date" +msgstr "Data inizio" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__state +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "State" +msgstr "Stato" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"Stato in base alle attività\n" +"Scaduto: la data richiesta è trascorsa\n" +"Oggi: la data attività è oggi\n" +"Pianificato: attività future." + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_task +msgid "Task" +msgstr "Lavoro" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__task_ids +#, python-format +msgid "Tasks" +msgstr "Lavori" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__tasks_count +msgid "Tasks Count" +msgstr "Conteggio lavori" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_task.py:0 +#, python-format +msgid "The assignees must be part of the sprint." +msgstr "L'assegnatario deve essere parte dello sprint." + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo di attività eccezione sul record." + +#. module: project_scrum +#: model:ir.actions.server,name:project_scrum.cron_update_sprint_state_ir_actions_server +#: model:ir.cron,cron_name:project_scrum.cron_update_sprint_state +msgid "Update sprint state" +msgstr "Aggiorna stato sprint" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__website_message_ids +msgid "Website Messages" +msgstr "Messaggi sito web" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__website_message_ids +msgid "Website communication history" +msgstr "Cronologia comunicazioni sito web" diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/nl.po b/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/nl.po new file mode 100644 index 0000000..bf1a071 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/nl.po @@ -0,0 +1,493 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_scrum +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-11-21 15:06+0000\n" +"Last-Translator: Dennis Sluijk \n" +"Language-Team: none\n" +"Language: nl\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.6.2\n" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_months +#, python-format +msgid "1 Month" +msgstr "1 Maand" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_weeks +#, python-format +msgid "1 Week" +msgstr "1 Week" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_years +#, python-format +msgid "1 Year" +msgstr "1 Jaar" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_months +#, python-format +msgid "2 Month" +msgstr "2 Maanden" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_weeks +#, python-format +msgid "2 Weeks" +msgstr "2 Weken" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_years +#, python-format +msgid "2 Years" +msgstr "2 Jaar" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +msgid "" +"\n" +" Tasks\n" +" " +msgstr "" +"\n" +" Taken\n" +" " + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_form_inherit +msgid "" +"\n" +" Backlog\n" +" " +msgstr "" +"\n" +" Backlog\n" +" " + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_form_inherit +#, fuzzy +msgid "" +"\n" +" Sprints\n" +" " +msgstr "" +"\n" +" Sprints\n" +" " + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_needaction +msgid "Action Needed" +msgstr "Vereist actie" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_ids +msgid "Activities" +msgstr "Activiteiten" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Activiteit uitzondering decoratie" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_state +msgid "Activity State" +msgstr "Activiteitsfase" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_type_icon +msgid "Activity Type Icon" +msgstr "Activiteitensoort icoon" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_attachment_count +msgid "Attachment Count" +msgstr "Aantal bijlagen" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +#, python-format +msgid "Backlog" +msgstr "Backlog" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_project__backlog_count +msgid "Backlog Count" +msgstr "Aantal in backlog" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__custom +#, python-format +msgid "Custom" +msgstr "Aangepast" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Date End" +msgstr "Einddatum" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_option +msgid "Date Option" +msgstr "Datumoptie" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Date Start" +msgstr "Startdatum" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__description +msgid "Description" +msgstr "Omschrijving" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__display_name +msgid "Display Name" +msgstr "Weergavenaam" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__done +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Done" +msgstr "Afgerond" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__draft +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Draft" +msgstr "Concept" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_end +msgid "End Date" +msgstr "Einddatum" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.constraint,message:project_scrum.constraint_project_sprint_date_check +#, python-format +msgid "Error: End date must be greater than start date!" +msgstr "Fout: Einddatum moet later zijn dan startdatum!" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_follower_ids +msgid "Followers" +msgstr "Volgers" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_partner_ids +msgid "Followers (Partners)" +msgstr "Volgers (Relaties)" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Font awesome icon bijv. fa-tasks" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Group By" +msgstr "Groepeer op" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__has_message +msgid "Has Message" +msgstr "Heeft bericht" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__id +msgid "ID" +msgstr "ID" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_exception_icon +msgid "Icon" +msgstr "Icoon" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icoon om uitzondering op activiteit aan te geven." + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Wanneer aangevinkt, hebben nieuwe berichten uw aandacht nodig." + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Als deze optie is aangevinkt, hebben sommige berichten een afleverfout." + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "In Progress" +msgstr "Lopend" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__in_progress +msgid "In progress" +msgstr "Lopend" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_is_follower +msgid "Is Follower" +msgstr "Is volger" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint____last_update +msgid "Last Modified on" +msgstr "Laatst bijgewerkt op" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_main_attachment_id +msgid "Main Attachment" +msgstr "Hoofdbijlage" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__user_ids +msgid "Members" +msgstr "Leden" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_has_error +msgid "Message Delivery error" +msgstr "Bericht leveringsfout" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_ids +msgid "Messages" +msgstr "Berichten" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Deadline voor mijn activiteit" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__name +msgid "Name" +msgstr "Naam" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Deadline voor volgende activiteit" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_summary +msgid "Next Activity Summary" +msgstr "Samenvatting volgende activiteit" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_type_id +msgid "Next Activity Type" +msgstr "Volgende activiteitstype" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_needaction_counter +msgid "Number of Actions" +msgstr "Aantal acties" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_has_error_counter +msgid "Number of errors" +msgstr "Aantal fouten" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Aantal berichten dat actie vereist" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Aantal berichten met leveringsfout" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_project +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__project_id +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Project" +msgstr "Project" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_sprint +msgid "Project Sprint" +msgstr "Project Sprint" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_user_id +msgid "Responsible User" +msgstr "Verantwoordelijke gebruiker" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_task__sprint_id +#: model_terms:ir.ui.view,arch_db:project_scrum.project_task_inherit_search_view +msgid "Sprint" +msgstr "Sprint" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_project__sprint_count +msgid "Sprint Count" +msgstr "Aantal sprints" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_task_inherit_search_view +msgid "Sprint In Progress" +msgstr "Sprint lopend" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_task__sprint_state +msgid "Sprint State" +msgstr "Sprintstatus" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#, python-format +msgid "Sprint Timeline" +msgstr "Sprint tijdlijn" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#: model:ir.actions.act_window,name:project_scrum.project_sprint_action +#: model:ir.model.fields,field_description:project_scrum.field_project_project__sprint_ids +#: model:ir.ui.menu,name:project_scrum.project_sprint_menu +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +#: model_terms:ir.ui.view,arch_db:project_scrum.view_sprint_timeline +#, python-format +msgid "Sprints" +msgstr "Sprints" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +msgid "Sprints Timeline" +msgstr "Sprints tijdlijn" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +msgid "Start" +msgstr "Start" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_start +msgid "Start Date" +msgstr "Startdatum" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__state +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "State" +msgstr "Status" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"Status gebaseerd op activiteiten\n" +"Te laat: Datum is al verstreken\n" +"Vandaag: Activiteitsdatum is vandaag\n" +"Gepland: Toekomstige activiteiten." + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_task +msgid "Task" +msgstr "Taak" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__task_ids +#, python-format +msgid "Tasks" +msgstr "Taken" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__tasks_count +msgid "Tasks Count" +msgstr "Aantal taken" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_task.py:0 +#, python-format +msgid "The assignees must be part of the sprint." +msgstr "De toegewezen personen moeten deel uitmaken van de sprint." + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Type van activiteit uitzondering op record." + +#. module: project_scrum +#: model:ir.actions.server,name:project_scrum.cron_update_sprint_state_ir_actions_server +#: model:ir.cron,cron_name:project_scrum.cron_update_sprint_state +msgid "Update sprint state" +msgstr "Sprintstatussen bijwerken" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__website_message_ids +msgid "Website Messages" +msgstr "Websiteberichten" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__website_message_ids +msgid "Website communication history" +msgstr "Website communicatiegeschiedenis" diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/project_scrum.pot b/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/project_scrum.pot new file mode 100644 index 0000000..66da92b --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/i18n/project_scrum.pot @@ -0,0 +1,476 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_scrum +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_months +#, python-format +msgid "1 Month" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_weeks +#, python-format +msgid "1 Week" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__1_years +#, python-format +msgid "1 Year" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_months +#, python-format +msgid "2 Month" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_weeks +#, python-format +msgid "2 Weeks" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__2_years +#, python-format +msgid "2 Years" +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +msgid "" +"\n" +" Tasks\n" +" " +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_form_inherit +msgid "" +"\n" +" Backlog\n" +" " +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_form_inherit +msgid "" +"\n" +" Sprints\n" +" " +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_ids +msgid "Activities" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_state +msgid "Activity State" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +#, python-format +msgid "Backlog" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_project__backlog_count +msgid "Backlog Count" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__create_uid +msgid "Created by" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__create_date +msgid "Created on" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__date_option__custom +#, python-format +msgid "Custom" +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Date End" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_option +msgid "Date Option" +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Date Start" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__description +msgid "Description" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__display_name +msgid "Display Name" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__done +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Done" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__draft +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Draft" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_end +msgid "End Date" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.constraint,message:project_scrum.constraint_project_sprint_date_check +#, python-format +msgid "Error: End date must be greater than start date!" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Group By" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__has_message +msgid "Has Message" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__id +msgid "ID" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "In Progress" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields.selection,name:project_scrum.selection__project_sprint__state__in_progress +msgid "In progress" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__user_ids +msgid "Members" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_ids +msgid "Messages" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__name +msgid "Name" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_project +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__project_id +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "Project" +msgstr "" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_sprint +msgid "Project Sprint" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_task__sprint_id +#: model_terms:ir.ui.view,arch_db:project_scrum.project_task_inherit_search_view +msgid "Sprint" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_project__sprint_count +msgid "Sprint Count" +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_task_inherit_search_view +msgid "Sprint In Progress" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_task__sprint_state +msgid "Sprint State" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#, python-format +msgid "Sprint Timeline" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project.py:0 +#: model:ir.actions.act_window,name:project_scrum.project_sprint_action +#: model:ir.model.fields,field_description:project_scrum.field_project_project__sprint_ids +#: model:ir.ui.menu,name:project_scrum.project_sprint_menu +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +#: model_terms:ir.ui.view,arch_db:project_scrum.view_sprint_timeline +#, python-format +msgid "Sprints" +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_project_view_kanban_inherit +msgid "Sprints Timeline" +msgstr "" + +#. module: project_scrum +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_form +msgid "Start" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__date_start +msgid "Start Date" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__state +#: model_terms:ir.ui.view,arch_db:project_scrum.project_sprint_view_search +msgid "State" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: project_scrum +#: model:ir.model,name:project_scrum.model_project_task +msgid "Task" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_sprint.py:0 +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__task_ids +#, python-format +msgid "Tasks" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__tasks_count +msgid "Tasks Count" +msgstr "" + +#. module: project_scrum +#. odoo-python +#: code:addons/project_scrum/models/project_task.py:0 +#, python-format +msgid "The assignees must be part of the sprint." +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: project_scrum +#: model:ir.actions.server,name:project_scrum.cron_update_sprint_state_ir_actions_server +#: model:ir.cron,cron_name:project_scrum.cron_update_sprint_state +msgid "Update sprint state" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,field_description:project_scrum.field_project_sprint__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: project_scrum +#: model:ir.model.fields,help:project_scrum.field_project_sprint__website_message_ids +msgid "Website communication history" +msgstr "" diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/models/__init__.py b/odoo-bringout-oca-project-project_scrum/project_scrum/models/__init__.py new file mode 100644 index 0000000..24b2564 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/models/__init__.py @@ -0,0 +1,3 @@ +from . import project_sprint +from . import project +from . import project_task diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/models/project.py b/odoo-bringout-oca-project-project_scrum/project_scrum/models/project.py new file mode 100644 index 0000000..ba38149 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/models/project.py @@ -0,0 +1,65 @@ +from odoo import _, fields, models + + +class ProjectProject(models.Model): + _inherit = "project.project" + + sprint_ids = fields.One2many( + comodel_name="project.sprint", + inverse_name="project_id", + string="Sprints", + ) + sprint_count = fields.Integer(compute="_compute_sprint_count") + backlog_count = fields.Integer(compute="_compute_backlog_count") + + def _compute_backlog_count(self): + for project in self: + project.backlog_count = len( + project.task_ids.filtered( + lambda task: not task.sprint_id and task.kanban_state != "done" + ) + ) + + def _compute_sprint_count(self): + unassigned_sprint_count = self.env["project.sprint"].search( + [("project_id", "=", False)], count=True + ) + for project in self: + project.sprint_count = len(project.sprint_ids) + unassigned_sprint_count + + def action_sprints(self): + self.ensure_one() + return { + "name": _("Sprints"), + "type": "ir.actions.act_window", + "res_model": "project.sprint", + "view_mode": "tree,form,timeline", + "domain": ["|", ("project_id", "=", self.id), ("project_id", "=", False)], + "context": {"default_project_id": self.id}, + } + + def action_backlog(self): + self.ensure_one() + return { + "name": _("Backlog"), + "type": "ir.actions.act_window", + "res_model": "project.task", + "view_mode": "tree,form", + "domain": [ + ("project_id", "=", self.id), + ("sprint_id", "=", False), + ("kanban_state", "!=", "done"), + ], + "context": {"default_project_id": self.id}, + } + + def action_sprint_timeline(self): + self.ensure_one() + return { + "name": _("Sprint Timeline"), + "type": "ir.actions.act_window", + "res_model": "project.task", + "view_mode": "timeline", + "domain": [("project_id", "=", self.id), ("sprint_id", "!=", False)], + "context": {"default_project_id": self.id, "no_create": True}, + } diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/models/project_sprint.py b/odoo-bringout-oca-project-project_scrum/project_scrum/models/project_sprint.py new file mode 100644 index 0000000..c7303b2 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/models/project_sprint.py @@ -0,0 +1,132 @@ +from dateutil.relativedelta import relativedelta + +from odoo import _, api, fields, models + +DATE_OPTIONS = [ + ("1_weeks", _("1 Week")), + ("2_weeks", _("2 Weeks")), + ("1_months", _("1 Month")), + ("2_months", _("2 Month")), + ("1_years", _("1 Year")), + ("2_years", _("2 Years")), + ("custom", _("Custom")), +] + + +class ProjectSprint(models.Model): + _name = "project.sprint" + _inherit = ["mail.thread", "mail.activity.mixin"] + _description = "Project Sprint" + _sql_constraints = [ + ( + "date_check", + "CHECK (date_start <= date_end)", + _("Error: End date must be greater than start date!"), + ), + ] + + name = fields.Char(required=True, tracking=True) + user_ids = fields.Many2many( + comodel_name="res.users", + string="Members", + required=True, + domain="[('share', '=', False), ('active', '=', True)]", + tracking=True, + relation="project_sprint_user_rel", + ) + description = fields.Text(tracking=True) + project_id = fields.Many2one( + comodel_name="project.project", + string="Project", + tracking=True, + ) + task_ids = fields.One2many( + comodel_name="project.task", + inverse_name="sprint_id", + string="Tasks", + domain="[('project_id', '=', project_id)]", + ) + date_start = fields.Date( + string="Start Date", default=fields.Date.today, required=True + ) + date_option = fields.Selection( + selection=DATE_OPTIONS, default=DATE_OPTIONS[0][0], required=True + ) + date_end = fields.Date( + string="End Date", + required=True, + compute="_compute_date_end", + store=True, + readonly=False, + ) + state = fields.Selection( + selection=[ + ("draft", "Draft"), + ("in_progress", "In progress"), + ("done", "Done"), + ], + default="draft", + ) + tasks_count = fields.Integer(compute="_compute_tasks_count") + + def _compute_tasks_count(self): + for sprint in self: + sprint.tasks_count = len(sprint.task_ids) + + def action_start(self): + self.write({"state": "in_progress"}) + + def action_done(self): + self.write({"state": "done"}) + self._check_task_state() + + def action_tasks(self): + self.ensure_one() + return { + "name": _("Tasks"), + "type": "ir.actions.act_window", + "res_model": "project.task", + "view_mode": "tree,form", + "domain": [("sprint_id", "=", self.id)], + "context": { + "default_project_id": self.project_id.id, + "default_sprint_id": self.id, + }, + } + + @api.model + def cron_update_sprint_state(self): + date = fields.Date.today() + for sprint in self.search([("state", "=", "draft")]): + if date >= sprint.date_start: + sprint.write({"state": "in_progress"}) + + for sprint in self.search([("state", "=", "in_progress")]): + if date >= sprint.date_end: + sprint.write({"state": "done"}) + sprint._check_task_state() + + def _check_task_state(self): + self.ensure_one() + in_progress_sprints = self.project_id.sprint_ids.filtered( + lambda sprint: sprint.state == "in_progress" + ) + self.task_ids.filtered(lambda task: task.kanban_state != "done").write( + { + "sprint_id": ( + in_progress_sprints[0].id if in_progress_sprints else False + ), + "user_ids": False, + } + ) + + @api.depends("date_start", "date_option") + def _compute_date_end(self): + for record in self: + if record.date_option != "custom": + num, interval = record.date_option.split("_") + record.date_end = record.date_start + relativedelta( + **{interval: int(num)} + ) + else: + record.date_end = record.date_start + relativedelta(days=1) diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/models/project_task.py b/odoo-bringout-oca-project-project_scrum/project_scrum/models/project_task.py new file mode 100644 index 0000000..504d33b --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/models/project_task.py @@ -0,0 +1,30 @@ +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class ProjectTask(models.Model): + _inherit = "project.task" + + sprint_id = fields.Many2one( + comodel_name="project.sprint", + string="Sprint", + tracking=True, + domain="['|', ('project_id', '=', False), ('project_id', '=', project_id)]", + ) + + sprint_state = fields.Selection( + related="sprint_id.state", string="Sprint State", store=True + ) + + @api.constrains("user_ids") + def _check_user_ids(self): + for task in self: + if task.user_ids and task.sprint_id: + if not task.user_ids <= task.sprint_id.user_ids: + raise ValidationError( + _("The assignees must be part of the sprint.") + ) + + @api.onchange("sprint_id") + def _onchange_sprint_id(self): + self.user_ids = False diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_scrum/project_scrum/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..1d32788 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Binhex _`: + + * Adasat Torres de León + diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_scrum/project_scrum/readme/DESCRIPTION.rst new file mode 100644 index 0000000..e0b02e0 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This addon allow you to manage your project with scrum methodology. diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/readme/USAGE.rst b/odoo-bringout-oca-project-project_scrum/project_scrum/readme/USAGE.rst new file mode 100644 index 0000000..1fc9561 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/readme/USAGE.rst @@ -0,0 +1,6 @@ +This addon you can create and manage your project with scrum methodology. +For create a sprint you need to go to the project and click on the "Sprint" button. +You can create a sprint with a name, a start date, an end date, a project and a objetive. +You can create a sprint from configuration menu. +You can access the all options from the project options on kanban view or from project view form. +From the project options on kanban view you can access the sprint timeline view and the backlog view. diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/security/ir.model.access.csv b/odoo-bringout-oca-project-project_scrum/project_scrum/security/ir.model.access.csv new file mode 100644 index 0000000..a91b804 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_project_sprint_user,project.sprint.user,model_project_sprint,project.group_project_user,1,0,0,0 +access_project_sprint_admin,project.sprint.admin,model_project_sprint,project.group_project_manager,1,1,1,1 diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/static/description/icon.png b/odoo-bringout-oca-project-project_scrum/project_scrum/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_scrum/project_scrum/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/static/description/index.html b/odoo-bringout-oca-project-project_scrum/project_scrum/static/description/index.html new file mode 100644 index 0000000..7336e8a --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/static/description/index.html @@ -0,0 +1,438 @@ + + + + + +Project Scrum + + + +
+

Project Scrum

+ + +

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

+

This addon allow you to manage your project with scrum methodology.

+

Table of contents

+ +
+

Usage

+

This addon you can create and manage your project with scrum methodology. +For create a sprint you need to go to the project and click on the “Sprint” button. +You can create a sprint with a name, a start date, an end date, a project and a objetive. +You can create a sprint from configuration menu. +You can access the all options from the project options on kanban view or from project view form. +From the project options on kanban view you can access the sprint timeline view and the backlog 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

+
    +
  • Binhex
  • +
+
+
+

Contributors

+ +
+
+

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:

+

adasatorres

+

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/odoo-bringout-oca-project-project_scrum/project_scrum/tests/__init__.py b/odoo-bringout-oca-project-project_scrum/project_scrum/tests/__init__.py new file mode 100644 index 0000000..07cf6ba --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/tests/__init__.py @@ -0,0 +1,3 @@ +from . import test_project_sprint +from . import test_project_project +from . import test_project_task diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/tests/test_project_project.py b/odoo-bringout-oca-project-project_scrum/project_scrum/tests/test_project_project.py new file mode 100644 index 0000000..0ea945f --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/tests/test_project_project.py @@ -0,0 +1,82 @@ +from odoo.tests import TransactionCase + + +class TestProjectProject(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.user_demo = cls.env.ref("base.user_demo") + cls.user_admin = cls.env.ref("base.user_admin") + + cls.project = cls.env["project.project"].create( + {"name": "Test Project", "user_id": cls.user_demo.id} + ) + cls.sprint = cls.env["project.sprint"].create( + { + "name": "Test Sprint", + "user_ids": [(4, cls.user_demo.id)], + "project_id": cls.project.id, + "date_start": "2024-08-30", + "date_end": "2024-09-15", + } + ) + cls.task_1 = cls.env["project.task"].create( + { + "name": "Test Task 1", + "project_id": cls.project.id, + "user_ids": [(4, cls.user_demo.id)], + "sprint_id": cls.sprint.id, + } + ) + cls.task_2 = cls.env["project.task"].create( + { + "name": "Test Task 2", + "project_id": cls.project.id, + "user_ids": [(4, cls.user_demo.id)], + } + ) + + def test_backlog_count(self): + self.project._compute_backlog_count() + self.assertEqual(self.project.backlog_count, 1) + self.task_2.sprint_id = self.sprint.id + self.project._compute_backlog_count() + self.assertEqual(self.project.backlog_count, 0) + + def test_sprint_count(self): + self.project._compute_sprint_count() + self.assertEqual(self.project.sprint_count, 1) + + def test_action_sprints(self): + action = self.project.action_sprints() + self.assertEqual(action["res_model"], "project.sprint") + self.assertEqual( + action["domain"], + ["|", ("project_id", "=", self.project.id), ("project_id", "=", False)], + ) + self.assertEqual(action["context"], {"default_project_id": self.project.id}) + + def test_action_backlog(self): + action = self.project.action_backlog() + self.assertEqual(action["res_model"], "project.task") + self.assertEqual( + action["domain"], + [ + ("project_id", "=", self.project.id), + ("sprint_id", "=", False), + ("kanban_state", "!=", "done"), + ], + ) + self.assertEqual(action["context"], {"default_project_id": self.project.id}) + + def test_action_sprint_timeline(self): + action = self.project.action_sprint_timeline() + self.assertEqual(action["res_model"], "project.task") + self.assertEqual( + action["domain"], + [("project_id", "=", self.project.id), ("sprint_id", "!=", False)], + ) + self.assertEqual( + action["context"], + {"default_project_id": self.project.id, "no_create": True}, + ) diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/tests/test_project_sprint.py b/odoo-bringout-oca-project-project_scrum/project_scrum/tests/test_project_sprint.py new file mode 100644 index 0000000..818e392 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/tests/test_project_sprint.py @@ -0,0 +1,82 @@ +from freezegun import freeze_time + +from odoo.tests import TransactionCase + + +class TestProjectSprint(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.user_demo = cls.env.ref("base.user_demo") + cls.user_admin = cls.env.ref("base.user_admin") + cls.project = cls.env["project.project"].create( + {"name": "Test Project", "user_id": cls.user_demo.id} + ) + cls.sprint = cls.env["project.sprint"].create( + { + "name": "Test Sprint", + "user_ids": [(4, cls.user_demo.id)], + "project_id": cls.project.id, + "date_start": "2024-08-28", + "date_end": "2024-09-15", + } + ) + cls.task = cls.env["project.task"].create( + { + "name": "Test Task", + "project_id": cls.project.id, + "user_ids": [(4, cls.user_demo.id)], + "sprint_id": cls.sprint.id, + } + ) + + def test_state_project_sprint(self): + self.assertEqual(self.sprint.state, "draft") + self.sprint.action_start() + self.assertEqual(self.sprint.state, "in_progress") + self.sprint.action_done() + self.assertEqual(self.sprint.state, "done") + + @freeze_time("2024-08-30") + def test_check_project_update(self): + self.sprint_2 = self.env["project.sprint"].create( + { + "name": "Test Sprint 2", + "user_ids": [(4, self.user_demo.id)], + "project_id": self.project.id, + "date_start": "2024-08-10", + "date_end": "2024-08-28", + "state": "in_progress", + } + ) + self.sprint.state = "draft" + self.sprint.cron_update_sprint_state() + self.assertEqual(self.sprint.state, "in_progress") + self.assertEqual(self.sprint_2.state, "done") + + def test_task_count(self): + self.assertEqual(self.sprint.tasks_count, 1) + self.task.sprint_id = False + self.sprint._compute_tasks_count() + self.assertEqual(self.sprint.tasks_count, 0) + + def test_compute_end_date(self): + self.assertEqual(self.sprint.date_end.strftime("%Y-%m-%d"), "2024-09-15") + self.sprint.date_option = "1_months" + self.sprint._compute_date_end() + self.assertEqual(self.sprint.date_end.strftime("%Y-%m-%d"), "2024-09-28") + self.sprint.date_option = "custom" + self.sprint._compute_date_end() + self.assertEqual(self.sprint.date_end.strftime("%Y-%m-%d"), "2024-08-29") + + def test_action_task(self): + action = self.sprint.action_tasks() + self.assertEqual(action["res_model"], "project.task") + self.assertEqual(action["domain"], [("sprint_id", "=", self.sprint.id)]) + self.assertEqual( + action["context"], + { + "default_project_id": self.project.id, + "default_sprint_id": self.sprint.id, + }, + ) diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/tests/test_project_task.py b/odoo-bringout-oca-project-project_scrum/project_scrum/tests/test_project_task.py new file mode 100644 index 0000000..5c0403a --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/tests/test_project_task.py @@ -0,0 +1,38 @@ +from odoo.exceptions import ValidationError +from odoo.tests import TransactionCase + + +class TestProjectTask(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.user_demo = cls.env.ref("base.user_demo") + cls.user_admin = cls.env.ref("base.user_admin") + cls.project = cls.env["project.project"].create( + {"name": "Test Project", "user_id": cls.user_demo.id} + ) + cls.sprint = cls.env["project.sprint"].create( + { + "name": "Test Sprint", + "user_ids": [(4, cls.user_demo.id)], + "project_id": cls.project.id, + "date_start": "2021-01-01", + "date_end": "2021-01-15", + } + ) + cls.task = cls.env["project.task"].create( + { + "name": "Test Task", + "project_id": cls.project.id, + "user_ids": [(4, cls.user_demo.id)], + "sprint_id": cls.sprint.id, + } + ) + + def test_check_user_ids(self): + with self.assertRaises(ValidationError): + self.task.user_ids = [(4, self.user_admin.id)] + + def test_onchange_sprint_id(self): + self.task._onchange_sprint_id() + self.assertEqual(len(self.task.user_ids), 0) diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/views/project_sprint_views.xml b/odoo-bringout-oca-project-project_scrum/project_scrum/views/project_sprint_views.xml new file mode 100644 index 0000000..126f293 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/views/project_sprint_views.xml @@ -0,0 +1,163 @@ + + + + project.sprint.view.form + project.sprint + +
+
+
+ +
+ +
+
+
+ + + +
+
+
+
+ + project.sprint.view.tree + project.sprint + + + + + + + + + + + + project.sprint.view.search + project.sprint + + + + + + + + + + + + + + + + + + + + + + project.sprint + timeline + + + + +
+ + + +
+
+
+
+
+
+ + Sprints + project.sprint + timeline,tree,form + + +
diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/views/project_task_views.xml b/odoo-bringout-oca-project-project_scrum/project_scrum/views/project_task_views.xml new file mode 100644 index 0000000..1247a7d --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/views/project_task_views.xml @@ -0,0 +1,59 @@ + + + + project.task.inherit.form.view + project.task + + + + + + + + + project.task.inherit.tree.view + project.task + + + + + + + + + project.task.inherit.search.view + project.task + + + + + + + + + + + + + project.task + timeline + + + + sprint_id + False + False + + + + + + diff --git a/odoo-bringout-oca-project-project_scrum/project_scrum/views/project_views.xml b/odoo-bringout-oca-project-project_scrum/project_scrum/views/project_views.xml new file mode 100644 index 0000000..d8ec756 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/project_scrum/views/project_views.xml @@ -0,0 +1,67 @@ + + + + project.project.view.form.inherit + project.project + + + + + + + + + + project.project.view.kanban.inherit + project.project + + + +
+ Sprints +
+
+ Backlog +
+
+ + + +
+
+
diff --git a/odoo-bringout-oca-project-project_scrum/pyproject.toml b/odoo-bringout-oca-project-project_scrum/pyproject.toml new file mode 100644 index 0000000..53675c3 --- /dev/null +++ b/odoo-bringout-oca-project-project_scrum/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_scrum" +version = "16.0.0" +description = "Project Scrum - This addon allow use the scrum methodology in projects" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-project-project_timeline>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_scrum"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_sequence/README.md b/odoo-bringout-oca-project-project_sequence/README.md new file mode 100644 index 0000000..e4b49a2 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/README.md @@ -0,0 +1,46 @@ +# Project Sequence + +Odoo addon: project_sequence + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_sequence +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Sequence +- **Version**: 16.0.1.0.1 +- **Category**: Services/Project +- **License**: LGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_sequence`. + +## License + +This package maintains the original LGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_sequence/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_sequence/doc/ARCHITECTURE.md new file mode 100644 index 0000000..3d71639 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_sequence Module - project_sequence + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_sequence/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_sequence/doc/CONFIGURATION.md new file mode 100644 index 0000000..2b78144 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_sequence. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_sequence/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_sequence/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_sequence/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_sequence/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_sequence/doc/FAQ.md b/odoo-bringout-oca-project-project_sequence/doc/FAQ.md new file mode 100644 index 0000000..975bcaf --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_sequence or install in UI. diff --git a/odoo-bringout-oca-project-project_sequence/doc/INSTALL.md b/odoo-bringout-oca-project-project_sequence/doc/INSTALL.md new file mode 100644 index 0000000..e670f96 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_sequence" +# or +uv pip install odoo-bringout-oca-project-project_sequence" +``` diff --git a/odoo-bringout-oca-project-project_sequence/doc/MODELS.md b/odoo-bringout-oca-project-project_sequence/doc/MODELS.md new file mode 100644 index 0000000..4b2013c --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_sequence. + +```mermaid +classDiagram + class project_project +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_sequence/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_sequence/doc/OVERVIEW.md new file mode 100644 index 0000000..683815c --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_sequence. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_sequence +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_sequence/doc/REPORTS.md b/odoo-bringout-oca-project-project_sequence/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_sequence/doc/SECURITY.md b/odoo-bringout-oca-project-project_sequence/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_sequence/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_sequence/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_sequence/doc/USAGE.md b/odoo-bringout-oca-project-project_sequence/doc/USAGE.md new file mode 100644 index 0000000..e78cc9e --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_sequence +``` diff --git a/odoo-bringout-oca-project-project_sequence/doc/WIZARDS.md b/odoo-bringout-oca-project-project_sequence/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/README.rst b/odoo-bringout-oca-project-project_sequence/project_sequence/README.rst new file mode 100644 index 0000000..c5ba24e --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/README.rst @@ -0,0 +1,137 @@ +================ +Project Sequence +================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:caf8dec5efbc49cae19c67dce6e7a6405850468cbc9ad9e642dc6209e1b6bbfb + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github + :target: https://github.com/OCA/project/tree/16.0/project_sequence + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_sequence + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +.. This file must be max 2-3 paragraphs, and is required. + It should explain *why* this module exists. + +Add a sequence field to projects, filled automatically and add a code sequence filter in tree view project. + +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To change the project display name pattern, follow these steps: + +#. Go to *Project > Configuration > Settings*. +#. Edit the *Project display name pattern* field. + + The default format is ``%(sequence_code)s - %(name)s``. You can use those + same placeholders to customize the pattern. + +Usage +===== + +.. This file must be present. It contains the usage instructions + for end-users. As all other rst files included in the README, + it MUST NOT contain reStructuredText sections + only body text (paragraphs, lists, tables, etc). Should you need + a more elaborate structure to explain the addon, please create a + Sphinx documentation (which may include this file as a "quick start" + section). + +To use this module, you need to: + +#. Go to the project icon. +#. Click the button "create" to create a new project +#. Fill in the field Project name and click the "create" button +#. Now in the Kanban view see the project name when you are created +#. Repeat this operation creating another project without the name. + +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 +~~~~~~~ + +* Moduon + +Contributors +~~~~~~~~~~~~ + +* Andrea Cattalani (`Moduon `__) +* Jairo Llopis (`Moduon `__) +* Nils Coenen + +Other credits +~~~~~~~~~~~~~ + +.. This file is optional and contains additional credits, other than + authors, contributors, and maintainers. + +The development of this module has been financially supported by: + +* Moduon + +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-yajo| image:: https://github.com/yajo.png?size=40px + :target: https://github.com/yajo + :alt: yajo +.. |maintainer-anddago78| image:: https://github.com/anddago78.png?size=40px + :target: https://github.com/anddago78 + :alt: anddago78 + +Current `maintainers `__: + +|maintainer-yajo| |maintainer-anddago78| + +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/odoo-bringout-oca-project-project_sequence/project_sequence/__init__.py b/odoo-bringout-oca-project-project_sequence/project_sequence/__init__.py new file mode 100644 index 0000000..aee8895 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizards diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/__manifest__.py b/odoo-bringout-oca-project-project_sequence/project_sequence/__manifest__.py new file mode 100644 index 0000000..a13cb04 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2023 Moduon Team S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0) + +{ + "name": "Project Sequence", + "summary": "Add a sequence field to projects, filled automatically", + "version": "16.0.1.0.1", + "development_status": "Alpha", + "category": "Services/Project", + "website": "https://github.com/OCA/project", + "author": "Moduon, Odoo Community Association (OCA)", + "maintainers": ["yajo", "anddago78"], + "license": "LGPL-3", + "application": False, + "installable": True, + "depends": ["project"], + "data": [ + "data/ir_sequence.xml", + "views/project_project.xml", + "wizards/res_config_settings_view.xml", + ], +} diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/data/ir_sequence.xml b/odoo-bringout-oca-project-project_sequence/project_sequence/data/ir_sequence.xml new file mode 100644 index 0000000..935d009 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/data/ir_sequence.xml @@ -0,0 +1,13 @@ + + + + + Project sequence + project.sequence + %(range_y)s- + True + 5 + + + diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/bs.po b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/bs.po new file mode 100644 index 0000000..0ba92e3 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/bs.po @@ -0,0 +1,68 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_sequence +#: model:ir.model,name:project_sequence.model_res_config_settings +msgid "Config Settings" +msgstr "Postavke" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__name +msgid "Name" +msgstr "Naziv:" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_project_project__name +msgid "" +"Name of your project. It can be anything you want e.g. the name of a " +"customer or a service." +msgstr "" + +#. module: project_sequence +#: model:ir.model,name:project_sequence.model_project_project +msgid "Project" +msgstr "Projekat" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "Project Display Name Pattern" +msgstr "Obrazac imena prikaza projekta" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_name_required +msgid "Project name is required" +msgstr "Ime projekta je obavezno" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__sequence_code +msgid "Sequence Code" +msgstr "Šifra sekvence" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_sequence_code_unique +msgid "Sequence code must be unique" +msgstr "Kod sekvence mora biti jedinstven" + +#. module: project_sequence +#: model_terms:ir.ui.view,arch_db:project_sequence.project_sequence_form_view +msgid "Sequence code:" +msgstr "Kod sekvence:" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "" +"Use %(sequence_code)s and %(name)s to include the sequence code and the name" +" of the project in the display name." +msgstr "" diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/de.po b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/de.po new file mode 100644 index 0000000..b594d36 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/de.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-08-08 15:08+0000\n" +"Last-Translator: Nils Coenen \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 4.17\n" + +#. module: project_sequence +#: model:ir.model,name:project_sequence.model_res_config_settings +msgid "Config Settings" +msgstr "Konfigurationseinstellungen" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__name +msgid "Name" +msgstr "Name" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_project_project__name +msgid "" +"Name of your project. It can be anything you want e.g. the name of a " +"customer or a service." +msgstr "" +"Name Ihres Projekts. Es kann alles sein, was Sie wollen, z.B. der Name eines " +"Kunden oder einer Dienstleistung." + +#. module: project_sequence +#: model:ir.model,name:project_sequence.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "Project Display Name Pattern" +msgstr "Muster für den Projektanzeigenamen" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_name_required +msgid "Project name is required" +msgstr "Projektname ist erforderlich" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__sequence_code +msgid "Sequence Code" +msgstr "Sequenzcode" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_sequence_code_unique +msgid "Sequence code must be unique" +msgstr "Der Sequenzcode muss eindeutig sein" + +#. module: project_sequence +#: model_terms:ir.ui.view,arch_db:project_sequence.project_sequence_form_view +msgid "Sequence code:" +msgstr "Sequenzcode:" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "" +"Use %(sequence_code)s and %(name)s to include the sequence code and the name " +"of the project in the display name." +msgstr "" +"Verwenden Sie %(sequence_code)s und %(name)s, um den Sequenzcode und den " +"Namen des Projekts in den Anzeigenamen aufzunehmen." diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/es.po b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/es.po new file mode 100644 index 0000000..f370257 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/es.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-04-10 10:29+0000\n" +"PO-Revision-Date: 2023-09-03 13:36+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: project_sequence +#: model:ir.model,name:project_sequence.model_res_config_settings +msgid "Config Settings" +msgstr "Configuración de Ajustes" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__name +msgid "Name" +msgstr "Nombre" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_project_project__name +msgid "" +"Name of your project. It can be anything you want e.g. the name of a " +"customer or a service." +msgstr "" +"Nombre de su proyecto. Puede ser cualquier cosa, por ejemplo, el nombre de " +"un cliente o de un servicio." + +#. module: project_sequence +#: model:ir.model,name:project_sequence.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "Project Display Name Pattern" +msgstr "Patrón de nombre para mostrar del proyecto" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_name_required +msgid "Project name is required" +msgstr "El nombre del proyecto es obligatorio" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__sequence_code +msgid "Sequence Code" +msgstr "Código secuencial" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_sequence_code_unique +msgid "Sequence code must be unique" +msgstr "El código secuencial debe ser único" + +#. module: project_sequence +#: model_terms:ir.ui.view,arch_db:project_sequence.project_sequence_form_view +msgid "Sequence code:" +msgstr "Código secuencial:" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "" +"Use %(sequence_code)s and %(name)s to include the sequence code and the name " +"of the project in the display name." +msgstr "" +"Utilice %(sequence_code)s y %(name)s para incluir el código de secuencia y " +"el nombre del proyecto en el nombre de visualización." + +#~ msgid "Display Name" +#~ msgstr "Nombre" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificación el" + +#~ msgid "Code" +#~ msgstr "Código" diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/it.po b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/it.po new file mode 100644 index 0000000..96244d8 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/it.po @@ -0,0 +1,78 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-31 10:11+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 4.17\n" + +#. module: project_sequence +#: model:ir.model,name:project_sequence.model_res_config_settings +msgid "Config Settings" +msgstr "Impostazioni configurazione" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__name +msgid "Name" +msgstr "Nome" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_project_project__name +msgid "" +"Name of your project. It can be anything you want e.g. the name of a " +"customer or a service." +msgstr "" +"Nome del progetto. Può essere qualsiasi cosa es. il nome di un cliente o di " +"un servizio." + +#. module: project_sequence +#: model:ir.model,name:project_sequence.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "Project Display Name Pattern" +msgstr "Nome visualizzato schema progetto" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_name_required +msgid "Project name is required" +msgstr "È richiesto il nome progetto" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__sequence_code +msgid "Sequence Code" +msgstr "Codice sequenza" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_sequence_code_unique +msgid "Sequence code must be unique" +msgstr "Il codice sequenza deve essere univoco" + +#. module: project_sequence +#: model_terms:ir.ui.view,arch_db:project_sequence.project_sequence_form_view +msgid "Sequence code:" +msgstr "Codice sequenza:" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "" +"Use %(sequence_code)s and %(name)s to include the sequence code and the name " +"of the project in the display name." +msgstr "" +"Utilizzare %(sequence_code)s e %(name)s per includere il codice sequenza e " +"il nome del progetto nel nome visualizzato." + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/nl.po b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/nl.po new file mode 100644 index 0000000..45ecd25 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/nl.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-09 02:52+0000\n" +"Last-Translator: \"Jan Tapper [Onestein]\" \n" +"Language-Team: none\n" +"Language: nl\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_sequence +#: model:ir.model,name:project_sequence.model_res_config_settings +msgid "Config Settings" +msgstr "Configuratie-instellingen" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__name +msgid "Name" +msgstr "Naam" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_project_project__name +msgid "" +"Name of your project. It can be anything you want e.g. the name of a " +"customer or a service." +msgstr "" +"Naam van uw project. Het kan alles zijn wat je wilt, b.v. de naam van een " +"klant of dienst." + +#. module: project_sequence +#: model:ir.model,name:project_sequence.model_project_project +msgid "Project" +msgstr "" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "Project Display Name Pattern" +msgstr "Patroon weergavenaam project" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_name_required +msgid "Project name is required" +msgstr "Projectnaam is vereist" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__sequence_code +msgid "Sequence Code" +msgstr "Sequentiecode" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_sequence_code_unique +msgid "Sequence code must be unique" +msgstr "De sequentiecode moet uniek zijn" + +#. module: project_sequence +#: model_terms:ir.ui.view,arch_db:project_sequence.project_sequence_form_view +msgid "Sequence code:" +msgstr "Sequentiecode:" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "" +"Use %(sequence_code)s and %(name)s to include the sequence code and the name " +"of the project in the display name." +msgstr "" +"Gebruik %(sequence_code)s en %(name)s om de sequentiecode en de naam van het " +"project op te nemen in de weergavenaam." diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/project_sequence.pot b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/project_sequence.pot new file mode 100644 index 0000000..f551dcc --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/i18n/project_sequence.pot @@ -0,0 +1,68 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_sequence +#: model:ir.model,name:project_sequence.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__name +msgid "Name" +msgstr "" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_project_project__name +msgid "" +"Name of your project. It can be anything you want e.g. the name of a " +"customer or a service." +msgstr "" + +#. module: project_sequence +#: model:ir.model,name:project_sequence.model_project_project +msgid "Project" +msgstr "" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "Project Display Name Pattern" +msgstr "" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_name_required +msgid "Project name is required" +msgstr "" + +#. module: project_sequence +#: model:ir.model.fields,field_description:project_sequence.field_project_project__sequence_code +msgid "Sequence Code" +msgstr "" + +#. module: project_sequence +#: model:ir.model.constraint,message:project_sequence.constraint_project_project_sequence_code_unique +msgid "Sequence code must be unique" +msgstr "" + +#. module: project_sequence +#: model_terms:ir.ui.view,arch_db:project_sequence.project_sequence_form_view +msgid "Sequence code:" +msgstr "" + +#. module: project_sequence +#: model:ir.model.fields,help:project_sequence.field_res_config_settings__project_display_name_pattern +msgid "" +"Use %(sequence_code)s and %(name)s to include the sequence code and the name" +" of the project in the display name." +msgstr "" diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/models/__init__.py b/odoo-bringout-oca-project-project_sequence/project_sequence/models/__init__.py new file mode 100644 index 0000000..56545d0 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/models/__init__.py @@ -0,0 +1 @@ +from . import project_project diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/models/project_project.py b/odoo-bringout-oca-project-project_sequence/project_sequence/models/project_project.py new file mode 100644 index 0000000..ddd5b5a --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/models/project_project.py @@ -0,0 +1,98 @@ +# Copyright 2023 Moduon Team S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0) + + +from odoo import api, fields, models + + +class ProjectProject(models.Model): + _inherit = "project.project" + _sql_constraints = [ + # Ensure compatibility with other modules that always expect a value in name + ("name_required", "CHECK(name IS NOT NULL)", "Project name is required"), + ( + "sequence_code_unique", + "UNIQUE(sequence_code)", + "Sequence code must be unique", + ), + ] + + sequence_code = fields.Char( + copy=False, + readonly=True, + ) + name = fields.Char( + # We actually require it with the SQL constraint, but it is disabled + # here to let users create/write projects without name, and let this module + # add a default name if needed + required=False, + ) + + def _sync_analytic_account_name(self): + """Set analytic account name equal to project's display name.""" + for rec in self: + if not rec.analytic_account_id: + continue + rec.analytic_account_id.name = rec.display_name + + def name_get(self): + """Prefix name with sequence code if they are different.""" + old_result = super().name_get() + result = [] + sequence_pattern = ( + self.env["ir.config_parameter"] + .sudo() + .get_param( + "project_sequence.display_name_pattern", + default="%(sequence_code)s - %(name)s", + ) + ) + for id_, name in old_result: + project = self.browse(id_) + if project.sequence_code and project.sequence_code != name: + name = sequence_pattern % { + "name": name, + "sequence_code": project.sequence_code, + } + result.append((id_, name)) + return result + + @api.model + def name_search(self, name="", args=None, operator="ilike", limit=100): + """Allow searching by sequence code by default.""" + # Do not add any domain when user just clicked on search widget + if not (name == "" and operator == "ilike"): + # The dangling | is needed to combine with the domain added by super() + args = (args or []) + ["|", ("sequence_code", operator, name)] + return super().name_search(name, args, operator, limit) + + @api.model_create_multi + def create(self, vals_list): + """Apply sequence code and a default name if not set.""" + # It is important to set sequence_code before calling super() because + # other modules such as hr_timesheet expect the name to always have a value + for vals in vals_list: + if not vals.get("sequence_code", False): + vals["sequence_code"] = self.env["ir.sequence"].next_by_code( + "project.sequence" + ) + if not vals.get("name"): + vals["name"] = vals["sequence_code"] + res = super().create(vals_list) + # The analytic account is created with just the project name, but + # it is more useful to let it contain the project sequence too + res._sync_analytic_account_name() + return res + + def write(self, vals): + """Sync name and analytic account name when name is changed.""" + # If name isn't changing, nothing special to do + if "name" not in vals and "sequence_name" not in vals: + return super().write(vals) + # When changing name, we need to update the analytic account name too + for one in self: + sequence_code = vals.get("sequence_code", one.sequence_code) + name = vals.get("name") or sequence_code + super().write(dict(vals, name=name)) + self._sync_analytic_account_name() + return True diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/CONFIGURE.rst new file mode 100644 index 0000000..544ea08 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/CONFIGURE.rst @@ -0,0 +1,7 @@ +To change the project display name pattern, follow these steps: + +#. Go to *Project > Configuration > Settings*. +#. Edit the *Project display name pattern* field. + + The default format is ``%(sequence_code)s - %(name)s``. You can use those + same placeholders to customize the pattern. diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..c31e1eb --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Andrea Cattalani (`Moduon `__) +* Jairo Llopis (`Moduon `__) +* Nils Coenen diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/readme/CREDITS.rst b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/CREDITS.rst new file mode 100644 index 0000000..3fed1f0 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/CREDITS.rst @@ -0,0 +1,6 @@ +.. This file is optional and contains additional credits, other than + authors, contributors, and maintainers. + +The development of this module has been financially supported by: + +* Moduon diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/DESCRIPTION.rst new file mode 100644 index 0000000..2ff6549 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +.. This file must be max 2-3 paragraphs, and is required. + It should explain *why* this module exists. + +Add a sequence field to projects, filled automatically and add a code sequence filter in tree view project. diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/readme/USAGE.rst b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/USAGE.rst new file mode 100644 index 0000000..9a8a277 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/readme/USAGE.rst @@ -0,0 +1,15 @@ +.. This file must be present. It contains the usage instructions + for end-users. As all other rst files included in the README, + it MUST NOT contain reStructuredText sections + only body text (paragraphs, lists, tables, etc). Should you need + a more elaborate structure to explain the addon, please create a + Sphinx documentation (which may include this file as a "quick start" + section). + +To use this module, you need to: + +#. Go to the project icon. +#. Click the button "create" to create a new project +#. Fill in the field Project name and click the "create" button +#. Now in the Kanban view see the project name when you are created +#. Repeat this operation creating another project without the name. diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/static/description/icon.png b/odoo-bringout-oca-project-project_sequence/project_sequence/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_sequence/project_sequence/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/static/description/index.html b/odoo-bringout-oca-project-project_sequence/project_sequence/static/description/index.html new file mode 100644 index 0000000..eacc1ea --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/static/description/index.html @@ -0,0 +1,477 @@ + + + + + +Project Sequence + + + +
+

Project Sequence

+ + +

Alpha License: LGPL-3 OCA/project Translate me on Weblate Try me on Runboat

+ +

Add a sequence field to projects, filled automatically and add a code sequence filter in tree view project.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Configuration

+

To change the project display name pattern, follow these steps:

+
    +
  1. Go to Project > Configuration > Settings.

    +
  2. +
  3. Edit the Project display name pattern field.

    +

    The default format is %(sequence_code)s - %(name)s. You can use those +same placeholders to customize the pattern.

    +
  4. +
+
+
+

Usage

+ +

To use this module, you need to:

+
    +
  1. Go to the project icon.
  2. +
  3. Click the button “create” to create a new project
  4. +
  5. Fill in the field Project name and click the “create” button
  6. +
  7. Now in the Kanban view see the project name when you are created
  8. +
  9. Repeat this operation creating another project without the name.
  10. +
+
+
+

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

+
    +
  • Moduon
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+ +

The development of this module has been financially supported by:

+
    +
  • Moduon
  • +
+
+
+

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 maintainers:

+

yajo anddago78

+

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/odoo-bringout-oca-project-project_sequence/project_sequence/tests/__init__.py b/odoo-bringout-oca-project-project_sequence/project_sequence/tests/__init__.py new file mode 100644 index 0000000..fd6799d --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/tests/__init__.py @@ -0,0 +1 @@ +from . import test_project_sequence diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/tests/test_project_sequence.py b/odoo-bringout-oca-project-project_sequence/project_sequence/tests/test_project_sequence.py new file mode 100644 index 0000000..5eaa040 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/tests/test_project_sequence.py @@ -0,0 +1,225 @@ +# Copyright 2023 Moduon Team S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0) +from freezegun import freeze_time +from psycopg2 import IntegrityError + +from odoo import fields +from odoo.tests.common import Form, TransactionCase, new_test_user, users +from odoo.tools import mute_logger + + +@freeze_time("2023-01-01 12:00:00") +class TestProjectSequence(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + new_test_user( + cls.env, + "manager", + "project.group_project_manager,analytic.group_analytic_accounting", + ) + cls.pjr_seq = cls.env.ref("project_sequence.seq_project_sequence") + cls.pjr_seq.date_range_ids.unlink() + default_plan_id = ( + cls.env["account.analytic.plan"] + .sudo() + .search( + [ + "|", + ("company_id", "=", False), + ("company_id", "=", cls.env.company.id), + ], + limit=1, + ) + ) + cls.analytic_account = cls.env["account.analytic.account"].create( + { + "name": "aaa", + "plan_id": default_plan_id.id, + "company_id": cls.env.company.id, + "create_uid": cls.env.uid, + "write_uid": cls.env.uid, + "create_date": fields.Datetime.now(), + "write_date": fields.Datetime.now(), + } + ) + + def setUp(self): + super(TestProjectSequence, self).setUp() + self.pjr_seq._get_current_sequence().number_next = 11 + + @users("manager") + def test_sequence_after_creation(self): + """Sequence is applied only after project creation.""" + prj_f = Form(self.env["project.project"]) + self.assertFalse(prj_f.name) + self.assertFalse(prj_f.sequence_code) + proj = prj_f.save() + self.assertTrue(proj.sequence_code) + self.assertEqual(proj.name, proj.sequence_code) + self.assertEqual(proj.sequence_code, "23-00011") + self.assertEqual(proj.display_name, "23-00011") + + def test_analytic_account_after_creation_no_name(self): + """Project's analytic account is named like project's default name.""" + proj = self.env["project.project"].create( + {"analytic_account_id": self.analytic_account.id} + ) + self.assertEqual(proj.sequence_code, "23-00011") + self.assertEqual(proj.name, "23-00011") + self.assertEqual(proj.display_name, "23-00011") + self.assertEqual(proj.analytic_account_id.name, "23-00011") + + def test_analytic_account_after_creation_named(self): + """Project's analytic account is named like project's display name.""" + proj = self.env["project.project"].create( + {"name": "whatever", "analytic_account_id": self.analytic_account.id} + ) + self.assertEqual(proj.sequence_code, "23-00011") + self.assertEqual(proj.name, "whatever") + self.assertEqual(proj.display_name, "23-00011 - whatever") + self.assertEqual(proj.analytic_account_id.name, "23-00011 - whatever") + + @users("manager") + def test_sequence_copied_to_name_if_emptied(self): + """Sequence is copied to project name if user removes it.""" + proj = self.env["project.project"].create( + {"name": "whatever", "analytic_account_id": self.analytic_account.id} + ) + self.assertEqual(proj.name, "whatever") + self.assertEqual(proj.sequence_code, "23-00011") + self.assertEqual(proj.display_name, "23-00011 - whatever") + self.assertEqual(proj.analytic_account_id.name, "23-00011 - whatever") + with Form(proj) as prj_f: + prj_f.name = False + self.assertEqual(proj.name, "23-00011") + self.assertEqual(proj.sequence_code, "23-00011") + self.assertEqual(proj.display_name, "23-00011") + self.assertEqual(proj.analytic_account_id.name, "23-00011") + + @users("manager") + def test_sequence_not_copied_to_another_project(self): + """Sequence is not duplicated to another project.""" + proj1 = self.env["project.project"].create({"name": "whatever"}) + proj2 = proj1.copy() + self.assertEqual(proj1.sequence_code, "23-00011") + self.assertEqual(proj2.sequence_code, "23-00012") + + @users("manager") + @mute_logger("odoo.sql_db") + def test_sequence_unique(self): + """Sequence cannot have duplicates.""" + proj1 = self.env["project.project"].create({"name": "one"}) + self.assertEqual(proj1.sequence_code, "23-00011") + self.pjr_seq._get_current_sequence().number_next = 11 + with self.assertRaises(IntegrityError), self.env.cr.savepoint(): + proj1 = self.env["project.project"].create({"name": "two"}) + + @users("manager") + def test_project_without_sequence(self): + """Preexisting projects had no sequence, and they should display fine.""" + proj1 = self.env["project.project"].search( + [ + ("sequence_code", "=", False), + ], + limit=1, + ) + proj1.name = "one" + self.assertFalse(proj1.sequence_code) + self.assertEqual(proj1.display_name, "one") + # Make sure that the sequence is not increased + proj2 = self.env["project.project"].create({"name": "two"}) + self.assertEqual(proj2.sequence_code, "23-00011") + self.assertEqual(proj2.display_name, "23-00011 - two") + + @users("manager") + def test_project_with_empty_sequence(self): + """Sequence is applied when creating project with an empty sequence""" + proj1 = self.env["project.project"].create( + {"name": "whatever", "sequence_code": ""} + ) + self.assertEqual(proj1.sequence_code, "23-00011") + self.assertEqual(proj1.display_name, "23-00011 - whatever") + # Sequence is applied when creating project with sequence in False + proj2 = self.env["project.project"].create( + {"name": "whatever", "sequence_code": False} + ) + self.assertEqual(proj2.sequence_code, "23-00012") + self.assertEqual(proj2.display_name, "23-00012 - whatever") + + def test_custom_pattern(self): + """Display name pattern can be customized.""" + self.env["ir.config_parameter"].set_param( + "project_sequence.display_name_pattern", "%(name)s/%(sequence_code)s" + ) + proj = self.env["project.project"].create({"name": "one"}) + self.assertEqual(proj.display_name, "one/23-00011") + self.assertEqual(proj.sequence_code, "23-00011") + self.env["ir.config_parameter"].set_param( + "project_sequence.display_name_pattern", "%(name)s" + ) + proj = self.env["project.project"].create({"name": "two"}) + self.assertEqual(proj.display_name, "two") + self.assertEqual(proj.sequence_code, "23-00012") + self.env["ir.config_parameter"].set_param( + "project_sequence.display_name_pattern", "%(sequence_code)s" + ) + proj = self.env["project.project"].create({"name": "three"}) + self.assertEqual(proj.display_name, "23-00013") + self.assertEqual(proj.sequence_code, "23-00013") + + def test_sync_analytic_account_name(self): + """Set analytic account name equal to project's display name.""" + proj = self.env["project.project"].create({"name": "one"}) + default_plan_id = ( + self.env["account.analytic.plan"] + .sudo() + .search( + [ + "|", + ("company_id", "=", False), + ("company_id", "=", self.env.company.id), + ], + limit=1, + ) + ) + analytic_account = self.env["account.analytic.account"].create( + { + "name": proj.display_name, + "plan_id": default_plan_id.id, + "company_id": self.env.company.id, + "create_uid": self.env.uid, + "write_uid": self.env.uid, + "create_date": fields.Datetime.now(), + "write_date": fields.Datetime.now(), + } + ) + proj.analytic_account_id = analytic_account + proj._sync_analytic_account_name() + self.assertEqual(proj.analytic_account_id.name, proj.display_name) + + # Test when analytic_account_id is not set + proj.analytic_account_id = False + proj._sync_analytic_account_name() + self.assertTrue(True) # Placeholder assertion to ensure the code execution + + def test_name_search(self): + """Allow searching by sequence code by default.""" + proj1 = self.env["project.project"].create({"name": "one"}) + self.assertEqual(proj1.sequence_code, "23-00011") + proj2 = self.env["project.project"].create({"name": "two"}) + self.assertEqual(proj2.sequence_code, "23-00012") + proj3 = self.env["project.project"].create({"name": "three"}) + self.assertEqual(proj3.sequence_code, "23-00013") + + # Search by name + results = self.env["project.project"].name_search("two") + self.assertIn((proj2.id, "23-00012 - two"), results) + self.assertNotIn((proj1.id, "23-00011 - one"), results) + self.assertNotIn((proj3.id, "23-00013 - three"), results) + + # Search by sequence code + results = self.env["project.project"].name_search("23-00012") + self.assertIn((proj2.id, "23-00012 - two"), results) + self.assertNotIn((proj1.id, "23-00011 - one"), results) + self.assertNotIn((proj3.id, "23-00013 - three"), results) diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/views/project_project.xml b/odoo-bringout-oca-project-project_sequence/project_sequence/views/project_project.xml new file mode 100644 index 0000000..0b8f8ae --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/views/project_project.xml @@ -0,0 +1,68 @@ + + + + + Project.sequence.project.edit + project.project + + + +
+
+
+
+
+
+
+ + Project_sequence_project_view + project.project + + + + + + + + + Project.sequence.project.kanban + project.project + + + + + + + 1 + + + + + + + + Project.sequence.project.view.search + project.project + + + + ['|', ('name', 'ilike', self), ('sequence_code', 'ilike', self)] + + + +
diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/wizards/__init__.py b/odoo-bringout-oca-project-project_sequence/project_sequence/wizards/__init__.py new file mode 100644 index 0000000..0deb68c --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/wizards/__init__.py @@ -0,0 +1 @@ +from . import res_config_settings diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/wizards/res_config_settings.py b/odoo-bringout-oca-project-project_sequence/project_sequence/wizards/res_config_settings.py new file mode 100644 index 0000000..172c315 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/wizards/res_config_settings.py @@ -0,0 +1,18 @@ +# Copyright 2023 Moduon Team S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0) + + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + project_display_name_pattern = fields.Char( + config_parameter="project_sequence.display_name_pattern", + default="%(sequence_code)s - %(name)s", + help=( + "Use %(sequence_code)s and %(name)s to include the sequence code " + "and the name of the project in the display name." + ), + ) diff --git a/odoo-bringout-oca-project-project_sequence/project_sequence/wizards/res_config_settings_view.xml b/odoo-bringout-oca-project-project_sequence/project_sequence/wizards/res_config_settings_view.xml new file mode 100644 index 0000000..ee0f33a --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/project_sequence/wizards/res_config_settings_view.xml @@ -0,0 +1,23 @@ + + + + + Configure project display name + res.config.settings + + + +
+
+
+
+
+
+
+
diff --git a/odoo-bringout-oca-project-project_sequence/pyproject.toml b/odoo-bringout-oca-project-project_sequence/pyproject.toml new file mode 100644 index 0000000..5a907d9 --- /dev/null +++ b/odoo-bringout-oca-project-project_sequence/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_sequence" +version = "16.0.0" +description = "Project Sequence - Add a sequence field to projects, filled automatically" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_sequence"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_stage_extra_info/README.md b/odoo-bringout-oca-project-project_stage_extra_info/README.md new file mode 100644 index 0000000..657aa39 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/README.md @@ -0,0 +1,46 @@ +# Project Stage Extra Info + +Odoo addon: project_stage_extra_info + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_stage_extra_info +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Stage Extra Info +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_stage_extra_info`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/ARCHITECTURE.md new file mode 100644 index 0000000..fdb5b46 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_stage_extra_info Module - project_stage_extra_info + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/CONFIGURATION.md new file mode 100644 index 0000000..bad3d90 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_stage_extra_info. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/FAQ.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/FAQ.md new file mode 100644 index 0000000..5e9ddaa --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_stage_extra_info or install in UI. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/INSTALL.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/INSTALL.md new file mode 100644 index 0000000..9bbbb10 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_stage_extra_info" +# or +uv pip install odoo-bringout-oca-project-project_stage_extra_info" +``` diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/MODELS.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/MODELS.md new file mode 100644 index 0000000..c215b05 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_stage_extra_info. + +```mermaid +classDiagram + class project_project_stage +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/OVERVIEW.md new file mode 100644 index 0000000..7ecba62 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_stage_extra_info. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_stage_extra_info +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/REPORTS.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/SECURITY.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/USAGE.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/USAGE.md new file mode 100644 index 0000000..f5dc43f --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_stage_extra_info +``` diff --git a/odoo-bringout-oca-project-project_stage_extra_info/doc/WIZARDS.md b/odoo-bringout-oca-project-project_stage_extra_info/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/README.rst b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/README.rst new file mode 100644 index 0000000..2572a35 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/README.rst @@ -0,0 +1,86 @@ +======================== +Project Stage Extra Info +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ea463355a8edddcf03a39101533e41d9e470c5c0bcad939f77269b2a89d82bc9 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2F/home/odoo/init--os/initos/odoo16/project-lightgray.png?logo=github + :target: https://github.com/OCA//home/odoo/init-os/initos/odoo16/project/tree/16.0/project_stage_extra_info + :alt: OCA//home/odoo/init-os/initos/odoo16/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects//home/odoo/init-os/initos/odoo16/project-16-0//home/odoo/init-os/initos/odoo16/project-16-0-project_stage_extra_info + :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//home/odoo/init-os/initos/odoo16/project&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a Description and Is closed stage field on Project stages. Also adds its filters on Project. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. Have Manager rights for Project group to create project stages. +#. To enable Project Stages goto Settings > Project > enable Project Stages. +#. Go to *Project > Configuration > Project Statuses*. +#. When creating a project or editing it, select the status + +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 +~~~~~~~ + +* InitOS GmbH + +Contributors +~~~~~~~~~~~~ + +* Dhara Solanki + +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. + +This module is part of the `OCA//home/odoo/init-os/initos/odoo16/project `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/__init__.py b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/__manifest__.py b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/__manifest__.py new file mode 100644 index 0000000..47e6e8a --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/__manifest__.py @@ -0,0 +1,17 @@ +{ + "name": "Project Stage Extra Info", + "summary": """ + Project Stage Extra Info""", + "author": "InitOS GmbH, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "category": "Project Management", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "depends": ["project"], + "data": [ + "views/project_stage_view.xml", + "views/project_view.xml", + ], + "application": False, + "development_status": "Beta", +} diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/bs.po b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/bs.po new file mode 100644 index 0000000..02a6162 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/bs.po @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_extra_info +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_stage_extra_info +#: model_terms:ir.ui.view,arch_db:project_stage_extra_info.view_project_project_filter +msgid "Closed" +msgstr "Zatvoreno" + +#. module: project_stage_extra_info +#: model:ir.model.fields,field_description:project_stage_extra_info.field_project_project_stage__description +msgid "Description" +msgstr "Opis" + +#. module: project_stage_extra_info +#: model:ir.model.fields,field_description:project_stage_extra_info.field_project_project_stage__is_closed +msgid "Is Closed Stage" +msgstr "Korisnički ID" + +#. module: project_stage_extra_info +#: model_terms:ir.ui.view,arch_db:project_stage_extra_info.view_project_project_filter +msgid "Not Closed" +msgstr "Pošaljite poruku u WhatsApp-u kada zadatak dosegne ovu fazu." + +#. module: project_stage_extra_info +#: model:ir.model,name:project_stage_extra_info.model_project_project_stage +msgid "Project Stage" +msgstr "Zadaci" + +#. module: project_stage_extra_info +#: model:ir.model.fields,help:project_stage_extra_info.field_project_project_stage__is_closed +msgid "Specify if this is a closing stage." +msgstr "Zavisnosti zadatka" diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/ca.po b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/ca.po new file mode 100644 index 0000000..d400dd2 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/ca.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_extra_info +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-07-23 15:58+0000\n" +"Last-Translator: Eugeni Chafer \n" +"Language-Team: none\n" +"Language: ca\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.6.2\n" + +#. module: project_stage_extra_info +#: model_terms:ir.ui.view,arch_db:project_stage_extra_info.view_project_project_filter +msgid "Closed" +msgstr "Tancat" + +#. module: project_stage_extra_info +#: model:ir.model.fields,field_description:project_stage_extra_info.field_project_project_stage__description +msgid "Description" +msgstr "Descripció" + +#. module: project_stage_extra_info +#: model:ir.model.fields,field_description:project_stage_extra_info.field_project_project_stage__is_closed +msgid "Is Closed Stage" +msgstr "És una etapa tancada" + +#. module: project_stage_extra_info +#: model_terms:ir.ui.view,arch_db:project_stage_extra_info.view_project_project_filter +msgid "Not Closed" +msgstr "No tancat" + +#. module: project_stage_extra_info +#: model:ir.model,name:project_stage_extra_info.model_project_project_stage +msgid "Project Stage" +msgstr "Etapa de projecte" + +#. module: project_stage_extra_info +#: model:ir.model.fields,help:project_stage_extra_info.field_project_project_stage__is_closed +msgid "Specify if this is a closing stage." +msgstr "Especificar si és una etapa tancada." diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/it.po b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/it.po new file mode 100644 index 0000000..c8fe6ce --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/it.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_extra_info +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-01-24 17:36+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 4.17\n" + +#. module: project_stage_extra_info +#: model_terms:ir.ui.view,arch_db:project_stage_extra_info.view_project_project_filter +msgid "Closed" +msgstr "Chiuso" + +#. module: project_stage_extra_info +#: model:ir.model.fields,field_description:project_stage_extra_info.field_project_project_stage__description +msgid "Description" +msgstr "Descrizione" + +#. module: project_stage_extra_info +#: model:ir.model.fields,field_description:project_stage_extra_info.field_project_project_stage__is_closed +msgid "Is Closed Stage" +msgstr "È fase chiusa" + +#. module: project_stage_extra_info +#: model_terms:ir.ui.view,arch_db:project_stage_extra_info.view_project_project_filter +msgid "Not Closed" +msgstr "Non chiuso" + +#. module: project_stage_extra_info +#: model:ir.model,name:project_stage_extra_info.model_project_project_stage +msgid "Project Stage" +msgstr "Fase progetto" + +#. module: project_stage_extra_info +#: model:ir.model.fields,help:project_stage_extra_info.field_project_project_stage__is_closed +msgid "Specify if this is a closing stage." +msgstr "Indicare se questo è uno stato di chiusura." diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/project_stage_extra_info.pot b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/project_stage_extra_info.pot new file mode 100644 index 0000000..7300734 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/i18n/project_stage_extra_info.pot @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_extra_info +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_stage_extra_info +#: model_terms:ir.ui.view,arch_db:project_stage_extra_info.view_project_project_filter +msgid "Closed" +msgstr "" + +#. module: project_stage_extra_info +#: model:ir.model.fields,field_description:project_stage_extra_info.field_project_project_stage__description +msgid "Description" +msgstr "" + +#. module: project_stage_extra_info +#: model:ir.model.fields,field_description:project_stage_extra_info.field_project_project_stage__is_closed +msgid "Is Closed Stage" +msgstr "" + +#. module: project_stage_extra_info +#: model_terms:ir.ui.view,arch_db:project_stage_extra_info.view_project_project_filter +msgid "Not Closed" +msgstr "" + +#. module: project_stage_extra_info +#: model:ir.model,name:project_stage_extra_info.model_project_project_stage +msgid "Project Stage" +msgstr "" + +#. module: project_stage_extra_info +#: model:ir.model.fields,help:project_stage_extra_info.field_project_project_stage__is_closed +msgid "Specify if this is a closing stage." +msgstr "" diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/models/__init__.py b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/models/__init__.py new file mode 100644 index 0000000..5311dca --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/models/__init__.py @@ -0,0 +1 @@ +from . import project_project_stage diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/models/project_project_stage.py b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/models/project_project_stage.py new file mode 100644 index 0000000..bdcb9c0 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/models/project_project_stage.py @@ -0,0 +1,11 @@ +from odoo import fields, models + + +class ProjectProjectStage(models.Model): + _inherit = "project.project.stage" + + description = fields.Char(translate=True) + is_closed = fields.Boolean( + string="Is Closed Stage", + help="Specify if this is a closing stage.", + ) diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..a4f51f0 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Dhara Solanki diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/readme/DESCRIPTION.rst new file mode 100644 index 0000000..c1005c0 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds a Description and Is closed stage field on Project stages. Also adds its filters on Project. diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/readme/USAGE.rst b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/readme/USAGE.rst new file mode 100644 index 0000000..9def589 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/readme/USAGE.rst @@ -0,0 +1,6 @@ +To use this module, you need to: + +#. Have Manager rights for Project group to create project stages. +#. To enable Project Stages goto Settings > Project > enable Project Stages. +#. Go to *Project > Configuration > Project Statuses*. +#. When creating a project or editing it, select the status diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/static/description/icon.png b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/static/description/index.html b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/static/description/index.html new file mode 100644 index 0000000..c1dbb56 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/static/description/index.html @@ -0,0 +1,432 @@ + + + + + + +Project Stage Extra Info + + + +
+

Project Stage Extra Info

+ + +

Beta License: AGPL-3 OCA//home/odoo/init-os/initos/odoo16/project Translate me on Weblate Try me on Runboat

+

This module adds a Description and Is closed stage field on Project stages. Also adds its filters on Project.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Have Manager rights for Project group to create project stages.
  2. +
  3. To enable Project Stages goto Settings > Project > enable Project Stages.
  4. +
  5. Go to Project > Configuration > Project Statuses.
  6. +
  7. When creating a project or editing it, select the status
  8. +
+
+
+

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

+
    +
  • InitOS GmbH
  • +
+
+
+

Contributors

+ +
+
+

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.

+

This module is part of the OCA//home/odoo/init-os/initos/odoo16/project project on GitHub.

+

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

+
+
+
+ + diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/views/project_stage_view.xml b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/views/project_stage_view.xml new file mode 100644 index 0000000..8d1dfd5 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/views/project_stage_view.xml @@ -0,0 +1,14 @@ + + + + project.project.stage.view.tree + project.project.stage + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/views/project_view.xml b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/views/project_view.xml new file mode 100644 index 0000000..ecf7554 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/project_stage_extra_info/views/project_view.xml @@ -0,0 +1,23 @@ + + + + project.status.filter + project.project + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_stage_extra_info/pyproject.toml b/odoo-bringout-oca-project-project_stage_extra_info/pyproject.toml new file mode 100644 index 0000000..8ff56d5 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_extra_info/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-project-project_stage_extra_info" +version = "16.0.0" +description = "Project Stage Extra Info - + Project Stage Extra Info" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_stage_extra_info"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/README.md b/odoo-bringout-oca-project-project_stage_last_update_date/README.md new file mode 100644 index 0000000..5b0e411 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/README.md @@ -0,0 +1,46 @@ +# Project Stage Last Update Date + +Odoo addon: project_stage_last_update_date + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_stage_last_update_date +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Stage Last Update Date +- **Version**: 16.0.1.0.0 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_stage_last_update_date`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/ARCHITECTURE.md new file mode 100644 index 0000000..fa6e55d --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_stage_last_update_date Module - project_stage_last_update_date + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/CONFIGURATION.md new file mode 100644 index 0000000..7b5c0f6 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_stage_last_update_date. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/FAQ.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/FAQ.md new file mode 100644 index 0000000..c499384 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_stage_last_update_date or install in UI. diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/INSTALL.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/INSTALL.md new file mode 100644 index 0000000..2c905ce --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_stage_last_update_date" +# or +uv pip install odoo-bringout-oca-project-project_stage_last_update_date" +``` diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/MODELS.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/MODELS.md new file mode 100644 index 0000000..b56e5bd --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_stage_last_update_date. + +```mermaid +classDiagram + class project_project +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/OVERVIEW.md new file mode 100644 index 0000000..ba16c9a --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_stage_last_update_date. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_stage_last_update_date +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/REPORTS.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/SECURITY.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/USAGE.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/USAGE.md new file mode 100644 index 0000000..1d4dbfb --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_stage_last_update_date +``` diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/doc/WIZARDS.md b/odoo-bringout-oca-project-project_stage_last_update_date/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/README.rst b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/README.rst new file mode 100644 index 0000000..51ad0af --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/README.rst @@ -0,0 +1,78 @@ +============================== +Project Stage Last Update Date +============================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:e730bee50bb2bdfa85f796b0e4e8430f065c3f9e0d75e19dad1519babfa77507 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_stage_last_update_date + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_stage_last_update_date + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a new field to record the last date when the project stage was updated. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* Tecnativa (https://www.tecnativa.com): + + * Carolina Fernandez + +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. + +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/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/__init__.py b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/__init__.py new file mode 100644 index 0000000..c32fd62 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/__init__.py @@ -0,0 +1,2 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from . import models diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/__manifest__.py b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/__manifest__.py new file mode 100644 index 0000000..bb7ad60 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Project Stage Last Update Date", + "version": "16.0.1.0.0", + "category": "Project", + "website": "https://github.com/OCA/project", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "application": False, + "summary": "Project Stage Last Update Date", + "depends": ["project"], + "data": ["views/project_project_views.xml"], +} diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/bs.po b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/bs.po new file mode 100644 index 0000000..f20f8e8 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/bs.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_last_update_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_stage_last_update_date +#: model:ir.model,name:project_stage_last_update_date.model_project_project +msgid "Project" +msgstr "Projekat" + +#. module: project_stage_last_update_date +#: model:ir.model.fields,field_description:project_stage_last_update_date.field_project_project__stage_last_update_date +msgid "Stage Last Update Date" +msgstr "Blokirajući zadatak" diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/es.po b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/es.po new file mode 100644 index 0000000..030a845 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/es.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_last_update_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-13 19:43+0000\n" +"PO-Revision-Date: 2024-08-21 12:06+0000\n" +"Last-Translator: carolinafernandez-tecnativa \n" +"Language-Team: \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 5.6.2\n" + +#. module: project_stage_last_update_date +#: model:ir.model,name:project_stage_last_update_date.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_stage_last_update_date +#: model:ir.model.fields,field_description:project_stage_last_update_date.field_project_project__stage_last_update_date +msgid "Stage Last Update Date" +msgstr "Fecha de última actualización de etapa" + +#~ msgid "Last Update Date Stage" +#~ msgstr "Fecha de última actualización de etapa" diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/it.po b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/it.po new file mode 100644 index 0000000..dcea660 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/it.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_last_update_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-08-26 14:06+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.6.2\n" + +#. module: project_stage_last_update_date +#: model:ir.model,name:project_stage_last_update_date.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_stage_last_update_date +#: model:ir.model.fields,field_description:project_stage_last_update_date.field_project_project__stage_last_update_date +msgid "Stage Last Update Date" +msgstr "Data ultimo aggiornamento fase" diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/project_stage_last_update_date.pot b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/project_stage_last_update_date.pot new file mode 100644 index 0000000..1a727d7 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/i18n/project_stage_last_update_date.pot @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_last_update_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_stage_last_update_date +#: model:ir.model,name:project_stage_last_update_date.model_project_project +msgid "Project" +msgstr "" + +#. module: project_stage_last_update_date +#: model:ir.model.fields,field_description:project_stage_last_update_date.field_project_project__stage_last_update_date +msgid "Stage Last Update Date" +msgstr "" diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/models/__init__.py b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/models/__init__.py new file mode 100644 index 0000000..278f305 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/models/__init__.py @@ -0,0 +1,2 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from . import project_project diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/models/project_project.py b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/models/project_project.py new file mode 100644 index 0000000..c827240 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/models/project_project.py @@ -0,0 +1,16 @@ +# Copyright 2024 Tecnativa - Carolina Fernandez +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). +from datetime import datetime + +from odoo import fields, models + + +class Project(models.Model): + _inherit = "project.project" + + stage_last_update_date = fields.Datetime(copy=False, readonly=True) + + def write(self, vals): + if "stage_id" in vals: + vals["stage_last_update_date"] = datetime.now() + return super().write(vals) diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..7df7b6b --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Tecnativa (https://www.tecnativa.com): + + * Carolina Fernandez diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/readme/DESCRIPTION.rst new file mode 100644 index 0000000..64007ad --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds a new field to record the last date when the project stage was updated. diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/static/description/icon.png b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/static/description/index.html b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/static/description/index.html new file mode 100644 index 0000000..b5ead99 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/static/description/index.html @@ -0,0 +1,426 @@ + + + + + +Project Stage Last Update Date + + + +
+

Project Stage Last Update Date

+ + +

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

+

This module adds a new field to record the last date when the project stage was updated.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/tests/__init__.py b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/tests/__init__.py new file mode 100644 index 0000000..865bb97 --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/tests/__init__.py @@ -0,0 +1 @@ +from . import test_project diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/tests/test_project.py b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/tests/test_project.py new file mode 100644 index 0000000..d4012ea --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/tests/test_project.py @@ -0,0 +1,22 @@ +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from freezegun import freeze_time + +from odoo.tests.common import TransactionCase + + +class TestProject(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.project = cls.env["project.project"].create({"name": "Test Project"}) + cls.stage = cls.env["project.task.type"].create({"name": "Test Stage"}) + + @freeze_time("2024-08-19 08:00") + def test_project_stage_last_update_date(self): + self.assertEqual(self.project.stage_last_update_date, False) + self.project.write({"stage_id": self.stage.id}) + self.assertEqual( + self.project.stage_last_update_date.strftime("%Y-%m-%d %H:%M"), + "2024-08-19 08:00", + ) diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/views/project_project_views.xml b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/views/project_project_views.xml new file mode 100644 index 0000000..bb550be --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/project_stage_last_update_date/views/project_project_views.xml @@ -0,0 +1,28 @@ + + + + + Project form: Add project stage last update date + project.project + + +
+ +
+
+
+ + project.project.tree + project.project + + + + + + + +
diff --git a/odoo-bringout-oca-project-project_stage_last_update_date/pyproject.toml b/odoo-bringout-oca-project-project_stage_last_update_date/pyproject.toml new file mode 100644 index 0000000..6ed080e --- /dev/null +++ b/odoo-bringout-oca-project-project_stage_last_update_date/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_stage_last_update_date" +version = "16.0.0" +description = "Project Stage Last Update Date - Project Stage Last Update Date" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_stage_last_update_date"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_status/README.md b/odoo-bringout-oca-project-project_status/README.md new file mode 100644 index 0000000..4f01254 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/README.md @@ -0,0 +1,46 @@ +# Project Status + +Odoo addon: project_status + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_status +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Status +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_status`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_status/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_status/doc/ARCHITECTURE.md new file mode 100644 index 0000000..01982d1 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_status Module - project_status + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_status/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_status/doc/CONFIGURATION.md new file mode 100644 index 0000000..ae45661 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_status. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_status/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_status/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_status/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_status/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_status/doc/FAQ.md b/odoo-bringout-oca-project-project_status/doc/FAQ.md new file mode 100644 index 0000000..a1b76e1 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_status or install in UI. diff --git a/odoo-bringout-oca-project-project_status/doc/INSTALL.md b/odoo-bringout-oca-project-project_status/doc/INSTALL.md new file mode 100644 index 0000000..65a0b3a --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_status" +# or +uv pip install odoo-bringout-oca-project-project_status" +``` diff --git a/odoo-bringout-oca-project-project_status/doc/MODELS.md b/odoo-bringout-oca-project-project_status/doc/MODELS.md new file mode 100644 index 0000000..e419185 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in project_status. + +```mermaid +classDiagram + class project_status + class project_project +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_status/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_status/doc/OVERVIEW.md new file mode 100644 index 0000000..6750279 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_status. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_status +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_status/doc/REPORTS.md b/odoo-bringout-oca-project-project_status/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_status/doc/SECURITY.md b/odoo-bringout-oca-project-project_status/doc/SECURITY.md new file mode 100644 index 0000000..d9729b9 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/SECURITY.md @@ -0,0 +1,41 @@ +# Security + +Access control and security definitions in project_status. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../project_status/security/ir.model.access.csv)** + - 2 model access rules + +## Record Rules + +Row-level security rules defined in: + +## Security Groups & Configuration + +Security groups and permissions defined in: +- **[project_status.xml](../project_status/security/project_status.xml)** + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[ir.model.access.csv](../project_status/security/ir.model.access.csv)** + - Model access permissions (CRUD rights) +- **[project_status.xml](../project_status/security/project_status.xml)** + - Security groups, categories, and XML-based rules + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_status/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_status/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_status/doc/USAGE.md b/odoo-bringout-oca-project-project_status/doc/USAGE.md new file mode 100644 index 0000000..36ca642 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_status +``` diff --git a/odoo-bringout-oca-project-project_status/doc/WIZARDS.md b/odoo-bringout-oca-project-project_status/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_status/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_status/project_status/README.rst b/odoo-bringout-oca-project-project_status/project_status/README.rst new file mode 100644 index 0000000..0be6eb6 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/README.rst @@ -0,0 +1,97 @@ +============== +Project Status +============== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:8d3630187ff554982fff38fcc44601f86238f84e09dc3f1d4038f03d11d1c8c6 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_status + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_status + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides a project status on projects. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. Have Manager rights for Project group to create project statuses. +#. Go to *Project > Configuration > Project Statuses*. +#. When creating a project or editing it, select the status + +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 +~~~~~~~ + +* Patrick Wilson + +Contributors +~~~~~~~~~~~~ + +* Patrick Wilson +* Bhavesh Odedra +* `Tecnativa `__: + + * João Marques + +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-patrickrwilson| image:: https://github.com/patrickrwilson.png?size=40px + :target: https://github.com/patrickrwilson + :alt: patrickrwilson + +Current `maintainer `__: + +|maintainer-patrickrwilson| + +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/odoo-bringout-oca-project-project_status/project_status/__init__.py b/odoo-bringout-oca-project-project_status/project_status/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_status/project_status/__manifest__.py b/odoo-bringout-oca-project-project_status/project_status/__manifest__.py new file mode 100644 index 0000000..6206970 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/__manifest__.py @@ -0,0 +1,21 @@ +{ + "name": "Project Status", + "summary": """ + Project Status""", + "author": "Patrick Wilson, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "category": "Project Management", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "depends": ["project"], + "data": [ + "views/project_status.xml", + "views/project.xml", + "security/ir.model.access.csv", + "security/project_status.xml", + "data/data.xml", + ], + "application": False, + "development_status": "Beta", + "maintainers": ["patrickrwilson"], +} diff --git a/odoo-bringout-oca-project-project_status/project_status/data/data.xml b/odoo-bringout-oca-project-project_status/project_status/data/data.xml new file mode 100644 index 0000000..ff75a8f --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/data/data.xml @@ -0,0 +1,21 @@ + + + Pending + + + Project is new and being built. Has not been started yet. + + + + In Progress + + + Project is currently initiated and being worked. + + + + Complete + + Project has been completed. + + diff --git a/odoo-bringout-oca-project-project_status/project_status/i18n/bs.po b/odoo-bringout-oca-project-project_status/project_status/i18n/bs.po new file mode 100644 index 0000000..42adf5f --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/i18n/bs.po @@ -0,0 +1,162 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_status +#: model:project.status,description:project_status.project_status_in_progress +msgid "" +"\n" +" Project is currently initiated and being worked.\n" +" " +msgstr "" + +#. module: project_status +#: model:project.status,description:project_status.project_status_pending +msgid "" +"\n" +" Project is new and being built. Has not been started yet.\n" +" " +msgstr "" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.project_view_kanban +msgid "(" +msgstr "Broj zadataka koji zavise" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.project_view_kanban +msgid ")" +msgstr ")" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Closed" +msgstr "Zatvoreno" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__company_id +msgid "Company" +msgstr "Preduzeće" + +#. module: project_status +#: model:project.status,name:project_status.project_status_complete +msgid "Complete" +msgstr "Complete" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__description +msgid "Description" +msgstr "Opis" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__fold +msgid "Folded" +msgstr "Skupljeno" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__id +msgid "ID" +msgstr "ID" + +#. module: project_status +#: model:project.status,name:project_status.project_status_in_progress +msgid "In Progress" +msgstr "U Toku" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__is_closed +msgid "Is Closed Status" +msgstr "Razlozi" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__name +msgid "Name" +msgstr "Naziv:" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Not Closed" +msgstr "Not Closed" + +#. module: project_status +#: model:project.status,name:project_status.project_status_pending +msgid "Pending" +msgstr "Na čekanju" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_project +msgid "Project" +msgstr "Projekat" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__project_status +msgid "Project Status" +msgstr "Projekat Status" + +#. module: project_status +#: model:ir.actions.act_window,name:project_status.project_status_action +#: model:ir.ui.menu,name:project_status.project_status_menu +msgid "Project Statuses" +msgstr "Projekat Statuses" + +#. module: project_status +#: model:project.status,description:project_status.project_status_complete +msgid "Project has been completed." +msgstr "Započni to za završetak ovog" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__status_sequence +msgid "Sequence" +msgstr "Sekvenca" + +#. module: project_status +#: model:ir.model.fields,help:project_status.field_project_status__is_closed +msgid "Specify if this is a closing status." +msgstr "Završi to za početak ovog" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Status" +msgstr "Status" diff --git a/odoo-bringout-oca-project-project_status/project_status/i18n/de.po b/odoo-bringout-oca-project-project_status/project_status/i18n/de.po new file mode 100644 index 0000000..3fecc8a --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/i18n/de.po @@ -0,0 +1,153 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-09 15:48+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 4.3.2\n" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Closed" +msgstr "Beendet" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__company_id +msgid "Company" +msgstr "Unternehmen" + +#. module: project_status +#: model:project.status,name:project_status.project_status_complete +msgid "Complete" +msgstr "Beendet" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_uid +msgid "Created by" +msgstr "Erstellt von" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_date +msgid "Created on" +msgstr "Erstellt am" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__description +msgid "Description" +msgstr "Beschreibung" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__display_name +#: model:ir.model.fields,field_description:project_status.field_project_status__display_name +msgid "Display Name" +msgstr "Anzeigename" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__fold +msgid "Folded" +msgstr "Eingeklappt" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__id +#: model:ir.model.fields,field_description:project_status.field_project_status__id +msgid "ID" +msgstr "ID" + +#. module: project_status +#: model:project.status,name:project_status.project_status_in_progress +msgid "In Progress" +msgstr "In Bearbeitung" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__is_closed +msgid "Is Closed Status" +msgstr "Status gilt als abgeschlossen" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project____last_update +#: model:ir.model.fields,field_description:project_status.field_project_status____last_update +msgid "Last Modified on" +msgstr "Zuletzt geändert am" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_uid +msgid "Last Updated by" +msgstr "Zuletzt aktualisiert von" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_date +msgid "Last Updated on" +msgstr "Zuletzt aktualisiert am" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__name +msgid "Name" +msgstr "Bezeichnung" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Not Closed" +msgstr "Nicht beendet" + +#. module: project_status +#: model:project.status,name:project_status.project_status_pending +msgid "Pending" +msgstr "Ausstehend" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__project_status +msgid "Project Status" +msgstr "Projektstatus" + +#. module: project_status +#: model:ir.actions.act_window,name:project_status.project_status_action +#: model:ir.ui.menu,name:project_status.project_status_menu +msgid "Project Statuses" +msgstr "Projektstatus" + +#. module: project_status +#: model:project.status,description:project_status.project_status_complete +msgid "Project has been completed." +msgstr "Das Projekt wurde beendet." + +#. module: project_status +#: model:project.status,description:project_status.project_status_in_progress +msgid "Project is currently initiated and being worked." +msgstr "Das Projekt ist aktuell in Bearbeitung." + +#. module: project_status +#: model:project.status,description:project_status.project_status_pending +msgid "Project is new and being built. Has not been started yet." +msgstr "Das Projekt ist neu und ist noch nicht begonnen." + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__status_sequence +msgid "Sequence" +msgstr "Sequenz" + +#. module: project_status +#: model:ir.model.fields,help:project_status.field_project_status__is_closed +msgid "Specify if this is a closing status." +msgstr "" +"Wenn der Haken gesetzt ist, wird dieser Status als \"beendet\" betrachtet." + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Status" +msgstr "Status" diff --git a/odoo-bringout-oca-project-project_status/project_status/i18n/es.po b/odoo-bringout-oca-project-project_status/project_status/i18n/es.po new file mode 100644 index 0000000..25c3efb --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/i18n/es.po @@ -0,0 +1,152 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-04 23:49+0000\n" +"Last-Translator: Esteka Digital \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.3.2\n" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Closed" +msgstr "Cerrado" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__company_id +msgid "Company" +msgstr "Compañía" + +#. module: project_status +#: model:project.status,name:project_status.project_status_complete +msgid "Complete" +msgstr "Completo" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__description +msgid "Description" +msgstr "Descripción" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__display_name +#: model:ir.model.fields,field_description:project_status.field_project_status__display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__fold +msgid "Folded" +msgstr "Replegado" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__id +#: model:ir.model.fields,field_description:project_status.field_project_status__id +msgid "ID" +msgstr "ID" + +#. module: project_status +#: model:project.status,name:project_status.project_status_in_progress +msgid "In Progress" +msgstr "En progreso" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__is_closed +msgid "Is Closed Status" +msgstr "Estado cerrado" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project____last_update +#: model:ir.model.fields,field_description:project_status.field_project_status____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__name +msgid "Name" +msgstr "Nombre" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Not Closed" +msgstr "No cerrado" + +#. module: project_status +#: model:project.status,name:project_status.project_status_pending +msgid "Pending" +msgstr "Pendiente" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__project_status +msgid "Project Status" +msgstr "Estado del proyecto" + +#. module: project_status +#: model:ir.actions.act_window,name:project_status.project_status_action +#: model:ir.ui.menu,name:project_status.project_status_menu +msgid "Project Statuses" +msgstr "Estados del proyecto" + +#. module: project_status +#: model:project.status,description:project_status.project_status_complete +msgid "Project has been completed." +msgstr "El proyecto se ha completado." + +#. module: project_status +#: model:project.status,description:project_status.project_status_in_progress +msgid "Project is currently initiated and being worked." +msgstr "El proyecto está actualmente iniciado y en ejecución." + +#. module: project_status +#: model:project.status,description:project_status.project_status_pending +msgid "Project is new and being built. Has not been started yet." +msgstr "El proyecto es nuevo y está en construcción. Aún no se ha iniciado." + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__status_sequence +msgid "Sequence" +msgstr "Secuencia" + +#. module: project_status +#: model:ir.model.fields,help:project_status.field_project_status__is_closed +msgid "Specify if this is a closing status." +msgstr "Especifica si el estado es cerrado." + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Status" +msgstr "Estado" diff --git a/odoo-bringout-oca-project-project_status/project_status/i18n/es_AR.po b/odoo-bringout-oca-project-project_status/project_status/i18n/es_AR.po new file mode 100644 index 0000000..099c9d1 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/i18n/es_AR.po @@ -0,0 +1,152 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-06-25 02:48+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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.3.2\n" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Closed" +msgstr "Cerrado" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__company_id +msgid "Company" +msgstr "Compañía" + +#. module: project_status +#: model:project.status,name:project_status.project_status_complete +msgid "Complete" +msgstr "Completo" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__description +msgid "Description" +msgstr "Descripción" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__display_name +#: model:ir.model.fields,field_description:project_status.field_project_status__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__fold +msgid "Folded" +msgstr "Plegado" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__id +#: model:ir.model.fields,field_description:project_status.field_project_status__id +msgid "ID" +msgstr "ID" + +#. module: project_status +#: model:project.status,name:project_status.project_status_in_progress +msgid "In Progress" +msgstr "En Progreso" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__is_closed +msgid "Is Closed Status" +msgstr "Es Estado Cerrado" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project____last_update +#: model:ir.model.fields,field_description:project_status.field_project_status____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_uid +msgid "Last Updated by" +msgstr "Última actualización realizada por" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__name +msgid "Name" +msgstr "Nombre" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Not Closed" +msgstr "No Cerrado" + +#. module: project_status +#: model:project.status,name:project_status.project_status_pending +msgid "Pending" +msgstr "Pendiente" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__project_status +msgid "Project Status" +msgstr "Estado del Proyecto" + +#. module: project_status +#: model:ir.actions.act_window,name:project_status.project_status_action +#: model:ir.ui.menu,name:project_status.project_status_menu +msgid "Project Statuses" +msgstr "Estados del Proyecto" + +#. module: project_status +#: model:project.status,description:project_status.project_status_complete +msgid "Project has been completed." +msgstr "El Proyecto ha sido completado." + +#. module: project_status +#: model:project.status,description:project_status.project_status_in_progress +msgid "Project is currently initiated and being worked." +msgstr "El proyecto está actualmente iniciado y en proceso." + +#. module: project_status +#: model:project.status,description:project_status.project_status_pending +msgid "Project is new and being built. Has not been started yet." +msgstr "El proyecto es nuevo y se está construyendo. Aún no se ha iniciado." + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__status_sequence +msgid "Sequence" +msgstr "Secuencia" + +#. module: project_status +#: model:ir.model.fields,help:project_status.field_project_status__is_closed +msgid "Specify if this is a closing status." +msgstr "Especifica si este es un estado de cierre." + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Status" +msgstr "Estado" diff --git a/odoo-bringout-oca-project-project_status/project_status/i18n/fr.po b/odoo-bringout-oca-project-project_status/project_status/i18n/fr.po new file mode 100644 index 0000000..a82f10b --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/i18n/fr.po @@ -0,0 +1,154 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-11-04 13:35+0000\n" +"Last-Translator: Rémi \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 4.3.2\n" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Closed" +msgstr "Fermé" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__company_id +msgid "Company" +msgstr "Société" + +#. module: project_status +#: model:project.status,name:project_status.project_status_complete +msgid "Complete" +msgstr "Terminé" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__description +msgid "Description" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__display_name +#: model:ir.model.fields,field_description:project_status.field_project_status__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__fold +msgid "Folded" +msgstr "Plié" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__id +#: model:ir.model.fields,field_description:project_status.field_project_status__id +msgid "ID" +msgstr "" + +#. module: project_status +#: model:project.status,name:project_status.project_status_in_progress +msgid "In Progress" +msgstr "En cours" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__is_closed +msgid "Is Closed Status" +msgstr "Est un état fermé" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project____last_update +#: model:ir.model.fields,field_description:project_status.field_project_status____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__name +msgid "Name" +msgstr "Nom" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Not Closed" +msgstr "En cours" + +#. module: project_status +#: model:project.status,name:project_status.project_status_pending +msgid "Pending" +msgstr "En attente" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_project +msgid "Project" +msgstr "Projet" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__project_status +msgid "Project Status" +msgstr "État du Projet" + +#. module: project_status +#: model:ir.actions.act_window,name:project_status.project_status_action +#: model:ir.ui.menu,name:project_status.project_status_menu +msgid "Project Statuses" +msgstr "États du projet" + +#. module: project_status +#: model:project.status,description:project_status.project_status_complete +msgid "Project has been completed." +msgstr "Le projet est terminé." + +#. module: project_status +#: model:project.status,description:project_status.project_status_in_progress +msgid "Project is currently initiated and being worked." +msgstr "Le projet est actuellement lancé et en cours de réalisation." + +#. module: project_status +#: model:project.status,description:project_status.project_status_pending +msgid "Project is new and being built. Has not been started yet." +msgstr "" +"Le projet est nouveau et en cours de construction. Il n'a pas encore été " +"lancé." + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__status_sequence +msgid "Sequence" +msgstr "Séquence" + +#. module: project_status +#: model:ir.model.fields,help:project_status.field_project_status__is_closed +msgid "Specify if this is a closing status." +msgstr "Indiquez s'il s'agit d'un état fermé." + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Status" +msgstr "État" diff --git a/odoo-bringout-oca-project-project_status/project_status/i18n/fr_FR.po b/odoo-bringout-oca-project-project_status/project_status/i18n/fr_FR.po new file mode 100644 index 0000000..0dd5afc --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/i18n/fr_FR.po @@ -0,0 +1,154 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-04-11 16:46+0000\n" +"Last-Translator: Yves Le Doeuff \n" +"Language-Team: none\n" +"Language: fr_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 4.3.2\n" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Closed" +msgstr "Fermé" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__company_id +msgid "Company" +msgstr "" + +#. module: project_status +#: model:project.status,name:project_status.project_status_complete +msgid "Complete" +msgstr "Terminé" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__description +msgid "Description" +msgstr "Description" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__display_name +#: model:ir.model.fields,field_description:project_status.field_project_status__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__fold +msgid "Folded" +msgstr "Plié" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__id +#: model:ir.model.fields,field_description:project_status.field_project_status__id +msgid "ID" +msgstr "ID" + +#. module: project_status +#: model:project.status,name:project_status.project_status_in_progress +msgid "In Progress" +msgstr "En cours" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__is_closed +msgid "Is Closed Status" +msgstr "Est un état fermé" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project____last_update +#: model:ir.model.fields,field_description:project_status.field_project_status____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__name +msgid "Name" +msgstr "Nom" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Not Closed" +msgstr "En cours" + +#. module: project_status +#: model:project.status,name:project_status.project_status_pending +msgid "Pending" +msgstr "En attente" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_project +msgid "Project" +msgstr "Projet" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__project_status +msgid "Project Status" +msgstr "Etat du Projet" + +#. module: project_status +#: model:ir.actions.act_window,name:project_status.project_status_action +#: model:ir.ui.menu,name:project_status.project_status_menu +msgid "Project Statuses" +msgstr "Etats du projet" + +#. module: project_status +#: model:project.status,description:project_status.project_status_complete +msgid "Project has been completed." +msgstr "Le projet est terminé." + +#. module: project_status +#: model:project.status,description:project_status.project_status_in_progress +msgid "Project is currently initiated and being worked." +msgstr "Le projet est actuellement lancé et en cours de réalisation." + +#. module: project_status +#: model:project.status,description:project_status.project_status_pending +msgid "Project is new and being built. Has not been started yet." +msgstr "" +"Le projet est nouveau et en cours de construction. Il n'a pas encore été " +"lancé." + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__status_sequence +msgid "Sequence" +msgstr "Séquence" + +#. module: project_status +#: model:ir.model.fields,help:project_status.field_project_status__is_closed +msgid "Specify if this is a closing status." +msgstr "Indiquez s'il s'agit d'un état fermé." + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Status" +msgstr "Etat" diff --git a/odoo-bringout-oca-project-project_status/project_status/i18n/it.po b/odoo-bringout-oca-project-project_status/project_status/i18n/it.po new file mode 100644 index 0000000..3a339dd --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/i18n/it.po @@ -0,0 +1,171 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-06-04 09:26+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_status +#: model:project.status,description:project_status.project_status_in_progress +msgid "" +"\n" +" Project is currently initiated and being worked.\n" +" " +msgstr "" +"\n" +" Attualmente il progetto è iniziato e in lavoro.\n" +" " + +#. module: project_status +#: model:project.status,description:project_status.project_status_pending +msgid "" +"\n" +" Project is new and being built. Has not been started yet.\n" +" " +msgstr "" +"\n" +" Il progetto è nuovo e in creazione. Non è ancora avviato.\n" +" " + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.project_view_kanban +msgid "(" +msgstr "(" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.project_view_kanban +msgid ")" +msgstr ")" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Closed" +msgstr "Chiuso" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__company_id +msgid "Company" +msgstr "Azienda" + +#. module: project_status +#: model:project.status,name:project_status.project_status_complete +msgid "Complete" +msgstr "Completato" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__description +msgid "Description" +msgstr "Descrizione" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__fold +msgid "Folded" +msgstr "Minimizzato" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__id +msgid "ID" +msgstr "ID" + +#. module: project_status +#: model:project.status,name:project_status.project_status_in_progress +msgid "In Progress" +msgstr "In corso" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__is_closed +msgid "Is Closed Status" +msgstr "In stato chiuso" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__name +msgid "Name" +msgstr "Nome" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Not Closed" +msgstr "Non chiuso" + +#. module: project_status +#: model:project.status,name:project_status.project_status_pending +msgid "Pending" +msgstr "In sospeso" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__project_status +msgid "Project Status" +msgstr "Stato progetto" + +#. module: project_status +#: model:ir.actions.act_window,name:project_status.project_status_action +#: model:ir.ui.menu,name:project_status.project_status_menu +msgid "Project Statuses" +msgstr "Stati progetto" + +#. module: project_status +#: model:project.status,description:project_status.project_status_complete +msgid "Project has been completed." +msgstr "Il progetto è stato completato." + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__status_sequence +msgid "Sequence" +msgstr "Sequenza" + +#. module: project_status +#: model:ir.model.fields,help:project_status.field_project_status__is_closed +msgid "Specify if this is a closing status." +msgstr "Indicare se questo è uno stato di chiusura." + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Status" +msgstr "Stato" diff --git a/odoo-bringout-oca-project-project_status/project_status/i18n/project_status.pot b/odoo-bringout-oca-project-project_status/project_status/i18n/project_status.pot new file mode 100644 index 0000000..d22eda4 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/i18n/project_status.pot @@ -0,0 +1,162 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_status +#: model:project.status,description:project_status.project_status_in_progress +msgid "" +"\n" +" Project is currently initiated and being worked.\n" +" " +msgstr "" + +#. module: project_status +#: model:project.status,description:project_status.project_status_pending +msgid "" +"\n" +" Project is new and being built. Has not been started yet.\n" +" " +msgstr "" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.project_view_kanban +msgid "(" +msgstr "" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.project_view_kanban +msgid ")" +msgstr "" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Closed" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__company_id +msgid "Company" +msgstr "" + +#. module: project_status +#: model:project.status,name:project_status.project_status_complete +msgid "Complete" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_uid +msgid "Created by" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_date +msgid "Created on" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__description +msgid "Description" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__display_name +msgid "Display Name" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__fold +msgid "Folded" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__id +msgid "ID" +msgstr "" + +#. module: project_status +#: model:project.status,name:project_status.project_status_in_progress +msgid "In Progress" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__is_closed +msgid "Is Closed Status" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__name +msgid "Name" +msgstr "" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Not Closed" +msgstr "" + +#. module: project_status +#: model:project.status,name:project_status.project_status_pending +msgid "Pending" +msgstr "" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_project +msgid "Project" +msgstr "" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__project_status +msgid "Project Status" +msgstr "" + +#. module: project_status +#: model:ir.actions.act_window,name:project_status.project_status_action +#: model:ir.ui.menu,name:project_status.project_status_menu +msgid "Project Statuses" +msgstr "" + +#. module: project_status +#: model:project.status,description:project_status.project_status_complete +msgid "Project has been completed." +msgstr "" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__status_sequence +msgid "Sequence" +msgstr "" + +#. module: project_status +#: model:ir.model.fields,help:project_status.field_project_status__is_closed +msgid "Specify if this is a closing status." +msgstr "" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Status" +msgstr "" diff --git a/odoo-bringout-oca-project-project_status/project_status/i18n/sl.po b/odoo-bringout-oca-project-project_status/project_status/i18n/sl.po new file mode 100644 index 0000000..333e1cd --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/i18n/sl.po @@ -0,0 +1,157 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-03-31 10:14+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 3.10\n" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Closed" +msgstr "Zaključeno" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__company_id +msgid "Company" +msgstr "" + +#. module: project_status +#: model:project.status,name:project_status.project_status_complete +msgid "Complete" +msgstr "Opravljeno" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_uid +msgid "Created by" +msgstr "Ustvaril" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__create_date +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__description +msgid "Description" +msgstr "Opis" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__display_name +#: model:ir.model.fields,field_description:project_status.field_project_status__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__fold +msgid "Folded" +msgstr "Prepognjeno" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__id +#: model:ir.model.fields,field_description:project_status.field_project_status__id +msgid "ID" +msgstr "ID" + +#. module: project_status +#: model:project.status,name:project_status.project_status_in_progress +msgid "In Progress" +msgstr "V teku" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__is_closed +msgid "Is Closed Status" +msgstr "V stanju zaključeno" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_project____last_update +#: model:ir.model.fields,field_description:project_status.field_project_status____last_update +msgid "Last Modified on" +msgstr "Zadnjič spremenjeno" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_uid +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__write_date +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__name +msgid "Name" +msgstr "Naziv" + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Not Closed" +msgstr "Nezaključeno" + +#. module: project_status +#: model:project.status,name:project_status.project_status_pending +msgid "Pending" +msgstr "Na čakanju" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_project +#, fuzzy +msgid "Project" +msgstr "Projektni status" + +#. module: project_status +#: model:ir.model,name:project_status.model_project_status +#: model:ir.model.fields,field_description:project_status.field_project_project__project_status +msgid "Project Status" +msgstr "Projektni status" + +#. module: project_status +#: model:ir.actions.act_window,name:project_status.project_status_action +#: model:ir.ui.menu,name:project_status.project_status_menu +msgid "Project Statuses" +msgstr "Projektni statusi" + +#. module: project_status +#: model:project.status,description:project_status.project_status_complete +msgid "Project has been completed." +msgstr "Projekt je dokončan." + +#. module: project_status +#: model:project.status,description:project_status.project_status_in_progress +msgid "Project is currently initiated and being worked." +msgstr "Projekt je zagnan in se dela na njem." + +#. module: project_status +#: model:project.status,description:project_status.project_status_pending +msgid "Project is new and being built. Has not been started yet." +msgstr "Projekt je nov in se snuje. Ni še zagnan." + +#. module: project_status +#: model:ir.model.fields,field_description:project_status.field_project_status__status_sequence +msgid "Sequence" +msgstr "Zaporedje" + +#. module: project_status +#: model:ir.model.fields,help:project_status.field_project_status__is_closed +msgid "Specify if this is a closing status." +msgstr "Določite, če je to zaključni status." + +#. module: project_status +#: model_terms:ir.ui.view,arch_db:project_status.view_project_project_filter +msgid "Status" +msgstr "Status" + +#~ msgid "WBS element" +#~ msgstr "Projektni člen" diff --git a/odoo-bringout-oca-project-project_status/project_status/migrations/13.0.2.0.0/post-migration.py b/odoo-bringout-oca-project-project_status/project_status/migrations/13.0.2.0.0/post-migration.py new file mode 100644 index 0000000..1578244 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/migrations/13.0.2.0.0/post-migration.py @@ -0,0 +1,9 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + """Set current Project Status as not company limit""" + env["project.status"].search([]).write({"company_id": False}) diff --git a/odoo-bringout-oca-project-project_status/project_status/models/__init__.py b/odoo-bringout-oca-project-project_status/project_status/models/__init__.py new file mode 100644 index 0000000..2caae59 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/models/__init__.py @@ -0,0 +1,2 @@ +from . import project +from . import project_status diff --git a/odoo-bringout-oca-project-project_status/project_status/models/project.py b/odoo-bringout-oca-project-project_status/project_status/models/project.py new file mode 100644 index 0000000..0258e07 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/models/project.py @@ -0,0 +1,18 @@ +from odoo import SUPERUSER_ID, api, fields, models + + +class Project(models.Model): + _inherit = "project.project" + + @api.model + def _read_group_status_ids(self, statuses, domain, order): + statuse_ids = statuses._search([], order=order, access_rights_uid=SUPERUSER_ID) + return statuses.browse(statuse_ids) + + project_status = fields.Many2one( + comodel_name="project.status", + group_expand="_read_group_status_ids", + copy=False, + ondelete="restrict", + index=True, + ) diff --git a/odoo-bringout-oca-project-project_status/project_status/models/project_status.py b/odoo-bringout-oca-project-project_status/project_status/models/project_status.py new file mode 100644 index 0000000..a27553f --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/models/project_status.py @@ -0,0 +1,30 @@ +from odoo import api, fields, models + + +class ProjectStatus(models.Model): + _name = "project.status" + _order = "status_sequence" + _description = "Project Status" + + name = fields.Char( + required=True, + translate=True, + ) + company_id = fields.Many2one( + comodel_name="res.company", + string="Company", + default=lambda self: self.env.company, + ) + description = fields.Char(translate=True) + status_sequence = fields.Integer(string="Sequence") + is_closed = fields.Boolean( + string="Is Closed Status", + help="Specify if this is a closing status.", + ) + fold = fields.Boolean(string="Folded") + + @api.model + def create(self, vals): + seq = self.env["ir.sequence"].next_by_code("project.status") or 0 + vals["status_sequence"] = seq + return super(ProjectStatus, self).create(vals) diff --git a/odoo-bringout-oca-project-project_status/project_status/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_status/project_status/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..6921037 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/readme/CONTRIBUTORS.rst @@ -0,0 +1,5 @@ +* Patrick Wilson +* Bhavesh Odedra +* `Tecnativa `__: + + * João Marques diff --git a/odoo-bringout-oca-project-project_status/project_status/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_status/project_status/readme/DESCRIPTION.rst new file mode 100644 index 0000000..ebeb076 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module provides a project status on projects. diff --git a/odoo-bringout-oca-project-project_status/project_status/readme/USAGE.rst b/odoo-bringout-oca-project-project_status/project_status/readme/USAGE.rst new file mode 100644 index 0000000..4301608 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/readme/USAGE.rst @@ -0,0 +1,5 @@ +To use this module, you need to: + +#. Have Manager rights for Project group to create project statuses. +#. Go to *Project > Configuration > Project Statuses*. +#. When creating a project or editing it, select the status diff --git a/odoo-bringout-oca-project-project_status/project_status/security/ir.model.access.csv b/odoo-bringout-oca-project-project_status/project_status/security/ir.model.access.csv new file mode 100644 index 0000000..006a38b --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +project_status_user,Project Status User,model_project_status,project.group_project_user,1,0,0,0 +project_status_manager,Project Status Manager,model_project_status,project.group_project_manager,1,1,1,1 diff --git a/odoo-bringout-oca-project-project_status/project_status/security/project_status.xml b/odoo-bringout-oca-project-project_status/project_status/security/project_status.xml new file mode 100644 index 0000000..4d61efe --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/security/project_status.xml @@ -0,0 +1,12 @@ + + + + + Project Status multi-company + + + ['|',('company_id','=',False),('company_id','in',company_ids)] + + + diff --git a/odoo-bringout-oca-project-project_status/project_status/static/description/icon.png b/odoo-bringout-oca-project-project_status/project_status/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_status/project_status/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_status/project_status/static/description/index.html b/odoo-bringout-oca-project-project_status/project_status/static/description/index.html new file mode 100644 index 0000000..40e09f3 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/static/description/index.html @@ -0,0 +1,440 @@ + + + + + +Project Status + + + +
+

Project Status

+ + +

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

+

This module provides a project status on projects.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Have Manager rights for Project group to create project statuses.
  2. +
  3. Go to Project > Configuration > Project Statuses.
  4. +
  5. When creating a project or editing it, select the status
  6. +
+
+
+

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

+
    +
  • Patrick Wilson
  • +
+
+
+

Contributors

+ +
+
+

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:

+

patrickrwilson

+

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/odoo-bringout-oca-project-project_status/project_status/tests/__init__.py b/odoo-bringout-oca-project-project_status/project_status/tests/__init__.py new file mode 100644 index 0000000..d8b06cd --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/tests/__init__.py @@ -0,0 +1 @@ +from . import test_status diff --git a/odoo-bringout-oca-project-project_status/project_status/tests/test_status.py b/odoo-bringout-oca-project-project_status/project_status/tests/test_status.py new file mode 100644 index 0000000..3b3a07b --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/tests/test_status.py @@ -0,0 +1,30 @@ +from odoo.tests.common import SavepointCase + + +class TestProjectStatus(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.ProjectStatus = cls.env["project.status"] + cls.status = cls.ProjectStatus.create( + { + "name": "New Status", + } + ) + + def _create_project(self): + project = self.env["project.project"].create( + { + "name": "Project 1", + "project_status": self.status.id, + } + ) + return project + + def test_01_project_status(self): + project = self._create_project() + self.assertEqual(project.project_status.id, self.status.id) + statuses = project._read_group_status_ids( + project.project_status, [], "status_sequence" + ) + self.assertTrue(len(statuses) >= 1) diff --git a/odoo-bringout-oca-project-project_status/project_status/views/project.xml b/odoo-bringout-oca-project-project_status/project_status/views/project.xml new file mode 100644 index 0000000..b96e2c9 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/views/project.xml @@ -0,0 +1,99 @@ + + + + project.status.tree + project.project + + tree + child_ids + + + + + + + + + project.status.form + project.project + + form + + + + + + + + + + + project.status.simpleform + project.project + + form + + + + + + + + + + + project.status.kanban + project.project + + + + + project_status + + +
+ + ( + + + + ) + +
+
+
+
+
+ + + project.status.filter + project.project + + + + + + + + + + + + +
diff --git a/odoo-bringout-oca-project-project_status/project_status/views/project_status.xml b/odoo-bringout-oca-project-project_status/project_status/views/project_status.xml new file mode 100644 index 0000000..73bb415 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/project_status/views/project_status.xml @@ -0,0 +1,38 @@ + + + + Project Status Sequence + project.status + 0 + 1 + + + + Project Status List + project.status + + + + + + + + + + + + + + Project Statuses + project.status + tree + + + + diff --git a/odoo-bringout-oca-project-project_status/pyproject.toml b/odoo-bringout-oca-project-project_status/pyproject.toml new file mode 100644 index 0000000..04cbe34 --- /dev/null +++ b/odoo-bringout-oca-project-project_status/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-project-project_status" +version = "16.0.0" +description = "Project Status - + Project Status" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_status"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_stock/README.md b/odoo-bringout-oca-project-project_stock/README.md new file mode 100644 index 0000000..d5a2f68 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/README.md @@ -0,0 +1,47 @@ +# Project Stock + +Odoo addon: project_stock + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_stock +``` + +## Dependencies + +This addon depends on: +- project +- stock + +## Manifest Information + +- **Name**: Project Stock +- **Version**: 16.0.1.3.2 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_stock`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_stock/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_stock/doc/ARCHITECTURE.md new file mode 100644 index 0000000..6d25e5d --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_stock Module - project_stock + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_stock/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_stock/doc/CONFIGURATION.md new file mode 100644 index 0000000..6c37747 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_stock. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_stock/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_stock/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_stock/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_stock/doc/DEPENDENCIES.md new file mode 100644 index 0000000..d9236e9 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) +- [stock](https://github.com/bringout/oca-ocb-warehouse/tree/0ee5ffef60413a71dceb350918ad3fb572ec1875/odoo-bringout-oca-ocb-stock) diff --git a/odoo-bringout-oca-project-project_stock/doc/FAQ.md b/odoo-bringout-oca-project-project_stock/doc/FAQ.md new file mode 100644 index 0000000..21e17f0 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_stock or install in UI. diff --git a/odoo-bringout-oca-project-project_stock/doc/INSTALL.md b/odoo-bringout-oca-project-project_stock/doc/INSTALL.md new file mode 100644 index 0000000..929e09e --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_stock" +# or +uv pip install odoo-bringout-oca-project-project_stock" +``` diff --git a/odoo-bringout-oca-project-project_stock/doc/MODELS.md b/odoo-bringout-oca-project-project_stock/doc/MODELS.md new file mode 100644 index 0000000..3e266ce --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/MODELS.md @@ -0,0 +1,18 @@ +# Models + +Detected core models and extensions in project_stock. + +```mermaid +classDiagram + class project_task + class account_analytic_line + class project_project + class project_task_type + class stock_move + class stock_move_line + class stock_scrap +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_stock/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_stock/doc/OVERVIEW.md new file mode 100644 index 0000000..2d6f280 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_stock. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_stock +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_stock/doc/REPORTS.md b/odoo-bringout-oca-project-project_stock/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_stock/doc/SECURITY.md b/odoo-bringout-oca-project-project_stock/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_stock/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_stock/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_stock/doc/USAGE.md b/odoo-bringout-oca-project-project_stock/doc/USAGE.md new file mode 100644 index 0000000..0eb6ec2 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_stock +``` diff --git a/odoo-bringout-oca-project-project_stock/doc/WIZARDS.md b/odoo-bringout-oca-project-project_stock/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_stock/project_stock/README.rst b/odoo-bringout-oca-project-project_stock/project_stock/README.rst new file mode 100644 index 0000000..b0be7aa --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/README.rst @@ -0,0 +1,123 @@ +============= +Project Stock +============= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9c29d40e7b97af8edf4ff90600c52b3b4f86c9eecdaa354b4c1777df5582841b + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_stock + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_stock + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to consume products directly from a project task. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure this module, you need to: + +#. Go to *Inventory -> Configuration -> Settings* and check "Storage Locations" option. +#. Go to *Inventory -> Configuration -> Operation types*. +#. Create a new operation type with the following options: + * `Operation type`: Task material + * `Code`: TM + * `Type of operation`: Delivery + * `Default Source Location`: WH/Stock + * `Default Destination Location`: WH/Stock/Shelf 1 +#. Go to *Project -> Configuration -> Projects*. +#. Create a new project with the following options: + * `Name`: Task material + * `Operation type`: Task material +#. Go to *Project -> Configuration -> Task Stages* and edit some records. + * `In progress`: Check Use Stock Moves option and add the created project. + * `Done`: Check Use Stock Moves option + Done Stock Moves and add the created project. + +Usage +===== + +#. Go to *Projects -> Task material (project)* and create a task and edit it. +#. *Stock Info* is displayed in the *Extra info* tab with the same project information, but it can be modified. +#. Add some product to *Stock Info* tab and set some initial demand (1 for example). +#. Click on the button *Confirm material* to confirm all moves. +#. Change the stage to Done. +#. *Stock Info* tab is readonly and some buttons show in header: + * `Check availability materials`: Product availability will be checked. + * `Transfer Materials`: Stock moves are confirmed and moved from one location to another. + * `Unreserve`: Remove the reservation stock of the products. + * `Cancel Materials`: Set the moves of the products as cancelled. + * `Scrap`: Allows the defined products to be scrapped. + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza + +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-victoralmau| image:: https://github.com/victoralmau.png?size=40px + :target: https://github.com/victoralmau + :alt: victoralmau + +Current `maintainer `__: + +|maintainer-victoralmau| + +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/odoo-bringout-oca-project-project_stock/project_stock/__init__.py b/odoo-bringout-oca-project-project_stock/project_stock/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_stock/project_stock/__manifest__.py b/odoo-bringout-oca-project-project_stock/project_stock/__manifest__.py new file mode 100644 index 0000000..08cefdc --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Project Stock", + "version": "16.0.1.3.2", + "category": "Project Management", + "website": "https://github.com/OCA/project", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["project", "stock"], + "installable": True, + "data": [ + "views/project_project_view.xml", + "views/project_task_type_view.xml", + "views/stock_move_view.xml", + "views/project_task_view.xml", + ], + "demo": [ + "demo/stock_picking_type_data.xml", + "demo/project_data.xml", + ], + "maintainers": ["victoralmau"], +} diff --git a/odoo-bringout-oca-project-project_stock/project_stock/demo/project_data.xml b/odoo-bringout-oca-project-project_stock/project_stock/demo/project_data.xml new file mode 100644 index 0000000..a91c866 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/demo/project_data.xml @@ -0,0 +1,25 @@ + + + + Task material + + + + 1990-01-01 + + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_stock/project_stock/demo/stock_picking_type_data.xml b/odoo-bringout-oca-project-project_stock/project_stock/demo/stock_picking_type_data.xml new file mode 100644 index 0000000..2bce36d --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/demo/stock_picking_type_data.xml @@ -0,0 +1,11 @@ + + + + Task material + TM + outgoing + + + + + diff --git a/odoo-bringout-oca-project-project_stock/project_stock/i18n/bs.po b/odoo-bringout-oca-project-project_stock/project_stock/i18n/bs.po new file mode 100644 index 0000000..ae5b9a9 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/i18n/bs.po @@ -0,0 +1,336 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stock +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_assign +msgid "Allow Moves Action Assign" +msgstr "Dozvoli dodjeljivanje skladišnih prenosa" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_confirm +msgid "Allow Moves Action Confirm" +msgstr "Dozvoli potvrđivanje skladišnih prenosa" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__unreserve_visible +msgid "Allowed to Unreserve Inventory" +msgstr "Dozvoli odrezervaciju stavaka" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution +msgid "Analytic" +msgstr "Analitika" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_distribution +msgid "Analytic Distribution" +msgstr "Analitička distribucija" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution_search +msgid "Analytic Distribution Search" +msgstr "Pretraga analitičkih distribucija" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_account_analytic_line +msgid "Analytic Line" +msgstr "Analitička stavka" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_line_ids +msgid "Analytic Lines" +msgstr "Analitičke stavke" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_precision +msgid "Analytic Precision" +msgstr "Preciznost analitike" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__stock_analytic_date +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_date +msgid "Analytic date" +msgstr "Datum analitike" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__assigned +msgid "Assigned" +msgstr "Dodijeljeno" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__cancel +msgid "Cancel" +msgstr "Otkaži" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Cancel Materials" +msgstr "Otkaži materijale" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Check availability materials" +msgstr "Provjeri dostupnost matrijala" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Confirm materials" +msgstr "Potvrdi materijale" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__confirmed +msgid "Confirmed" +msgstr "Potvrđeno" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Consumed" +msgstr "Utrošeno" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_id +msgid "Default location from which materials are consumed." +msgstr "Zadana lokacija sa koje se troše materijali." + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_dest_id +msgid "Default location to which materials are consumed." +msgstr "Zadana lokacija na kojoj završavaju utrošeni materijali." + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_dest_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_dest_id +msgid "Destination Location" +msgstr "Odredišna lokacija" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__done +msgid "Done" +msgstr "Završeno" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__done_stock_moves +msgid "Done Stock Moves" +msgstr "Završena skladišna kretanja" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Forecasted Report" +msgstr "Projekcija zaliha" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__group_id +msgid "Group" +msgstr "Grupa" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__done_stock_moves +msgid "" +"If you check this box, when a task is in this state, you will not be able to" +" add more stock moves but they can be viewed." +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__use_stock_moves +msgid "" +"If you mark this check, when a task goes to this state, it will use stock " +"moves" +msgstr "" + +#. module: project_stock +#: model:ir.actions.act_window,name:project_stock.action_project_task_moves +msgid "Inventory Moves" +msgstr "Kretanja inventure" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#, python-format +msgid "It is not possible to change this with reserved movements in tasks." +msgstr "Ovo nije moguće mijenjati na rezerviranim skladišnim kretanjima u zadacima." + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Lock" +msgstr "Zaključaj" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_account_id +msgid "Move Analytic Account" +msgstr "Analitički konto kretanja" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__stock_analytic_account_id +msgid "Move created will be assigned to this analytic account" +msgstr "Kreirano kretanje će biti dodijeljeno ovom analitičkom kontu" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__picking_type_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__picking_type_id +msgid "Operation Type" +msgstr "Tip operacije" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__pending +msgid "Pending" +msgstr "Na čekanju" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Product Moves" +msgstr "Kretanja proizvoda" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Kretanja proizvoda (stavke skladišnog kretanja)" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_account_analytic_line__stock_task_id +msgid "Project Task" +msgstr "Projektni zadatak" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__task_id +msgid "Related Task" +msgstr "Povezani zadatak" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Reserved" +msgstr "Rezervirano" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#: model:ir.model,name:project_stock.model_stock_scrap +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +#, python-format +msgid "Scrap" +msgstr "Otpis" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_count +msgid "Scrap Move" +msgstr "Kretanje otpisa" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_ids +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Scraps" +msgstr "Otpisi" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_id +msgid "Source Location" +msgstr "Ishodišna lokacija" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.edit_project +msgid "Stock" +msgstr "Skladište" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Stock Info" +msgstr "Informacije o skladištu" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move +msgid "Stock Move" +msgstr "Skladišno kretanje" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__move_ids +msgid "Stock Moves" +msgstr "Skladišna kretanja" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_moves_is_locked +msgid "Stock Moves Is Locked" +msgstr "Skladišna kretanja su zaključana" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_state +msgid "Stock State" +msgstr "Stanje skladišta" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task +#: model:ir.model.fields,field_description:project_stock.field_stock_move_line__task_id +#: model:ir.model.fields,field_description:project_stock.field_stock_scrap__task_id +msgid "Task" +msgstr "Zadatak" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task_type +msgid "Task Stage" +msgstr "Status zadatka" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__raw_material_task_id +msgid "Task for material" +msgstr "Zadatak za materijal" + +#. module: project_stock +#: model:project.project,name:project_stock.project_project_tm_test +#: model:stock.picking.type,name:project_stock.stock_picking_type_tm_test +msgid "Task material" +msgstr "Zadatak material" + +#. module: project_stock +#: model:project.project,label_tasks:project_stock.project_project_tm_test +msgid "Tasks" +msgstr "Zadaci" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__unreserve_visible +msgid "Technical field to check when we can unreserve" +msgstr "Tehničko polje za provjeru kada možemo odrezervirati" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "To Consume" +msgstr "Za utrošiti" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Transfer Materials" +msgstr "Prebaci materijale" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unlock" +msgstr "Otključaj" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unreserve" +msgstr "Odrezerviraj" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__use_stock_moves +msgid "Use Stock Moves" +msgstr "Koristi skladišna kretanja" diff --git a/odoo-bringout-oca-project-project_stock/project_stock/i18n/es.po b/odoo-bringout-oca-project-project_stock/project_stock/i18n/es.po new file mode 100644 index 0000000..b9ee75a --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/i18n/es.po @@ -0,0 +1,344 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stock +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-22 11:13+0000\n" +"PO-Revision-Date: 2023-09-22 13:14+0200\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 3.0.1\n" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_assign +msgid "Allow Moves Action Assign" +msgstr "Permitir movimientos Asignar acción" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_confirm +msgid "Allow Moves Action Confirm" +msgstr "Permitir movimientos Confirmar acción" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__unreserve_visible +msgid "Allowed to Unreserve Inventory" +msgstr "Permitir anular reserva de inventario" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution +msgid "Analytic" +msgstr "Analítico" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_distribution +msgid "Analytic Distribution" +msgstr "Distribución analítica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution_search +msgid "Analytic Distribution Search" +msgstr "Búsqueda de Distribución Analítica" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_account_analytic_line +msgid "Analytic Line" +msgstr "Línea Analítica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_line_ids +msgid "Analytic Lines" +msgstr "Líneas analíticas" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_precision +msgid "Analytic Precision" +msgstr "Precisión analítica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__stock_analytic_date +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_date +msgid "Analytic date" +msgstr "Fecha para analítica" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__assigned +msgid "Assigned" +msgstr "Asignado" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__cancel +msgid "Cancel" +msgstr "Cancelar" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Cancel Materials" +msgstr "Cancelar materiales" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Check availability materials" +msgstr "Consultar la disponibilidad de los materiales" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Confirm materials" +msgstr "Confirmar materiales" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__confirmed +msgid "Confirmed" +msgstr "Confirmado" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Consumed" +msgstr "Consumido" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_id +msgid "Default location from which materials are consumed." +msgstr "Ubicación predeterminada desde la que se consumen los materiales." + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_dest_id +msgid "Default location to which materials are consumed." +msgstr "Ubicación predeterminada en la que se consumen los materiales." + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_dest_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_dest_id +msgid "Destination Location" +msgstr "Ubicación destino" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__done +msgid "Done" +msgstr "Hecho" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__done_stock_moves +msgid "Done Stock Moves" +msgstr "Realizar movimientos hechos" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Forecasted Report" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__group_id +msgid "Group" +msgstr "Grupo" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__done_stock_moves +msgid "" +"If you check this box, when a task is in this state, you will not be able to " +"add more stock moves but they can be viewed." +msgstr "" +"Si marca esta casilla, cuando una tarea esté en este estado, no se podrán " +"añadir mas movimientos de stock pero se podrán ver." + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__use_stock_moves +msgid "" +"If you mark this check, when a task goes to this state, it will use stock " +"moves" +msgstr "" +"Si marca esta casilla, cuando una tarea pasa a este etapa, se podrán " +"utilizar movimientos de stock" + +#. module: project_stock +#: model:ir.actions.act_window,name:project_stock.action_project_task_moves +msgid "Inventory Moves" +msgstr "Movimientos de inventario" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#, python-format +msgid "It is not possible to change this with reserved movements in tasks." +msgstr "No es posible cambiar esto con movimientos reservados en tareas." + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Lock" +msgstr "Bloquear" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_account_id +msgid "Move Analytic Account" +msgstr "Movimiento de cuenta analítica" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__stock_analytic_account_id +msgid "Move created will be assigned to this analytic account" +msgstr "El movimiento creado se asignará a esta cuenta analítica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__picking_type_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__picking_type_id +msgid "Operation Type" +msgstr "Tipo de operación" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__pending +msgid "Pending" +msgstr "Pendiente" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Product Moves" +msgstr "Movimientos de producto" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Movimientos de Producto (Líneas de movimiento)" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_account_analytic_line__stock_task_id +msgid "Project Task" +msgstr "Tarea" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__task_id +msgid "Related Task" +msgstr "Tarea relacionada" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Reserved" +msgstr "Reservado" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#: model:ir.model,name:project_stock.model_stock_scrap +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +#, python-format +msgid "Scrap" +msgstr "Desechar" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_count +msgid "Scrap Move" +msgstr "Movimiento de desecho" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_ids +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Scraps" +msgstr "Desechos" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_id +msgid "Source Location" +msgstr "Ubicación de origen" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.edit_project +msgid "Stock" +msgstr "Stock" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Stock Info" +msgstr "Información de stock" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move +msgid "Stock Move" +msgstr "Movimiento de existencias" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__move_ids +msgid "Stock Moves" +msgstr "Movimientos de albarán" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_moves_is_locked +msgid "Stock Moves Is Locked" +msgstr "Los movimientos de stock están bloqueados" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_state +msgid "Stock State" +msgstr "Estado del stock" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task +#: model:ir.model.fields,field_description:project_stock.field_stock_move_line__task_id +#: model:ir.model.fields,field_description:project_stock.field_stock_scrap__task_id +msgid "Task" +msgstr "Tarea" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task_type +msgid "Task Stage" +msgstr "Etapa de la tarea" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__raw_material_task_id +msgid "Task for material" +msgstr "Materiales usados en la tarea" + +#. module: project_stock +#: model:project.project,name:project_stock.project_project_tm_test +#: model:stock.picking.type,name:project_stock.stock_picking_type_tm_test +msgid "Task material" +msgstr "Material de trabajo" + +#. module: project_stock +#: model:project.project,label_tasks:project_stock.project_project_tm_test +msgid "Tasks" +msgstr "Tareas" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__unreserve_visible +msgid "Technical field to check when we can unreserve" +msgstr "Campo técnico para consultar cuando podemos anula la reserva" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "To Consume" +msgstr "A consumir" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Transfer Materials" +msgstr "Transferir materiales" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unlock" +msgstr "Desbloquear" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unreserve" +msgstr "Anular reserva" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__use_stock_moves +msgid "Use Stock Moves" +msgstr "Usar movimientos de stock" diff --git a/odoo-bringout-oca-project-project_stock/project_stock/i18n/fr.po b/odoo-bringout-oca-project-project_stock/project_stock/i18n/fr.po new file mode 100644 index 0000000..0fd1e53 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/i18n/fr.po @@ -0,0 +1,337 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stock +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\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" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_assign +msgid "Allow Moves Action Assign" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_confirm +msgid "Allow Moves Action Confirm" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__unreserve_visible +msgid "Allowed to Unreserve Inventory" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution +msgid "Analytic" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_distribution +msgid "Analytic Distribution" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution_search +msgid "Analytic Distribution Search" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_line_ids +msgid "Analytic Lines" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_precision +msgid "Analytic Precision" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__stock_analytic_date +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_date +msgid "Analytic date" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__assigned +msgid "Assigned" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__cancel +msgid "Cancel" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Cancel Materials" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Check availability materials" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Confirm materials" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__confirmed +msgid "Confirmed" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Consumed" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_id +msgid "Default location from which materials are consumed." +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_dest_id +msgid "Default location to which materials are consumed." +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_dest_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_dest_id +msgid "Destination Location" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__done +msgid "Done" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__done_stock_moves +msgid "Done Stock Moves" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Forecasted Report" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__group_id +msgid "Group" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__done_stock_moves +msgid "" +"If you check this box, when a task is in this state, you will not be able to " +"add more stock moves but they can be viewed." +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__use_stock_moves +msgid "" +"If you mark this check, when a task goes to this state, it will use stock " +"moves" +msgstr "" + +#. module: project_stock +#: model:ir.actions.act_window,name:project_stock.action_project_task_moves +msgid "Inventory Moves" +msgstr "" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#, python-format +msgid "It is not possible to change this with reserved movements in tasks." +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Lock" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_account_id +msgid "Move Analytic Account" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__stock_analytic_account_id +msgid "Move created will be assigned to this analytic account" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__picking_type_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__picking_type_id +msgid "Operation Type" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__pending +msgid "Pending" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Product Moves" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_project +msgid "Project" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_account_analytic_line__stock_task_id +msgid "Project Task" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__task_id +msgid "Related Task" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Reserved" +msgstr "" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#: model:ir.model,name:project_stock.model_stock_scrap +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +#, python-format +msgid "Scrap" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_count +msgid "Scrap Move" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_ids +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Scraps" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_id +msgid "Source Location" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.edit_project +msgid "Stock" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Stock Info" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move +msgid "Stock Move" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__move_ids +msgid "Stock Moves" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_moves_is_locked +msgid "Stock Moves Is Locked" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_state +msgid "Stock State" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task +#: model:ir.model.fields,field_description:project_stock.field_stock_move_line__task_id +#: model:ir.model.fields,field_description:project_stock.field_stock_scrap__task_id +msgid "Task" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task_type +msgid "Task Stage" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__raw_material_task_id +msgid "Task for material" +msgstr "" + +#. module: project_stock +#: model:project.project,name:project_stock.project_project_tm_test +#: model:stock.picking.type,name:project_stock.stock_picking_type_tm_test +msgid "Task material" +msgstr "" + +#. module: project_stock +#: model:project.project,label_tasks:project_stock.project_project_tm_test +msgid "Tasks" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__unreserve_visible +msgid "Technical field to check when we can unreserve" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "To Consume" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Transfer Materials" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unlock" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unreserve" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__use_stock_moves +msgid "Use Stock Moves" +msgstr "" diff --git a/odoo-bringout-oca-project-project_stock/project_stock/i18n/hr.po b/odoo-bringout-oca-project-project_stock/project_stock/i18n/hr.po new file mode 100644 index 0000000..07c3af7 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/i18n/hr.po @@ -0,0 +1,357 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stock +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-09-06 12:37+0000\n" +"Last-Translator: vladimiruvid \n" +"Language-Team: none\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.17\n" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_assign +msgid "Allow Moves Action Assign" +msgstr "Dozvoli dodjeljivanje skladišnih prenosa" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_confirm +msgid "Allow Moves Action Confirm" +msgstr "Dozvoli potvrđivanje skladišnih prenosa" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__unreserve_visible +msgid "Allowed to Unreserve Inventory" +msgstr "Dozvoli odrezervaciju stavaka" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution +msgid "Analytic" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_distribution +msgid "Analytic Distribution" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution_search +msgid "Analytic Distribution Search" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_account_analytic_line +msgid "Analytic Line" +msgstr "Analitička stavka" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_line_ids +msgid "Analytic Lines" +msgstr "Analitičke stavke" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_precision +msgid "Analytic Precision" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__stock_analytic_date +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_date +msgid "Analytic date" +msgstr "Datum analitike" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__assigned +msgid "Assigned" +msgstr "Dodijeljeno" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__cancel +msgid "Cancel" +msgstr "Otkaži" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Cancel Materials" +msgstr "Otkaži materijale" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Check availability materials" +msgstr "Provjeri dostupnost matrijala" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Confirm materials" +msgstr "Potvrdi materijale" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__confirmed +msgid "Confirmed" +msgstr "Potvrđeno" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Consumed" +msgstr "Utrošeno" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_id +msgid "Default location from which materials are consumed." +msgstr "Zadana lokacija sa koje se troše materijali." + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_dest_id +msgid "Default location to which materials are consumed." +msgstr "Zadana lokacija na kojoj završavaju utrošeni materijali." + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_dest_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_dest_id +msgid "Destination Location" +msgstr "Odredišna lokacija" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__done +msgid "Done" +msgstr "Završeno" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__done_stock_moves +msgid "Done Stock Moves" +msgstr "Završena skladišna kretanja" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Forecasted Report" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__group_id +msgid "Group" +msgstr "Grupa" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__done_stock_moves +msgid "" +"If you check this box, when a task is in this state, you will not be able to " +"add more stock moves but they can be viewed." +msgstr "" +"Ako označite ovo, kad zadatak dođe u ovo stanje, nećete više moći dodati " +"skladišna kretanja, ali ona ostaju vidljiva." + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__use_stock_moves +msgid "" +"If you mark this check, when a task goes to this state, it will use stock " +"moves" +msgstr "" +"Ako je ovo označeno, kad zadatak dođe u ovo stanje, koriste se skladišna " +"kretanja" + +#. module: project_stock +#: model:ir.actions.act_window,name:project_stock.action_project_task_moves +msgid "Inventory Moves" +msgstr "Kretanja inventure" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#, python-format +msgid "It is not possible to change this with reserved movements in tasks." +msgstr "" +"Ovo nije moguće mijenjati na rezerviranim skladišnim kretanjima u zadacima." + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Lock" +msgstr "Zaključaj" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_account_id +msgid "Move Analytic Account" +msgstr "Analitički konto kretanja" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__stock_analytic_account_id +msgid "Move created will be assigned to this analytic account" +msgstr "Kreirano kretanje će biti dodijeljeno ovom analitičkom kontu" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__picking_type_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__picking_type_id +msgid "Operation Type" +msgstr "Tip operacije" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__pending +msgid "Pending" +msgstr "Na čekanju" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Product Moves" +msgstr "Kretanja proizvoda" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Kretanja proizvoda (stavke skladišnog kretanja)" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_account_analytic_line__stock_task_id +msgid "Project Task" +msgstr "Projektni zadatak" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__task_id +msgid "Related Task" +msgstr "Povezani zadatak" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Reserved" +msgstr "Rezervirano" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#: model:ir.model,name:project_stock.model_stock_scrap +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +#, python-format +msgid "Scrap" +msgstr "Otpis" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_count +msgid "Scrap Move" +msgstr "Kretanje otpisa" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_ids +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Scraps" +msgstr "Otpisi" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_id +msgid "Source Location" +msgstr "Ishodišna lokacija" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.edit_project +msgid "Stock" +msgstr "Skladište" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Stock Info" +msgstr "Informacije o skladištu" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move +msgid "Stock Move" +msgstr "Skladišno kretanje" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__move_ids +msgid "Stock Moves" +msgstr "Skladišna kretanja" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_moves_is_locked +msgid "Stock Moves Is Locked" +msgstr "Skladišna kretanja su zaključana" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_state +msgid "Stock State" +msgstr "Stanje skladišta" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task +#: model:ir.model.fields,field_description:project_stock.field_stock_move_line__task_id +#: model:ir.model.fields,field_description:project_stock.field_stock_scrap__task_id +msgid "Task" +msgstr "Zadatak" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task_type +msgid "Task Stage" +msgstr "Status zadatka" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__raw_material_task_id +msgid "Task for material" +msgstr "Zadatak za materijal" + +#. module: project_stock +#: model:project.project,name:project_stock.project_project_tm_test +#: model:stock.picking.type,name:project_stock.stock_picking_type_tm_test +msgid "Task material" +msgstr "" + +#. module: project_stock +#: model:project.project,label_tasks:project_stock.project_project_tm_test +msgid "Tasks" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__unreserve_visible +msgid "Technical field to check when we can unreserve" +msgstr "Tehničko polje za provjeru kada možemo odrezervirati" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "To Consume" +msgstr "Za utrošiti" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Transfer Materials" +msgstr "Prebaci materijale" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unlock" +msgstr "Otključaj" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unreserve" +msgstr "Odrezerviraj" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__use_stock_moves +msgid "Use Stock Moves" +msgstr "Koristi skladišna kretanja" + +#~ msgid "Move Analytic Tags" +#~ msgstr "Oznake analitike kretanja" + +#~ msgid "Display Name" +#~ msgstr "Prikazani naziv" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Zadnje modificirano" diff --git a/odoo-bringout-oca-project-project_stock/project_stock/i18n/it.po b/odoo-bringout-oca-project-project_stock/project_stock/i18n/it.po new file mode 100644 index 0000000..7c9ede4 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/i18n/it.po @@ -0,0 +1,356 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stock +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-06-14 17:43+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 4.17\n" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_assign +msgid "Allow Moves Action Assign" +msgstr "Consente assegnazione azione movimenti" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_confirm +msgid "Allow Moves Action Confirm" +msgstr "Consente conferma azione movimenti" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__unreserve_visible +msgid "Allowed to Unreserve Inventory" +msgstr "Abilitato a rilasciare giacenze" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution +msgid "Analytic" +msgstr "Analitico" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_distribution +msgid "Analytic Distribution" +msgstr "Distribuzione analitica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution_search +msgid "Analytic Distribution Search" +msgstr "Ricerca distribuzione analitica" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_account_analytic_line +msgid "Analytic Line" +msgstr "Riga analitica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_line_ids +msgid "Analytic Lines" +msgstr "Righe analitiche" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_precision +msgid "Analytic Precision" +msgstr "Precisione analitica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__stock_analytic_date +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_date +msgid "Analytic date" +msgstr "Data analitica" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__assigned +msgid "Assigned" +msgstr "Assegnato" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__cancel +msgid "Cancel" +msgstr "Annulla" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Cancel Materials" +msgstr "Annulla materiali" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Check availability materials" +msgstr "Controlla disponibilità materiali" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Confirm materials" +msgstr "Conferma materiali" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__confirmed +msgid "Confirmed" +msgstr "Confermato" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Consumed" +msgstr "Consumato" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_id +msgid "Default location from which materials are consumed." +msgstr "Ubicazione predefinita da cui i materiali vengono consumati." + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_dest_id +msgid "Default location to which materials are consumed." +msgstr "Ubicazione predefinita alla quale i materiali vengono consumati." + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_dest_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_dest_id +msgid "Destination Location" +msgstr "Ubicazione di destinazione" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__done +msgid "Done" +msgstr "Eseguito" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__done_stock_moves +msgid "Done Stock Moves" +msgstr "Movimenti di magazzino eseguiti" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Forecasted Report" +msgstr "Resoconto previsto" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__group_id +msgid "Group" +msgstr "Gruppo" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__done_stock_moves +msgid "" +"If you check this box, when a task is in this state, you will not be able to " +"add more stock moves but they can be viewed." +msgstr "" +"Se si spunta questa opzione, quando un lavoro è in questo stato, non si " +"potrà aggiungere altri movimenti di magazzino ma potranno essere " +"visualizzati." + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__use_stock_moves +msgid "" +"If you mark this check, when a task goes to this state, it will use stock " +"moves" +msgstr "" +"Se si seleziona questa opzione, quando un lavoro viene spostato in questo " +"stato, utilizzerà i movimenti di magazzino" + +#. module: project_stock +#: model:ir.actions.act_window,name:project_stock.action_project_task_moves +msgid "Inventory Moves" +msgstr "Movimenti di magazzino" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#, python-format +msgid "It is not possible to change this with reserved movements in tasks." +msgstr "Non è possibile modificarlo con movimenti prenotati nei lavori." + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Lock" +msgstr "Blocco" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_account_id +msgid "Move Analytic Account" +msgstr "Movimento conto analitico" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__stock_analytic_account_id +msgid "Move created will be assigned to this analytic account" +msgstr "Il movimento creato verrà assegnato a questo conto analitico" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__picking_type_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__picking_type_id +msgid "Operation Type" +msgstr "Tipo di operazione" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__pending +msgid "Pending" +msgstr "In attesa" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Product Moves" +msgstr "Movimenti prodotto" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Movimenti prodotto (riga movimento di magazzino)" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_account_analytic_line__stock_task_id +msgid "Project Task" +msgstr "Lavoro del progetto" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__task_id +msgid "Related Task" +msgstr "Lavoro correlato" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Reserved" +msgstr "Prenotato" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#: model:ir.model,name:project_stock.model_stock_scrap +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +#, python-format +msgid "Scrap" +msgstr "Scarto" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_count +msgid "Scrap Move" +msgstr "Movimento scarto" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_ids +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Scraps" +msgstr "Scarti" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_id +msgid "Source Location" +msgstr "Ubicazione di origine" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.edit_project +msgid "Stock" +msgstr "Giacenza" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Stock Info" +msgstr "Informazioni giacenza" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move +msgid "Stock Move" +msgstr "Movimento di magazzino" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__move_ids +msgid "Stock Moves" +msgstr "Movimenti di magazzino" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_moves_is_locked +msgid "Stock Moves Is Locked" +msgstr "I movimenti di magazzino sono bloccati" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_state +msgid "Stock State" +msgstr "Stato giacenza" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task +#: model:ir.model.fields,field_description:project_stock.field_stock_move_line__task_id +#: model:ir.model.fields,field_description:project_stock.field_stock_scrap__task_id +msgid "Task" +msgstr "Lavoro" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task_type +msgid "Task Stage" +msgstr "Fase lavoro" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__raw_material_task_id +msgid "Task for material" +msgstr "Lavoro per materiale" + +#. module: project_stock +#: model:project.project,name:project_stock.project_project_tm_test +#: model:stock.picking.type,name:project_stock.stock_picking_type_tm_test +msgid "Task material" +msgstr "Materiale lavoro" + +#. module: project_stock +#: model:project.project,label_tasks:project_stock.project_project_tm_test +msgid "Tasks" +msgstr "Lavori" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__unreserve_visible +msgid "Technical field to check when we can unreserve" +msgstr "Campo tecnico per controllare quando si può rilasciare" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "To Consume" +msgstr "Da consumare" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Transfer Materials" +msgstr "Trasferimento materiali" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unlock" +msgstr "Sblocca" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unreserve" +msgstr "Rilascia" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__use_stock_moves +msgid "Use Stock Moves" +msgstr "Utilizza movimenti di magazzino" + +#~ msgid "Move Analytic Tags" +#~ msgstr "Movimento etichette analitiche" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/odoo-bringout-oca-project-project_stock/project_stock/i18n/project_stock.pot b/odoo-bringout-oca-project-project_stock/project_stock/i18n/project_stock.pot new file mode 100644 index 0000000..454c2e8 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/i18n/project_stock.pot @@ -0,0 +1,336 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stock +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_assign +msgid "Allow Moves Action Assign" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_confirm +msgid "Allow Moves Action Confirm" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__unreserve_visible +msgid "Allowed to Unreserve Inventory" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution +msgid "Analytic" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_distribution +msgid "Analytic Distribution" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution_search +msgid "Analytic Distribution Search" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_line_ids +msgid "Analytic Lines" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_precision +msgid "Analytic Precision" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__stock_analytic_date +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_date +msgid "Analytic date" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__assigned +msgid "Assigned" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__cancel +msgid "Cancel" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Cancel Materials" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Check availability materials" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Confirm materials" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__confirmed +msgid "Confirmed" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Consumed" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_id +msgid "Default location from which materials are consumed." +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_dest_id +msgid "Default location to which materials are consumed." +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_dest_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_dest_id +msgid "Destination Location" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__done +msgid "Done" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__done_stock_moves +msgid "Done Stock Moves" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Forecasted Report" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__group_id +msgid "Group" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__done_stock_moves +msgid "" +"If you check this box, when a task is in this state, you will not be able to" +" add more stock moves but they can be viewed." +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__use_stock_moves +msgid "" +"If you mark this check, when a task goes to this state, it will use stock " +"moves" +msgstr "" + +#. module: project_stock +#: model:ir.actions.act_window,name:project_stock.action_project_task_moves +msgid "Inventory Moves" +msgstr "" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#, python-format +msgid "It is not possible to change this with reserved movements in tasks." +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Lock" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_account_id +msgid "Move Analytic Account" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__stock_analytic_account_id +msgid "Move created will be assigned to this analytic account" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__picking_type_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__picking_type_id +msgid "Operation Type" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__pending +msgid "Pending" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Product Moves" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_project +msgid "Project" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_account_analytic_line__stock_task_id +msgid "Project Task" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__task_id +msgid "Related Task" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Reserved" +msgstr "" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#: model:ir.model,name:project_stock.model_stock_scrap +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +#, python-format +msgid "Scrap" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_count +msgid "Scrap Move" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_ids +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Scraps" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_id +msgid "Source Location" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.edit_project +msgid "Stock" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Stock Info" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move +msgid "Stock Move" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__move_ids +msgid "Stock Moves" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_moves_is_locked +msgid "Stock Moves Is Locked" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_state +msgid "Stock State" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task +#: model:ir.model.fields,field_description:project_stock.field_stock_move_line__task_id +#: model:ir.model.fields,field_description:project_stock.field_stock_scrap__task_id +msgid "Task" +msgstr "" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task_type +msgid "Task Stage" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__raw_material_task_id +msgid "Task for material" +msgstr "" + +#. module: project_stock +#: model:project.project,name:project_stock.project_project_tm_test +#: model:stock.picking.type,name:project_stock.stock_picking_type_tm_test +msgid "Task material" +msgstr "" + +#. module: project_stock +#: model:project.project,label_tasks:project_stock.project_project_tm_test +msgid "Tasks" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__unreserve_visible +msgid "Technical field to check when we can unreserve" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "To Consume" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Transfer Materials" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unlock" +msgstr "" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unreserve" +msgstr "" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__use_stock_moves +msgid "Use Stock Moves" +msgstr "" diff --git a/odoo-bringout-oca-project-project_stock/project_stock/i18n/pt_BR.po b/odoo-bringout-oca-project-project_stock/project_stock/i18n/pt_BR.po new file mode 100644 index 0000000..76884b5 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/i18n/pt_BR.po @@ -0,0 +1,348 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stock +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-06-11 15:35+0000\n" +"Last-Translator: Rodrigo Macedo \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" +"X-Generator: Weblate 4.17\n" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_assign +msgid "Allow Moves Action Assign" +msgstr "Permitir Atribuição de Ação em Movimentos" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__allow_moves_action_confirm +msgid "Allow Moves Action Confirm" +msgstr "Permitir Confirmar Ação em Movimentos" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__unreserve_visible +msgid "Allowed to Unreserve Inventory" +msgstr "Permite cancelar a Reserva de Inventário" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution +msgid "Analytic" +msgstr "Analítico" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_distribution +msgid "Analytic Distribution" +msgstr "Distribuição Analítica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_distribution_search +msgid "Analytic Distribution Search" +msgstr "Pesquisa de Distribuição Analítica" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_account_analytic_line +msgid "Analytic Line" +msgstr "Linha Analítica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_line_ids +msgid "Analytic Lines" +msgstr "Linhas Analíticas" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__analytic_precision +msgid "Analytic Precision" +msgstr "Precisão Analítica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__stock_analytic_date +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_date +msgid "Analytic date" +msgstr "Data Analítica" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__assigned +msgid "Assigned" +msgstr "Atribuído" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__cancel +msgid "Cancel" +msgstr "Cancelar" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Cancel Materials" +msgstr "Cancelar Materiais" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Check availability materials" +msgstr "Verifique a disponibilidade de materiais" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Confirm materials" +msgstr "Confirmar Materiais" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__confirmed +msgid "Confirmed" +msgstr "Confirmado" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Consumed" +msgstr "Consumido" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_id +msgid "Default location from which materials are consumed." +msgstr "Local padrão de onde os materiais são consumidos." + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_project__location_dest_id +msgid "Default location to which materials are consumed." +msgstr "Local padrão para o qual os materiais são consumidos." + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_dest_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_dest_id +msgid "Destination Location" +msgstr "Local de Destino" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__done +msgid "Done" +msgstr "Feito" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__done_stock_moves +msgid "Done Stock Moves" +msgstr "Movimentos de Estoque Feitos" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Forecasted Report" +msgstr "Relatório Previsto" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__group_id +msgid "Group" +msgstr "Grupo" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__done_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__done_stock_moves +msgid "" +"If you check this box, when a task is in this state, you will not be able to " +"add more stock moves but they can be viewed." +msgstr "" +"Se você marcar esta caixa, quando uma tarefa estiver neste estado, você não " +"poderá adicionar mais movimentos de estoque, mas eles poderão ser " +"visualizados." + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,help:project_stock.field_project_task_type__use_stock_moves +msgid "" +"If you mark this check, when a task goes to this state, it will use stock " +"moves" +msgstr "" +"Se você marcar esta verificação, quando uma tarefa for para este estado, ela " +"usará movimentos de estoque" + +#. module: project_stock +#: model:ir.actions.act_window,name:project_stock.action_project_task_moves +msgid "Inventory Moves" +msgstr "Movimentações de Inventário" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#, python-format +msgid "It is not possible to change this with reserved movements in tasks." +msgstr "Não é possível alterar isso com movimentos reservados em tarefas." + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Lock" +msgstr "Trancar" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_analytic_account_id +msgid "Move Analytic Account" +msgstr "Conta Analítica do Movimento" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__stock_analytic_account_id +msgid "Move created will be assigned to this analytic account" +msgstr "O movimento criado será atribuído a esta conta analítica" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__picking_type_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__picking_type_id +msgid "Operation Type" +msgstr "Tipo de Operação" + +#. module: project_stock +#: model:ir.model.fields.selection,name:project_stock.selection__project_task__stock_state__pending +msgid "Pending" +msgstr "Pendente" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Product Moves" +msgstr "Movimentações de Produtos" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Movimentações de Produto (Linha de Movimentação de Estoque)" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_account_analytic_line__stock_task_id +msgid "Project Task" +msgstr "Tarefa do Projeto" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__task_id +msgid "Related Task" +msgstr "Tarefa Relacionada" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "Reserved" +msgstr "Reservado" + +#. module: project_stock +#. odoo-python +#: code:addons/project_stock/models/project_task.py:0 +#: model:ir.model,name:project_stock.model_stock_scrap +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +#, python-format +msgid "Scrap" +msgstr "Sucatear" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_count +msgid "Scrap Move" +msgstr "Movimento de Sucata" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__scrap_ids +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Scraps" +msgstr "Sucatas" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_project__location_id +#: model:ir.model.fields,field_description:project_stock.field_project_task__location_id +msgid "Source Location" +msgstr "Local de Origem" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.edit_project +msgid "Stock" +msgstr "Estoque" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Stock Info" +msgstr "Info Estoque" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_stock_move +msgid "Stock Move" +msgstr "Mover Estoque" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__move_ids +msgid "Stock Moves" +msgstr "Movimentação de Estoque" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_moves_is_locked +msgid "Stock Moves Is Locked" +msgstr "Movimentação de Estoque esta Bloqueada" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__stock_state +msgid "Stock State" +msgstr "Situação do Estoque" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task +#: model:ir.model.fields,field_description:project_stock.field_stock_move_line__task_id +#: model:ir.model.fields,field_description:project_stock.field_stock_scrap__task_id +msgid "Task" +msgstr "Tarefa" + +#. module: project_stock +#: model:ir.model,name:project_stock.model_project_task_type +msgid "Task Stage" +msgstr "Estagio da Tarefa" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_stock_move__raw_material_task_id +msgid "Task for material" +msgstr "Tarefa para Material" + +#. module: project_stock +#: model:project.project,name:project_stock.project_project_tm_test +#: model:stock.picking.type,name:project_stock.stock_picking_type_tm_test +msgid "Task material" +msgstr "Material de Tarefa" + +#. module: project_stock +#: model:project.project,label_tasks:project_stock.project_project_tm_test +msgid "Tasks" +msgstr "Tarefas" + +#. module: project_stock +#: model:ir.model.fields,help:project_stock.field_project_task__unreserve_visible +msgid "Technical field to check when we can unreserve" +msgstr "Campo técnico para verificar quando podemos cancelar a reserva" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_stock_move_raw_tree +msgid "To Consume" +msgstr "Consumir" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Transfer Materials" +msgstr "Transferir Materiais" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unlock" +msgstr "Destravar" + +#. module: project_stock +#: model_terms:ir.ui.view,arch_db:project_stock.view_task_form2 +msgid "Unreserve" +msgstr "Cancelar reserva" + +#. module: project_stock +#: model:ir.model.fields,field_description:project_stock.field_project_task__use_stock_moves +#: model:ir.model.fields,field_description:project_stock.field_project_task_type__use_stock_moves +msgid "Use Stock Moves" +msgstr "Usar Movimentos de Estoque" + +#~ msgid "Move Analytic Tags" +#~ msgstr "Etiqueta Movimento Analítico" diff --git a/odoo-bringout-oca-project-project_stock/project_stock/migrations/16.0.1.0.0/post-migration.py b/odoo-bringout-oca-project-project_stock/project_stock/migrations/16.0.1.0.0/post-migration.py new file mode 100644 index 0000000..d185b63 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/migrations/16.0.1.0.0/post-migration.py @@ -0,0 +1,22 @@ +# Copyright 2023 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + """If table exists and there are any records, we set the module + project_stock_analytic_tag to be installed.""" + if openupgrade.table_exists(env.cr, "account_analytic_tag_project_task_stock_rel"): + env.cr.execute( + """SELECT COUNT(*) + FROM account_analytic_tag_project_task_stock_rel""", + ) + if env.cr.fetchone()[0]: + openupgrade.logged_query( + env.cr, + """UPDATE ir_module_module + SET state = 'to install' + WHERE name = 'project_stock_analytic_tag'""", + ) diff --git a/odoo-bringout-oca-project-project_stock/project_stock/models/__init__.py b/odoo-bringout-oca-project-project_stock/project_stock/models/__init__.py new file mode 100644 index 0000000..e94b5f5 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/models/__init__.py @@ -0,0 +1,7 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import account_analytic_line +from . import project_project +from . import project_task +from . import stock_move +from . import stock_scrap diff --git a/odoo-bringout-oca-project-project_stock/project_stock/models/account_analytic_line.py b/odoo-bringout-oca-project-project_stock/project_stock/models/account_analytic_line.py new file mode 100644 index 0000000..03cf95a --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/models/account_analytic_line.py @@ -0,0 +1,21 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import fields, models + + +class AccountAnalyticLine(models.Model): + _inherit = "account.analytic.line" + + stock_task_id = fields.Many2one( + comodel_name="project.task", string="Project Task", ondelete="cascade" + ) + + def _timesheet_postprocess_values(self, values): + """When hr_timesheet addon is installed, in the create() and write() methods, + the amount is recalculated according to the employee cost. + We need to force that in the records related to stock tasks the price is not + updated.""" + res = super()._timesheet_postprocess_values(values) + for key in self.filtered(lambda x: x.stock_task_id).ids: + res[key].pop("amount", None) + return res diff --git a/odoo-bringout-oca-project-project_stock/project_stock/models/project_project.py b/odoo-bringout-oca-project-project_stock/project_stock/models/project_project.py new file mode 100644 index 0000000..ecc6bbc --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/models/project_project.py @@ -0,0 +1,46 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import api, fields, models + + +class ProjectProject(models.Model): + _inherit = "project.project" + + picking_type_id = fields.Many2one( + comodel_name="stock.picking.type", + string="Operation Type", + readonly=False, + domain="[('company_id', '=', company_id)]", + index=True, + check_company=True, + ) + location_id = fields.Many2one( + comodel_name="stock.location", + string="Source Location", + readonly=False, + check_company=True, + index=True, + help="Default location from which materials are consumed.", + ) + location_dest_id = fields.Many2one( + comodel_name="stock.location", + string="Destination Location", + readonly=False, + index=True, + check_company=True, + help="Default location to which materials are consumed.", + ) + stock_analytic_date = fields.Date(string="Analytic date") + + @api.onchange("picking_type_id") + def _onchange_picking_type_id(self): + self.location_id = self.picking_type_id.default_location_src_id.id + self.location_dest_id = self.picking_type_id.default_location_dest_id.id + + def write(self, vals): + """Update location information on pending moves when changed.""" + res = super().write(vals) + field_names = ("location_id", "location_dest_id") + if any(vals.get(field) for field in field_names): + self.task_ids._update_moves_info() + return res diff --git a/odoo-bringout-oca-project-project_stock/project_stock/models/project_task.py b/odoo-bringout-oca-project-project_stock/project_stock/models/project_task.py new file mode 100644 index 0000000..57bfdc3 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/models/project_task.py @@ -0,0 +1,261 @@ +# Copyright 2022-2025 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class ProjectTask(models.Model): + _name = "project.task" + _inherit = ["project.task", "analytic.mixin"] + + scrap_ids = fields.One2many( + comodel_name="stock.scrap", inverse_name="task_id", string="Scraps" + ) + scrap_count = fields.Integer( + compute="_compute_scrap_move_count", string="Scrap Move" + ) + move_ids = fields.One2many( + comodel_name="stock.move", + inverse_name="raw_material_task_id", + string="Stock Moves", + copy=False, + domain=[("scrapped", "=", False)], + ) + use_stock_moves = fields.Boolean(related="stage_id.use_stock_moves") + done_stock_moves = fields.Boolean(related="stage_id.done_stock_moves") + stock_moves_is_locked = fields.Boolean(default=True) + allow_moves_action_confirm = fields.Boolean( + compute="_compute_allow_moves_action_confirm" + ) + allow_moves_action_assign = fields.Boolean( + compute="_compute_allow_moves_action_assign" + ) + stock_state = fields.Selection( + selection=[ + ("pending", "Pending"), + ("confirmed", "Confirmed"), + ("assigned", "Assigned"), + ("done", "Done"), + ("cancel", "Cancel"), + ], + compute="_compute_stock_state", + ) + picking_type_id = fields.Many2one( + comodel_name="stock.picking.type", + string="Operation Type", + readonly=False, + domain="[('company_id', '=', company_id)]", + index=True, + check_company=True, + ) + location_id = fields.Many2one( + comodel_name="stock.location", + string="Source Location", + readonly=False, + index=True, + check_company=True, + ) + location_dest_id = fields.Many2one( + comodel_name="stock.location", + string="Destination Location", + readonly=False, + index=True, + check_company=True, + ) + stock_analytic_date = fields.Date(string="Analytic date") + unreserve_visible = fields.Boolean( + string="Allowed to Unreserve Inventory", + compute="_compute_unreserve_visible", + help="Technical field to check when we can unreserve", + ) + stock_analytic_account_id = fields.Many2one( + comodel_name="account.analytic.account", + string="Move Analytic Account", + help="Move created will be assigned to this analytic account", + ) + stock_analytic_distribution = fields.Json( + "Analytic Distribution", + copy=True, + readonly=False, + ) + stock_analytic_line_ids = fields.One2many( + comodel_name="account.analytic.line", + inverse_name="stock_task_id", + string="Analytic Lines", + ) + group_id = fields.Many2one( + comodel_name="procurement.group", + ) + + def _compute_scrap_move_count(self): + data = self.env["stock.scrap"].read_group( + [("task_id", "in", self.ids)], ["task_id"], ["task_id"] + ) + count_data = {item["task_id"][0]: item["task_id_count"] for item in data} + for item in self: + item.scrap_count = count_data.get(item.id, 0) + + @api.depends("move_ids", "move_ids.state") + def _compute_allow_moves_action_confirm(self): + for item in self: + item.allow_moves_action_confirm = any( + move.state == "draft" for move in item.move_ids + ) + + @api.depends("move_ids", "move_ids.state") + def _compute_allow_moves_action_assign(self): + for item in self: + item.allow_moves_action_assign = any( + move.state in ("confirmed", "partially_available") + for move in item.move_ids + ) + + @api.depends("move_ids", "move_ids.state") + def _compute_stock_state(self): + for task in self: + task.stock_state = "pending" + if task.move_ids: + states = task.mapped("move_ids.state") + for state in ("confirmed", "assigned", "done", "cancel"): + if state in states: + task.stock_state = state + break + + @api.depends("move_ids", "move_ids.quantity_done") + def _compute_unreserve_visible(self): + for item in self: + already_reserved = item.mapped("move_ids.move_line_ids") + any_quantity_done = any([m.quantity_done > 0 for m in item.move_ids]) + item.unreserve_visible = not any_quantity_done and already_reserved + + @api.onchange("picking_type_id") + def _onchange_picking_type_id(self): + self.location_id = self.picking_type_id.default_location_src_id.id + self.location_dest_id = self.picking_type_id.default_location_dest_id.id + + def _check_tasks_with_pending_moves(self): + if self.move_ids and "assigned" in self.mapped("move_ids.state"): + raise UserError( + _("It is not possible to change this with reserved movements in tasks.") + ) + + def _update_moves_info(self): + for item in self: + item._check_tasks_with_pending_moves() + picking_type = item.picking_type_id or item.project_id.picking_type_id + location = item.location_id or item.project_id.location_id + location_dest = item.location_dest_id or item.project_id.location_dest_id + moves = item.move_ids.filtered( + lambda x: x.state not in ("cancel", "done") + and (x.location_id != location or x.location_dest_id != location_dest) + ) + moves.update( + { + "warehouse_id": location.warehouse_id.id, + "location_id": location.id, + "location_dest_id": location_dest.id, + "picking_type_id": picking_type.id, + } + ) + self.action_assign() + + @api.model + def _prepare_procurement_group_vals(self): + return {"name": "Task-ID: %s" % self.id} + + def action_confirm(self): + self.mapped("move_ids")._action_confirm() + + def action_assign(self): + self.action_confirm() + self.mapped("move_ids")._action_assign() + + def button_scrap(self): + self.ensure_one() + move_items = self.move_ids.filtered(lambda x: x.state not in ("done", "cancel")) + return { + "name": _("Scrap"), + "view_mode": "form", + "res_model": "stock.scrap", + "view_id": self.env.ref("stock.stock_scrap_form_view2").id, + "type": "ir.actions.act_window", + "context": { + "default_task_id": self.id, + "product_ids": move_items.mapped("product_id").ids, + "default_company_id": self.company_id.id, + }, + "target": "new", + } + + def do_unreserve(self): + for item in self: + item.move_ids.filtered( + lambda x: x.state not in ("done", "cancel") + )._do_unreserve() + return True + + def button_unreserve(self): + self.ensure_one() + self.do_unreserve() + return True + + def action_cancel(self): + """Cancel the stock moves and remove the analytic lines created from + stock moves when cancelling the task. + """ + self.mapped("move_ids.move_line_ids").write({"qty_done": 0}) + # Use sudo to avoid error for users with no access to analytic + self.sudo().stock_analytic_line_ids.unlink() + self.stock_moves_is_locked = True + return True + + def action_toggle_stock_moves_is_locked(self): + self.ensure_one() + self.stock_moves_is_locked = not self.stock_moves_is_locked + return True + + def action_done(self): + # Filter valid stock moves (avoiding those done and cancelled). + for move in self.mapped("move_ids").filtered( + lambda x: x.state not in ("done", "cancel") + ): + move.quantity_done = move.reserved_availability + self.move_ids._action_done() + + def action_see_move_scrap(self): + self.ensure_one() + action = self.env["ir.actions.actions"]._for_xml_id("stock.action_stock_scrap") + action["domain"] = [("task_id", "=", self.id)] + action["context"] = dict(self._context, default_origin=self.name) + return action + + def write(self, vals): + res = super().write(vals) + if "stage_id" in vals: + stage = self.env["project.task.type"].browse(vals.get("stage_id")) + if stage.done_stock_moves: + # Avoid permissions error if the user does not have access to stock. + self.sudo().action_assign() + # Update info + field_names = ("location_id", "location_dest_id") + if any(vals.get(field) for field in field_names): + self._update_moves_info() + return res + + def unlink(self): + # Use sudo to avoid error to users with no access to analytic + # related to hr_timesheet addon + return super(ProjectTask, self.sudo()).unlink() + + +class ProjectTaskType(models.Model): + _inherit = "project.task.type" + + use_stock_moves = fields.Boolean( + help="If you mark this check, when a task goes to this state, " + "it will use stock moves", + ) + done_stock_moves = fields.Boolean( + help="If you check this box, when a task is in this state, you will not " + "be able to add more stock moves but they can be viewed." + ) diff --git a/odoo-bringout-oca-project-project_stock/project_stock/models/stock_move.py b/odoo-bringout-oca-project-project_stock/project_stock/models/stock_move.py new file mode 100644 index 0000000..6f40c4d --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/models/stock_move.py @@ -0,0 +1,148 @@ +# Copyright 2022-2025 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import api, fields, models + + +class StockMove(models.Model): + _inherit = "stock.move" + + task_id = fields.Many2one( + comodel_name="project.task", + string="Related Task", + check_company=True, + ) + raw_material_task_id = fields.Many2one( + comodel_name="project.task", string="Task for material", check_company=True + ) + + @api.onchange("product_id") + def _onchange_product_id(self): + """It is necessary to overwrite the name to prevent set product name + from being auto-defined.""" + res = super()._onchange_product_id() + if self.raw_material_task_id: + self.name = self.raw_material_task_id.name + return res + + def _prepare_analytic_line_from_task(self): + product = self.product_id + company_id = self.env.company + task = self.task_id or self.raw_material_task_id + analytic_account = ( + task.stock_analytic_account_id or task.project_id.analytic_account_id + ) + if not analytic_account: + return False + # Apply sudo() in case there is any rule that does not allow access to + # the analytic account, for example with analytic_hr_department_restriction + analytic_account = analytic_account.sudo() + res = { + "date": ( + task.stock_analytic_date + or task.project_id.stock_analytic_date + or fields.date.today() + ), + "name": task.name + ": " + product.name, + "unit_amount": self.quantity_done, + "account_id": analytic_account.id, + "user_id": self._uid, + "product_uom_id": self.product_uom.id, + "company_id": analytic_account.company_id.id or self.env.company.id, + "partner_id": task.partner_id.id or task.project_id.partner_id.id or False, + "stock_task_id": task.id, + } + amount_unit = product.with_context(uom=self.product_uom.id).price_compute( + "standard_price" + )[product.id] + amount = amount_unit * self.quantity_done or 0.0 + result = round(amount, company_id.currency_id.decimal_places) * -1 + vals = {"amount": result} + analytic_line_fields = self.env["account.analytic.line"]._fields + # Extra fields added in account addon + if "ref" in analytic_line_fields: + vals["ref"] = task.name + if "product_id" in analytic_line_fields: + vals["product_id"] = product.id + # Prevent incoherence when hr_timesheet addon is installed. + if "project_id" in analytic_line_fields: + vals["project_id"] = False + # distributions + if task.stock_analytic_distribution: + new_amount = 0 + for distribution in task.stock_analytic_distribution.values(): + new_amount -= (amount / 100) * distribution + vals["amount"] = new_amount + res.update(vals) + return res + + @api.model + def default_get(self, fields_list): + defaults = super().default_get(fields_list) + if self.env.context.get("default_raw_material_task_id"): + task = self.env["project.task"].browse( + self.env.context.get("default_raw_material_task_id") + ) + if not task.group_id: + task.group_id = self.env["procurement.group"].create( + task._prepare_procurement_group_vals() + ) + defaults.update( + { + "group_id": task.group_id.id, + "location_id": ( + task.location_id.id or task.project_id.location_id.id + ), + "location_dest_id": ( + task.location_dest_id.id or task.project_id.location_dest_id.id + ), + "picking_type_id": ( + task.picking_type_id.id or task.project_id.picking_type_id.id + ), + } + ) + return defaults + + def _action_done(self, cancel_backorder=False): + """Create the analytical notes for stock movements linked to tasks.""" + moves_todo = super()._action_done(cancel_backorder) + # Use sudo to avoid error for users with no access to analytic + analytic_line_model = self.env["account.analytic.line"].sudo() + for move in moves_todo.filtered(lambda x: x.raw_material_task_id): + vals = move._prepare_analytic_line_from_task() + if vals: + analytic_line_model.create(vals) + return moves_todo + + def action_task_product_forecast_report(self): + self.ensure_one() + action = self.product_id.action_product_forecast_report() + action["context"] = { + "active_id": self.product_id.id, + "active_model": "product.product", + "move_to_match_ids": self.ids, + } + warehouse = self.warehouse_id + if warehouse: + action["context"]["warehouse"] = warehouse.id + return action + + +class StockMoveLine(models.Model): + _inherit = "stock.move.line" + + task_id = fields.Many2one( + comodel_name="project.task", + string="Task", + compute="_compute_task_id", + store=True, + ) + + @api.depends("move_id.raw_material_task_id", "move_id.task_id") + def _compute_task_id(self): + for item in self: + task = ( + item.move_id.raw_material_task_id + if item.move_id.raw_material_task_id + else item.move_id.task_id + ) + item.task_id = task if task else False diff --git a/odoo-bringout-oca-project-project_stock/project_stock/models/stock_scrap.py b/odoo-bringout-oca-project-project_stock/project_stock/models/stock_scrap.py new file mode 100644 index 0000000..e0f3243 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/models/stock_scrap.py @@ -0,0 +1,25 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import api, fields, models + + +class StockMove(models.Model): + _inherit = "stock.scrap" + + task_id = fields.Many2one( + comodel_name="project.task", string="Task", check_company=True + ) + + @api.onchange("task_id") + def _onchange_task_id(self): + if self.task_id: + self.location_id = self.task_id.move_raw_ids.filtered( + lambda x: x.state not in ("done", "cancel") + ) and (self.task_id.location_src_id.id or self.task_id.location_dest_id.id) + + def _prepare_move_values(self): + vals = super()._prepare_move_values() + if self.task_id: + vals["origin"] = vals["origin"] or self.task_id.name + vals.update({"raw_material_task_id": self.task_id.id}) + return vals diff --git a/odoo-bringout-oca-project-project_stock/project_stock/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_stock/project_stock/readme/CONFIGURE.rst new file mode 100644 index 0000000..8875ba8 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/readme/CONFIGURE.rst @@ -0,0 +1,17 @@ +To configure this module, you need to: + +#. Go to *Inventory -> Configuration -> Settings* and check "Storage Locations" option. +#. Go to *Inventory -> Configuration -> Operation types*. +#. Create a new operation type with the following options: + * `Operation type`: Task material + * `Code`: TM + * `Type of operation`: Delivery + * `Default Source Location`: WH/Stock + * `Default Destination Location`: WH/Stock/Shelf 1 +#. Go to *Project -> Configuration -> Projects*. +#. Create a new project with the following options: + * `Name`: Task material + * `Operation type`: Task material +#. Go to *Project -> Configuration -> Task Stages* and edit some records. + * `In progress`: Check Use Stock Moves option and add the created project. + * `Done`: Check Use Stock Moves option + Done Stock Moves and add the created project. diff --git a/odoo-bringout-oca-project-project_stock/project_stock/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_stock/project_stock/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..5fb7130 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza diff --git a/odoo-bringout-oca-project-project_stock/project_stock/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_stock/project_stock/readme/DESCRIPTION.rst new file mode 100644 index 0000000..25fda0e --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows to consume products directly from a project task. diff --git a/odoo-bringout-oca-project-project_stock/project_stock/readme/USAGE.rst b/odoo-bringout-oca-project-project_stock/project_stock/readme/USAGE.rst new file mode 100644 index 0000000..9d9b0d0 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/readme/USAGE.rst @@ -0,0 +1,11 @@ +#. Go to *Projects -> Task material (project)* and create a task and edit it. +#. *Stock Info* is displayed in the *Extra info* tab with the same project information, but it can be modified. +#. Add some product to *Stock Info* tab and set some initial demand (1 for example). +#. Click on the button *Confirm material* to confirm all moves. +#. Change the stage to Done. +#. *Stock Info* tab is readonly and some buttons show in header: + * `Check availability materials`: Product availability will be checked. + * `Transfer Materials`: Stock moves are confirmed and moved from one location to another. + * `Unreserve`: Remove the reservation stock of the products. + * `Cancel Materials`: Set the moves of the products as cancelled. + * `Scrap`: Allows the defined products to be scrapped. diff --git a/odoo-bringout-oca-project-project_stock/project_stock/static/description/icon.png b/odoo-bringout-oca-project-project_stock/project_stock/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_stock/project_stock/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_stock/project_stock/static/description/index.html b/odoo-bringout-oca-project-project_stock/project_stock/static/description/index.html new file mode 100644 index 0000000..d6515a4 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/static/description/index.html @@ -0,0 +1,492 @@ + + + + + +Project Stock + + + +
+

Project Stock

+ + +

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

+

This module allows to consume products directly from a project task.

+

Table of contents

+ +
+

Configuration

+

To configure this module, you need to:

+
    +
  1. Go to Inventory -> Configuration -> Settings and check “Storage Locations” option.
  2. +
  3. Go to Inventory -> Configuration -> Operation types.
  4. +
  5. +
    Create a new operation type with the following options:
    +
      +
    • Operation type: Task material
    • +
    • Code: TM
    • +
    • Type of operation: Delivery
    • +
    • Default Source Location: WH/Stock
    • +
    • Default Destination Location: WH/Stock/Shelf 1
    • +
    +
    +
    +
  6. +
  7. Go to Project -> Configuration -> Projects.
  8. +
  9. +
    Create a new project with the following options:
    +
      +
    • Name: Task material
    • +
    • Operation type: Task material
    • +
    +
    +
    +
  10. +
  11. +
    Go to Project -> Configuration -> Task Stages and edit some records.
    +
      +
    • In progress: Check Use Stock Moves option and add the created project.
    • +
    • Done: Check Use Stock Moves option + Done Stock Moves and add the created project.
    • +
    +
    +
    +
  12. +
+
+
+

Usage

+
    +
  1. Go to Projects -> Task material (project) and create a task and edit it.
  2. +
  3. Stock Info is displayed in the Extra info tab with the same project information, but it can be modified.
  4. +
  5. Add some product to Stock Info tab and set some initial demand (1 for example).
  6. +
  7. Click on the button Confirm material to confirm all moves.
  8. +
  9. Change the stage to Done.
  10. +
  11. +
    Stock Info tab is readonly and some buttons show in header:
    +
      +
    • Check availability materials: Product availability will be checked.
    • +
    • Transfer Materials: Stock moves are confirmed and moved from one location to another.
    • +
    • Unreserve: Remove the reservation stock of the products.
    • +
    • Cancel Materials: Set the moves of the products as cancelled.
    • +
    • Scrap: Allows the defined products to be scrapped.
    • +
    +
    +
    +
  12. +
+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:
      +
    • Víctor Martínez
    • +
    • Pedro M. Baeza
    • +
    +
  • +
+
+
+

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:

+

victoralmau

+

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/odoo-bringout-oca-project-project_stock/project_stock/tests/__init__.py b/odoo-bringout-oca-project-project_stock/project_stock/tests/__init__.py new file mode 100644 index 0000000..cc6748b --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_project_stock diff --git a/odoo-bringout-oca-project-project_stock/project_stock/tests/common.py b/odoo-bringout-oca-project-project_stock/project_stock/tests/common.py new file mode 100644 index 0000000..1eb846f --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/tests/common.py @@ -0,0 +1,88 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests import Form, common +from odoo.tests.common import new_test_user + +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + + +class TestProjectStockBase(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + cls.product_a = cls.env["product.product"].create( + {"name": "Test product A", "detailed_type": "product", "standard_price": 10} + ) + cls.product_b = cls.env["product.product"].create( + {"name": "Test product B", "detailed_type": "product", "standard_price": 20} + ) + cls.product_c = cls.env["product.product"].create( + {"name": "Test product C", "detailed_type": "product", "standard_price": 0} + ) + cls.picking_type = cls.env.ref("project_stock.stock_picking_type_tm_test") + cls.location = cls.picking_type.default_location_src_id + cls.location_dest = cls.picking_type.default_location_dest_id + cls.plan = cls.env["account.analytic.plan"].create( + { + "name": "Projects Plan", + "company_id": False, + } + ) + cls.analytic_account = cls.env["account.analytic.account"].create( + { + "name": "Test account", + "plan_id": cls.plan.id, + }, + ) + cls.analytic_account_2 = cls.analytic_account.copy( + { + "name": "Test account 2", + "plan_id": cls.plan.id, + } + ) + cls.project = cls.env.ref("project_stock.project_project_tm_test") + cls.project.analytic_account_id = cls.analytic_account + cls.stage_in_progress = cls.env.ref("project.project_stage_1") + cls.stage_done = cls.env.ref("project.project_stage_2") + group_stock_user = "stock.group_stock_user" + cls.basic_user = new_test_user( + cls.env, + login="basic-user", + groups="project.group_project_user,%s" % group_stock_user, + ) + new_test_user( + cls.env, + login="manager-user", + groups="project.group_project_manager,%s,analytic.group_analytic_accounting" + % group_stock_user, + ) + new_test_user( + cls.env, + login="project-task-user", + groups="project.group_project_user,stock.group_stock_user", + ) + + def _prepare_context_task(self): + return { + "default_project_id": self.project.id, + "default_stage_id": self.stage_in_progress.id, + # We need to set default values according to compute store fields + "default_location_id": self.project.location_id.id, + "default_location_dest_id": self.project.location_dest_id.id, + "default_picking_type_id": self.project.picking_type_id.id, + } + + def _create_task(self, products): + task_form = Form( + self.env["project.task"].with_context(**self._prepare_context_task(self)) + ) + task_form.name = "Test task" + # Save task to use default_get() correctlly in stock.moves + task_form.save() + for product in products: + with task_form.move_ids.new() as move_form: + move_form.product_id = product[0] + move_form.product_uom_qty = product[1] + return task_form.save() diff --git a/odoo-bringout-oca-project-project_stock/project_stock/tests/test_project_stock.py b/odoo-bringout-oca-project-project_stock/project_stock/tests/test_project_stock.py new file mode 100644 index 0000000..70d527d --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/tests/test_project_stock.py @@ -0,0 +1,356 @@ +# Copyright 2022-2025 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields +from odoo.tests import Form +from odoo.tests.common import users +from odoo.tools import mute_logger + +from .common import TestProjectStockBase + + +class TestProjectStock(TestProjectStockBase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls._create_stock_quant(cls, cls.product_a, cls.location, 2) + cls._create_stock_quant(cls, cls.product_b, cls.location, 1) + cls._create_stock_quant(cls, cls.product_c, cls.location, 1) + cls.task = cls._create_task(cls, [(cls.product_a, 2), (cls.product_b, 1)]) + cls.move_product_a = cls.task.move_ids.filtered( + lambda x: x.product_id == cls.product_a + ) + cls.move_product_b = cls.task.move_ids.filtered( + lambda x: x.product_id == cls.product_b + ) + cls.env.ref("base.user_admin").write( + { + "groups_id": [ + (4, cls.env.ref("analytic.group_analytic_accounting").id), + ], + } + ) + + def _create_stock_quant(self, product, location, qty): + self.env["stock.quant"].create( + {"product_id": product.id, "location_id": location.id, "quantity": qty} + ) + + def test_project_task_misc(self): + self.assertTrue(self.task.group_id) + self.assertEqual(self.task.picking_type_id, self.picking_type) + self.assertEqual(self.task.location_id, self.location) + self.assertEqual(self.task.location_dest_id, self.location_dest) + self.assertEqual(self.move_product_a.name, self.task.name) + self.assertEqual(self.move_product_a.group_id, self.task.group_id) + self.assertEqual(self.move_product_a.reference, self.task.name) + self.assertEqual(self.move_product_a.location_id, self.location) + self.assertEqual(self.move_product_a.location_dest_id, self.location_dest) + self.assertEqual(self.move_product_a.picking_type_id, self.picking_type) + self.assertEqual(self.move_product_a.raw_material_task_id, self.task) + self.assertEqual(self.move_product_b.group_id, self.task.group_id) + self.assertEqual(self.move_product_b.location_id, self.location) + self.assertEqual(self.move_product_b.location_dest_id, self.location_dest) + self.assertEqual(self.move_product_b.picking_type_id, self.picking_type) + self.assertEqual(self.move_product_b.raw_material_task_id, self.task) + + def _test_task_analytic_lines_from_task(self, amount): + self.task = self.env["project.task"].browse(self.task.id) + # Prevent error when hr_timesheet addon is installed. + stock_analytic_lines = self.task.sudo().stock_analytic_line_ids + self.assertEqual(len(stock_analytic_lines), 2) + self.assertEqual(sum(stock_analytic_lines.mapped("unit_amount")), 3) + self.assertEqual(sum(stock_analytic_lines.mapped("amount")), amount) + self.assertIn( + self.analytic_account, + stock_analytic_lines.mapped("account_id"), + ) + # Prevent incoherence when hr_timesheet addon is installed. + if "project_id" in self.task.stock_analytic_line_ids._fields: + self.assertFalse(self.task.stock_analytic_line_ids.project_id) + + def test_project_task_without_analytic_account(self): + self.task = self.env["project.task"].browse(self.task.id) + # Prevent error when hr_timesheet addon is installed. + if "allow_timesheets" in self.task.project_id._fields: + self.task.project_id.allow_timesheets = False + self.task.project_id.analytic_account_id = False + self.task.write({"stage_id": self.stage_done.id}) + self.task.action_done() + self.assertFalse(self.task.stock_analytic_line_ids) + + def test_project_task_picking_done_analytic_items(self): + self.task = self.env["project.task"].browse(self.task.id) + self.task.action_assign() + picking = self.task.move_ids.picking_id + for move in picking.move_ids: + move.quantity_done = move.product_uom_qty + picking.button_validate() + self.assertEqual(picking.state, "done") + self._test_task_analytic_lines_from_task(-40) + self.assertEqual( + fields.first(self.task.stock_analytic_line_ids).date, + fields.Date.from_string("1990-01-01"), + ) + + @users("manager-user") + def test_project_task_without_analytic_account_manager_user(self): + self.test_project_task_without_analytic_account() + + def test_project_task_user_access_without_stock_group(self): + self.basic_user.write( + { + "groups_id": [(6, 0, [self.env.ref("project.group_project_user").id])], + } + ) + task_form = Form(self.task.with_user(self.basic_user)) + self.assertEqual(task_form.project_id, self.project) + + def test_project_task_analytic_lines_without_tags(self): + self.task = self.env["project.task"].browse(self.task.id) + self.task.write({"stage_id": self.stage_done.id}) + self.task.action_done() + self._test_task_analytic_lines_from_task(-40) + self.assertEqual( + fields.first(self.task.stock_analytic_line_ids).date, + fields.Date.from_string("1990-01-01"), + ) + + @users("manager-user") + def test_project_task_analytic_lines_without_tags_manager_user(self): + self.test_project_task_analytic_lines_without_tags() + + def test_project_task_analytic_lines_with_tag_1(self): + self.task = self.env["project.task"].browse(self.task.id) + self.task.write( + { + "stock_analytic_date": "1991-01-01", + } + ) + self.task.write({"stage_id": self.stage_done.id}) + self.task.action_done() + self._test_task_analytic_lines_from_task(-40) + self.assertEqual( + fields.first(self.task.stock_analytic_line_ids).date, + fields.Date.from_string("1991-01-01"), + ) + + @users("manager-user") + def test_project_task_analytic_lines_with_tag_1_manager_user(self): + self.task.stock_analytic_distribution = {self.analytic_account.id: 100} + self.test_project_task_analytic_lines_with_tag_1() + + def test_project_task_analytic_lines_with_tag_2(self): + self.task = self.env["project.task"].browse(self.task.id) + self.task.project_id.stock_analytic_date = False + self.task.write({"stage_id": self.stage_done.id}) + self.task.action_done() + self._test_task_analytic_lines_from_task(-40) + self.assertEqual( + fields.first(self.task.stock_analytic_line_ids).date, fields.date.today() + ) + + @users("manager-user") + def test_project_task_analytic_lines_with_tag_2_manager_user(self): + self.task.stock_analytic_distribution = { + self.analytic_account.id: 50, + self.analytic_account_2.id: 50, + } + self.test_project_task_analytic_lines_with_tag_2() + + def test_project_task_process_done(self): + self.task = self.env["project.task"].browse(self.task.id) + self.assertEqual(self.move_product_a.state, "draft") + self.assertEqual(self.move_product_b.state, "draft") + # Change task stage (auto-confirm + auto-assign) + self.task.write({"stage_id": self.stage_done.id}) + self.assertEqual(self.move_product_a.state, "assigned") + self.assertEqual(self.move_product_b.state, "assigned") + self.assertEqual(self.move_product_a.reserved_availability, 2) + self.assertEqual(self.move_product_b.reserved_availability, 1) + self.assertTrue(self.task.stock_moves_is_locked) + self.task.action_toggle_stock_moves_is_locked() + self.assertFalse(self.task.stock_moves_is_locked) + # Add new stock_move + self.task.write({"stage_id": self.stage_in_progress.id}) + task_form = Form(self.task) + with task_form.move_ids.new() as move_form: + move_form.product_id = self.product_c + move_form.product_uom_qty = 1 + task_form.save() + move_product_c = self.task.move_ids.filtered( + lambda x: x.product_id == self.product_c + ) + self.assertEqual(move_product_c.group_id, self.task.group_id) + self.assertEqual(move_product_c.state, "draft") + self.task.action_assign() + self.assertEqual(move_product_c.state, "assigned") + self.task.write({"stage_id": self.stage_done.id}) + # action_done + self.task.action_done() + self.assertEqual(self.move_product_a.state, "done") + self.assertEqual(self.move_product_b.state, "done") + self.assertEqual(self.move_product_a.quantity_done, 2) + self.assertEqual(self.move_product_b.quantity_done, 1) + self.assertEqual(move_product_c.quantity_done, 1) + + @users("basic-user") + def test_project_task_process_done_basic_user(self): + self.test_project_task_process_done() + + @mute_logger("odoo.models.unlink") + def test_project_task_process_cancel(self): + self.task = self.env["project.task"].browse(self.task.id) + self.assertEqual(self.move_product_a.state, "draft") + self.assertEqual(self.move_product_b.state, "draft") + # Change task stage + self.task.write({"stage_id": self.stage_done.id}) + self.assertEqual(self.move_product_a.state, "assigned") + self.assertEqual(self.move_product_b.state, "assigned") + # action_done + self.task.action_done() + self.assertEqual(self.move_product_a.state, "done") + self.assertEqual(self.move_product_b.state, "done") + self.assertEqual(self.move_product_a.quantity_done, 2) + self.assertEqual(self.move_product_b.quantity_done, 1) + self.assertTrue(self.task.sudo().stock_analytic_line_ids) + # action_cancel + self.task.action_cancel() + self.assertEqual(self.move_product_a.state, "done") + self.assertEqual(self.move_product_b.state, "done") + self.assertEqual(self.move_product_a.quantity_done, 0) + self.assertEqual(self.move_product_b.quantity_done, 0) + self.assertFalse(self.task.stock_analytic_line_ids) + quant_a = self.product_a.stock_quant_ids.filtered( + lambda x: x.location_id == self.location + ) + quant_b = self.product_b.stock_quant_ids.filtered( + lambda x: x.location_id == self.location + ) + quant_c = self.product_c.stock_quant_ids.filtered( + lambda x: x.location_id == self.location + ) + self.assertEqual(quant_a.quantity, 2) + self.assertEqual(quant_b.quantity, 1) + self.assertEqual(quant_c.quantity, 1) + + @users("manager-user") + def test_project_task_process_cancel_manager_user(self): + self.test_project_task_process_cancel() + + @mute_logger("odoo.models.unlink") + def test_project_task_process_unreserve(self): + self.task = self.env["project.task"].browse(self.task.id) + self.assertEqual(self.move_product_a.state, "draft") + self.assertEqual(self.move_product_b.state, "draft") + # Change task stage (auto-confirm + auto-assign) + self.task.write({"stage_id": self.stage_done.id}) + self.assertTrue(self.move_product_a.move_line_ids) + self.assertEqual(self.move_product_a.move_line_ids.task_id, self.task) + self.assertEqual(self.move_product_a.state, "assigned") + self.assertEqual(self.move_product_b.state, "assigned") + self.assertEqual(self.move_product_a.reserved_availability, 2) + self.assertEqual(self.move_product_b.reserved_availability, 1) + self.assertTrue(self.task.unreserve_visible) + # button_unreserve + self.task.button_unreserve() + self.assertEqual(self.move_product_a.state, "confirmed") + self.assertEqual(self.move_product_b.state, "confirmed") + self.assertEqual(self.move_product_a.reserved_availability, 0) + self.assertEqual(self.move_product_b.reserved_availability, 0) + self.assertFalse(self.task.unreserve_visible) + + @mute_logger("odoo.models.unlink") + def test_project_task_process_01(self): + """Product A move cancel + Product B move OK.""" + self.task = self.env["project.task"].browse(self.task.id) + self.move_product_b.unlink() + self.assertEqual(self.move_product_a.state, "draft") + # Confirm + Edit to qty=0 + self.task.action_confirm() + self.assertEqual(self.move_product_a.state, "assigned") + self.move_product_a.product_uom_qty = 0 + self.task.action_done() + self.assertEqual(self.move_product_a.state, "cancel") + # Add extra line + task_form = Form(self.task) + with task_form.move_ids.new() as move_form: + move_form.product_id = self.product_b + move_form.product_uom_qty = 1 + task_form.save() + self.move_product_b = self.task.move_ids.filtered( + lambda x: x.product_id == self.product_b + ) + self.task.action_confirm() + self.assertEqual(self.move_product_b.state, "assigned") + self.task.action_done() + self.assertEqual(self.move_product_b.state, "done") + + def test_project_task_process_02(self): + self.task.action_confirm() + self.assertEqual(self.move_product_a.state, "assigned") + self.assertEqual(self.move_product_b.state, "assigned") + self.task.action_done() + self.assertEqual(self.move_product_a.state, "done") + self.assertEqual(self.move_product_b.state, "done") + self.assertEqual(len(self.task.stock_analytic_line_ids), 2) + self.task.action_done() + self.assertEqual(len(self.task.stock_analytic_line_ids), 2) + + @users("basic-user") + def test_project_task_process_unreserve_basic_user(self): + self.test_project_task_process_unreserve() + + def test_project_task_action_cancel(self): + self.assertTrue(self.env["project.task"].browse(self.task.id).action_cancel()) + + @users("basic-user") + def test_project_task_action_cancel_basic_user(self): + self.test_project_task_action_cancel() + + def test_project_task_action_done(self): + self.task = self.env["project.task"].browse(self.task.id) + self.task.write({"stage_id": self.stage_done.id}) + self.task.action_done() + self.assertTrue(self.task.sudo().stock_analytic_line_ids) + + @users("basic-user") + def test_project_task_action_done_basic_user(self): + self.test_project_task_action_done() + + @mute_logger("odoo.models.unlink") + def test_project_task_unlink(self): + self.assertTrue(self.env["project.task"].browse(self.task.id).unlink()) + + @users("basic-user") + def test_project_task_unlink_basic_user(self): + self.test_project_task_unlink() + + @mute_logger("odoo.models.unlink") + def test_project_project_onchange(self): + new_type = self.env.ref("stock.picking_type_out") + self.project.write({"picking_type_id": new_type.id}) + self.project._onchange_picking_type_id() + self.assertEqual(self.project.location_id, new_type.default_location_src_id) + self.assertEqual( + self.project.location_dest_id, new_type.default_location_dest_id + ) + self.task.do_unreserve() + self.task.write({"picking_type_id": new_type.id}) + self.task._onchange_picking_type_id() + self.assertEqual(self.task.location_id, new_type.default_location_src_id) + self.assertEqual(self.task.location_dest_id, new_type.default_location_dest_id) + move = fields.first(self.task.move_ids) + self.assertEqual(move.location_id, new_type.default_location_src_id) + + def test_project_task_scrap(self): + move = fields.first(self.task.move_ids) + scrap = self.env["stock.scrap"].create( + { + "product_id": move.product_id.id, + "product_uom_id": move.product_id.uom_id.id, + "scrap_qty": 1, + "task_id": self.task.id, + } + ) + scrap.do_scrap() + self.assertEqual(scrap.move_id.raw_material_task_id, self.task) diff --git a/odoo-bringout-oca-project-project_stock/project_stock/views/project_project_view.xml b/odoo-bringout-oca-project-project_stock/project_stock/views/project_project_view.xml new file mode 100644 index 0000000..9aa8ffa --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/views/project_project_view.xml @@ -0,0 +1,24 @@ + + + + project.project.form + project.project + + + + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_stock/project_stock/views/project_task_type_view.xml b/odoo-bringout-oca-project-project_stock/project_stock/views/project_task_type_view.xml new file mode 100644 index 0000000..45f5303 --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/views/project_task_type_view.xml @@ -0,0 +1,17 @@ + + + + project.task.type.form + project.task.type + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_stock/project_stock/views/project_task_view.xml b/odoo-bringout-oca-project-project_stock/project_stock/views/project_task_view.xml new file mode 100644 index 0000000..0f5395c --- /dev/null +++ b/odoo-bringout-oca-project-project_stock/project_stock/views/project_task_view.xml @@ -0,0 +1,141 @@ + + + + project.task.form + project.task + + + + + + + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_task_link/pyproject.toml b/odoo-bringout-oca-project-project_task_link/pyproject.toml new file mode 100644 index 0000000..a91c8dd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_link/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_link" +version = "16.0.0" +description = "Project Task Link - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_link"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_material/README.md b/odoo-bringout-oca-project-project_task_material/README.md new file mode 100644 index 0000000..a9ea2c2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/README.md @@ -0,0 +1,47 @@ +# Project Task Material + +Odoo addon: project_task_material + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_material +``` + +## Dependencies + +This addon depends on: +- project +- product + +## Manifest Information + +- **Name**: Project Task Material +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_material`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_material/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_material/doc/ARCHITECTURE.md new file mode 100644 index 0000000..f39c8bb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_material Module - project_task_material + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_material/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_material/doc/CONFIGURATION.md new file mode 100644 index 0000000..87dafaa --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_material. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_material/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_material/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_material/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_material/doc/DEPENDENCIES.md new file mode 100644 index 0000000..e40c0b1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) +- [product](https://github.com/bringout/oca-ocb-sale/tree/681dc8d5fff638cb0862a34e48091a2098d091f8/odoo-bringout-oca-ocb-product) diff --git a/odoo-bringout-oca-project-project_task_material/doc/FAQ.md b/odoo-bringout-oca-project-project_task_material/doc/FAQ.md new file mode 100644 index 0000000..5c979b9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_material or install in UI. diff --git a/odoo-bringout-oca-project-project_task_material/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_material/doc/INSTALL.md new file mode 100644 index 0000000..fab91a9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_material" +# or +uv pip install odoo-bringout-oca-project-project_task_material" +``` diff --git a/odoo-bringout-oca-project-project_task_material/doc/MODELS.md b/odoo-bringout-oca-project-project_task_material/doc/MODELS.md new file mode 100644 index 0000000..3c0ab42 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in project_task_material. + +```mermaid +classDiagram + class project_task_material + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_material/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_material/doc/OVERVIEW.md new file mode 100644 index 0000000..dbb12a6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_material. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_material +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_material/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_material/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_material/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_material/doc/SECURITY.md new file mode 100644 index 0000000..1ae612e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in project_task_material. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../project_task_material/security/ir.model.access.csv)** + - 2 model access rules + +## Record Rules + +Row-level security rules defined in: + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[ir.model.access.csv](../project_task_material/security/ir.model.access.csv)** + - Model access permissions (CRUD rights) + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_task_material/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_material/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_material/doc/USAGE.md b/odoo-bringout-oca-project-project_task_material/doc/USAGE.md new file mode 100644 index 0000000..0c84cad --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_material +``` diff --git a/odoo-bringout-oca-project-project_task_material/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_material/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/README.rst b/odoo-bringout-oca-project-project_task_material/project_task_material/README.rst new file mode 100644 index 0000000..3e82fe9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/README.rst @@ -0,0 +1,96 @@ +===================== +Project Task Material +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:408f81172c89e22033aca7b3b405de74eafbec3f7f085f06df163bda6985cfaf + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_material + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_material + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Project Tasks allow to record the time spent on them, but some activities +often require you to keep a record of the material used also. + +This module offers the ability to keep track of that material. + +Note that only a simple record is made and no accounting or stock moves are +actually performed. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module: + +Every task form has a tab where product and their quantities can be added. + +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 +~~~~~~~ + +* Daniel Reis +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +- Daniel Reis +- Sergio Teruel +- Vicent Cubells +- David Vidal +- Carlos Jesus Cebrian +- Anand Kansagra +- Ruchir Shukla + +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. + +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/odoo-bringout-oca-project-project_task_material/project_task_material/__init__.py b/odoo-bringout-oca-project-project_task_material/project_task_material/__init__.py new file mode 100644 index 0000000..7ac22df --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0). + +from . import models diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/__manifest__.py b/odoo-bringout-oca-project-project_task_material/project_task_material/__manifest__.py new file mode 100644 index 0000000..5ea86d4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2012 - 2013 Daniel Reis +# Copyright 2015 - Antiun Ingeniería S.L. - Sergio Teruel +# Copyright 2016 - Tecnativa - Vicent Cubells +# Copyright 2017 - Tecnativa - David Vidal +# Copyright 2018 - Brain-tec AG - Carlos Jesus Cebrian +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0). +{ + "name": "Project Task Material", + "summary": "Record products spent in a Task", + "version": "16.0.1.0.0", + "category": "Project Management", + "author": "Daniel Reis," "Tecnativa," "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "license": "AGPL-3", + "installable": True, + "depends": ["project", "product"], + "data": ["security/ir.model.access.csv", "views/project_view.xml"], +} diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/am.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/am.po new file mode 100644 index 0000000..5592641 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/am.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Amharic (https://www.transifex.com/oca/teams/23907/am/)\n" +"Language: am\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ar.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ar.po new file mode 100644 index 0000000..1eb1462 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ar.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "أنشئ بواسطة" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "أنشئ في" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "اسم العرض" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "المعرف" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "آخر تعديل في" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "آخر تحديث بواسطة" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "آخر تحديث في" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "مهمة" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/bg.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/bg.po new file mode 100644 index 0000000..6787aed --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/bg.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Bulgarian (https://www.transifex.com/oca/teams/23907/bg/)\n" +"Language: bg\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Създадено от" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Създадено на" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Име за Показване" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Последно обновено на" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Последно обновено от" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Последно обновено на" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/bs.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/bs.po new file mode 100644 index 0000000..ef674ff --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/bs.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Prikaži naziv" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Materijal" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Utrošeni materijal" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Proizvod" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Količina" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "Količina iskorištenog materijala mora biti veća od 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Materijal utrošen na zadatku" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ca.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ca.po new file mode 100644 index 0000000..3798ce4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ca.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Carles Antoli , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-11 03:42+0000\n" +"PO-Revision-Date: 2019-08-04 17:43+0000\n" +"Last-Translator: eduardgm \n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"Language: ca\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.7.1\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creat per" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creat el" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Veure el nom" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Darrera modificació el" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Darrera Actualització per" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Darrera Actualització el" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Materials" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Materials utilitzats" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Producte" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Quantitat" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "La quantitat de materials consumits ha de ser major que 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tasca" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Materials utilitzats en la tasca" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/cs.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/cs.po new file mode 100644 index 0000000..b72b462 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/cs.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Czech (https://www.transifex.com/oca/teams/23907/cs/)\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Vytvořil(a)" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Vytvořeno" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Zobrazovaný název" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Naposled upraveno" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Naposled upraveno" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Naposled upraveno" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/da.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/da.po new file mode 100644 index 0000000..44e3f0c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/da.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Danish (https://www.transifex.com/oca/teams/23907/da/)\n" +"Language: da\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Oprettet af" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Oprettet den" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Vist navn" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "Id" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Sidst ændret den" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Sidst opdateret af" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Sidst opdateret den" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/de.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/de.po new file mode 100644 index 0000000..37d2c55 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/de.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Rudolf Schnapka , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 05:31+0000\n" +"PO-Revision-Date: 2019-03-23 09:14+0000\n" +"Last-Translator: Ben Brich \n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\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.5.1\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Erstellt von" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Erstellt am" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Anzeigename" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Zuletzt geändert am" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Zuletzt geändert am" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Zuletzt geändert am" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Materialien" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Materialverbrauch" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Produkt" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Anzahl" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "Menge verbrauchter Materialien muss größer 0 sein." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Aufgabe" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Materialverbrauch der Aufgabe" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/el.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/el.po new file mode 100644 index 0000000..d98afdc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/el.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Greek (https://www.transifex.com/oca/teams/23907/el/)\n" +"Language: el\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Δημιουργήθηκε από" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Δημιουργήθηκε στις" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Εμφάνιση Ονόματος" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Τελευταία αλλαγή στις" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Τελευταία Ενημέρωση από" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Τελευταία Ενημέρωση στις" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Εργασία" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/el_GR.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/el_GR.po new file mode 100644 index 0000000..90db0bd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/el_GR.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Kostas Goutoudis , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: Kostas Goutoudis , 2016\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/" +"el_GR/)\n" +"Language: el_GR\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Δημιουργήθηκε από " + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Δημιουργήθηκε στις" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "Κωδικός" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Τελευταία ενημέρωση από" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Τελευταία ενημέρωση στις" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Προϊόν" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Ποσότητα" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/en_GB.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/en_GB.po new file mode 100644 index 0000000..85d5acb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/en_GB.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: English (United Kingdom) (https://www.transifex.com/oca/" +"teams/23907/en_GB/)\n" +"Language: en_GB\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Created by" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Created on" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Display Name" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Last Modified on" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Last Updated on" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es.po new file mode 100644 index 0000000..62f77df --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2019-02-11 12:50+0000\n" +"Last-Translator: Marta Vázquez Rodríguez \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\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 3.4\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Materiales" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Materiales usados" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Producto" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Cantidad" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "La cantidad de materiales consumidos ha de ser mayor que 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tarea" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Materiales usados en la tarea" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_AR.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_AR.po new file mode 100644 index 0000000..da90915 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_AR.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2021-04-01 03:48+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: Spanish (Argentina) (https://www.transifex.com/oca/" +"teams/23907/es_AR/)\n" +"Language: es_AR\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.3.2\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última actualización realizada por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Material" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Material Usado" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Producto" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Cantidad" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "La cantidad de material consumido debe ser superior a 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tarea" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Tarea del Material Usado" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_CL.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_CL.po new file mode 100644 index 0000000..4acacbe --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_CL.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Chile) (https://www.transifex.com/oca/teams/23907/" +"es_CL/)\n" +"Language: es_CL\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_CO.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_CO.po new file mode 100644 index 0000000..31a375b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_CO.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Colombia) (https://www.transifex.com/oca/teams/23907/" +"es_CO/)\n" +"Language: es_CO\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nombre Público" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Actualizado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Actualizado" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_CR.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_CR.po new file mode 100644 index 0000000..b25a862 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_CR.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/oca/" +"teams/23907/es_CR/)\n" +"Language: es_CR\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Ultima actualización por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Ultima actualización en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tarea" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_DO.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_DO.po new file mode 100644 index 0000000..d748cef --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_DO.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Dominican Republic) (https://www.transifex.com/oca/" +"teams/23907/es_DO/)\n" +"Language: es_DO\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_EC.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_EC.po new file mode 100644 index 0000000..7b97b5f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_EC.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Ecuador) (https://www.transifex.com/oca/teams/23907/" +"es_EC/)\n" +"Language: es_EC\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_ES.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_ES.po new file mode 100644 index 0000000..57d4713 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_ES.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Fernando Lara , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 05:34+0000\n" +"PO-Revision-Date: 2017-01-21 05:34+0000\n" +"Last-Translator: Fernando Lara , 2017\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/" +"es_ES/)\n" +"Language: es_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" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nombre para mostrar" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Producto" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_MX.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_MX.po new file mode 100644 index 0000000..0c6ccda --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_MX.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nombre desplegado" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Ultima modificacion realizada" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Ultima actualizacion por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Ultima actualización realizada" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tarea" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_PE.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_PE.po new file mode 100644 index 0000000..8bc55ce --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_PE.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Peru) (https://www.transifex.com/oca/teams/23907/" +"es_PE/)\n" +"Language: es_PE\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nombre a Mostrar" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Ultima Modificación en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Actualizado última vez por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Ultima Actualización" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_PY.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_PY.po new file mode 100644 index 0000000..735ca83 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_PY.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Paraguay) (https://www.transifex.com/oca/teams/23907/" +"es_PY/)\n" +"Language: es_PY\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Ultima actualización por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Ultima actualización en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_VE.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_VE.po new file mode 100644 index 0000000..8a9a6f7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/es_VE.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Venezuela) (https://www.transifex.com/oca/" +"teams/23907/es_VE/)\n" +"Language: es_VE\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Mostrar nombre" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Modificada por última vez" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última actualización realizada por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Ultima actualizacion en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tarea" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/et.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/et.po new file mode 100644 index 0000000..805ce1e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/et.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Estonian (https://www.transifex.com/oca/teams/23907/et/)\n" +"Language: et\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Loonud" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Loodud" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Näidatav nimi" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Viimati muudetud" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Viimati uuendatud" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Viimati uuendatud" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/eu.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/eu.po new file mode 100644 index 0000000..944146d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/eu.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Esther Martín Menéndez , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 05:31+0000\n" +"PO-Revision-Date: 2017-02-18 05:31+0000\n" +"Last-Translator: Esther Martín Menéndez , 2017\n" +"Language-Team: Basque (https://www.transifex.com/oca/teams/23907/eu/)\n" +"Language: eu\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Nork sortua" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Created on" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Izena erakutsi" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Last Updated on" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Produktua" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fa.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fa.po new file mode 100644 index 0000000..c3fedb7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fa.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2018-07-22 10:31+0000\n" +"Last-Translator: derKonig \n" +"Language-Team: Persian (https://www.transifex.com/oca/teams/23907/fa/)\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.0.1\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "ایجاد شده توسط" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "ایجاد شده در" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "نام نمایشی" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "شناسه" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "تاریخ آخرین به‌روزرسانی" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "آخرین به روز رسانی توسط" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "آخرین به روز رسانی در" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "مواد اولیه" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +#, fuzzy +msgid "Material Used" +msgstr "مواد اولیه مصرف شده" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "کالا" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "تعداد" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "مقدار مواد اولیه مصرف شده باید بزرگتر از صفر باشد." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "تسک" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "مواد اولیه مصرف شده مربوط به تسک" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fi.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fi.po new file mode 100644 index 0000000..82d231c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fi.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Luonut" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Luotu" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nimi" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Viimeksi muokattu" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Viimeksi päivittänyt" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Viimeksi päivitetty" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +#, fuzzy +msgid "Material Used" +msgstr "Käytetyt materiaalit" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Tuote" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Määrä" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tehtävä" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Tehtävän materiaaleja käytetty" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr.po new file mode 100644 index 0000000..ec78eaf --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2017 +# Quentin THEURET , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2021-05-14 18:47+0000\n" +"Last-Translator: Yves Le Doeuff \n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\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 4.3.2\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nom à afficher" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Matériel" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Matériel utilisés pour la tâche" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Article" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Quantité" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tâche" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Matériaux utilisés pour la tâche" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr_CA.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr_CA.po new file mode 100644 index 0000000..a190762 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr_CA.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# Martin Malorni , 2016 +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (Canada) (https://www.transifex.com/oca/teams/23907/" +"fr_CA/)\n" +"Language: fr_CA\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Afficher le nom" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "Identifiant" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr_CH.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr_CH.po new file mode 100644 index 0000000..d475621 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr_CH.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/" +"teams/23907/fr_CH/)\n" +"Language: fr_CH\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Modifié par" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Modifié le" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Produit" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr_FR.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr_FR.po new file mode 100644 index 0000000..5330d8c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/fr_FR.po @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Mohamed HABOU , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2021-04-11 16:46+0000\n" +"Last-Translator: Yves Le Doeuff \n" +"Language-Team: French (France) (https://www.transifex.com/oca/teams/23907/" +"fr_FR/)\n" +"Language: fr_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 4.3.2\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nom à afficher" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Matériel" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Matériel utilisé" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Article" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Quantité" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tâche" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Matériel utilisé pour la tâche" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/gl.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/gl.po new file mode 100644 index 0000000..32a687c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/gl.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# César Castro Cruz , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2019-02-11 12:50+0000\n" +"Last-Translator: Marta Vázquez Rodríguez \n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"Language: gl\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.4\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nome mostrado" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última modificación" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "ültima actualización por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Materiais" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Materiais empregados" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Produto" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Cantidade" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "A cantidade de materiais consumidos ten que ser maior que 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tarefa" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Materiais empregados na tarefa" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/gl_ES.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/gl_ES.po new file mode 100644 index 0000000..833c2d9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/gl_ES.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Galician (Spain) (https://www.transifex.com/oca/teams/23907/" +"gl_ES/)\n" +"Language: gl_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" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/he.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/he.po new file mode 100644 index 0000000..c90a49d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/he.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Hebrew (https://www.transifex.com/oca/teams/23907/he/)\n" +"Language: he\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "נוצר על ידי" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "נוצר ב-" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "השם המוצג" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "מזהה" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "תאריך שינוי אחרון" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "עודכן לאחרונה על ידי" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "עודכן לאחרונה על" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/hr.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/hr.po new file mode 100644 index 0000000..83c2159 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/hr.po @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-06 02:46+0000\n" +"PO-Revision-Date: 2019-12-02 16:28+0000\n" +"Last-Translator: Bole \n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.9.1\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Naziv " + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Zadnje modificirano" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Zadnje ažuriranje" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Materijal" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Utrošeni materijal" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Proizvod" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Količina" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "Količina iskorištenog materijala mora biti veća od 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Materijal utrošen na zadatku" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/hr_HR.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/hr_HR.po new file mode 100644 index 0000000..84a21a7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/hr_HR.po @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Bole , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: Bole , 2016\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Naziv" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Zadnje modificirano" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Proizvod" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Količina" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/hu.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/hu.po new file mode 100644 index 0000000..abdab9f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/hu.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n" +"Language: hu\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Készítette" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Létrehozás dátuma" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Név megjelenítése" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Utolsó frissítés dátuma" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Utoljára frissítve, által" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Utoljára frissítve " + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Feladat" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/id.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/id.po new file mode 100644 index 0000000..86fc896 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/id.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Indonesian (https://www.transifex.com/oca/teams/23907/id/)\n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Dibuat oleh" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Dibuat pada" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nama Tampilan" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Terakhir Dimodifikasi pada" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Diperbaharui oleh" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Diperbaharui pada" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/it.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/it.po new file mode 100644 index 0000000..b7dd37b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/it.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Paolo Valier , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2023-04-17 22:55+0000\n" +"Last-Translator: mymage \n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\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 4.14.1\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Materiali" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Materiale utilizzato" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Prodotto" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Quantità" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "La quantità di materiale consumato deve essere maggiore di 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Lavoro" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Materiale usato per l'attività" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ja.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ja.po new file mode 100644 index 0000000..e8fc3e8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ja.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Japanese (https://www.transifex.com/oca/teams/23907/ja/)\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "作成者" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "作成日" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "表示名" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "最終更新日" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "最終更新者" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "最終更新日" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "タスク" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ko.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ko.po new file mode 100644 index 0000000..887b9c7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ko.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Korean (https://www.transifex.com/oca/teams/23907/ko/)\n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "작성자" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "작성일" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "표시 이름" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "최근 수정" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "최근 갱신한 사람" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "최근 갱신 날짜" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/lt.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/lt.po new file mode 100644 index 0000000..91d400e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/lt.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Lithuanian (https://www.transifex.com/oca/teams/23907/lt/)\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Sukūrė" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Sukurta" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Vaizduojamas pavadinimas" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Paskutinį kartą keista" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Paskutinį kartą atnaujino" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Paskutinį kartą atnaujinta" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Užduotis" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/lt_LT.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/lt_LT.po new file mode 100644 index 0000000..601b260 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/lt_LT.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# Arminas Grigonis , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: Arminas Grigonis , 2016\n" +"Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/oca/" +"teams/23907/lt_LT/)\n" +"Language: lt_LT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Sukūrė" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Sukurta" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Paskutinį kartą atnaujino" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Paskutinį kartą atnaujinta" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/lv.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/lv.po new file mode 100644 index 0000000..ec7589e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/lv.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Latvian (https://www.transifex.com/oca/teams/23907/lv/)\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Izveidoja" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Izveidots" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Pēdējo reizi atjaunoja" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Pēdējās izmaiņas" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Uzdevums" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/mk.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/mk.po new file mode 100644 index 0000000..fb42b45 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/mk.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Macedonian (https://www.transifex.com/oca/teams/23907/mk/)\n" +"Language: mk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Креирано од" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Креирано на" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Прикажи име" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Последна промена на" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Последно ажурирање од" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Последно ажурирање на" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Задача" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/mn.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/mn.po new file mode 100644 index 0000000..c2019df --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/mn.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Mongolian (https://www.transifex.com/oca/teams/23907/mn/)\n" +"Language: mn\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Үүсгэгч" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Үүсгэсэн" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Дэлгэцийн Нэр" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Сүүлийн засвар хийсэн огноо" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Сүүлийн засвар хийсэн" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Сүүлийн засвар хийсэн огноо" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Даалгавар" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nb.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nb.po new file mode 100644 index 0000000..6a84a1d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nb.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Norwegian Bokmål (https://www.transifex.com/oca/teams/23907/" +"nb/)\n" +"Language: nb\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Opprettet av" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Opprettet den" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Visnings navn" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Sist oppdatert " + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Sist oppdatert av" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Sist oppdatert" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nb_NO.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nb_NO.po new file mode 100644 index 0000000..ec9f271 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nb_NO.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# Imre Kristoffer Eilertsen , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: Imre Kristoffer Eilertsen , 2016\n" +"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/" +"teams/23907/nb_NO/)\n" +"Language: nb_NO\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Laget av" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Laget den" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Vis navn" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Sist endret den" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Sist oppdatert av" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Sist oppdatert den" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nl.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nl.po new file mode 100644 index 0000000..c723e53 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nl.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Te tonen naam" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Laatst bijgewerkt op" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Product" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Hoeveelheid" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Taak" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nl_BE.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nl_BE.po new file mode 100644 index 0000000..d7225ae --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nl_BE.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Sarah Druyts , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: Sarah Druyts , 2016\n" +"Language-Team: Dutch (Belgium) (https://www.transifex.com/oca/teams/23907/" +"nl_BE/)\n" +"Language: nl_BE\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Gemaakt door" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Gemaakt op" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Schermnaam" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Laatst Aangepast op" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Hoeveelheid" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nl_NL.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nl_NL.po new file mode 100644 index 0000000..d9cff23 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/nl_NL.po @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2017 +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-03 05:49+0000\n" +"PO-Revision-Date: 2017-06-03 05:49+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Weergavenaam" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Laatst aangepast op" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Materiaal" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +#, fuzzy +msgid "Material Used" +msgstr "Verbruikt materiaal" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Product" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Aantal" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "Verbruikte hoeveelheid materiaal moet groter dan 0 zijn." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Taak" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Taakmateriaal verbruikt" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pl.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pl.po new file mode 100644 index 0000000..9b8c6a5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pl.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Utworzone przez" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Utworzono" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Wyświetlana nazwa " + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Ostatnio modyfikowano" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Ostatnio modyfikowane przez" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Ostatnia zmiana" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Zadanie" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/project_task_material.pot b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/project_task_material.pot new file mode 100644 index 0000000..24c7f16 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/project_task_material.pot @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pt.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pt.po new file mode 100644 index 0000000..b1db57c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pt.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nome" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Modificado a última vez por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última alteração por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última atualização em" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +#, fuzzy +msgid "Material Used" +msgstr "Materiais utilizados" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Produto" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Quantidade" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tarefa" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Lista de Materiais utilizados" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pt_BR.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pt_BR.po new file mode 100644 index 0000000..8a8a42b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pt_BR.po @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2017 +# Mateus Lopes , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-30 09:43+0000\n" +"PO-Revision-Date: 2023-10-28 13:27+0000\n" +"Last-Translator: Adriano Prado \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/" +"23907/pt_BR/)\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" +"X-Generator: Weblate 4.17\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nome Exibição" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "Identificação" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última Modificação em" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Última Atualização feita por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Última Atualização feita em" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Material" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Material Usado" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Produto" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Quantidade" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "A quantidade de material consumido deve ser maior que 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tarefa" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Materiais Usados na Tarefa" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pt_PT.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pt_PT.po new file mode 100644 index 0000000..b760205 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/pt_PT.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/" +"teams/23907/pt_PT/)\n" +"Language: pt_PT\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nome a Apresentar" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Última Modificação Em" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Atualizado pela última vez por" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Atualizado pela última vez em" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Tarefa" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ro.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ro.po new file mode 100644 index 0000000..b4eaa83 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ro.po @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Fekete Mihai , 2016 +# Dorin Hongu , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: Dorin Hongu , 2016\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Creat de" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Creat la" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Nume Afişat" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Ultima actualizare în" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Ultima actualizare făcută de" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Ultima actualizare la" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Produs" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Cantitate" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Sarcina" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ru.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ru.po new file mode 100644 index 0000000..0d045c2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/ru.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" +"%100>=11 && n%100<=14)? 2 : 3);\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Создано" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Создан" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Последний раз обновлено" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Последний раз обновлено" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sk.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sk.po new file mode 100644 index 0000000..8c8431e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sk.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Slovak (https://www.transifex.com/oca/teams/23907/sk/)\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Vytvoril" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Vytvorené" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Zobraziť meno" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Posledná modifikácia" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Naposledy upravoval" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Naposledy upravované" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sl.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sl.po new file mode 100644 index 0000000..150b467 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sl.po @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2017 +# Matjaž Mozetič , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-02 01:51+0000\n" +"PO-Revision-Date: 2019-10-24 07:33+0000\n" +"Last-Translator: Matjaz Mozetic \n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\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 3.8\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Ustvaril" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Prikazni naziv" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Zadnjič spremenjeno" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Zadnjič posodobil" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Materiali" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Uporabljeni material" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Proizvod" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Količina" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "Količina potrošenega materiala mora biti večja od 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Opravilo" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Material uporabljen na opravilu" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sr.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sr.po new file mode 100644 index 0000000..ca3f7a7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sr.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Serbian (https://www.transifex.com/oca/teams/23907/sr/)\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Kreiran" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sr@latin.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sr@latin.po new file mode 100644 index 0000000..c447bf4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sr@latin.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Serbian (Latin) (https://www.transifex.com/oca/teams/23907/" +"sr@latin/)\n" +"Language: sr@latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Kreiran" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Ime za prikaz" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Zadnja izmjena" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Zadnja izmjena" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Zadnja izmjena" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sv.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sv.po new file mode 100644 index 0000000..2cfd68e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/sv.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2024-02-23 16:34+0000\n" +"Last-Translator: jakobkrabbe \n" +"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n" +"Language: sv\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Skapad av" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Skapad den" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Visningsnamn" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Senast redigerad den" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Senast uppdaterad av" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Senast uppdaterad den" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Material" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "Använt material" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Produkt" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Kvantitet" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "Kvantiteten av det förbrukade materialet måste vara större än 0." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Uppgift" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Uppgift material som används" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/th.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/th.po new file mode 100644 index 0000000..564ef59 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/th.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Thai (https://www.transifex.com/oca/teams/23907/th/)\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "สร้างโดย" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "สร้างเมื่อ" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "ชื่อที่ใช้แสดง" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "รหัส" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "แก้ไขครั้งสุดท้ายเมื่อ" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "อัพเดทครั้งสุดท้ายโดย" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "อัพเดทครั้งสุดท้ายเมื่อ" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/tr.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/tr.po new file mode 100644 index 0000000..b913c0b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/tr.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Ivan BARAYEV , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-11 03:42+0000\n" +"PO-Revision-Date: 2017-01-11 03:42+0000\n" +"Last-Translator: Ivan BARAYEV , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\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_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Oluşturan" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Oluşturuldu" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Görünen İsim" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Son değişiklik" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Son güncelleyen" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Son güncelleme" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "Malzeme" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +#, fuzzy +msgid "Material Used" +msgstr "Kullanılan malzeme" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Ürün" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Miktar" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "Tüketilen malzeme miktarı 0'dan büyük olmalıdır." + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Görev" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "Task Material Used" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/tr_TR.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/tr_TR.po new file mode 100644 index 0000000..db533dc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/tr_TR.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# Ozge Altinisik , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-31 06:32+0000\n" +"PO-Revision-Date: 2016-12-31 06:32+0000\n" +"Last-Translator: Ozge Altinisik , 2017\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/" +"tr_TR/)\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Oluşturan" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Oluşturulma tarihi" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Görünen ad" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "Kimlik" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "En son güncelleme tarihi" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "En son güncelleyen " + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "En son güncelleme tarihi" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Ürün" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "Miktar" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/uk.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/uk.po new file mode 100644 index 0000000..084b1f0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/uk.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-30 09:43+0000\n" +"PO-Revision-Date: 2017-05-30 09:43+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Ukrainian (https://www.transifex.com/oca/teams/23907/uk/)\n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Створив" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Дата створення" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Назва для відображення" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Остання модифікація" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Востаннє оновив" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Останнє оновлення" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "Завдання" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/vi.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/vi.po new file mode 100644 index 0000000..460ba85 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/vi.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Vietnamese (https://www.transifex.com/oca/teams/23907/vi/)\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Được tạo bởi" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Được tạo vào" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "Tên hiển thị" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "Sửa lần cuối vào" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Cập nhật lần cuối vào" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/vi_VN.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/vi_VN.po new file mode 100644 index 0000000..7d18ddc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/vi_VN.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/oca/" +"teams/23907/vi_VN/)\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "Tạo bởi" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "Tạo vào" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "Cập nhật lần cuối bởi" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "Cập nhật lần cuối vào" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "Sản phẩm" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/zh_CN.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/zh_CN.po new file mode 100644 index 0000000..41d5fd1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/zh_CN.po @@ -0,0 +1,94 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +# Jeffery Chen Fan , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: Jeffery Chen Fan , 2016\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "创建者" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "创建时间" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "显示名称" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "ID" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "最后修改时间" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "最后更新者" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "上次更新日期" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "产品" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "任务" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/zh_TW.po b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/zh_TW.po new file mode 100644 index 0000000..8e7ea86 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/i18n/zh_TW.po @@ -0,0 +1,93 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_material +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 03:43+0000\n" +"PO-Revision-Date: 2016-12-23 03:43+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Chinese (Taiwan) (https://www.transifex.com/oca/teams/23907/" +"zh_TW/)\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_uid +msgid "Created by" +msgstr "建立者" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__create_date +msgid "Created on" +msgstr "建立於" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__display_name +msgid "Display Name" +msgstr "顯示名稱" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__id +msgid "ID" +msgstr "編號" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material____last_update +msgid "Last Modified on" +msgstr "最後修改:" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_uid +msgid "Last Updated by" +msgstr "最後更新:" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__write_date +msgid "Last Updated on" +msgstr "最後更新於" + +#. module: project_task_material +#: model_terms:ir.ui.view,arch_db:project_task_material.view_project_task_form_material +msgid "Material" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task__material_ids +msgid "Material Used" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__product_id +msgid "Product" +msgstr "" + +#. module: project_task_material +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__quantity +msgid "Quantity" +msgstr "" + +#. module: project_task_material +#. odoo-python +#: code:addons/project_task_material/models/project.py:0 +#, python-format +msgid "Quantity of material consumed must be greater than 0." +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task +#: model:ir.model.fields,field_description:project_task_material.field_project_task_material__task_id +msgid "Task" +msgstr "" + +#. module: project_task_material +#: model:ir.model,name:project_task_material.model_project_task_material +msgid "Task Material Used" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/models/__init__.py b/odoo-bringout-oca-project-project_task_material/project_task_material/models/__init__.py new file mode 100644 index 0000000..0a5efeb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0). + +from . import project diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/models/project.py b/odoo-bringout-oca-project-project_task_material/project_task_material/models/project.py new file mode 100644 index 0000000..4cfee82 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/models/project.py @@ -0,0 +1,43 @@ +# Copyright 2012 - 2013 Daniel Reis +# Copyright 2015 - Antiun Ingeniería S.L. - Sergio Teruel +# Copyright 2016 - Tecnativa - Vicent Cubells +# Copyright 2018 - Brain-tec AG - Carlos Jesus Cebrian +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class Task(models.Model): + """Added Material Used in the Project Task.""" + + _inherit = "project.task" + + material_ids = fields.One2many( + comodel_name="project.task.material", + inverse_name="task_id", + string="Material Used", + ) + + +class ProjectTaskMaterial(models.Model): + """Added Product and Quantity in the Task Material Used.""" + + _name = "project.task.material" + _description = "Task Material Used" + + task_id = fields.Many2one( + comodel_name="project.task", string="Task", ondelete="cascade", required=True + ) + product_id = fields.Many2one( + comodel_name="product.product", string="Product", required=True + ) + quantity = fields.Float() + + @api.constrains("quantity") + def _check_quantity(self): + for material in self: + if not material.quantity > 0.0: + raise ValidationError( + _("Quantity of material consumed must be greater than 0.") + ) diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_material/project_task_material/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..7c185d7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/readme/CONTRIBUTORS.rst @@ -0,0 +1,7 @@ +- Daniel Reis +- Sergio Teruel +- Vicent Cubells +- David Vidal +- Carlos Jesus Cebrian +- Anand Kansagra +- Ruchir Shukla diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_material/project_task_material/readme/DESCRIPTION.rst new file mode 100644 index 0000000..0014617 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/readme/DESCRIPTION.rst @@ -0,0 +1,7 @@ +Project Tasks allow to record the time spent on them, but some activities +often require you to keep a record of the material used also. + +This module offers the ability to keep track of that material. + +Note that only a simple record is made and no accounting or stock moves are +actually performed. diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/readme/USAGE.rst b/odoo-bringout-oca-project-project_task_material/project_task_material/readme/USAGE.rst new file mode 100644 index 0000000..4485770 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/readme/USAGE.rst @@ -0,0 +1,3 @@ +To use this module: + +Every task form has a tab where product and their quantities can be added. diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/security/ir.model.access.csv b/odoo-bringout-oca-project-project_task_material/project_task_material/security/ir.model.access.csv new file mode 100644 index 0000000..f6b3bbf --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/security/ir.model.access.csv @@ -0,0 +1,3 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_model_project_task_material_project_user2","model_project_task_material_project_user","model_project_task_material","project.group_project_user",1,1,1,1 +"access_model_project_task_material_employee","model_project_task_material_employee","model_project_task_material","base.group_user",1,0,0,0 diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/static/description/icon.png b/odoo-bringout-oca-project-project_task_material/project_task_material/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_material/project_task_material/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/static/description/index.html b/odoo-bringout-oca-project-project_task_material/project_task_material/static/description/index.html new file mode 100644 index 0000000..19af0c9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/static/description/index.html @@ -0,0 +1,438 @@ + + + + + + +Project Task Material + + + +
+

Project Task Material

+ + +

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

+

Project Tasks allow to record the time spent on them, but some activities +often require you to keep a record of the material used also.

+

This module offers the ability to keep track of that material.

+

Note that only a simple record is made and no accounting or stock moves are +actually performed.

+

Table of contents

+ +
+

Usage

+

To use this module:

+

Every task form has a tab where product and their quantities can be added.

+
+
+

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

+
    +
  • Daniel Reis
  • +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_task_material/project_task_material/tests/__init__.py b/odoo-bringout-oca-project-project_task_material/project_task_material/tests/__init__.py new file mode 100644 index 0000000..e2f8970 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0). + +from . import test_create_material_lines diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/tests/common.py b/odoo-bringout-oca-project-project_task_material/project_task_material/tests/common.py new file mode 100644 index 0000000..4a91421 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/tests/common.py @@ -0,0 +1,36 @@ +# Copyright 2018 - Brain-tec AG - Carlos Jesus Cebrian +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0). + +from odoo.tests.common import TransactionCase + + +class TestProjectCases(TransactionCase): + """Prepare data to test the module.""" + + def setUp(self): + """Create user, task, project as well as refre action of the user.""" + super(TestProjectCases, self).setUp() + + # Create new User + # Add it to the `project user` group + self.project_user = self.env["res.users"].create( + { + "company_id": self.env.ref("base.main_company").id, + "name": "Carlos Project User", + "login": "cpu", + "email": "cpu@yourcompany.com", + "groups_id": [(6, 0, [self.ref("project.group_project_user")])], + } + ) + + # Create new project + self.project = self.env["project.project"].create({"name": "Project Test"}) + + # Create new task + self.task = self.env["project.task"].create( + {"project_id": self.project.id, "name": "Task Test"} + ) + self.product = self.env.ref("product.consu_delivery_03") + + # Refer to a action from the user created + self.action = self.task.with_user(self.project_user.id) diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/tests/test_create_material_lines.py b/odoo-bringout-oca-project-project_task_material/project_task_material/tests/test_create_material_lines.py new file mode 100644 index 0000000..84dc268 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/tests/test_create_material_lines.py @@ -0,0 +1,59 @@ +# Copyright 2016 Tecnativa - Vicent Cubells +# Copyright 2018 - Brain-tec AG - Carlos Jesus Cebrian +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0). + +from odoo.exceptions import ValidationError + +from .common import TestProjectCases + + +class ProjectTaskMaterial(TestProjectCases): + def test_manager_add_task_material_wrong(self): + """ + TEST CASE 1 + The user is adding some materials in the task + with different wrong values + + """ + try: + # Material with `quantity = 0.0` + self.action.write( + { + "material_ids": [ + (0, 0, {"product_id": self.product.id, "quantity": 0.0}) + ] + } + ) + except ValidationError as err: + self.assertEqual( + str(err.args[0]), + "Quantity of material consumed must be greater than 0.", + ) + + try: + # Material with `negative quantity` + self.action.write( + { + "material_ids": [ + (0, 0, {"product_id": self.product.id, "quantity": -10.0}) + ] + } + ) + except ValidationError as err: + self.assertEqual( + str(err.args[0]), + "Quantity of material consumed must be greater than 0.", + ) + + def test_manager_add_task_material_right(self): + """ + TEST CASE 2 + The user is adding some materials in the task + with right values + + """ + # Material with `quantity = 1.0` + self.action.write( + {"material_ids": [(0, 0, {"product_id": self.product.id, "quantity": 4.0})]} + ) + self.assertEqual(len(self.task.material_ids.ids), 1) diff --git a/odoo-bringout-oca-project-project_task_material/project_task_material/views/project_view.xml b/odoo-bringout-oca-project-project_task_material/project_task_material/views/project_view.xml new file mode 100644 index 0000000..8dc0a18 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/project_task_material/views/project_view.xml @@ -0,0 +1,31 @@ + + + + + project.task.form.material + project.task + + + + + + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_task_material/pyproject.toml b/odoo-bringout-oca-project-project_task_material/pyproject.toml new file mode 100644 index 0000000..5a11588 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_material/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-project-project_task_material" +version = "16.0.0" +description = "Project Task Material - Record products spent in a Task" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "odoo-bringout-oca-ocb-product>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_material"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_name_with_id/README.md b/odoo-bringout-oca-project-project_task_name_with_id/README.md new file mode 100644 index 0000000..dd60835 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/README.md @@ -0,0 +1,46 @@ +# Project Task Name with ID + +Odoo addon: project_task_name_with_id + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_name_with_id +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Task Name with ID +- **Version**: 16.0.1.0.1 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_name_with_id`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/ARCHITECTURE.md new file mode 100644 index 0000000..df931b7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_name_with_id Module - project_task_name_with_id + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/CONFIGURATION.md new file mode 100644 index 0000000..7a3f17b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_name_with_id. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/FAQ.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/FAQ.md new file mode 100644 index 0000000..c994791 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_name_with_id or install in UI. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/INSTALL.md new file mode 100644 index 0000000..6c6075f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_name_with_id" +# or +uv pip install odoo-bringout-oca-project-project_task_name_with_id" +``` diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/MODELS.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/MODELS.md new file mode 100644 index 0000000..47aeafa --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_task_name_with_id. + +```mermaid +classDiagram + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/OVERVIEW.md new file mode 100644 index 0000000..a28284d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_name_with_id. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_name_with_id +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/USAGE.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/USAGE.md new file mode 100644 index 0000000..15fb5bf --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_name_with_id +``` diff --git a/odoo-bringout-oca-project-project_task_name_with_id/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_name_with_id/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/README.rst b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/README.rst new file mode 100644 index 0000000..ee0cc24 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/README.rst @@ -0,0 +1,81 @@ +========================= +Project Task Name with ID +========================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:01488fcba536651c7bbbc53456bd9853024ef979d829b9dd06563c05429e8f89 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_name_with_id + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_name_with_id + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the name_search() and name_get() methods of the project.task model +to search for, and display the ID of the task in the name field. + +This module will simplify your operations if they heavily rely on the task ID. For +instance, you can select a task by its ID when creating a timesheet record. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +The task's display name will change to a concatenation of its ID and task name (e.g., [ID] task_name). +You can search for the task using its ID in the Many2one field or in the search 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 +~~~~~~~ + +* Quartile Limited + +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. + +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/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/__init__.py b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/__manifest__.py b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/__manifest__.py new file mode 100644 index 0000000..fe774cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/__manifest__.py @@ -0,0 +1,13 @@ +# Copyright 2023 Quartile Limited +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Project Task Name with ID", + "category": "Project", + "version": "16.0.1.0.1", + "author": "Quartile Limited, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "license": "AGPL-3", + "depends": ["project"], + "data": ["views/project_task_views.xml"], + "installable": True, +} diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/i18n/bs.po b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/i18n/bs.po new file mode 100644 index 0000000..c7d485c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/i18n/bs.po @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_name_with_id +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_name_with_id +#: model:ir.model,name:project_task_name_with_id.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/i18n/it.po b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/i18n/it.po new file mode 100644 index 0000000..72c417c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/i18n/it.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_name_with_id +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-04-19 11:41+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 4.17\n" + +#. module: project_task_name_with_id +#: model:ir.model,name:project_task_name_with_id.model_project_task +msgid "Task" +msgstr "Lavoro" diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/i18n/project_task_name_with_id.pot b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/i18n/project_task_name_with_id.pot new file mode 100644 index 0000000..86accfc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/i18n/project_task_name_with_id.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_name_with_id +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_name_with_id +#: model:ir.model,name:project_task_name_with_id.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/models/__init__.py b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/models/__init__.py new file mode 100644 index 0000000..edf2d36 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/models/__init__.py @@ -0,0 +1 @@ +from . import project_task diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/models/project_task.py b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/models/project_task.py new file mode 100644 index 0000000..eade114 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/models/project_task.py @@ -0,0 +1,26 @@ +# Copyright 2023 Quartile Limited +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models +from odoo.osv import expression + + +class ProjectTask(models.Model): + _inherit = "project.task" + + @api.model + def name_search(self, name, args=None, operator="ilike", limit=100): + domain = expression.AND( + [args or [], ["|", ("name", operator, name), ("id", operator, name)]] + ) + recs = self.search(domain, limit=limit) + return recs.name_get() + + def name_get(self): + result = super().name_get() + new_result = [] + for task in result: + rec = self.browse(task[0]) + name = "[{}] {}".format(rec.id, task[1]) + new_result.append((rec.id, name)) + return new_result diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/readme/DESCRIPTION.rst new file mode 100644 index 0000000..d3e0cbc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module extends the name_search() and name_get() methods of the project.task model +to search for, and display the ID of the task in the name field. + +This module will simplify your operations if they heavily rely on the task ID. For +instance, you can select a task by its ID when creating a timesheet record. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/readme/USAGE.rst b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/readme/USAGE.rst new file mode 100644 index 0000000..e2b9296 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/readme/USAGE.rst @@ -0,0 +1,2 @@ +The task's display name will change to a concatenation of its ID and task name (e.g., [ID] task_name). +You can search for the task using its ID in the Many2one field or in the search view. diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/static/description/icon.png b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/static/description/index.html b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/static/description/index.html new file mode 100644 index 0000000..85de464 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/static/description/index.html @@ -0,0 +1,425 @@ + + + + + +Project Task Name with ID + + + +
+

Project Task Name with ID

+ + +

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

+

This module extends the name_search() and name_get() methods of the project.task model +to search for, and display the ID of the task in the name field.

+

This module will simplify your operations if they heavily rely on the task ID. For +instance, you can select a task by its ID when creating a timesheet record.

+

Table of contents

+ +
+

Usage

+

The task’s display name will change to a concatenation of its ID and task name (e.g., [ID] task_name). +You can search for the task using its ID in the Many2one field or in the search 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

+
    +
  • Quartile Limited
  • +
+
+
+

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.

+

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/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/tests/__init__.py b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/tests/__init__.py new file mode 100644 index 0000000..ea27e1f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/tests/__init__.py @@ -0,0 +1 @@ +from . import test_project_task_id diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/tests/test_project_task_id.py b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/tests/test_project_task_id.py new file mode 100644 index 0000000..2082fa2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/tests/test_project_task_id.py @@ -0,0 +1,37 @@ +# Copyright 2023 Quartile Limited +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import re + +from odoo.tests.common import TransactionCase + + +class TestProjectTaskID(TransactionCase): + def setUp(self): + super(TestProjectTaskID, self).setUp() + self.ProjectTask = self.env["project.task"] + self.project_task = self.ProjectTask.create( + { + "name": "Test task", + } + ) + + def test_name_search(self): + # Test searching by name + tasks = self.ProjectTask.name_search("Test task") + self.assertEqual(len(tasks), 1) + self.assertEqual(tasks[0][0], self.project_task.id) + + # Test searching by ID + tasks = self.ProjectTask.name_search(str(self.project_task.id)) + self.assertEqual(len(tasks), 1) + self.assertEqual(tasks[0][0], self.project_task.id) + + def test_name_get(self): + # Test the new name_get method + name_get = self.project_task.name_get()[0] + self.assertEqual(name_get[0], self.project_task.id) + task_id = self.project_task.id + # Checking for the task ID and "Test task" anywhere in the string + pattern = re.compile(rf"\[{task_id}\].*Test task") + self.assertTrue(pattern.search(name_get[1])) diff --git a/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/views/project_task_views.xml b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/views/project_task_views.xml new file mode 100644 index 0000000..a7d8fa7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/project_task_name_with_id/views/project_task_views.xml @@ -0,0 +1,92 @@ + + + + project.task.tree + project.task + + + + show + + + + + project.task.kanban + project.task + + + + + 1 + + + + + + + + + + + + + + + + + + project.sharing.project.task.tree + project.task + + + + + + + + + project.sharing.project.task.view.kanban + project.task + + + + + 1 + + + + + + + + + + + + + + + project.task.search.form + project.task + + + + ['|', ('name', 'ilike', self), ('id', 'ilike', self)] + + + + diff --git a/odoo-bringout-oca-project-project_task_name_with_id/pyproject.toml b/odoo-bringout-oca-project-project_task_name_with_id/pyproject.toml new file mode 100644 index 0000000..d9187b0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_name_with_id/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_name_with_id" +version = "16.0.0" +description = "Project Task Name with ID - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_name_with_id"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_note/README.md b/odoo-bringout-oca-project-project_task_note/README.md new file mode 100644 index 0000000..8643338 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/README.md @@ -0,0 +1,46 @@ +# Project task notes + +Odoo addon: project_task_note + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_note +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project task notes +- **Version**: 16.0.1.0.1 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_note`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_note/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_note/doc/ARCHITECTURE.md new file mode 100644 index 0000000..a40272c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_note Module - project_task_note + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_note/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_note/doc/CONFIGURATION.md new file mode 100644 index 0000000..bead321 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_note. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_note/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_note/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_note/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_note/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_note/doc/FAQ.md b/odoo-bringout-oca-project-project_task_note/doc/FAQ.md new file mode 100644 index 0000000..3a42fae --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_note or install in UI. diff --git a/odoo-bringout-oca-project-project_task_note/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_note/doc/INSTALL.md new file mode 100644 index 0000000..7a9554b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_note" +# or +uv pip install odoo-bringout-oca-project-project_task_note" +``` diff --git a/odoo-bringout-oca-project-project_task_note/doc/MODELS.md b/odoo-bringout-oca-project-project_task_note/doc/MODELS.md new file mode 100644 index 0000000..d6bf48d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_task_note. + +```mermaid +classDiagram + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_note/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_note/doc/OVERVIEW.md new file mode 100644 index 0000000..fd8f1ff --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_note. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_note +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_note/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_note/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_note/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_note/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_note/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_note/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_note/doc/USAGE.md b/odoo-bringout-oca-project-project_task_note/doc/USAGE.md new file mode 100644 index 0000000..ec32177 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_note +``` diff --git a/odoo-bringout-oca-project-project_task_note/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_note/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/README.rst b/odoo-bringout-oca-project-project_task_note/project_task_note/README.rst new file mode 100644 index 0000000..04e659d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/README.rst @@ -0,0 +1,95 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +================== +Project task notes +================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d5a78f5f77941ce5adb6b7871fbd5687c6264ad41fab587045a9a3915eff1214 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-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/16.0/project_task_note + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_note + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module add notes in project tasks, only visible for internal users. + +**Table of contents** + +.. contents:: + :local: + +Use Cases / Context +=================== + +There's no field where storing general comments and notes not visible to the customers in the portal + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Carolina Fernandez + +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-carolina-fernandez| image:: https://github.com/carolina-fernandez.png?size=40px + :target: https://github.com/carolina-fernandez + :alt: carolina-fernandez + +Current `maintainer `__: + +|maintainer-carolina-fernandez| + +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/odoo-bringout-oca-project-project_task_note/project_task_note/__init__.py b/odoo-bringout-oca-project-project_task_note/project_task_note/__init__.py new file mode 100644 index 0000000..e87e85c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import models diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/__manifest__.py b/odoo-bringout-oca-project-project_task_note/project_task_note/__manifest__.py new file mode 100644 index 0000000..d525b17 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2024 Tecnativa Carolina Fernandez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "Project task notes", + "version": "16.0.1.0.1", + "category": "Project Management", + "summary": "Add notes in project tasks", + "author": "Tecnativa, Odoo Community Association (OCA)", + "maintainers": ["carolina-fernandez"], + "website": "https://github.com/OCA/project", + "license": "AGPL-3", + "installable": True, + "depends": ["project"], + "data": ["views/project_task_views.xml"], +} diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/bs.po b/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/bs.po new file mode 100644 index 0000000..591bcc0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/bs.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_note +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_note +#: model_terms:ir.ui.view,arch_db:project_task_note.view_task_form2 +msgid "Insert internal notes here" +msgstr "Insert internal notes here" + +#. module: project_task_note +#: model_terms:ir.ui.view,arch_db:project_task_note.view_task_form2 +msgid "Internal Notes" +msgstr "Interne zabilješke" + +#. module: project_task_note +#: model:ir.model.fields,field_description:project_task_note.field_project_task__notes +msgid "Internal notes" +msgstr "Interne bilješke" + +#. module: project_task_note +#: model:ir.model,name:project_task_note.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/es.po b/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/es.po new file mode 100644 index 0000000..0a342c3 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/es.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_note +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-02-15 15:44+0000\n" +"PO-Revision-Date: 2024-02-15 15:44+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: project_task_note +#: model_terms:ir.ui.view,arch_db:project_task_note.view_task_form2 +msgid "Insert internal notes here" +msgstr "" + +#. module: project_task_note +#: model_terms:ir.ui.view,arch_db:project_task_note.view_task_form2 +msgid "Internal Notes" +msgstr "" + +#. module: project_task_note +#: model:ir.model.fields,field_description:project_task_note.field_project_task__notes +msgid "Internal notes" +msgstr "Notas internas" + +#. module: project_task_note +#: model:ir.model,name:project_task_note.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/it.po b/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/it.po new file mode 100644 index 0000000..d5a9e58 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/it.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_note +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-06-25 09:25+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_task_note +#: model_terms:ir.ui.view,arch_db:project_task_note.view_task_form2 +msgid "Insert internal notes here" +msgstr "Inserire qui le note interne" + +#. module: project_task_note +#: model_terms:ir.ui.view,arch_db:project_task_note.view_task_form2 +msgid "Internal Notes" +msgstr "Note interne" + +#. module: project_task_note +#: model:ir.model.fields,field_description:project_task_note.field_project_task__notes +msgid "Internal notes" +msgstr "Note interne" + +#. module: project_task_note +#: model:ir.model,name:project_task_note.model_project_task +msgid "Task" +msgstr "Lavoro" diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/project_task_note.pot b/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/project_task_note.pot new file mode 100644 index 0000000..1aeefeb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/i18n/project_task_note.pot @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_note +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_note +#: model_terms:ir.ui.view,arch_db:project_task_note.view_task_form2 +msgid "Insert internal notes here" +msgstr "" + +#. module: project_task_note +#: model_terms:ir.ui.view,arch_db:project_task_note.view_task_form2 +msgid "Internal Notes" +msgstr "" + +#. module: project_task_note +#: model:ir.model.fields,field_description:project_task_note.field_project_task__notes +msgid "Internal notes" +msgstr "" + +#. module: project_task_note +#: model:ir.model,name:project_task_note.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/models/__init__.py b/odoo-bringout-oca-project-project_task_note/project_task_note/models/__init__.py new file mode 100644 index 0000000..ebd54ea --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import project_task diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/models/project_task.py b/odoo-bringout-oca-project-project_task_note/project_task_note/models/project_task.py new file mode 100644 index 0000000..2725a3a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/models/project_task.py @@ -0,0 +1,10 @@ +# Copyright 2024 Tecnativa Carolina Fernandez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import fields, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + notes = fields.Html(string="Internal notes") diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/readme/CONTEXT.rst b/odoo-bringout-oca-project-project_task_note/project_task_note/readme/CONTEXT.rst new file mode 100644 index 0000000..2cdc14c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/readme/CONTEXT.rst @@ -0,0 +1 @@ +There's no field where storing general comments and notes not visible to the customers in the portal diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_note/project_task_note/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..30dc712 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Tecnativa `_: + + * Carolina Fernandez diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_note/project_task_note/readme/DESCRIPTION.rst new file mode 100644 index 0000000..c74b06b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module add notes in project tasks, only visible for internal users. diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/readme/USAGE.srt b/odoo-bringout-oca-project-project_task_note/project_task_note/readme/USAGE.srt new file mode 100644 index 0000000..0919f7f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/readme/USAGE.srt @@ -0,0 +1,4 @@ +To use this module, you need to: + +#. Go to menu Project > Search > Tasks and create/edit task +#. Inside Description page on project task form, you will see internal notes to fill in diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/static/description/icon.png b/odoo-bringout-oca-project-project_task_note/project_task_note/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_note/project_task_note/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_note/project_task_note/static/description/index.html b/odoo-bringout-oca-project-project_task_note/project_task_note/static/description/index.html new file mode 100644 index 0000000..b434791 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/static/description/index.html @@ -0,0 +1,442 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Project task notes

+ +

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

+

This module add notes in project tasks, only visible for internal users.

+

Table of contents

+ +
+

Use Cases / Context

+

There’s no field where storing general comments and notes not visible to the customers in the portal

+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

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:

+

carolina-fernandez

+

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/odoo-bringout-oca-project-project_task_note/project_task_note/views/project_task_views.xml b/odoo-bringout-oca-project-project_task_note/project_task_note/views/project_task_views.xml new file mode 100644 index 0000000..00bd1e1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/project_task_note/views/project_task_views.xml @@ -0,0 +1,27 @@ + + + + + + project_task.form.note + project.task + + + +
Internal Notes
+ + +
+
+
diff --git a/odoo-bringout-oca-project-project_task_note/pyproject.toml b/odoo-bringout-oca-project-project_task_note/pyproject.toml new file mode 100644 index 0000000..2f9c341 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_note/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_note" +version = "16.0.0" +description = "Project task notes - Add notes in project tasks" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_note"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/README.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/README.md new file mode 100644 index 0000000..9a3527d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/README.md @@ -0,0 +1,46 @@ +# Project task parent completion blocking + +Odoo addon: project_task_parent_completion_blocking + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_parent_completion_blocking +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project task parent completion blocking +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_parent_completion_blocking`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/ARCHITECTURE.md new file mode 100644 index 0000000..70f1977 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_parent_completion_blocking Module - project_task_parent_completion_blocking + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/CONFIGURATION.md new file mode 100644 index 0000000..5d21ae8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_parent_completion_blocking. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/FAQ.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/FAQ.md new file mode 100644 index 0000000..98d7e34 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_parent_completion_blocking or install in UI. diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/INSTALL.md new file mode 100644 index 0000000..f6f8c9f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_parent_completion_blocking" +# or +uv pip install odoo-bringout-oca-project-project_task_parent_completion_blocking" +``` diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/MODELS.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/MODELS.md new file mode 100644 index 0000000..903dbe6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_task_parent_completion_blocking. + +```mermaid +classDiagram + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/OVERVIEW.md new file mode 100644 index 0000000..e58e724 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_parent_completion_blocking. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_parent_completion_blocking +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/USAGE.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/USAGE.md new file mode 100644 index 0000000..d9c9feb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_parent_completion_blocking +``` diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/README.rst b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/README.rst new file mode 100644 index 0000000..e090453 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/README.rst @@ -0,0 +1,87 @@ +======================================= +Project task parent completion blocking +======================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d3e2eadb57ab9a1d05c17ebc2d3950a473504aebc8d4a267af34707905547ac9 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_parent_completion_blocking + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_parent_completion_blocking + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Prevents a parent task from beeing completed if a child task isn't completed. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Pedro M. Baeza + * David Bañón + +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-david-banon-tecnativa| image:: https://github.com/david-banon-tecnativa.png?size=40px + :target: https://github.com/david-banon-tecnativa + :alt: david-banon-tecnativa + +Current `maintainer `__: + +|maintainer-david-banon-tecnativa| + +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/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/__init__.py b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/__manifest__.py b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/__manifest__.py new file mode 100644 index 0000000..1a67bb8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2025 Tecnativa David Bañón +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "Project task parent completion blocking", + "version": "16.0.1.0.0", + "category": "Project Management", + "summary": "Prevents a parent task from being completed if any children task isn't.", + "author": "Tecnativa, Odoo Community Association (OCA)", + "maintainers": ["david-banon-tecnativa"], + "website": "https://github.com/OCA/project", + "license": "AGPL-3", + "installable": True, + "depends": ["project"], +} diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/bs.po b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/bs.po new file mode 100644 index 0000000..bee0475 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/bs.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_parent_completion_blocking +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_parent_completion_blocking +#: model:ir.model,name:project_task_parent_completion_blocking.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_parent_completion_blocking +#. odoo-python +#: code:addons/project_task_parent_completion_blocking/models/project_task.py:0 +#, python-format +msgid "You can't close this task because it has open subtasks." +msgstr "Vreme & materijali" diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/es.po b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/es.po new file mode 100644 index 0000000..a622b4c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/es.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_parent_completion_blocking +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-04-10 08:11+0000\n" +"PO-Revision-Date: 2025-04-10 10:15+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.6\n" + +#. module: project_task_parent_completion_blocking +#: model:ir.model,name:project_task_parent_completion_blocking.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_parent_completion_blocking +#. odoo-python +#: code:addons/project_task_parent_completion_blocking/models/project_task.py:0 +#, python-format +msgid "You can't close this task because it has open subtasks." +msgstr "No puede cerrar esta tarea porque tiene subtareas abiertas." diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/it.po b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/it.po new file mode 100644 index 0000000..db73da0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/it.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_parent_completion_blocking +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-05-10 10:24+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_task_parent_completion_blocking +#: model:ir.model,name:project_task_parent_completion_blocking.model_project_task +msgid "Task" +msgstr "Lavoro" + +#. module: project_task_parent_completion_blocking +#. odoo-python +#: code:addons/project_task_parent_completion_blocking/models/project_task.py:0 +#, python-format +msgid "You can't close this task because it has open subtasks." +msgstr "Non si può chiudere il lavoro perché ha dei sotto lavori aperti." diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/project_task_parent_completion_blocking.pot b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/project_task_parent_completion_blocking.pot new file mode 100644 index 0000000..287fd3f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/i18n/project_task_parent_completion_blocking.pot @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_parent_completion_blocking +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_parent_completion_blocking +#: model:ir.model,name:project_task_parent_completion_blocking.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_parent_completion_blocking +#. odoo-python +#: code:addons/project_task_parent_completion_blocking/models/project_task.py:0 +#, python-format +msgid "You can't close this task because it has open subtasks." +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/models/__init__.py b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/models/__init__.py new file mode 100644 index 0000000..edf2d36 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/models/__init__.py @@ -0,0 +1 @@ +from . import project_task diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/models/project_task.py b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/models/project_task.py new file mode 100644 index 0000000..6f3a53b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/models/project_task.py @@ -0,0 +1,16 @@ +from odoo import _, api, models +from odoo.exceptions import ValidationError + + +class ProjectTask(models.Model): + _inherit = "project.task" + + @api.constrains("stage_id") + def _check_subtasks_done_before_closing(self): + for task in self: + if task.stage_id.fold and task.child_ids.filtered( + lambda t: not t.stage_id.fold + ): + raise ValidationError( + _("You can't close this task because it has open subtasks.") + ) diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..3f2cbd8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Pedro M. Baeza + * David Bañón diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/readme/DESCRIPTION.rst new file mode 100644 index 0000000..dfead16 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Prevents a parent task from beeing completed if a child task isn't completed. diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/static/description/icon.png b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/static/description/icon.png new file mode 100644 index 0000000..1dcc49c Binary files /dev/null and b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/static/description/index.html b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/static/description/index.html new file mode 100644 index 0000000..7e185f5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/static/description/index.html @@ -0,0 +1,429 @@ + + + + + +Project task parent completion blocking + + + +
+

Project task parent completion blocking

+ + +

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

+

Prevents a parent task from beeing completed if a child task isn’t completed.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:
      +
    • Pedro M. Baeza
    • +
    • David Bañón
    • +
    +
  • +
+
+
+

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:

+

david-banon-tecnativa

+

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/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/tests/__init__.py b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/tests/__init__.py new file mode 100644 index 0000000..3419270 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/tests/__init__.py @@ -0,0 +1 @@ +from . import test_project_task_parent_completion_blocking diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/tests/test_project_task_parent_completion_blocking.py b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/tests/test_project_task_parent_completion_blocking.py new file mode 100644 index 0000000..ff23f89 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/project_task_parent_completion_blocking/tests/test_project_task_parent_completion_blocking.py @@ -0,0 +1,66 @@ +from odoo.exceptions import ValidationError +from odoo.tests.common import TransactionCase + + +class TestParentChildBlock(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.test_project = ( + cls.env["project.project"] + .with_context(mail_create_nolog=True) + .create( + { + "name": "Test Project", + "privacy_visibility": "employees", + "alias_name": "project+test", + } + ) + ) + cls.parent_task = ( + cls.env["project.task"] + .with_context(mail_create_nolog=True) + .create({"name": "Pigs UserTask", "project_id": cls.test_project.id}) + ) + cls.child_task = ( + cls.env["project.task"] + .with_context(mail_create_nolog=True) + .create({"name": "Pigs ManagerTask", "project_id": cls.test_project.id}) + ) + + cls.stage_pending = cls.env["project.task.type"].create( + {"name": "a", "project_ids": [(4, cls.test_project.id)], "fold": False} + ) + cls.stage_done = cls.env["project.task.type"].create( + {"name": "b", "project_ids": [(4, cls.test_project.id)], "fold": True} + ) + cls.child_task.parent_id = cls.parent_task + cls.parent_task.stage_id = cls.stage_pending + cls.child_task.stage_id = cls.stage_pending + + def test_child_blocks_parent(self): + with self.assertRaises(ValidationError): + self.parent_task.stage_id = self.stage_done + extra_task = ( + self.env["project.task"] + .with_context(mail_create_nolog=True) + .create( + { + "name": "Test Task 3", + "project_id": self.test_project.id, + } + ) + ) + self.parent_task.child_ids += extra_task + extra_task.stage_id = self.stage_done + with self.assertRaises(ValidationError): + self.parent_task.stage_id = self.stage_done + + def test_child_not_blocks_parent(self): + self.child_task.stage_id = self.stage_done + self.parent_task.stage_id = self.stage_done + self.assertEqual( + self.parent_task.stage_id, + self.stage_done, + "Parent should be done if child is done", + ) diff --git a/odoo-bringout-oca-project-project_task_parent_completion_blocking/pyproject.toml b/odoo-bringout-oca-project-project_task_parent_completion_blocking/pyproject.toml new file mode 100644 index 0000000..6b135d2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_completion_blocking/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_parent_completion_blocking" +version = "16.0.0" +description = "Project task parent completion blocking - Prevents a parent task from being completed if any children task isn't." +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_parent_completion_blocking"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/README.md b/odoo-bringout-oca-project-project_task_parent_due_auto/README.md new file mode 100644 index 0000000..a9e6a4f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/README.md @@ -0,0 +1,46 @@ +# Project task parent due date auto + +Odoo addon: project_task_parent_due_auto + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_parent_due_auto +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project task parent due date auto +- **Version**: 16.0.1.0.1 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_parent_due_auto`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/ARCHITECTURE.md new file mode 100644 index 0000000..ea31235 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_parent_due_auto Module - project_task_parent_due_auto + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/CONFIGURATION.md new file mode 100644 index 0000000..a8e27d4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_parent_due_auto. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/FAQ.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/FAQ.md new file mode 100644 index 0000000..75ffbfc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_parent_due_auto or install in UI. diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/INSTALL.md new file mode 100644 index 0000000..37d5385 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_parent_due_auto" +# or +uv pip install odoo-bringout-oca-project-project_task_parent_due_auto" +``` diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/MODELS.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/MODELS.md new file mode 100644 index 0000000..b21f3e0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_task_parent_due_auto. + +```mermaid +classDiagram + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/OVERVIEW.md new file mode 100644 index 0000000..9c8e8c4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_parent_due_auto. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_parent_due_auto +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/USAGE.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/USAGE.md new file mode 100644 index 0000000..a8c476b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_parent_due_auto +``` diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/README.rst b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/README.rst new file mode 100644 index 0000000..009fad9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/README.rst @@ -0,0 +1,87 @@ +================================= +Project task parent due date auto +================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:184e535a035ed7ae7f7ebe6de19d4aecbf04f8a620a37ad02e8c4360773e1028 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_parent_due_auto + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_parent_due_auto + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Updates the parent task's due date when a child's due date is changed. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + - Pedro M. Baeza + - David Bañón Gil + +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-david-banon-tecnativa| image:: https://github.com/david-banon-tecnativa.png?size=40px + :target: https://github.com/david-banon-tecnativa + :alt: david-banon-tecnativa + +Current `maintainer `__: + +|maintainer-david-banon-tecnativa| + +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/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/__init__.py b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/__manifest__.py b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/__manifest__.py new file mode 100644 index 0000000..dc695b3 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2025 Tecnativa David Bañón +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "Project task parent due date auto", + "version": "16.0.1.0.1", + "category": "Project Management", + "summary": "Recalculates parent task's due date when child task changes", + "author": "Tecnativa, Odoo Community Association (OCA)", + "maintainers": ["david-banon-tecnativa"], + "website": "https://github.com/OCA/project", + "license": "AGPL-3", + "installable": True, + "depends": ["project"], +} diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/i18n/bs.po b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/i18n/bs.po new file mode 100644 index 0000000..bad23cd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/i18n/bs.po @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_parent_due_auto +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_parent_due_auto +#: model:ir.model,name:project_task_parent_due_auto.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/i18n/it.po b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/i18n/it.po new file mode 100644 index 0000000..6c670bc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/i18n/it.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_parent_due_auto +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-04-11 08:58+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_task_parent_due_auto +#: model:ir.model,name:project_task_parent_due_auto.model_project_task +msgid "Task" +msgstr "Lavoro" diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/i18n/project_task_parent_due_auto.pot b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/i18n/project_task_parent_due_auto.pot new file mode 100644 index 0000000..1d101a0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/i18n/project_task_parent_due_auto.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_parent_due_auto +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_parent_due_auto +#: model:ir.model,name:project_task_parent_due_auto.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/models/__init__.py b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/models/__init__.py new file mode 100644 index 0000000..edf2d36 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/models/__init__.py @@ -0,0 +1 @@ +from . import project_task diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/models/project_task.py b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/models/project_task.py new file mode 100644 index 0000000..5e9c8f0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/models/project_task.py @@ -0,0 +1,30 @@ +from odoo import api, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + @api.model_create_multi + def create(self, vals_list): + tasks = super().create(vals_list) + for vals, task in zip(vals_list, tasks): + if "date_deadline" in vals: + task.update_parent_task_dates() + return tasks + + def write(self, vals): + res = super().write(vals) + if "date_deadline" in vals or "stage_id" in vals: + self.update_parent_task_dates() + return res + + def update_parent_task_dates(self): + for task in self: + parent = task.parent_id + if parent: + children = parent.child_ids.filtered( + lambda child: not child.stage_id.fold and child.date_deadline + ) + deadline = children and min(children.mapped("date_deadline")) + if deadline and parent.date_deadline != deadline: + parent.date_deadline = deadline diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..9bd5c83 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + - Pedro M. Baeza + - David Bañón Gil diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/readme/DESCRIPTION.rst new file mode 100644 index 0000000..94cdd51 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Updates the parent task's due date when a child's due date is changed. diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/static/description/icon.png b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/static/description/icon.png new file mode 100644 index 0000000..1dcc49c Binary files /dev/null and b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/static/description/index.html b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/static/description/index.html new file mode 100644 index 0000000..0eaed8b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/static/description/index.html @@ -0,0 +1,432 @@ + + + + + +Project task parent due date auto + + + +
+

Project task parent due date auto

+ + +

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

+

Updates the parent task’s due date when a child’s due date is changed.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:

    +
    +
      +
    • Pedro M. Baeza
    • +
    • David Bañón Gil
    • +
    +
    +
  • +
+
+
+

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:

+

david-banon-tecnativa

+

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/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/tests/__init__.py b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/tests/__init__.py new file mode 100644 index 0000000..73bd19c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/tests/__init__.py @@ -0,0 +1 @@ +from . import test_parent_due_auto diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/tests/test_parent_due_auto.py b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/tests/test_parent_due_auto.py new file mode 100644 index 0000000..b2d1e7d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/project_task_parent_due_auto/tests/test_parent_due_auto.py @@ -0,0 +1,101 @@ +from dateutil import relativedelta + +from odoo import fields + +from odoo.addons.base.tests.common import BaseCommon + + +class TestParentDueAuto(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.date_1 = fields.Date.today() + relativedelta.relativedelta(days=1) + cls.date_5 = fields.Date.today() + relativedelta.relativedelta(days=5) + cls.date_7 = fields.Date.today() + relativedelta.relativedelta(days=7) + cls.date_10 = fields.Date.today() + relativedelta.relativedelta(days=10) + cls.test_project = cls.env["project.project"].create( + { + "name": "Test Project", + "privacy_visibility": "employees", + "alias_name": "project+test", + } + ) + cls.task_1 = cls.env["project.task"].create( + {"name": "Pigs UserTask", "project_id": cls.test_project.id} + ) + cls.task_2 = cls.env["project.task"].create( + {"name": "Pigs ManagerTask", "project_id": cls.test_project.id} + ) + cls.task_3 = cls.env["project.task"].create( + { + "name": "Test Task 3", + "project_id": cls.test_project.id, + } + ) + cls.task_2.parent_id = cls.task_1 + + def test_setting_parent_due_date_does_not_change_child(self): + self.task_1.write({"date_deadline": self.date_1}) + self.assertFalse( + self.task_2.date_deadline, + "Updating parent deadline should not update child", + ) + + def test_updating_child_due_date_sets_parent(self): + self.task_2.write({"date_deadline": self.date_5}) + self.assertEqual( + self.task_1.date_deadline, + self.date_5, + "Updating child deadline should update parent date", + ) + + def test_removing_child_due_date_removes_from_parent(self): + self.task_2.write({"date_deadline": self.date_5}) + self.task_2.date_deadline = False + self.assertTrue( + self.task_1.date_deadline, + "Clearing child should not clear parent", + ) + + def test_closest_due_date_among_children_is_used(self): + self.task_2.date_deadline = self.date_5 + self.task_3.parent_id = self.task_1 + self.task_3.date_deadline = self.date_10 + self.assertEqual( + self.task_1.date_deadline, + self.date_5, + "Parent deadline should be set to earliest child deadline", + ) + + def test_updating_closest_child_updates_parent(self): + self.task_2.write({"date_deadline": self.date_5}) + self.task_2.write({"date_deadline": self.date_7}) + self.assertEqual( + self.task_1.date_deadline, + self.date_7, + """Parent deadline should be updated when child changes deadline + and parent already has a deadline""", + ) + + def test_creating_child_with_due_date_updates_parent(self): + self.env["project.task"].create( + { + "name": "Child Task", + "project_id": self.test_project.id, + "parent_id": self.task_1.id, + "date_deadline": self.date_10, + } + ) + self.assertEqual( + self.task_1.date_deadline, + self.date_10, + "Creating child with deadline should update parent", + ) + + def test_closing_child_updates_parent(self): + self.task_3.parent_id = self.task_1 + self.task_2.date_deadline = self.date_1 + self.task_3.date_deadline = self.date_5 + self.assertEqual(self.task_1.date_deadline, self.date_1) + self.task_2.stage_id = self.env.ref("project.project_stage_2") + self.assertEqual(self.task_1.date_deadline, self.date_5) diff --git a/odoo-bringout-oca-project-project_task_parent_due_auto/pyproject.toml b/odoo-bringout-oca-project-project_task_parent_due_auto/pyproject.toml new file mode 100644 index 0000000..9b3e08c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_parent_due_auto/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_parent_due_auto" +version = "16.0.0" +description = "Project task parent due date auto - Recalculates parent task's due date when child task changes" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_parent_due_auto"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/README.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/README.md new file mode 100644 index 0000000..8a54cfd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/README.md @@ -0,0 +1,46 @@ +# Project Task Personal Stage auto Fold + +Odoo addon: project_task_personal_stage_auto_fold + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_personal_stage_auto_fold +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Task Personal Stage auto Fold +- **Version**: 16.0.1.0.0 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_personal_stage_auto_fold`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/ARCHITECTURE.md new file mode 100644 index 0000000..4fb8371 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_personal_stage_auto_fold Module - project_task_personal_stage_auto_fold + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/CONFIGURATION.md new file mode 100644 index 0000000..7a9c9a2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_personal_stage_auto_fold. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/FAQ.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/FAQ.md new file mode 100644 index 0000000..988a341 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_personal_stage_auto_fold or install in UI. diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/INSTALL.md new file mode 100644 index 0000000..b9d5816 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_personal_stage_auto_fold" +# or +uv pip install odoo-bringout-oca-project-project_task_personal_stage_auto_fold" +``` diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/MODELS.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/MODELS.md new file mode 100644 index 0000000..ef19328 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_task_personal_stage_auto_fold. + +```mermaid +classDiagram + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/OVERVIEW.md new file mode 100644 index 0000000..4bfd712 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_personal_stage_auto_fold. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_personal_stage_auto_fold +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/USAGE.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/USAGE.md new file mode 100644 index 0000000..13b3830 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_personal_stage_auto_fold +``` diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/README.rst b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/README.rst new file mode 100644 index 0000000..7d34f05 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/README.rst @@ -0,0 +1,109 @@ +===================================== +Project Task Personal Stage auto Fold +===================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ab59448fc27c5eebf9d0731a3a219ba63741d244c865b66c1c16e109aede491d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_personal_stage_auto_fold + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_personal_stage_auto_fold + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +When you close a task, its personal stage will change as well. + +This module simplifies to close or to cancel a task from the project stage +and the personal stage. + +In the case a task is assigned to more than one user, +only the personal task stage of the user will be updated. + +Notice: This module don't change the project task stage from the personal task stage. +It is intended so no change about this functionality is desired or required. +Furthermore, also is intended that only the personal stage of the user who finish +the task with the project task stage will be update. So the other users assigned to +the task have to update the personal task stage manually when they finish it + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +The task stages "Done" and "Canceled" must match the same name as the equivalent +personal stages. + +The checkbox “Closing stage” must be checked in the stage configuration. + +Usage +===== + +1. Go to Projects > Select one > Select a task assigned to you +2. Change the stage to Done or to Canceled +3. Go to My Tasks > Select the same task +4. As you can see, the personal stage has also changed + +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 +~~~~~~~ + +* Moduon + +Contributors +~~~~~~~~~~~~ + +* `Moduon `_: + + * Eduardo de Miguel +* `C2i Change 2 improve `_: + + * Eduardo Magdalena + +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. + +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/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/__init__.py b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/__manifest__.py b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/__manifest__.py new file mode 100644 index 0000000..266447a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2022 Moduon - Eduardo de Miguel +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Project Task Personal Stage auto Fold", + "summary": "Moves task to the first fold personal stage when done", + "version": "16.0.1.0.0", + "category": "Project", + "website": "https://github.com/OCA/project", + "author": "Moduon, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["project"], + "data": [], + "installable": True, +} diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/bs.po b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/bs.po new file mode 100644 index 0000000..80edcd8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/bs.po @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_personal_stage_auto_fold +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_personal_stage_auto_fold +#: model:ir.model,name:project_task_personal_stage_auto_fold.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/es.po b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/es.po new file mode 100644 index 0000000..5f2402b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/es.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_personal_stage_auto_fold +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-09-07 16:36+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_task_personal_stage_auto_fold +#: model:ir.model,name:project_task_personal_stage_auto_fold.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/hr.po b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/hr.po new file mode 100644 index 0000000..5f9e650 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/hr.po @@ -0,0 +1,23 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_personal_stage_auto_fold +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-02-15 17:23+0000\n" +"Last-Translator: Bole \n" +"Language-Team: none\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: project_task_personal_stage_auto_fold +#: model:ir.model,name:project_task_personal_stage_auto_fold.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/it.po b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/it.po new file mode 100644 index 0000000..66067fd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/it.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_personal_stage_auto_fold +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-10 21:22+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 4.14.1\n" + +#. module: project_task_personal_stage_auto_fold +#: model:ir.model,name:project_task_personal_stage_auto_fold.model_project_task +msgid "Task" +msgstr "Lavoro" diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/project_task_personal_stage_auto_fold.pot b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/project_task_personal_stage_auto_fold.pot new file mode 100644 index 0000000..6e1143b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/project_task_personal_stage_auto_fold.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_personal_stage_auto_fold +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_personal_stage_auto_fold +#: model:ir.model,name:project_task_personal_stage_auto_fold.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/pt_BR.po b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/pt_BR.po new file mode 100644 index 0000000..0c4e11c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/i18n/pt_BR.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_personal_stage_auto_fold +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-30 14:10+0000\n" +"Last-Translator: Adriano Prado \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" +"X-Generator: Weblate 4.17\n" + +#. module: project_task_personal_stage_auto_fold +#: model:ir.model,name:project_task_personal_stage_auto_fold.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/models/__init__.py b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/models/__init__.py new file mode 100644 index 0000000..edf2d36 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/models/__init__.py @@ -0,0 +1 @@ +from . import project_task diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/models/project_task.py b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/models/project_task.py new file mode 100644 index 0000000..d73954d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/models/project_task.py @@ -0,0 +1,37 @@ +from odoo import models + + +class Task(models.Model): + _inherit = "project.task" + + def write(self, vals): + result = super().write(vals) + if ( + vals.get("stage_id") + and self.env["project.task.type"].browse(vals.get("stage_id")).fold + ): + self._fold_personal_stage_task() + return result + + def _fold_personal_stage_task(self): + # Find all folded personal stages + folded_stages = ( + self.env["project.task.type"] + .search( + [ + ("user_id", "=", self.env.user.id), + ("fold", "=", True), + ], + ) + .sorted(lambda ptt: ptt.fold, reverse=True) + ) + if not folded_stages: + return + # Allow to find personal stage with same name as shared stage + stage_by_name = {stage.name: stage for stage in folded_stages} + # Apply best matching personal stage + for task in self: + task.personal_stage_type_id = stage_by_name.get( + task.stage_id.name, + folded_stages[0], + ) diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/CONFIGURE.rst new file mode 100644 index 0000000..7f6bceb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/CONFIGURE.rst @@ -0,0 +1,4 @@ +The task stages "Done" and "Canceled" must match the same name as the equivalent +personal stages. + +The checkbox “Closing stage” must be checked in the stage configuration. diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..b7df733 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* `Moduon `_: + + * Eduardo de Miguel +* `C2i Change 2 improve `_: + + * Eduardo Magdalena diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/DESCRIPTION.rst new file mode 100644 index 0000000..64458e4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/DESCRIPTION.rst @@ -0,0 +1,13 @@ +When you close a task, its personal stage will change as well. + +This module simplifies to close or to cancel a task from the project stage +and the personal stage. + +In the case a task is assigned to more than one user, +only the personal task stage of the user will be updated. + +Notice: This module don't change the project task stage from the personal task stage. +It is intended so no change about this functionality is desired or required. +Furthermore, also is intended that only the personal stage of the user who finish +the task with the project task stage will be update. So the other users assigned to +the task have to update the personal task stage manually when they finish it diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/USAGE.rst b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/USAGE.rst new file mode 100644 index 0000000..c3edd27 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/readme/USAGE.rst @@ -0,0 +1,4 @@ +1. Go to Projects > Select one > Select a task assigned to you +2. Change the stage to Done or to Canceled +3. Go to My Tasks > Select the same task +4. As you can see, the personal stage has also changed diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/static/description/icon.png b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/static/description/index.html b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/static/description/index.html new file mode 100644 index 0000000..7ab9eb7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/static/description/index.html @@ -0,0 +1,454 @@ + + + + + + +Project Task Personal Stage auto Fold + + + +
+

Project Task Personal Stage auto Fold

+ + +

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

+

When you close a task, its personal stage will change as well.

+

This module simplifies to close or to cancel a task from the project stage +and the personal stage.

+

In the case a task is assigned to more than one user, +only the personal task stage of the user will be updated.

+

Notice: This module don’t change the project task stage from the personal task stage. +It is intended so no change about this functionality is desired or required. +Furthermore, also is intended that only the personal stage of the user who finish +the task with the project task stage will be update. So the other users assigned to +the task have to update the personal task stage manually when they finish it

+

Table of contents

+ +
+

Configuration

+

The task stages “Done” and “Canceled” must match the same name as the equivalent +personal stages.

+

The checkbox “Closing stage” must be checked in the stage configuration.

+
+
+

Usage

+
    +
  1. Go to Projects > Select one > Select a task assigned to you
  2. +
  3. Change the stage to Done or to Canceled
  4. +
  5. Go to My Tasks > Select the same task
  6. +
  7. As you can see, the personal stage has also changed
  8. +
+
+
+

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

+
    +
  • Moduon
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/tests/__init__.py b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/tests/__init__.py new file mode 100644 index 0000000..dbe166c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_personal_stages diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/tests/test_personal_stages.py b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/tests/test_personal_stages.py new file mode 100644 index 0000000..a587aa5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/project_task_personal_stage_auto_fold/tests/test_personal_stages.py @@ -0,0 +1,142 @@ +# Copyright 2022 Moduon - Eduardo de Miguel +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.tests import TransactionCase + + +class TestAutoFoldPersonalStages(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + user_group_employee = cls.env.ref("base.group_user") + user_group_project_user = cls.env.ref("project.group_project_user") + user_group_project_manager = cls.env.ref("project.group_project_manager") + cls.partner_1 = cls.env["res.partner"].create( + {"name": "Valid Lelitre", "email": "valid.lelitre@agrolait.com"} + ) + # Test users to use through the various tests + Users = cls.env["res.users"].with_context(no_reset_password=True) + cls.user_projectuser = Users.create( + { + "name": "Armande ProjectUser", + "login": "armandel", + "password": "armandel", + "email": "armande.projectuser@example.com", + "groups_id": [ + (6, 0, [user_group_employee.id, user_group_project_user.id]) + ], + } + ) + cls.user_projectmanager = Users.create( + { + "name": "Bastien ProjectManager", + "login": "bastien", + "email": "bastien.projectmanager@example.com", + "groups_id": [ + (6, 0, [user_group_employee.id, user_group_project_manager.id]) + ], + } + ) + # Test 'Pigs' project + cls.project_pigs = ( + cls.env["project.project"] + .with_context(mail_create_nolog=True) + .create( + { + "name": "Pigs", + "privacy_visibility": "employees", + "alias_name": "project+pigs", + "partner_id": cls.partner_1.id, + } + ) + ) + cls.project_task_stages = cls.env["project.task.type"].create( + [ + {"sequence": 1, "name": "New"}, + {"sequence": 2, "name": "In progress"}, + {"sequence": 3, "name": "Finished", "fold": True}, + {"sequence": 4, "name": "Canceled", "fold": True}, + ] + ) + cls.project_pigs.type_ids = [(6, 0, cls.project_task_stages.ids)] + cls.task_3 = cls.env["project.task"].create( + { + "name": "Multiple Assigned Task", + "user_ids": [ + (6, 0, [cls.user_projectmanager.id, cls.user_projectuser.id]) + ], + "project_id": cls.project_pigs.id, + } + ) + cls.task_3.with_user(cls.user_projectmanager)._compute_personal_stage_id() + cls.task_3.with_user(cls.user_projectuser)._compute_personal_stage_id() + + def setUp(self): + """Save user_projectuser initial personal stage""" + super().setUp() + self.task_3_projectuser_initial_personal_stage = self.task_3.with_user( + self.user_projectuser + ).personal_stage_id.stage_id + + def tearDown(self): + """Personal Stage no other assignees shouldn't be modified + + Personal Stage on other Task assignees shouldn't be modified + by the actions of the user that performs task closing. + """ + super().tearDown() + self.assertEqual( + self.task_3_projectuser_initial_personal_stage, + self.task_3.with_user(self.user_projectuser).personal_stage_id.stage_id, + "Personal Stage on other assignees has been modified", + ) + + def test_personal_stage_not_change(self): + """Personal Stage don't change + + Personal stage don't change if task stage is not on a closing stage. + """ + target_task_stage = self.project_task_stages[1] # In progress stage + old_personal_stage = self.task_3.with_user( + self.user_projectmanager + ).personal_stage_id.stage_id + self.task_3.with_user(self.user_projectmanager).stage_id = target_task_stage.id + new_personal_stage = self.task_3.with_user( + self.user_projectmanager + ).personal_stage_id.stage_id + self.assertEqual(old_personal_stage, new_personal_stage) + + def test_personal_stage_changes_to_one_with_the_same_name(self): + """Personal Stage changes to the same name as Task Stage + + Personal stage change if task stage is on a closing stage and changes + to the one with the same name of the task stage. + """ + target_task_stage = self.project_task_stages[3] # Canceled stage + self.task_3.with_user(self.user_projectmanager).stage_id = target_task_stage.id + new_personal_stage = self.task_3.with_user( + self.user_projectmanager + ).personal_stage_id.stage_id + self.assertEqual(new_personal_stage.name, target_task_stage.name) + + def test_personal_stage_changes_to_first_personal_closing_stage(self): + """Personal Stage changes to the first closing or folded stage + + Personal stage changes to a closing or fold stage + if task stage is on a closing stage + and the name of the personal stage is not found. + """ + personal_target_closing_stage = self.env["project.task.type"].search( + [ + ("user_id", "=", self.user_projectmanager.id), + ("fold", "=", True), + ], + order="fold desc", + limit=1, + ) + target_task_stage = self.project_task_stages[2] # Finished stage + self.task_3.with_user(self.user_projectmanager).stage_id = target_task_stage.id + new_personal_stage = self.task_3.with_user( + self.user_projectmanager + ).personal_stage_id.stage_id + self.assertEqual(new_personal_stage, personal_target_closing_stage) diff --git a/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/pyproject.toml b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/pyproject.toml new file mode 100644 index 0000000..066b8b1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_personal_stage_auto_fold/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_personal_stage_auto_fold" +version = "16.0.0" +description = "Project Task Personal Stage auto Fold - Moves task to the first fold personal stage when done" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_personal_stage_auto_fold"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_project_required/README.md b/odoo-bringout-oca-project-project_task_project_required/README.md new file mode 100644 index 0000000..f385bd7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/README.md @@ -0,0 +1,46 @@ +# Project: require Project on Task + +Odoo addon: project_task_project_required + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_project_required +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project: require Project on Task +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_project_required`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_project_required/doc/ARCHITECTURE.md new file mode 100644 index 0000000..ae66841 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_project_required Module - project_task_project_required + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_project_required/doc/CONFIGURATION.md new file mode 100644 index 0000000..7126d9f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_project_required. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_project_required/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_project_required/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/FAQ.md b/odoo-bringout-oca-project-project_task_project_required/doc/FAQ.md new file mode 100644 index 0000000..09b8ea6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_project_required or install in UI. diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_project_required/doc/INSTALL.md new file mode 100644 index 0000000..e4dcbda --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_project_required" +# or +uv pip install odoo-bringout-oca-project-project_task_project_required" +``` diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/MODELS.md b/odoo-bringout-oca-project-project_task_project_required/doc/MODELS.md new file mode 100644 index 0000000..af37221 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in project_task_project_required. + +```mermaid +classDiagram + class project_task + class res_company + class res_config_settings +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_project_required/doc/OVERVIEW.md new file mode 100644 index 0000000..6d870b0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_project_required. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_project_required +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_project_required/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_project_required/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_project_required/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/USAGE.md b/odoo-bringout-oca-project-project_task_project_required/doc/USAGE.md new file mode 100644 index 0000000..4d3f947 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_project_required +``` diff --git a/odoo-bringout-oca-project-project_task_project_required/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_project_required/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/README.rst b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/README.rst new file mode 100644 index 0000000..7cda01c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/README.rst @@ -0,0 +1,89 @@ +================================ +Project: require Project on Task +================================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:0164146a678d3026c45a670c36915706023d3fd4746637dbb962d2e4bf5c4dcc + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_project_required + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_project_required + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to configure task as having project as a mandatory field. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +By installing this module, the project field +will be mandatory for all the companies. + +To make project selection optional on task for a given company: + +# Go to *Project > Configuration > Settings* +# Uncheck *Require Projects on Tasks* + +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 +~~~~~~~ + +* CorporateHub + +Contributors +~~~~~~~~~~~~ + +* `CorporateHub `__ + + * Alexey Pelykh + +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. + +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/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/__init__.py b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/__init__.py new file mode 100644 index 0000000..31660d6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/__manifest__.py b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/__manifest__.py new file mode 100644 index 0000000..a167e0e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# Copyright 2020 CorporateHub (https://corporatehub.eu) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Project: require Project on Task", + "summary": """ + Set project on task as a mandatory field""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "CorporateHub, " "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "depends": [ + "project", + ], + "data": [ + "views/project_task.xml", + "views/res_config_settings_views.xml", + ], + "demo": [ + "demo/res_company.xml", + ], +} diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/demo/res_company.xml b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/demo/res_company.xml new file mode 100644 index 0000000..8669ee4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/demo/res_company.xml @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/bs.po b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/bs.po new file mode 100644 index 0000000..d105deb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/bs.po @@ -0,0 +1,60 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_project_required +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "" +"" +msgstr "" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_company +msgid "Companies" +msgstr "Kompanije" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_config_settings +msgid "Config Settings" +msgstr "Postavke" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_project_task__is_project_required +msgid "Is Project Required" +msgstr "Na čekanju" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_company__is_project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_config_settings__is_project_task_project_required +msgid "Require Projects on Tasks" +msgstr "U toku" + +#. module: project_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "Require project selection on each task by default" +msgstr "Require project selection on each task by default" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_project_required +#. odoo-python +#: code:addons/project_task_project_required/models/project_task.py:0 +#, python-format +msgid "You must specify a project for the task." +msgstr "Moji favoriti" diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/es.po b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/es.po new file mode 100644 index 0000000..c3ffa23 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/es.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_project_required +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-03-26 01:08+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_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_company +msgid "Companies" +msgstr "Compañías" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_config_settings +msgid "Config Settings" +msgstr "Ajustes Config" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_project_task__is_project_required +msgid "Is Project Required" +msgstr "Es Necesario el Proyecto" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_company__is_project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_config_settings__is_project_task_project_required +msgid "Require Projects on Tasks" +msgstr "Exigir proyectos sobre tareas" + +#. module: project_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "Require project selection on each task by default" +msgstr "Requerir la selección del proyecto en cada tarea por defecto" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_project_required +#. odoo-python +#: code:addons/project_task_project_required/models/project_task.py:0 +#, python-format +msgid "You must specify a project for the task." +msgstr "Debe especificar un proyecto para la tarea." + +#~ msgid "Display Name" +#~ msgstr "Mostrar Nombre" + +#~ msgid "ID" +#~ msgstr "ID (identificación)" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificación el" diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/it.po b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/it.po new file mode 100644 index 0000000..b8e77d7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/it.po @@ -0,0 +1,75 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_project_required +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-12-31 20:33+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 4.17\n" + +#. module: project_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_company +msgid "Companies" +msgstr "Aziende" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_config_settings +msgid "Config Settings" +msgstr "Impostazioni di configurazione" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_project_task__is_project_required +msgid "Is Project Required" +msgstr "È richiesto il progetto" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_company__is_project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_config_settings__is_project_task_project_required +msgid "Require Projects on Tasks" +msgstr "Richiede i progetti nei lavori" + +#. module: project_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "Require project selection on each task by default" +msgstr "Richiede in modo predefinito la selezione del progetto in ogni lavoro" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_project_task +msgid "Task" +msgstr "Lavoro" + +#. module: project_task_project_required +#. odoo-python +#: code:addons/project_task_project_required/models/project_task.py:0 +#, python-format +msgid "You must specify a project for the task." +msgstr "Deve essere specificato un progetto per il lavoro." + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/project_task_project_required.pot b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/project_task_project_required.pot new file mode 100644 index 0000000..c3f0f85 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/project_task_project_required.pot @@ -0,0 +1,60 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_project_required +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "" +"" +msgstr "" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_company +msgid "Companies" +msgstr "" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_project_task__is_project_required +msgid "Is Project Required" +msgstr "" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_company__is_project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_config_settings__is_project_task_project_required +msgid "Require Projects on Tasks" +msgstr "" + +#. module: project_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "Require project selection on each task by default" +msgstr "" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_project_required +#. odoo-python +#: code:addons/project_task_project_required/models/project_task.py:0 +#, python-format +msgid "You must specify a project for the task." +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/pt_BR.po b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/pt_BR.po new file mode 100644 index 0000000..d4edec9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/i18n/pt_BR.po @@ -0,0 +1,67 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_project_required +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-07-16 23:58+0000\n" +"Last-Translator: Rodrigo Sottomaior Macedo " +"\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" +"X-Generator: Weblate 5.6.2\n" + +#. module: project_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "" +"" +msgstr "" +"" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_company +msgid "Companies" +msgstr "Empresas" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_res_config_settings +msgid "Config Settings" +msgstr "Configurações" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_project_task__is_project_required +msgid "Is Project Required" +msgstr "O projeto é necessário" + +#. module: project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_company__is_project_task_project_required +#: model:ir.model.fields,field_description:project_task_project_required.field_res_config_settings__is_project_task_project_required +msgid "Require Projects on Tasks" +msgstr "Exigir projetos em tarefas" + +#. module: project_task_project_required +#: model_terms:ir.ui.view,arch_db:project_task_project_required.res_config_settings_view_form +msgid "Require project selection on each task by default" +msgstr "Exigir seleção de projeto em cada tarefa por padrão" + +#. module: project_task_project_required +#: model:ir.model,name:project_task_project_required.model_project_task +msgid "Task" +msgstr "Tarefa" + +#. module: project_task_project_required +#. odoo-python +#: code:addons/project_task_project_required/models/project_task.py:0 +#, python-format +msgid "You must specify a project for the task." +msgstr "Você deve especificar um projeto para a tarefa." diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/__init__.py b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/__init__.py new file mode 100644 index 0000000..21d993b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/__init__.py @@ -0,0 +1,5 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import res_company +from . import project_task +from . import res_config_settings diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/project_task.py b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/project_task.py new file mode 100644 index 0000000..c8ad74b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/project_task.py @@ -0,0 +1,20 @@ +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class ProjectTask(models.Model): + _inherit = "project.task" + + is_project_required = fields.Boolean( + string="Is Project Required", + related="company_id.is_project_task_project_required", + ) + + @api.constrains("project_id") + def _check_project_id(self): + for task in self: + if task.is_project_required and not task.project_id: + raise ValidationError(_("You must specify a project for the task.")) diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/res_company.py b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/res_company.py new file mode 100644 index 0000000..227d061 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/res_company.py @@ -0,0 +1,13 @@ +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + is_project_task_project_required = fields.Boolean( + string="Require Projects on Tasks", + default=True, + ) diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/res_config_settings.py b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/res_config_settings.py new file mode 100644 index 0000000..5b265fe --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/models/res_config_settings.py @@ -0,0 +1,14 @@ +# Copyright 2018-2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + is_project_task_project_required = fields.Boolean( + string="Require Projects on Tasks", + related="company_id.is_project_task_project_required", + readonly=False, + ) diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/readme/CONFIGURE.rst new file mode 100644 index 0000000..51ed7ea --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/readme/CONFIGURE.rst @@ -0,0 +1,7 @@ +By installing this module, the project field +will be mandatory for all the companies. + +To make project selection optional on task for a given company: + +# Go to *Project > Configuration > Settings* +# Uncheck *Require Projects on Tasks* diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..724bc1d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `CorporateHub `__ + + * Alexey Pelykh diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/readme/DESCRIPTION.rst new file mode 100644 index 0000000..e358832 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows to configure task as having project as a mandatory field. diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/static/description/icon.png b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/static/description/index.html b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/static/description/index.html new file mode 100644 index 0000000..e848046 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/static/description/index.html @@ -0,0 +1,435 @@ + + + + + +Project: require Project on Task + + + +
+

Project: require Project on Task

+ + +

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

+

This module allows to configure task as having project as a mandatory field.

+

Table of contents

+ +
+

Configuration

+

By installing this module, the project field +will be mandatory for all the companies.

+

To make project selection optional on task for a given company:

+

# Go to Project > Configuration > Settings +# Uncheck Require Projects on Tasks

+
+
+

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

+
    +
  • CorporateHub
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/tests/__init__.py b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/tests/__init__.py new file mode 100644 index 0000000..a945ea0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_project_task_project_required diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/tests/test_project_task_project_required.py b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/tests/test_project_task_project_required.py new file mode 100644 index 0000000..e49960d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/tests/test_project_task_project_required.py @@ -0,0 +1,48 @@ +# Copyright 2019 Brainbean Apps (https://brainbeanapps.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.exceptions import ValidationError +from odoo.tests import TransactionCase + + +class TestProjectTaskProjectRequired(TransactionCase): + def setUp(self): + super().setUp() + + self.Project = self.env["project.project"] + self.ProjectTask = self.env["project.task"] + + self.project = self.Project.create( + { + "name": "Project", + } + ) + + def test_project_required(self): + self.env.user.company_id.is_project_task_project_required = True + with self.assertRaises(ValidationError): + self.ProjectTask.create( + { + "name": "Task A", + } + ) + self.ProjectTask.create( + { + "name": "Task B", + "project_id": self.project.id, + } + ) + + def test_project_not_required(self): + self.env.user.company_id.is_project_task_project_required = False + self.ProjectTask.create( + { + "name": "Task A", + } + ) + self.ProjectTask.create( + { + "name": "Task B", + "project_id": self.project.id, + } + ) diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/views/project_task.xml b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/views/project_task.xml new file mode 100644 index 0000000..7609844 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/views/project_task.xml @@ -0,0 +1,55 @@ + + + + + + project.task.tree + project.task + + + + + + + {'required':[('is_project_required','=',True)]} + + + + + + project.task.form + project.task + + + + + + + {'required':[('is_project_required','=',True)]} + + + + + + project.task.form.quick_create + project.task + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/views/res_config_settings_views.xml b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/views/res_config_settings_views.xml new file mode 100644 index 0000000..200c105 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/project_task_project_required/views/res_config_settings_views.xml @@ -0,0 +1,39 @@ + + + + + + res.config.settings.view.form + res.config.settings + + + +
+
+ +
+
+
+
+
+
+
+ +
diff --git a/odoo-bringout-oca-project-project_task_project_required/pyproject.toml b/odoo-bringout-oca-project-project_task_project_required/pyproject.toml new file mode 100644 index 0000000..79da9fb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_project_required/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-project-project_task_project_required" +version = "16.0.0" +description = "Project: require Project on Task - + Set project on task as a mandatory field" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_project_required"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_pull_request/README.md b/odoo-bringout-oca-project-project_task_pull_request/README.md new file mode 100644 index 0000000..ed517f0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/README.md @@ -0,0 +1,46 @@ +# Project Task Pull Request + +Odoo addon: project_task_pull_request + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_pull_request +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Task Pull Request +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_pull_request`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_pull_request/doc/ARCHITECTURE.md new file mode 100644 index 0000000..839055f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_pull_request Module - project_task_pull_request + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_pull_request/doc/CONFIGURATION.md new file mode 100644 index 0000000..a7cd137 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_pull_request. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_pull_request/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_pull_request/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/FAQ.md b/odoo-bringout-oca-project-project_task_pull_request/doc/FAQ.md new file mode 100644 index 0000000..6229c09 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_pull_request or install in UI. diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_pull_request/doc/INSTALL.md new file mode 100644 index 0000000..3a74ed5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_pull_request" +# or +uv pip install odoo-bringout-oca-project-project_task_pull_request" +``` diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/MODELS.md b/odoo-bringout-oca-project-project_task_pull_request/doc/MODELS.md new file mode 100644 index 0000000..b53ee12 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in project_task_pull_request. + +```mermaid +classDiagram + class project_project + class project_project + class project_task +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_pull_request/doc/OVERVIEW.md new file mode 100644 index 0000000..4ab42b8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_pull_request. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_pull_request +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_pull_request/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_pull_request/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_pull_request/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/USAGE.md b/odoo-bringout-oca-project-project_task_pull_request/doc/USAGE.md new file mode 100644 index 0000000..a1a9d90 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_pull_request +``` diff --git a/odoo-bringout-oca-project-project_task_pull_request/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_pull_request/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/README.rst b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/README.rst new file mode 100644 index 0000000..f09b619 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/README.rst @@ -0,0 +1,101 @@ +========================= +Project Task Pull Request +========================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:8571ef2dc90d493ebc070e652c90164379e98c3554cb2548de56232b46769014 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_pull_request + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_pull_request + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of project to allow you to +add PR URIs to tasks and require PR URIs before tasks can be moved +to certain stages. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. Go to Project -> Configuration -> Project +#. Select a project and, under "Pull Request URIs", select the stages + where you would like a PR URI to be required +#. Go to Dashboard and select a project +#. Attempt to move one of the project's task without a PR URI into one of + the stages you selected to require a PR; you will receive a Validation Error +#. To add a PR URI to a task, click on the task and go to the "Extra Info" tag + +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 +~~~~~~~ + +* SMDrugstore +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* Kelly Lougheed +* Ruchir Shukla +* `Tecnativa `_: + + * Ernesto Tejeda + * Jairo Llopis +* Cetmix : + * Ivan Sokolov + * Vladimir Kalmykov + + +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. + +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/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/__init__.py b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/__init__.py new file mode 100644 index 0000000..69f7bab --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/__manifest__.py b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/__manifest__.py new file mode 100644 index 0000000..80d17a8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2017 Specialty Medical Drugstore +# Copyright 2018 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Project Task Pull Request", + "summary": "Adds a field for a PR URI to project tasks", + "version": "16.0.1.0.0", + "category": "Project Management", + "website": "https://github.com/OCA/project", + "author": "SMDrugstore, " "Tecnativa, " "Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["project"], + "data": ["views/project_task_pull_request_view.xml"], +} diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ar.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ar.po new file mode 100644 index 0000000..b2a00a4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ar.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "مهمة" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/bs.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/bs.po new file mode 100644 index 0000000..9d5a096 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/bs.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "PR zahtijevana stanja" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "PR URI" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this " +"stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "Pull zahtjev URL" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ca.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ca.po new file mode 100644 index 0000000..c798d05 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ca.po @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2022-04-13 11:05+0000\n" +"Last-Translator: Noel estudillo \n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"Language: ca\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.3.2\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "Estats obligatoris de PR" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "PR URI" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" +"Si us plau, afegiu l'URI de la sol·licitud d'extracció abans de traslladar " +"la tasca a aquesta fase." + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projecte" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "URI de sol·licitud d'extracció" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tasca" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/de.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/de.po new file mode 100644 index 0000000..40524d2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/de.po @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2019-07-12 15:43+0000\n" +"Last-Translator: Maria Sparenberg \n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\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.7.1\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "PR erforderliche Status" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "PR URI" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" +"Bitte fügen Sie die URI des Pull Request's hinzu, bevor Sie eine Aufgabe in " +"diese Stufe verschieben." + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "Pull Request URIs" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Aufgabe" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/el.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/el.po new file mode 100644 index 0000000..f8df029 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/el.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Greek (https://www.transifex.com/oca/teams/23907/el/)\n" +"Language: el\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Εργασία" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es.po new file mode 100644 index 0000000..e7256e3 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2023-10-09 07:43+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "PR Estado Requeridos" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "URI PR" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" +"Por favor agregar el URI del pull request antes de pasar la tarea a esta " +"etapa." + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "URIs del Pull Request" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tarea" + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_AR.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_AR.po new file mode 100644 index 0000000..37039fc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_AR.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-02-22 16:12+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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.14.1\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "Estados Requeridos de PR" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "PR URI" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" +"Por favor, agregue la URI para el pull request antes de mover la tarea a " +"esta etapa." + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "Pull Request URIs" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tarea" + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" + +#~ msgid "Display Name" +#~ msgstr "Mostrar Nombre" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificación en" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_CR.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_CR.po new file mode 100644 index 0000000..68656bb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_CR.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/oca/" +"teams/23907/es_CR/)\n" +"Language: es_CR\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_MX.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_MX.po new file mode 100644 index 0000000..8041ff2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_MX.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-01 03:31+0000\n" +"PO-Revision-Date: 2017-07-01 03:31+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_VE.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_VE.po new file mode 100644 index 0000000..a36d7ab --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/es_VE.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Venezuela) (https://www.transifex.com/oca/" +"teams/23907/es_VE/)\n" +"Language: es_VE\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tarea" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/fi.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/fi.po new file mode 100644 index 0000000..5d2002c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/fi.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projekti" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tehtävä" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/fr.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/fr.po new file mode 100644 index 0000000..56646c8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/fr.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\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" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projet" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tâche" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/gl.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/gl.po new file mode 100644 index 0000000..eda952c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/gl.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"Language: gl\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/hr.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/hr.po new file mode 100644 index 0000000..5b2d833 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/hr.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-02 01:51+0000\n" +"PO-Revision-Date: 2018-02-02 01:51+0000\n" +"Last-Translator: Bole , 2018\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "PR zahtijevana stanja" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "PR URI" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "Molimo dodajte URL zahtijevu prije prebacivanja zadatka u ovu fazu" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "Pull zahtjev URL" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/hr_HR.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/hr_HR.po new file mode 100644 index 0000000..4a8fb97 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/hr_HR.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/hu.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/hu.po new file mode 100644 index 0000000..586333a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/hu.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n" +"Language: hu\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Feladat" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/it.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/it.po new file mode 100644 index 0000000..0d12c8b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/it.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2024-01-02 11:37+0000\n" +"Last-Translator: mymage \n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\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 4.17\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "Stati richiesti da PR" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "URI PR" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" +"Aggiungere l'URI per la pull request prima di spostare il lavoro in questa " +"fase." + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "URI pull request" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Lavoro" + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ja.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ja.po new file mode 100644 index 0000000..15734ec --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ja.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Japanese (https://www.transifex.com/oca/teams/23907/ja/)\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "タスク" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/lt.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/lt.po new file mode 100644 index 0000000..05b6e59 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/lt.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Lithuanian (https://www.transifex.com/oca/teams/23907/lt/)\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Užduotis" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/lv.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/lv.po new file mode 100644 index 0000000..52df273 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/lv.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Latvian (https://www.transifex.com/oca/teams/23907/lv/)\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Uzdevums" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/mk.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/mk.po new file mode 100644 index 0000000..3e83bdc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/mk.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Macedonian (https://www.transifex.com/oca/teams/23907/mk/)\n" +"Language: mk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Задача" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/mn.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/mn.po new file mode 100644 index 0000000..7ec06f3 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/mn.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Mongolian (https://www.transifex.com/oca/teams/23907/mn/)\n" +"Language: mn\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Даалгавар" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/nl.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/nl.po new file mode 100644 index 0000000..24c46f5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/nl.po @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# Erwin van der Ploeg , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2024-04-02 16:34+0000\n" +"Last-Translator: Thijs van Oers \n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "PR verplichte statussen" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "PR url" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" +"Voeg de URI voor de PR toe voordat je de taak naar deze fase verplaatst." + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Project" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "Pull Request url" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Taak" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/nl_NL.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/nl_NL.po new file mode 100644 index 0000000..6e6f050 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/nl_NL.po @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 05:53+0000\n" +"PO-Revision-Date: 2017-06-17 05:53+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "PR Verplichte Fases" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "PR URI" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" +"Voeg de URI toe voor de 'pull request' voor de taak naar deze fase te " +"verplaatsen." + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Project" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "'Pull Request' URI's" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Taak" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pl.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pl.po new file mode 100644 index 0000000..60ae2f1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pl.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" +"%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" +"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Zadanie" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/project_task_pull_request.pot b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/project_task_pull_request.pot new file mode 100644 index 0000000..b4c420a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/project_task_pull_request.pot @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this " +"stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pt.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pt.po new file mode 100644 index 0000000..db03daf --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pt.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pt_BR.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pt_BR.po new file mode 100644 index 0000000..0c703bd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pt_BR.po @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2024-05-22 15:35+0000\n" +"Last-Translator: Rodrigo Macedo \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/" +"23907/pt_BR/)\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" +"X-Generator: Weblate 4.17\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "Estados Requeridos da PR" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "PR URI" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" +"Adicione o URI da solicitação pull antes de mover a tarefa para este estágio." + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "URIs de solicitação pull" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pt_PT.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pt_PT.po new file mode 100644 index 0000000..9643595 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/pt_PT.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/" +"teams/23907/pt_PT/)\n" +"Language: pt_PT\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Tarefa" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ro.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ro.po new file mode 100644 index 0000000..661d613 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/ro.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Sarcina" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/sl.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/sl.po new file mode 100644 index 0000000..1752d37 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/sl.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +# Matjaž Mozetič , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-02 01:51+0000\n" +"PO-Revision-Date: 2018-02-02 01:51+0000\n" +"Last-Translator: Matjaž Mozetič , 2018\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\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" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "PR zahtevana stanja" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "PR URI" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "Dodajte URI za PR pred premikom opravila v to stopnjo." + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "Pull Request URIs" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Opravilo" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/sv.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/sv.po new file mode 100644 index 0000000..116001e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/sv.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n" +"Language: sv\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Uppgift" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/tr.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/tr.po new file mode 100644 index 0000000..6fd0564 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/tr.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# Ivan BARAYEV , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\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_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "Proje" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Görev" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/uk.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/uk.po new file mode 100644 index 0000000..117cae9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/uk.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-23 02:44+0000\n" +"PO-Revision-Date: 2017-05-23 02:44+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Ukrainian (https://www.transifex.com/oca/teams/23907/uk/)\n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "Завдання" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/zh_CN.po b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/zh_CN.po new file mode 100644 index 0000000..5894fbc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/i18n/zh_CN.po @@ -0,0 +1,54 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-28 08:33+0000\n" +"PO-Revision-Date: 2017-04-28 08:33+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_project__pr_required_states +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_required_states +msgid "PR Required States" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model.fields,field_description:project_task_pull_request.field_project_task__pr_uri +msgid "PR URI" +msgstr "" + +#. module: project_task_pull_request +#. odoo-python +#: code:addons/project_task_pull_request/models/project_task.py:0 +#, python-format +msgid "" +"Please add the URI for the pull request before moving the task to this stage." +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_project +msgid "Project" +msgstr "项目" + +#. module: project_task_pull_request +#: model_terms:ir.ui.view,arch_db:project_task_pull_request.edit_project +msgid "Pull Request URIs" +msgstr "" + +#. module: project_task_pull_request +#: model:ir.model,name:project_task_pull_request.model_project_task +msgid "Task" +msgstr "任务" diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/models/__init__.py b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/models/__init__.py new file mode 100644 index 0000000..8882b5d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/models/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import project_task +from . import project_project diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/models/project_project.py b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/models/project_project.py new file mode 100644 index 0000000..3418431 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/models/project_project.py @@ -0,0 +1,17 @@ +# Copyright 2017 Specialty Medical Drugstore +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class Project(models.Model): + _inherit = "project.project" + _name = "project.project" + + pr_required_states = fields.Many2many( + "project.task.type", + "project_pr_required", + "project_id", + "state_id", + "PR Required States", + ) diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/models/project_task.py b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/models/project_task.py new file mode 100644 index 0000000..bba5223 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/models/project_task.py @@ -0,0 +1,25 @@ +# Copyright 2017 Specialty Medical Drugstore +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, exceptions, fields, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + pr_uri = fields.Char(string="PR URI", tracking=True) + + pr_required_states = fields.Many2many(related="project_id.pr_required_states") + + @api.constrains("pr_uri", "stage_id", "project_id") + def _check_pr_uri_required(self): + for task in self: + stages_pr_req = task.project_id.pr_required_states + is_stage_pr_req = task.stage_id in stages_pr_req + if not task.pr_uri and stages_pr_req and is_stage_pr_req: + raise exceptions.ValidationError( + _( + "Please add the URI for the pull request " + "before moving the task to this stage." + ) + ) diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..7b9b74b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/readme/CONTRIBUTORS.rst @@ -0,0 +1,10 @@ +* Kelly Lougheed +* Ruchir Shukla +* `Tecnativa `_: + + * Ernesto Tejeda + * Jairo Llopis +* Cetmix : + * Ivan Sokolov + * Vladimir Kalmykov + diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/readme/DESCRIPTION.rst new file mode 100644 index 0000000..fcfad48 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module extends the functionality of project to allow you to +add PR URIs to tasks and require PR URIs before tasks can be moved +to certain stages. diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/readme/USAGE.rst b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/readme/USAGE.rst new file mode 100644 index 0000000..a47081f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/readme/USAGE.rst @@ -0,0 +1,9 @@ +To use this module, you need to: + +#. Go to Project -> Configuration -> Project +#. Select a project and, under "Pull Request URIs", select the stages + where you would like a PR URI to be required +#. Go to Dashboard and select a project +#. Attempt to move one of the project's task without a PR URI into one of + the stages you selected to require a PR; you will receive a Validation Error +#. To add a PR URI to a task, click on the task and go to the "Extra Info" tag diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/static/description/icon.png b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/static/description/index.html b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/static/description/index.html new file mode 100644 index 0000000..6e1ac3c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/static/description/index.html @@ -0,0 +1,447 @@ + + + + + + +Project Task Pull Request + + + +
+

Project Task Pull Request

+ + +

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

+

This module extends the functionality of project to allow you to +add PR URIs to tasks and require PR URIs before tasks can be moved +to certain stages.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Project -> Configuration -> Project
  2. +
  3. Select a project and, under “Pull Request URIs”, select the stages +where you would like a PR URI to be required
  4. +
  5. Go to Dashboard and select a project
  6. +
  7. Attempt to move one of the project’s task without a PR URI into one of +the stages you selected to require a PR; you will receive a Validation Error
  8. +
  9. To add a PR URI to a task, click on the task and go to the “Extra Info” tag
  10. +
+
+
+

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

+
    +
  • SMDrugstore
  • +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/tests/__init__.py b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/tests/__init__.py new file mode 100644 index 0000000..4c4ae89 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_project_task_pull_request diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/tests/test_project_task_pull_request.py b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/tests/test_project_task_pull_request.py new file mode 100644 index 0000000..8938e38 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/tests/test_project_task_pull_request.py @@ -0,0 +1,76 @@ +# Copyright 2017 Specialty Medical Drugstore +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.exceptions import ValidationError +from odoo.tests.common import TransactionCase + + +class TestProjectTaskPullRequest(TransactionCase): + post_install = True + at_install = False + + def setUp(self): + super(TestProjectTaskPullRequest, self).setUp() + + project_obj = self.env["project.project"] + task_obj = self.env["project.task"] + self.new_stage = self.ref("project.project_stage_0") + self.inprogress_stage = self.ref("project.project_stage_1") + self.done_stage = self.ref("project.project_stage_2") + self.cancel_stage = self.ref("project.project_stage_3") + + self.project_1 = project_obj.create( + {"name": "Test Project 1", "pr_required_states": [(4, self.done_stage)]} + ) + self.project_2 = project_obj.create( + { + "name": "Test Project 2", + "pr_required_states": [ + (4, self.done_stage), + (4, self.inprogress_stage), + ], + } + ) + + self.task_1 = task_obj.create( + { + "name": "Test Task 1", + "project_id": self.project_1.id, + "pr_uri": False, + "stage_id": self.new_stage, + } + ) + self.task_2 = task_obj.create( + { + "name": "Test Task 2", + "project_id": self.project_2.id, + "pr_uri": False, + "stage_id": self.new_stage, + } + ) + self.task_3 = task_obj.create( + { + "name": "Test Task 3", + "project_id": self.project_2.id, + "pr_uri": "github.com", + "stage_id": self.new_stage, + } + ) + + def test_write_allowed_when_allowed(self): + self.task_1.write({"stage_id": self.inprogress_stage}) + self.task_1.invalidate_recordset() + self.assertEqual(self.inprogress_stage, self.task_1.stage_id.id) + + def test_write_not_allowed_without_pr(self): + with self.assertRaises(ValidationError): + self.task_1.write({"stage_id": self.done_stage}) + + def test_write_not_allowed_without_pr_multiple_stages(self): + with self.assertRaises(ValidationError): + self.task_2.write({"stage_id": self.inprogress_stage}) + + def test_write_allowed_with_pr(self): + self.task_3.write({"stage_id": self.done_stage}) + self.task_3.invalidate_recordset() + self.assertEqual(self.done_stage, self.task_3.stage_id.id) diff --git a/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/views/project_task_pull_request_view.xml b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/views/project_task_pull_request_view.xml new file mode 100644 index 0000000..53d3fdd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/project_task_pull_request/views/project_task_pull_request_view.xml @@ -0,0 +1,35 @@ + + + + + project.task.form.pr + project.task + + + + + + + + + + project.project.form + project.project + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_task_pull_request/pyproject.toml b/odoo-bringout-oca-project-project_task_pull_request/pyproject.toml new file mode 100644 index 0000000..e5fef58 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_pull_request" +version = "16.0.0" +description = "Project Task Pull Request - Adds a field for a PR URI to project tasks" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_pull_request"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/README.md b/odoo-bringout-oca-project-project_task_pull_request_state/README.md new file mode 100644 index 0000000..961e7c5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/README.md @@ -0,0 +1,46 @@ +# Project Task Pull Request State + +Odoo addon: project_task_pull_request_state + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_pull_request_state +``` + +## Dependencies + +This addon depends on: +- project_task_pull_request + +## Manifest Information + +- **Name**: Project Task Pull Request State +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_pull_request_state`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/ARCHITECTURE.md new file mode 100644 index 0000000..24bf9ce --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_pull_request_state Module - project_task_pull_request_state + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/CONFIGURATION.md new file mode 100644 index 0000000..4cf9240 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_pull_request_state. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/DEPENDENCIES.md new file mode 100644 index 0000000..eef86e1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project_task_pull_request](https://github.com/bringout/oca-workflow-process) diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/FAQ.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/FAQ.md new file mode 100644 index 0000000..4bb6833 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_pull_request_state or install in UI. diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/INSTALL.md new file mode 100644 index 0000000..a0313f1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_pull_request_state" +# or +uv pip install odoo-bringout-oca-project-project_task_pull_request_state" +``` diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/MODELS.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/MODELS.md new file mode 100644 index 0000000..f2db440 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in project_task_pull_request_state. + +```mermaid +classDiagram + class project_project + class project_task + class res_config_settings +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/OVERVIEW.md new file mode 100644 index 0000000..fe16e51 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_pull_request_state. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_pull_request_state +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/USAGE.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/USAGE.md new file mode 100644 index 0000000..12322ea --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_pull_request_state +``` diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_pull_request_state/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/README.rst b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/README.rst new file mode 100644 index 0000000..a940aa4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/README.rst @@ -0,0 +1,102 @@ +=============================== +Project Task Pull Request State +=============================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b3ba18e593d6f4444ddb25f21f6b30bf0f53768a0772531a20ce6a47595ada4d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_pull_request_state + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_pull_request_state + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends functionality of the project_task_pull_request module. It adds a +"State" field to Task alongside with PR URI field. + +Following pre-defined states are available: "Draft", "Open", "Merged", "Closed". You can +add or modify this list easily by overriding the "selection_pr_state" function in the +"project.task" model + +**Table of contents** + +.. contents:: + :local: + +Use Cases / Context +=================== + +This module is designed as a basis for further automation based on the pull +request state of the task. For example one can use webhooks to set PR state +in the task when it is updated in the GitHub. And use automated actions afterwards +to update task status, assign and activity or do any other related actions. + +Configuration +============= + +#. In General Settings -> Project -> Project Task Pull Request section select default PR + State for all tasks + +To define custom default PR state for particular project: + +#. Select project -> Open "Settings" -> Set "Default PR State" + +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 +~~~~~~~ + +* Cetmix + +Contributors +~~~~~~~~~~~~ + +* `Cetmix `__ + + * Ivan Sokolov + * Vladimir Kalmykov + +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. + +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/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/__init__.py b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/__init__.py new file mode 100644 index 0000000..26c59c0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/__init__.py @@ -0,0 +1,3 @@ +# Copyright Cetmix OU 2023 +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0). +from . import models diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/__manifest__.py b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/__manifest__.py new file mode 100644 index 0000000..4329914 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright Cetmix OU 2023 +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0). +{ + "name": "Project Task Pull Request State", + "summary": "Track Pull Request state in tasks", + "version": "16.0.1.0.0", + "category": "Project Management", + "website": "https://github.com/OCA/project", + "author": "Cetmix, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": [ + "project_task_pull_request", + ], + "data": [ + "views/project_task_view.xml", + "views/project_project_view.xml", + "views/res_config_settings_view.xml", + ], +} diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/i18n/bs.po b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/i18n/bs.po new file mode 100644 index 0000000..589fcc4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/i18n/bs.po @@ -0,0 +1,70 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request_state +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_pull_request_state +#: model:ir.model,name:project_task_pull_request_state.model_res_config_settings +msgid "Config Settings" +msgstr "Postavke" + +#. module: project_task_pull_request_state +#: model:ir.model.fields,field_description:project_task_pull_request_state.field_project_project__pr_state_default +#: model:ir.model.fields,field_description:project_task_pull_request_state.field_res_config_settings__pr_state_default +msgid "Default PR State" +msgstr "Default PR State" + +#. module: project_task_pull_request_state +#: model:ir.model.fields,help:project_task_pull_request_state.field_project_project__pr_state_default +#: model:ir.model.fields,help:project_task_pull_request_state.field_res_config_settings__pr_state_default +msgid "" +"Default PR state that will be set when PR URI is added to a task in this " +"project" +msgstr "" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.res_config_settings_view_form +msgid "" +"Default PR state. Used in case default PR state is not defined in project" +msgstr "" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.view_task_search_form +msgid "Has PR" +msgstr "Analiziraj" + +#. module: project_task_pull_request_state +#: model:ir.model.fields,field_description:project_task_pull_request_state.field_project_task__pr_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.view_task_search_form +msgid "PR State" +msgstr "PR State" + +#. module: project_task_pull_request_state +#: model:ir.model,name:project_task_pull_request_state.model_project_project +msgid "Project" +msgstr "Projekat" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.res_config_settings_view_form +msgid "Project Task Pull Request" +msgstr "Potvrdi" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.res_config_settings_view_form +msgid "Srttings" +msgstr "Učini" + +#. module: project_task_pull_request_state +#: model:ir.model,name:project_task_pull_request_state.model_project_task +msgid "Task" +msgstr "Zadatak" diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/i18n/it.po b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/i18n/it.po new file mode 100644 index 0000000..2dbbe3f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/i18n/it.po @@ -0,0 +1,77 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request_state +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-02-16 16:37+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 4.17\n" + +#. module: project_task_pull_request_state +#: model:ir.model,name:project_task_pull_request_state.model_res_config_settings +msgid "Config Settings" +msgstr "Impostazioni configurazione" + +#. module: project_task_pull_request_state +#: model:ir.model.fields,field_description:project_task_pull_request_state.field_project_project__pr_state_default +#: model:ir.model.fields,field_description:project_task_pull_request_state.field_res_config_settings__pr_state_default +msgid "Default PR State" +msgstr "Stato PR predefinito" + +#. module: project_task_pull_request_state +#: model:ir.model.fields,help:project_task_pull_request_state.field_project_project__pr_state_default +#: model:ir.model.fields,help:project_task_pull_request_state.field_res_config_settings__pr_state_default +msgid "" +"Default PR state that will be set when PR URI is added to a task in this " +"project" +msgstr "" +"Stato PR predefinito che verrà impostato quando l'URI del PR viene aggiunto " +"ad un lavoro in questo progetto" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.res_config_settings_view_form +msgid "" +"Default PR state. Used in case default PR state is not defined in project" +msgstr "" +"Stato predefinito PR. Utilizzato nel caso in cui lo stato PR predefinito non " +"è definito nel progetto" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.view_task_search_form +msgid "Has PR" +msgstr "Ha PR" + +#. module: project_task_pull_request_state +#: model:ir.model.fields,field_description:project_task_pull_request_state.field_project_task__pr_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.view_task_search_form +msgid "PR State" +msgstr "Stato PR" + +#. module: project_task_pull_request_state +#: model:ir.model,name:project_task_pull_request_state.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.res_config_settings_view_form +msgid "Project Task Pull Request" +msgstr "Richiesta modifica lavoro progetto" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.res_config_settings_view_form +msgid "Srttings" +msgstr "Impostazioni" + +#. module: project_task_pull_request_state +#: model:ir.model,name:project_task_pull_request_state.model_project_task +msgid "Task" +msgstr "Lavoro" diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/i18n/project_task_pull_request_state.pot b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/i18n/project_task_pull_request_state.pot new file mode 100644 index 0000000..c0c62db --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/i18n/project_task_pull_request_state.pot @@ -0,0 +1,70 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_pull_request_state +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_pull_request_state +#: model:ir.model,name:project_task_pull_request_state.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: project_task_pull_request_state +#: model:ir.model.fields,field_description:project_task_pull_request_state.field_project_project__pr_state_default +#: model:ir.model.fields,field_description:project_task_pull_request_state.field_res_config_settings__pr_state_default +msgid "Default PR State" +msgstr "" + +#. module: project_task_pull_request_state +#: model:ir.model.fields,help:project_task_pull_request_state.field_project_project__pr_state_default +#: model:ir.model.fields,help:project_task_pull_request_state.field_res_config_settings__pr_state_default +msgid "" +"Default PR state that will be set when PR URI is added to a task in this " +"project" +msgstr "" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.res_config_settings_view_form +msgid "" +"Default PR state. Used in case default PR state is not defined in project" +msgstr "" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.view_task_search_form +msgid "Has PR" +msgstr "" + +#. module: project_task_pull_request_state +#: model:ir.model.fields,field_description:project_task_pull_request_state.field_project_task__pr_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.view_task_search_form +msgid "PR State" +msgstr "" + +#. module: project_task_pull_request_state +#: model:ir.model,name:project_task_pull_request_state.model_project_project +msgid "Project" +msgstr "" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.res_config_settings_view_form +msgid "Project Task Pull Request" +msgstr "" + +#. module: project_task_pull_request_state +#: model_terms:ir.ui.view,arch_db:project_task_pull_request_state.res_config_settings_view_form +msgid "Srttings" +msgstr "" + +#. module: project_task_pull_request_state +#: model:ir.model,name:project_task_pull_request_state.model_project_task +msgid "Task" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/__init__.py b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/__init__.py new file mode 100644 index 0000000..fcf8c4e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/__init__.py @@ -0,0 +1,3 @@ +from . import project_task +from . import project_project +from . import res_config_settings diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/project_project.py b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/project_project.py new file mode 100644 index 0000000..e849705 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/project_project.py @@ -0,0 +1,14 @@ +# Copyright Cetmix OU 2023 +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0). +from odoo import fields, models + + +class Project(models.Model): + _inherit = "project.project" + + pr_state_default = fields.Selection( + selection=lambda self: self.env["project.task"].selection_pr_state(), + string="Default PR State", + help="Default PR state that will be set when PR URI " + "is added to a task in this project", + ) diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/project_task.py b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/project_task.py new file mode 100644 index 0000000..7b8e2b6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/project_task.py @@ -0,0 +1,41 @@ +# Copyright Cetmix OU 2023 +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0). +from odoo import api, fields, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + pr_state = fields.Selection( + selection=lambda self: self.selection_pr_state(), + tracking=True, + copy=False, + string="PR State", + compute="_compute_pr_state", + precompute=True, + store=True, + readonly=False, + ) + + def selection_pr_state(self): + """Function to select the state of the pull request""" + return [ + ("open", "Open"), + ("draft", "Draft"), + ("merged", "Merged"), + ("closed", "Closed"), + ] + + @api.depends("pr_uri") + def _compute_pr_state(self): + ICPSudo = self.env["ir.config_parameter"].sudo() + pr_state_default = ICPSudo.get_param( + "project_task_pull_request_state.pr_state_default" + ) + for task in self: + if not task.pr_uri: + task.pr_state = False + elif task.project_id and task.project_id.pr_state_default: + task.pr_state = task.project_id.pr_state_default + else: + task.pr_state = pr_state_default or False diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/res_config_settings.py b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/res_config_settings.py new file mode 100644 index 0000000..2c01439 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/models/res_config_settings.py @@ -0,0 +1,15 @@ +# Copyright Cetmix OU 2023 +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0). +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + pr_state_default = fields.Selection( + selection=lambda self: self.env["project.task"].selection_pr_state(), + string="Default PR State", + config_parameter="project_task_pull_request_state.pr_state_default", + help="Default PR state that will be set when " + "PR URI is added to a task in this project", + ) diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/CONFIGURE.rst new file mode 100644 index 0000000..7ac2d35 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/CONFIGURE.rst @@ -0,0 +1,6 @@ +#. In General Settings -> Project -> Project Task Pull Request section select default PR + State for all tasks + +To define custom default PR state for particular project: + +#. Select project -> Open "Settings" -> Set "Default PR State" diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/CONTEXT.rst b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/CONTEXT.rst new file mode 100644 index 0000000..382cfb7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/CONTEXT.rst @@ -0,0 +1,4 @@ +This module is designed as a basis for further automation based on the pull +request state of the task. For example one can use webhooks to set PR state +in the task when it is updated in the GitHub. And use automated actions afterwards +to update task status, assign and activity or do any other related actions. diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..7c03b7e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Cetmix `__ + + * Ivan Sokolov + * Vladimir Kalmykov diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/DESCRIPTION.rst new file mode 100644 index 0000000..0df6d8d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/readme/DESCRIPTION.rst @@ -0,0 +1,6 @@ +This module extends functionality of the project_task_pull_request module. It adds a +"State" field to Task alongside with PR URI field. + +Following pre-defined states are available: "Draft", "Open", "Merged", "Closed". You can +add or modify this list easily by overriding the "selection_pr_state" function in the +"project.task" model diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/static/description/icon.png b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/static/description/index.html b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/static/description/index.html new file mode 100644 index 0000000..263f4f7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/static/description/index.html @@ -0,0 +1,448 @@ + + + + + +Project Task Pull Request State + + + +
+

Project Task Pull Request State

+ + +

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

+

This module extends functionality of the project_task_pull_request module. It adds a +“State” field to Task alongside with PR URI field.

+

Following pre-defined states are available: “Draft”, “Open”, “Merged”, “Closed”. You can +add or modify this list easily by overriding the “selection_pr_state” function in the +“project.task” model

+

Table of contents

+ +
+

Use Cases / Context

+

This module is designed as a basis for further automation based on the pull +request state of the task. For example one can use webhooks to set PR state +in the task when it is updated in the GitHub. And use automated actions afterwards +to update task status, assign and activity or do any other related actions.

+
+
+

Configuration

+
    +
  1. In General Settings -> Project -> Project Task Pull Request section select default PR +State for all tasks
  2. +
+

To define custom default PR state for particular project:

+
    +
  1. Select project -> Open “Settings” -> Set “Default PR State”
  2. +
+
+
+

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

+
    +
  • Cetmix
  • +
+
+
+

Contributors

+
    +
  • Cetmix
      +
    • Ivan Sokolov
    • +
    • Vladimir Kalmykov
    • +
    +
  • +
+
+
+

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.

+

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/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/tests/__init__.py b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/tests/__init__.py new file mode 100644 index 0000000..c9a88e3 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/tests/__init__.py @@ -0,0 +1,3 @@ +# Copyright Cetmix OU 2023 +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0). +from . import test_project_task_pull_request_state diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/tests/test_project_task_pull_request_state.py b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/tests/test_project_task_pull_request_state.py new file mode 100644 index 0000000..54627c8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/tests/test_project_task_pull_request_state.py @@ -0,0 +1,177 @@ +# Copyright Cetmix OU 2023 +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0). +from odoo.tests.common import TransactionCase + + +class TestPullRequestState(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls.Project = cls.env["project.project"] + cls.Task = cls.env["project.task"] + cls.Stage = cls.env["project.task.type"] + + cls.stage_draft = cls.Stage.create({"name": "Draft"}) + cls.stage_progress = cls.Stage.create({"name": "Progress"}) + + # Used to set res config settings + cls.res_config = cls.env["res.config.settings"] + + cls.project_1 = cls.Project.create( + { + "name": "Test Project 1", + "type_ids": [(4, cls.stage_draft.id), (4, cls.stage_progress.id)], + "pr_state_default": "draft", + } + ) + cls.project_2 = cls.Project.create( + { + "name": "Test Project 2", + "type_ids": [(4, cls.stage_draft.id), (4, cls.stage_progress.id)], + "pr_state_default": "open", + } + ) + cls.project_3 = cls.Project.create( + { + "name": "Test Project 3", + "type_ids": [(4, cls.stage_draft.id), (4, cls.stage_progress.id)], + } + ) + cls.task_1 = cls.Task.create( + { + "name": "Test Task for project 1", + "project_id": cls.project_1.id, + } + ) + cls.task_2 = cls.Task.create( + { + "name": "Test Task for project 2", + "project_id": cls.project_2.id, + } + ) + cls.task_3 = cls.Task.create( + { + "name": "Test Task without project", + } + ) + + def _set_default_pr_state(self, state): + """Set the default pull request state. + + :param state(str): The default state for pull requests. + + :return: The result of executing the record creation operation. + """ + return self.res_config.create({"pr_state_default": state}).execute() + + def test_pull_request_state_set_default(self): + """Set default PR state from project when PR URI is added to task""" + + # Set default PR state + self._set_default_pr_state("closed") + + # Set to several existing tasks at once + tasks = self.Task.browse([self.task_1.id, self.task_2.id, self.task_3.id]) + tasks.write({"pr_uri": "https://@my.pr.uri/pr"}) + + self.assertEqual(self.task_1.pr_state, "draft", "PR state must be 'draft'") + self.assertEqual(self.task_2.pr_state, "open", "PR state must be 'open'") + self.assertEqual(self.task_3.pr_state, "closed", "PR state must be 'closed'") + + # Change pr_state + tasks.write({"pr_state": "closed"}) + + self.assertEqual(self.task_1.pr_state, "closed", "PR state must be 'closed'") + self.assertEqual(self.task_2.pr_state, "closed", "PR state must be 'closed'") + self.assertEqual(self.task_3.pr_state, "closed", "PR state must be 'closed'") + + def test_pull_request_state_set_explicit(self): + """Set PR state from vals when PR URI is added to task""" + # Set to several existing tasks at once + tasks = self.Task.browse([self.task_1.id, self.task_2.id, self.task_3.id]) + tasks.write({"pr_uri": "https://@my.pr.uri/pr", "pr_state": "merged"}) + + self.assertEqual(self.task_1.pr_state, "merged", "PR state must be 'merged'") + self.assertEqual(self.task_2.pr_state, "merged", "PR state must be 'merged'") + self.assertEqual(self.task_3.pr_state, "merged", "PR state must be 'merged'") + + def test_create_task_with_uri(self): + """Add PR URI when task created""" + task_with_uri = self.Task.create( + { + "name": "Test Task with URI", + "project_id": self.project_2.id, + "pr_uri": "https://@my.pr.uri/pr", + } + ) + self.assertEqual(task_with_uri.pr_state, "open", "PR state must be 'open'") + + def test_multi_create(self): + """Create several tasks at the one time""" + self._set_default_pr_state("closed") + test_tasks_data = [ + { + "name": "Test Task 1", + "project_id": self.project_1.id, + "pr_uri": "https://@my.pr.uri/pr", + }, + { + "name": "Test Task 2", + "project_id": self.project_2.id, + "pr_uri": "https://@my.pr.uri/pr", + }, + { + "name": "Test Task 3", + "project_id": self.project_3.id, + "pr_uri": "https://@my.pr.uri/pr", + }, + ] + test_tasks = self.Task.create(test_tasks_data) + + self.assertEqual(test_tasks[0].pr_state, "draft", "PR state must be 'draft'") + self.assertEqual(test_tasks[1].pr_state, "open", "PR state must be 'open'") + self.assertEqual(test_tasks[2].pr_state, "closed", "PR state must be 'closed'") + + def test_set_pr_state(self): + """Test _set_pr_state function""" + self.task_3.write({"pr_uri": "https://@my.pr.uri/pr"}) + self.assertFalse(self.task_3.pr_state, "PR state must be False") + # Set system wide default PR state + self._set_default_pr_state("closed") + + self.task_3.write({"pr_uri": "https://@my.pr.uri/new_pr"}) + self.assertEqual(self.task_3.pr_state, "closed", "PR state must be 'closed'") + + self.task_1.write({"pr_uri": "https://@my.pr.uri/pr"}) + self.assertEqual(self.task_1.pr_state, "draft", "PR state must be 'draft'") + # Remove PR URI + self.task_1.write({"pr_uri": ""}) + self.assertFalse(self.task_1.pr_state, "PR state must be False") + + # Create task for project without pr_state_default + test_task = self.Task.create( + { + "name": "Test Task", + "project_id": self.project_3.id, + "pr_uri": "https://@my.pr.uri/pr", + } + ) + self.assertEqual(test_task.pr_state, "closed", "PR state must be 'closed'") + + def test_set_pr_state_default(self): + """Set values for the pr_state_default parameter""" + self.env["res.config.settings"].create( + { + "pr_state_default": "open", + } + ).execute() + + # Verify that the parameter has been set to the desired value + pr_state_default_param = self.env["ir.config_parameter"].get_param( + "project_task_pull_request_state.pr_state_default" + ) + self.assertEqual( + pr_state_default_param, "open", "PR state default parameter must be 'open'" + ) diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/views/project_project_view.xml b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/views/project_project_view.xml new file mode 100644 index 0000000..594849d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/views/project_project_view.xml @@ -0,0 +1,16 @@ + + + + + project.project.form + project.project + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/views/project_task_view.xml b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/views/project_task_view.xml new file mode 100644 index 0000000..3b3856b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/views/project_task_view.xml @@ -0,0 +1,45 @@ + + + + + project.project.form + project.task + + + + + + + + + + Project.task.pr.state.search + project.task + + + + + + + + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/views/res_config_settings_view.xml b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/views/res_config_settings_view.xml new file mode 100644 index 0000000..baf55f3 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/project_task_pull_request_state/views/res_config_settings_view.xml @@ -0,0 +1,31 @@ + + + res.config.settings.view.form.pr.state + res.config.settings + + + +

Project Task Pull Request

+
+
+
+
+
+
+
+
+
+
diff --git a/odoo-bringout-oca-project-project_task_pull_request_state/pyproject.toml b/odoo-bringout-oca-project-project_task_pull_request_state/pyproject.toml new file mode 100644 index 0000000..85e67fd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_pull_request_state/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_pull_request_state" +version = "16.0.0" +description = "Project Task Pull Request State - Track Pull Request state in tasks" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-project-project_task_pull_request>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_pull_request_state"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/README.md b/odoo-bringout-oca-project-project_task_recurring_activity/README.md new file mode 100644 index 0000000..5f9f503 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/README.md @@ -0,0 +1,46 @@ +# Project Task Recurring Activity + +Odoo addon: project_task_recurring_activity + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_recurring_activity +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Task Recurring Activity +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_recurring_activity`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/ARCHITECTURE.md new file mode 100644 index 0000000..9f11283 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_recurring_activity Module - project_task_recurring_activity + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/CONFIGURATION.md new file mode 100644 index 0000000..deacb35 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_recurring_activity. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/FAQ.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/FAQ.md new file mode 100644 index 0000000..a6e23e9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_recurring_activity or install in UI. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/INSTALL.md new file mode 100644 index 0000000..42b76ce --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_recurring_activity" +# or +uv pip install odoo-bringout-oca-project-project_task_recurring_activity" +``` diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/MODELS.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/MODELS.md new file mode 100644 index 0000000..e8a95da --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in project_task_recurring_activity. + +```mermaid +classDiagram + class recurring_activity + class project_task + class project_task_recurrence +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/OVERVIEW.md new file mode 100644 index 0000000..35399e2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_recurring_activity. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_recurring_activity +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/SECURITY.md new file mode 100644 index 0000000..215c854 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in project_task_recurring_activity. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../project_task_recurring_activity/security/ir.model.access.csv)** + - 1 model access rules + +## Record Rules + +Row-level security rules defined in: + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[ir.model.access.csv](../project_task_recurring_activity/security/ir.model.access.csv)** + - Model access permissions (CRUD rights) + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/USAGE.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/USAGE.md new file mode 100644 index 0000000..6016804 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_recurring_activity +``` diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_recurring_activity/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/README.rst b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/README.rst new file mode 100644 index 0000000..e02048a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/README.rst @@ -0,0 +1,101 @@ +=============================== +Project Task Recurring Activity +=============================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:e2aeb979b785a759d9358928d0bd8639c06511dc3a86447092ab50cc86709acd + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_recurring_activity + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_recurring_activity + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allow users to add activities to the recurring tasks and have them automatically duplicated within recurring tasks at set intervals. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +#.Enable recurring task in config settings + +Usage +===== + +Open recurring task. + +#. In tab "Recurrence", user can set the activites that should be created each time the task is duplicated. +#. For testing purposes, a button "Create next recurring task" is visible in developer mode to check how next task will be created. + +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 +~~~~~~~ + +* Cetmix + +Contributors +~~~~~~~~~~~~ + + * Cetmix + * Dessan Hemrayev + +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-dessanhemrayev| image:: https://github.com/dessanhemrayev.png?size=40px + :target: https://github.com/dessanhemrayev + :alt: dessanhemrayev +.. |maintainer-CetmixGitDrone| image:: https://github.com/CetmixGitDrone.png?size=40px + :target: https://github.com/CetmixGitDrone + :alt: CetmixGitDrone + +Current `maintainers `__: + +|maintainer-dessanhemrayev| |maintainer-CetmixGitDrone| + +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/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/__init__.py b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/__init__.py new file mode 100644 index 0000000..69f7bab --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/__manifest__.py b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/__manifest__.py new file mode 100644 index 0000000..af04a7e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/__manifest__.py @@ -0,0 +1,18 @@ +{ + "name": "Project Task Recurring Activity", + "summary": """Project Task Recurring Activity""", + "author": "Cetmix, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "category": "Project Management", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "depends": ["project"], + "data": [ + "security/ir.model.access.csv", + "views/recurring_activity.xml", + "views/project_task.xml", + "data/recurring_activity.xml", + ], + "application": False, + "maintainers": ["dessanhemrayev", "CetmixGitDrone"], +} diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/data/recurring_activity.xml b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/data/recurring_activity.xml new file mode 100644 index 0000000..51b61cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/data/recurring_activity.xml @@ -0,0 +1,15 @@ + + + + Project: Create Recurring Activities + + code + model._cron_create_activities() + days + -1 + + + diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/bs.po b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/bs.po new file mode 100644 index 0000000..9e74dec --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/bs.po @@ -0,0 +1,130 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_recurring_activity +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_recurring_activity +#: model_terms:ir.ui.view,arch_db:project_task_recurring_activity.view_recurring_activity_form +msgid "Activities" +msgstr "Aktivnosti" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__activity_type_id +msgid "Activity Type" +msgstr "Tip aktivnosti" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__user_id +msgid "Assigned to" +msgstr "Dodjeljeno" + +#. module: project_task_recurring_activity +#: model_terms:ir.ui.view,arch_db:project_task_recurring_activity.view_recurring_activity_form +msgid "Create Next Recurring Task" +msgstr "Zadaci u toku" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__custom_activity_ids +msgid "Custom Activity" +msgstr "Zahtev sa portala" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__days_after_task_creation_date +msgid "Days After Task Creation Date" +msgstr "Days After Zadatak Creation Datum" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__description +msgid "Description" +msgstr "Opis" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__id +msgid "ID" +msgstr "ID" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence__old_date_recurring_task +msgid "Old Date Recurring Task" +msgstr "Planiranje i budžet" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__project_task_id +msgid "Project Task" +msgstr "Projektni zadatak" + +#. module: project_task_recurring_activity +#: model:ir.actions.server,name:project_task_recurring_activity.ir_cron_recurring_activities_ir_actions_server +#: model:ir.cron,cron_name:project_task_recurring_activity.ir_cron_recurring_activities +msgid "Project: Create Recurring Activities" +msgstr "Projekat: Kreiraj Recurring Activities" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_recurring_activity +msgid "Recurring activity" +msgstr "Recurring activity" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__summary +msgid "Summary" +msgstr "Sažetak" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_project_task_recurrence +msgid "Task Recurrence" +msgstr "Zadatak Recurrence" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__recurring_activity_ids +msgid "activity" +msgstr "Zahtev za uslugom" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__next_recurrence_date +msgid "next_date" +msgstr "Planiranje bašte" diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/es.po b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/es.po new file mode 100644 index 0000000..65e58df --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/es.po @@ -0,0 +1,140 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_recurring_activity +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-03-24 23:53+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_task_recurring_activity +#: model_terms:ir.ui.view,arch_db:project_task_recurring_activity.view_recurring_activity_form +msgid "Activities" +msgstr "actividades" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__activity_type_id +msgid "Activity Type" +msgstr "Tipo de actividad" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__user_id +msgid "Assigned to" +msgstr "Asignado/a a" + +#. module: project_task_recurring_activity +#: model_terms:ir.ui.view,arch_db:project_task_recurring_activity.view_recurring_activity_form +msgid "Create Next Recurring Task" +msgstr "Crear la Siguiente Tarea Recurrente" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__custom_activity_ids +msgid "Custom Activity" +msgstr "Actividad personalizada" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__days_after_task_creation_date +msgid "Days After Task Creation Date" +msgstr "Días después de la fecha de creación de la tarea" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__description +msgid "Description" +msgstr "Descripción" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__display_name +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence__display_name +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__id +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence__id +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task____last_update +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence____last_update +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__write_uid +msgid "Last Updated by" +msgstr "Última Actualización realizada por" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__write_date +msgid "Last Updated on" +msgstr "Última Actualización el" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence__old_date_recurring_task +msgid "Old Date Recurring Task" +msgstr "Tarea recurrente con fecha anterior" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__project_task_id +msgid "Project Task" +msgstr "Tarea de proyecto" + +#. module: project_task_recurring_activity +#: model:ir.actions.server,name:project_task_recurring_activity.ir_cron_recurring_activities_ir_actions_server +#: model:ir.cron,cron_name:project_task_recurring_activity.ir_cron_recurring_activities +#: model:ir.cron,name:project_task_recurring_activity.ir_cron_recurring_activities +msgid "Project: Create Recurring Activities" +msgstr "Proyecto: Crear actividades recurrentes" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_recurring_activity +msgid "Recurring activity" +msgstr "Actividad recurrente" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__summary +msgid "Summary" +msgstr "Resumen" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_project_task_recurrence +msgid "Task Recurrence" +msgstr "Recurrencia de tareas" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__recurring_activity_ids +msgid "activity" +msgstr "Actividad" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__next_recurrence_date +msgid "next_date" +msgstr "next_date" diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/it.po b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/it.po new file mode 100644 index 0000000..3414e63 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/it.po @@ -0,0 +1,140 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_recurring_activity +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-21 11:11+0000\n" +"Last-Translator: Francesco Foresti \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 4.14.1\n" + +#. module: project_task_recurring_activity +#: model_terms:ir.ui.view,arch_db:project_task_recurring_activity.view_recurring_activity_form +msgid "Activities" +msgstr "Attività" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__activity_type_id +msgid "Activity Type" +msgstr "Tipo attività" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__user_id +msgid "Assigned to" +msgstr "Assegnato a" + +#. module: project_task_recurring_activity +#: model_terms:ir.ui.view,arch_db:project_task_recurring_activity.view_recurring_activity_form +msgid "Create Next Recurring Task" +msgstr "Crea prossimo lavoro ricorrente" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__custom_activity_ids +msgid "Custom Activity" +msgstr "Attività personalizzata" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__days_after_task_creation_date +msgid "Days After Task Creation Date" +msgstr "Giorni dopo la data creazione del lavoro" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__description +msgid "Description" +msgstr "Descrizione" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__display_name +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence__display_name +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__id +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence__id +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__id +msgid "ID" +msgstr "ID" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task____last_update +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence____last_update +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence__old_date_recurring_task +msgid "Old Date Recurring Task" +msgstr "Vecchia data lavoro ricorrente" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__project_task_id +msgid "Project Task" +msgstr "Lavoro del progetto" + +#. module: project_task_recurring_activity +#: model:ir.actions.server,name:project_task_recurring_activity.ir_cron_recurring_activities_ir_actions_server +#: model:ir.cron,cron_name:project_task_recurring_activity.ir_cron_recurring_activities +#: model:ir.cron,name:project_task_recurring_activity.ir_cron_recurring_activities +msgid "Project: Create Recurring Activities" +msgstr "Progetto: crea attività ricorrenti" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_recurring_activity +msgid "Recurring activity" +msgstr "Attività ricorrente" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__summary +msgid "Summary" +msgstr "Riepilogo" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_project_task +msgid "Task" +msgstr "Lavoro" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_project_task_recurrence +msgid "Task Recurrence" +msgstr "Ricorrenza lavoro" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__recurring_activity_ids +msgid "activity" +msgstr "attività" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__next_recurrence_date +msgid "next_date" +msgstr "next_date" diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/project_task_recurring_activity.pot b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/project_task_recurring_activity.pot new file mode 100644 index 0000000..a0abd7e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/i18n/project_task_recurring_activity.pot @@ -0,0 +1,130 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_recurring_activity +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_recurring_activity +#: model_terms:ir.ui.view,arch_db:project_task_recurring_activity.view_recurring_activity_form +msgid "Activities" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__activity_type_id +msgid "Activity Type" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__user_id +msgid "Assigned to" +msgstr "" + +#. module: project_task_recurring_activity +#: model_terms:ir.ui.view,arch_db:project_task_recurring_activity.view_recurring_activity_form +msgid "Create Next Recurring Task" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__create_uid +msgid "Created by" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__create_date +msgid "Created on" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__custom_activity_ids +msgid "Custom Activity" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__days_after_task_creation_date +msgid "Days After Task Creation Date" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__description +msgid "Description" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__display_name +msgid "Display Name" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__id +msgid "ID" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task_recurrence__old_date_recurring_task +msgid "Old Date Recurring Task" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__project_task_id +msgid "Project Task" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.actions.server,name:project_task_recurring_activity.ir_cron_recurring_activities_ir_actions_server +#: model:ir.cron,cron_name:project_task_recurring_activity.ir_cron_recurring_activities +msgid "Project: Create Recurring Activities" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_recurring_activity +msgid "Recurring activity" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__summary +msgid "Summary" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model,name:project_task_recurring_activity.model_project_task_recurrence +msgid "Task Recurrence" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_project_task__recurring_activity_ids +msgid "activity" +msgstr "" + +#. module: project_task_recurring_activity +#: model:ir.model.fields,field_description:project_task_recurring_activity.field_recurring_activity__next_recurrence_date +msgid "next_date" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/__init__.py b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/__init__.py new file mode 100644 index 0000000..a6614e2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/__init__.py @@ -0,0 +1,5 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import project_task +from . import recurring_activity +from . import project_task_recurrence diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/project_task.py b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/project_task.py new file mode 100644 index 0000000..f3950d6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/project_task.py @@ -0,0 +1,102 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +from datetime import timedelta + +from odoo import api, fields, models + +WEEKS = { + "first": 1, + "second": 2, + "third": 3, + "last": 4, +} + + +class ProjectTask(models.Model): + _inherit = "project.task" + + recurring_activity_ids = fields.One2many( + "recurring.activity", "project_task_id", string="activity", copy=True + ) + custom_activity_ids = fields.Many2many( + "recurring.activity", compute="_compute_activity_ids", store=True, copy=True + ) + + @api.depends("recurring_activity_ids") + def _compute_activity_ids(self): + for item in self: + item.custom_activity_ids = item.recurring_activity_ids.ids + + @api.model + def _get_recurring_fields(self): + return ["custom_activity_ids"] + super()._get_recurring_fields() + + def call_create_recurring_tasks(self): + self.recurrence_id.create_recurring_tasks() + + def _get_new_next_date_recurring_task(self): + date = self.recurrence_id.next_recurrence_date + delta = self.repeat_interval if self.repeat_unit == "day" else 1 + dates = self.recurrence_id._get_next_recurring_dates( + date + timedelta(days=delta), + self.repeat_interval, + self.repeat_unit, + self.repeat_type, + self.repeat_until, + self.repeat_on_month, + self.repeat_on_year, + self._get_weekdays(WEEKS.get(self.repeat_week)), + self.repeat_day, + self.repeat_week, + self.repeat_month, + count=1, + ) + return dates[0] + + def _get_recurrence_start_date(self): + if self.env.user.has_group("base.group_no_one"): + return self.recurrence_id.next_recurrence_date or fields.Datetime.now() + return super()._get_recurrence_start_date() + + @api.model + def _forming_activity_data(self, task, custom_activity_ids): + """Returns prepared data for creating records""" + result = [] + for item in custom_activity_ids: + result.append( + ( + 0, + 0, + { + "project_task_id": task.id, + "activity_type_id": item.activity_type_id.id, + "user_id": item.user_id.id, + "summary": item.summary, + "description": item.description, + "days_after_task_creation_date": item.days_after_task_creation_date, + }, + ) + ) + return result + + @api.model_create_multi + def create(self, vals_list): + results = super().create(vals_list) + for item in results: + item.create_date = item.recurrence_id.next_recurrence_date + if item.recurring_task and item.custom_activity_ids: + item.message_subscribe( + partner_ids=list( + set( + item.custom_activity_ids.mapped("user_id") + .mapped("partner_id") + .ids + ) + - set(item.message_follower_ids.mapped("partner_id").ids) + ) + ) + item.recurring_activity_ids = self._forming_activity_data( + item, item.custom_activity_ids + ) + return results diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/project_task_recurrence.py b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/project_task_recurrence.py new file mode 100644 index 0000000..136d3c9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/project_task_recurrence.py @@ -0,0 +1,31 @@ +from odoo import api, fields, models + + +class ProjectTaskRecurrence(models.Model): + _inherit = "project.task.recurrence" + + old_date_recurring_task = fields.Date( + default=fields.Date.today(), + ) + + @api.model + def _get_recurring_fields(self): + return ["custom_activity_ids"] + super()._get_recurring_fields() + + def create_recurring_tasks(self): + """Create recurring tasks""" + if not self.env.user.has_group("project.group_project_recurring_tasks"): + return + self._create_next_task() + for recurrence in self.filtered(lambda r: r.repeat_type == "after"): + recurrence.recurrence_left -= 1 + task = self.task_ids[-1] + new_date = task._get_new_next_date_recurring_task() + + self.write( + { + "old_date_recurring_task": self.next_recurrence_date, + "next_recurrence_date": new_date, + } + ) + task.write({"create_date": new_date}) diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/recurring_activity.py b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/recurring_activity.py new file mode 100644 index 0000000..7c72479 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/models/recurring_activity.py @@ -0,0 +1,118 @@ +from datetime import timedelta + +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class RecurringActivity(models.Model): + _name = "recurring.activity" + _description = "Recurring activity" + + project_task_id = fields.Many2one("project.task") + activity_type_id = fields.Many2one( + "mail.activity.type", string="Activity Type", ondelete="restrict" + ) + user_id = fields.Many2one( + "res.users", + string="Assigned to", + index=True, + required=True, + compute="_compute_on_activity_type_id", + store=True, + readonly=False, + ) + summary = fields.Char( + compute="_compute_on_activity_type_id", + store=True, + readonly=False, + ) + description = fields.Html( + sanitize_style=True, + compute="_compute_on_activity_type_id", + store=True, + readonly=False, + ) + days_after_task_creation_date = fields.Integer() + next_recurrence_date = fields.Date( + string="next_date", compute="_compute_next_recurrence_date", store=True + ) + + @api.depends("days_after_task_creation_date") + def _compute_next_recurrence_date(self): + for record in self: + record.next_recurrence_date = record._get_next_date() + + def _get_next_date(self): + return fields.Date.today() + timedelta( + days=self.days_after_task_creation_date + 1 + if self.days_after_task_creation_date == 0 + else self.days_after_task_creation_date + ) + + @api.model + def _cron_create_activities(self): + today = fields.Date.today() + recurring_activities = self.search([("next_recurrence_date", "<=", today)]) + for activity in recurring_activities: + activity.project_task_id.activity_schedule( + activity_type_id=activity.activity_type_id.id, + user_id=activity.user_id.id, + note=activity.description, + summary=activity.summary, + date_deadline=fields.Date.today(), + ) + activity.write({"next_recurrence_date": activity._get_next_date()}) + + @api.constrains("user_id") + def _check_user_id(self): + for record in self: + task = record.project_task_id + if not ( + record.user_id.partner_id.id + in task.message_follower_ids.mapped("partner_id").ids + ): + raise UserError( + _( + f"Assigned user {record.user_id.name} has no access" + " to the document and is not able to handle this activity." + ) + ) + + @api.depends("activity_type_id") + def _compute_on_activity_type_id(self): + for activity in self: + if (not activity.description) or activity.description == "


": + activity.description = activity.activity_type_id.default_note + if not activity.summary: + activity.summary = activity.activity_type_id.summary + + @api.model + def delta_time(self, old, new): + return (new - old).days + + @api.model_create_multi + def create(self, vals_list): + results = super().create(vals_list) + for item in results: + next_recurrence_date = ( + item.project_task_id.recurrence_id.next_recurrence_date + ) + item.write({"create_date": next_recurrence_date}) + task = item.project_task_id + old_date = item.project_task_id.recurrence_id.old_date_recurring_task + delfa = 0 + if len(item.project_task_id.recurrence_id.task_ids) == 1: + old_date = fields.Date.today() + delfa = self.delta_time(old_date, next_recurrence_date) + task.activity_schedule( + activity_type_id=item.activity_type_id.id, + user_id=item.user_id.id, + note=item.description, + summary=item.summary, + date_deadline=fields.Date.today() + + timedelta(days=item.days_after_task_creation_date) + if not self.env.user.has_group("base.group_no_one") + else (next_recurrence_date - timedelta(days=delfa)) + + timedelta(days=item.days_after_task_creation_date), + ) + return results diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/CONFIGURE.rst new file mode 100644 index 0000000..292fb2e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/CONFIGURE.rst @@ -0,0 +1 @@ +#.Enable recurring task in config settings diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..d855f27 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ + * Cetmix + * Dessan Hemrayev diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/DESCRIPTION.rst new file mode 100644 index 0000000..4ef4156 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allow users to add activities to the recurring tasks and have them automatically duplicated within recurring tasks at set intervals. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/USAGE.rst b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/USAGE.rst new file mode 100644 index 0000000..2ffb1c1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/readme/USAGE.rst @@ -0,0 +1,4 @@ +Open recurring task. + +#. In tab "Recurrence", user can set the activites that should be created each time the task is duplicated. +#. For testing purposes, a button "Create next recurring task" is visible in developer mode to check how next task will be created. diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/security/ir.model.access.csv b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/security/ir.model.access.csv new file mode 100644 index 0000000..1fbd336 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +project_recurring_activity,recurring.activity,model_recurring_activity,,1,1,1,1 diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/static/description/icon.png b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/static/description/index.html b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/static/description/index.html new file mode 100644 index 0000000..9f05372 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/static/description/index.html @@ -0,0 +1,442 @@ + + + + + +Project Task Recurring Activity + + + +
+

Project Task Recurring Activity

+ + +

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

+

This module allow users to add activities to the recurring tasks and have them automatically duplicated within recurring tasks at set intervals.

+

Table of contents

+ +
+

Configuration

+

#.Enable recurring task in config settings

+
+
+

Usage

+

Open recurring task.

+
    +
  1. In tab “Recurrence”, user can set the activites that should be created each time the task is duplicated.
  2. +
  3. For testing purposes, a button “Create next recurring task” is visible in developer mode to check how next task will be created.
  4. +
+
+
+

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

+
    +
  • Cetmix
  • +
+
+
+

Contributors

+
+ +
+
+
+

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 maintainers:

+

dessanhemrayev CetmixGitDrone

+

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/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/tests/__init__.py b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/tests/__init__.py new file mode 100644 index 0000000..e0890cf --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/tests/__init__.py @@ -0,0 +1 @@ +from . import test_project_recurrence diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/tests/test_project_recurrence.py b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/tests/test_project_recurrence.py new file mode 100644 index 0000000..6096986 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/tests/test_project_recurrence.py @@ -0,0 +1,319 @@ +from datetime import date, datetime, timedelta + +from freezegun import freeze_time + +from odoo import _, fields +from odoo.exceptions import UserError +from odoo.tests.common import Form, TransactionCase + + +class TestProjectrecurrence(TransactionCase): + @classmethod + def setUpClass(cls): + super(TestProjectrecurrence, cls).setUpClass() + + cls.env.user.groups_id += cls.env.ref("project.group_project_recurring_tasks") + cls.recurring_activity = cls.env["recurring.activity"] + cls.stage_a = cls.env["project.task.type"].create({"name": "a"}) + cls.stage_b = cls.env["project.task.type"].create({"name": "b"}) + + cls.demo_user = ( + cls.env["res.users"] + .with_context(no_reset_password=True) + .create( + { + "name": "demo", + "login": "demo_user", + "email": "dess@yourcompany.com", + "groups_id": [ + ( + 6, + 0, + [cls.env.ref("project.group_project_recurring_tasks").id], + ) + ], + } + ) + ) + cls.demo_user2 = ( + cls.env["res.users"] + .with_context(no_reset_password=True) + .create( + { + "name": "demo2", + "login": "demo_user2", + "email": "dess2@yourcompany.com", + "groups_id": [ + ( + 6, + 0, + [cls.env.ref("project.group_project_recurring_tasks").id], + ) + ], + } + ) + ) + cls.mail_activity_a = cls.env["mail.activity.type"].create( + { + "name": "activity_a", + "default_user_id": cls.demo_user.id, + "summary": "summary", + } + ) + cls.mail_activity_b = cls.env["mail.activity.type"].create( + { + "name": "activity_b", + "default_user_id": cls.demo_user.id, + } + ) + cls.project_recurring = ( + cls.env["project.project"] + .with_context(mail_create_nolog=True) + .create( + { + "name": "Recurring", + "allow_recurring_tasks": True, + "type_ids": [ + (4, cls.stage_a.id), + (4, cls.stage_b.id), + ], + } + ) + ) + + cls.project_recurring2 = ( + cls.env["project.project"] + .with_context(mail_create_nolog=True) + .create( + { + "name": "Recurring", + "allow_recurring_tasks": True, + "type_ids": [ + (4, cls.stage_a.id), + (4, cls.stage_b.id), + ], + } + ) + ) + + def test_check_activity_fields(self): + with freeze_time("2020-01-01"): + form = Form(self.env["project.task"]) + form.name = "test recurring task" + form.description = "my super recurring task" + form.project_id = self.project_recurring + form.date_deadline = datetime(2020, 2, 1) + form.recurring_task = True + form.repeat_interval = 1 + form.repeat_unit = "month" + form.repeat_type = "forever" + form.repeat_on_month = "date" + form.repeat_day = "15" + task = form.save() + with self.assertRaisesRegex( + UserError, + ( + _( + f"Assigned user {self.demo_user2.name} has no access" + " to the document and is not able to handle this activity." + ) + ), + ): + self.recurring_activity.create( + { + "project_task_id": task.id, + "activity_type_id": self.mail_activity_a.id, + "user_id": self.demo_user2.id, + "days_after_task_creation_date": 1, + }, + ) + + def test_recurrence_cron_repeat_forever(self): + domain = [("project_id", "=", self.project_recurring.id)] + with freeze_time("2020-01-01"): + form = Form(self.env["project.task"]) + form.name = "test recurring task" + form.description = "my super recurring task" + form.project_id = self.project_recurring + form.date_deadline = datetime(2020, 2, 1) + + form.recurring_task = True + form.repeat_interval = 1 + form.repeat_unit = "month" + form.repeat_type = "forever" + form.repeat_on_month = "date" + form.repeat_day = "15" + task = form.save() + task.planned_hours = 2 + + self.assertEqual(len(task.recurring_activity_ids), 0, "Must be equal to 0") + self.assertEqual(len(task.activity_ids), 0, "Must be equal to 0") + task.message_subscribe(partner_ids=[self.demo_user.partner_id.id]) + task.write( + { + "recurring_activity_ids": [ + ( + 0, + 0, + { + "activity_type_id": self.mail_activity_a.id, + "days_after_task_creation_date": 0, + "user_id": self.demo_user.id, + "summary": "summary", + "description": "description", + }, + ) + ] + } + ) + self.assertEqual(len(task.activity_ids), 1, "Must be equal to 1") + self.assertEqual( + task.activity_ids.summary, "summary", "Must be equal to 'summary'" + ) + self.assertEqual(task.recurrence_id.next_recurrence_date, date(2020, 1, 15)) + self.assertEqual( + self.env["project.task"].search_count(domain), 1, "Must be equal to 1" + ) + self.env["project.task.recurrence"]._cron_create_recurring_tasks() + self.assertEqual( + self.env["project.task"].search_count(domain), + 1, + "no extra task should be created", + ) + + with freeze_time("2020-01-15"): + self.assertEqual( + self.env["project.task"].search_count(domain), 1, "Must be equal to 1" + ) + self.env["project.task.recurrence"]._cron_create_recurring_tasks() + self.assertEqual( + self.env["project.task"].search_count(domain), 2, "Must be equal to 2" + ) + + with freeze_time("2020-02-15"): + self.env["project.task.recurrence"]._cron_create_recurring_tasks() + self.assertEqual( + self.env["project.task"].search_count(domain), 3, "Must be equal to 3" + ) + + with freeze_time("2020-02-16"): + self.env["project.task.recurrence"]._cron_create_recurring_tasks() + self.assertEqual( + self.env["project.task"].search_count(domain), 3, "Must be equal to 3" + ) + + with freeze_time("2020-02-17"): + self.env["project.task.recurrence"]._cron_create_recurring_tasks() + self.assertEqual( + self.env["project.task"].search_count(domain), 3, "Must be equal to 3" + ) + + with freeze_time("2020-03-15"): + self.env["project.task.recurrence"]._cron_create_recurring_tasks() + self.assertEqual( + self.env["project.task"].search_count(domain), 4, "Must be equal to 4" + ) + + tasks = self.env["project.task"].search(domain) + self.assertEqual(len(tasks), 4, "Must be equal to 4") + self.assertEqual(len(tasks.mapped("activity_ids")), 4, "Must be equal to 4") + self.assertEqual( + len(tasks.mapped("recurring_activity_ids")), 4, "Must be equal to 4" + ) + project_task = tasks[0] + activity = self.recurring_activity.search( + [("project_task_id", "=", project_task.id)] + ) + self.assertEqual(activity.user_id, self.mail_activity_a.default_user_id) + self.assertEqual(activity.summary, project_task.activity_summary) + activity.write( + { + "description": "


", + "summary": None, + "activity_type_id": self.mail_activity_b.id, + } + ) + activity._compute_on_activity_type_id() + self.assertEqual(activity.user_id, self.mail_activity_a.default_user_id) + self.assertEqual(activity.description, self.mail_activity_b.default_note) + self.assertEqual(activity.summary, self.mail_activity_b.summary) + + def test_create_recurring_tasks(self): + """Check custom method dev""" + domain = [("project_id", "=", self.project_recurring2.id)] + with freeze_time("2020-01-01"): + form = Form(self.env["project.task"]) + form.name = "test recurring task" + form.description = "my super recurring task" + form.project_id = self.project_recurring2 + form.date_deadline = datetime(2020, 2, 1) + + form.recurring_task = True + form.repeat_interval = 1 + form.repeat_unit = "month" + form.repeat_type = "forever" + form.repeat_on_month = "date" + form.repeat_day = "15" + task = form.save() + task.planned_hours = 2 + + task.message_subscribe(partner_ids=[self.demo_user.partner_id.id]) + task.write( + { + "recurring_activity_ids": [ + ( + 0, + 0, + { + "activity_type_id": self.mail_activity_a.id, + "days_after_task_creation_date": 0, + "user_id": self.demo_user.id, + "summary": "summary", + "description": "description", + }, + ) + ] + } + ) + with freeze_time("2020-01-15"): + self.assertEqual( + self.env["project.task"].search_count(domain), 1, "Must be equal to 1" + ) + task.recurrence_id.create_recurring_tasks() + self.assertEqual( + self.env["project.task"].search_count(domain), 2, "Must be equal to 2" + ) + self.assertEqual( + task.recurring_activity_ids[0]._get_next_date(), + fields.Date.today() + timedelta(days=1), + "Must be equal to `2020-01-16`", + ) + self.env["recurring.activity"]._cron_create_activities() + + with freeze_time("2020-01-16"): + activity = self.env["recurring.activity"].search( + [("project_task_id", "=", task.id)] + ) + self.assertEqual( + len(activity), + 1, + "Must be equal to 1", + ) + self.assertEqual( + activity.next_recurrence_date, + fields.Date.today(), + "Must be equal to `2020-01-16`", + ) + with freeze_time("2020-02-15"): + task.recurrence_id.create_recurring_tasks() + self.assertEqual( + self.env["project.task"].search_count(domain), 3, "Must be equal to 3" + ) + today = fields.Date.today() + self.assertEqual( + self.env["recurring.activity"].delta_time( + today, today + timedelta(days=1) + ), + 1, + "Must be equal to 1", + ) diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/views/project_task.xml b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/views/project_task.xml new file mode 100644 index 0000000..556a590 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/views/project_task.xml @@ -0,0 +1,35 @@ + + + project_task_recurring_activity_form + project.task + + + +
+
+
+ + + + + + + + + + + + + +
+
+ +
diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/views/recurring_activity.xml b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/views/recurring_activity.xml new file mode 100644 index 0000000..d755fd3 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/project_task_recurring_activity/views/recurring_activity.xml @@ -0,0 +1,27 @@ + + + recurring_activity_view_form + recurring.activity + +
+ + + + + + + + + + + + + + + + +
+
+
+ +
diff --git a/odoo-bringout-oca-project-project_task_recurring_activity/pyproject.toml b/odoo-bringout-oca-project-project_task_recurring_activity/pyproject.toml new file mode 100644 index 0000000..f81a6c0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_recurring_activity/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_recurring_activity" +version = "16.0.0" +description = "Project Task Recurring Activity - Project Task Recurring Activity" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_recurring_activity"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/README.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/README.md new file mode 100644 index 0000000..73c4263 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/README.md @@ -0,0 +1,46 @@ +# Project Task Stage Change Restriction + +Odoo addon: project_task_stage_change_restriction + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_stage_change_restriction +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Task Stage Change Restriction +- **Version**: 16.0.1.0.0 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_stage_change_restriction`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/ARCHITECTURE.md new file mode 100644 index 0000000..36ea7b5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_stage_change_restriction Module - project_task_stage_change_restriction + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/CONFIGURATION.md new file mode 100644 index 0000000..47dfba9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_stage_change_restriction. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/FAQ.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/FAQ.md new file mode 100644 index 0000000..6b71925 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_stage_change_restriction or install in UI. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/INSTALL.md new file mode 100644 index 0000000..56c2c53 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_stage_change_restriction" +# or +uv pip install odoo-bringout-oca-project-project_task_stage_change_restriction" +``` diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/MODELS.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/MODELS.md new file mode 100644 index 0000000..9676c16 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in project_task_stage_change_restriction. + +```mermaid +classDiagram + class project_task + class project_task_type +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/OVERVIEW.md new file mode 100644 index 0000000..d323fa6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_stage_change_restriction. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_stage_change_restriction +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/USAGE.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/USAGE.md new file mode 100644 index 0000000..50d6d45 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_stage_change_restriction +``` diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/README.rst b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/README.rst new file mode 100644 index 0000000..60bd9c9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/README.rst @@ -0,0 +1,123 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +===================================== +Project Task Stage Change Restriction +===================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:70428b68fa49a42f600173b5497b2a3cab2b78eca3ac7ce36d711878aa841f88 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-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/16.0/project_task_stage_change_restriction + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_stage_change_restriction + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows specifying which users or groups can move a task to a +specific stage. + +**Table of contents** + +.. contents:: + :local: + +Use Cases / Context +=================== + +There may be cases where you want to prevent certain users from moving a +task into specific stages. For example, developers can move tasks to the +"Review" stage, but only a project manager can move a task to the "Done" +or "Cancel" stages. + +Configuration +============= + +The **Task Stages** menu is only visible when Odoo is in developer mode. +Please turn on developer mode before proceeding. + +Go to "Project > Configuration > Task Stages" and select or create a new +task stage. Configure the following fields in the "Stage Change +Restriction" group: + +- **Assigned Only** + If enabled, only users assigned to the task can move it into this + stage. +- **Project Manager** + If enabled, only the manager of the project this task belongs to can + move it. +- **Group Members** + Select groups whose members can move tasks into this stage. + +Please be advised, that selected conditions are evaluated using the "OR" +principle. So, a user should satisfy any of the selected conditions. + +NB: restrictions are not applied if a stage is being changed by a +superuser. + +Usage +===== + +| Try to move a task to a restricted stage. If your user doesn't satisfy + the stage-allowance conditions, the following access error will be + raised: +| "Sorry, you are not allowed to move the task '' into the + stage ''." + +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 +------- + +* Cetmix + +Contributors +------------ + +Cetmix Ivan Sokolov Andrei Loukachov + +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. + +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/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/__init__.py b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/__init__.py new file mode 100644 index 0000000..6f11353 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/__manifest__.py b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/__manifest__.py new file mode 100644 index 0000000..6bd0734 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Project Task Stage Change Restriction", + "summary": "Restrict project task stage", + "version": "16.0.1.0.0", + "category": "Project", + "author": "Odoo Community Association (OCA), Cetmix", + "license": "AGPL-3", + "website": "https://github.com/OCA/project", + "depends": ["project"], + "data": [ + "views/project_task_stage_views.xml", + ], + "demo": [ + "data/demo_project_task_stage.xml", + ], + "installable": True, + "application": False, +} diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/data/demo_project_task_stage.xml b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/data/demo_project_task_stage.xml new file mode 100644 index 0000000..5ccbe09 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/data/demo_project_task_stage.xml @@ -0,0 +1,53 @@ + + + + + Free + 5 + + + Assigned Only + 10 + 1 + + + Project Manager Only + 15 + 1 + + + Project Users Only + 20 + + + + + Restricted Demo Project + + + + + + Dev Task + + + + + + PM Task + + + + + diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/.empty b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/.empty new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/bs.po b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/bs.po new file mode 100644 index 0000000..bc177e5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/bs.po @@ -0,0 +1,119 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_stage_change_restriction +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_stage_change_restriction +#: model:ir.model.fields,field_description:project_task_stage_change_restriction.field_project_task_type__allow_assigned_only +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_assigned_only +msgid "Assigned Only" +msgstr "Assigned Only" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_assigned_only +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_free +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_group_only +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_pm_only +msgid "Blocked" +msgstr "Blokirano" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_free +msgid "Free" +msgstr "Slobodno" + +#. module: project_task_stage_change_restriction +#: model:ir.model.fields,field_description:project_task_stage_change_restriction.field_project_task_type__allow_group_ids +msgid "Group Members" +msgstr "Group Members" + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "If enabled, only the project manager can move tasks into this stage." +msgstr "If enabled, only the project manager can move tasks into this stage." + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "" +"If enabled, only users assigned to the task can move it into this stage." +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_assigned_only +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_free +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_group_only +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_pm_only +msgid "In Progress" +msgstr "U Toku" + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "Members of selected groups can move tasks into this stage." +msgstr "Members of selected groups can move tasks into this stage." + +#. module: project_task_stage_change_restriction +#: model:ir.model.fields,field_description:project_task_stage_change_restriction.field_project_task_type__allow_project_manager +msgid "Project Manager" +msgstr "Rukovodilac projekta" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_pm_only +msgid "Project Manager Only" +msgstr "Novi kalendar u CRM-u" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_group_only +msgid "Project Users Only" +msgstr "Brza navigacija" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_assigned_only +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_free +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_group_only +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_pm_only +msgid "Ready" +msgstr "Spremno" + +#. module: project_task_stage_change_restriction +#: model:project.project,name:project_task_stage_change_restriction.demo_project_restricted +msgid "Restricted Demo Project" +msgstr "Greška s klikom na dugme" + +#. module: project_task_stage_change_restriction +#. odoo-python +#: code:addons/project_task_stage_change_restriction/models/project_task.py:0 +#, python-format +msgid "" +"Sorry, you are not allowed to move the task '%(task)s' into the stage " +"'%(stage)s'." +msgstr "" + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "Stage Change Restriction" +msgstr "Stage Change Restriction" + +#. module: project_task_stage_change_restriction +#: model:ir.model,name:project_task_stage_change_restriction.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_stage_change_restriction +#: model:ir.model,name:project_task_stage_change_restriction.model_project_task_type +msgid "Task Stage" +msgstr "Faza zadatka" + +#. module: project_task_stage_change_restriction +#: model:project.project,label_tasks:project_task_stage_change_restriction.demo_project_restricted +msgid "Tasks" +msgstr "Zadaci" diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/it.po b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/it.po new file mode 100644 index 0000000..35f219d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/it.po @@ -0,0 +1,129 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_stage_change_restriction +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-07-28 09:25+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_task_stage_change_restriction +#: model:ir.model.fields,field_description:project_task_stage_change_restriction.field_project_task_type__allow_assigned_only +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_assigned_only +msgid "Assigned Only" +msgstr "Solo assegnati" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_assigned_only +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_free +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_group_only +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_pm_only +msgid "Blocked" +msgstr "Bloccato" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_free +msgid "Free" +msgstr "Libero" + +#. module: project_task_stage_change_restriction +#: model:ir.model.fields,field_description:project_task_stage_change_restriction.field_project_task_type__allow_group_ids +msgid "Group Members" +msgstr "Membri del gruppo" + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "If enabled, only the project manager can move tasks into this stage." +msgstr "" +"Se abilitata, solo il responsabile del progetto può spostare i lavori tra le " +"fasi." + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "" +"If enabled, only users assigned to the task can move it into this stage." +msgstr "" +"Se abilitata, solo gli utenti assegnati al lavoro possono spostarlo in " +"questa fase." + +#. module: project_task_stage_change_restriction +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_assigned_only +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_free +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_group_only +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_pm_only +msgid "In Progress" +msgstr "In lavoro" + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "Members of selected groups can move tasks into this stage." +msgstr "" +"I membri dei gruppi selezionati possono spostare i lavori in questa fase." + +#. module: project_task_stage_change_restriction +#: model:ir.model.fields,field_description:project_task_stage_change_restriction.field_project_task_type__allow_project_manager +msgid "Project Manager" +msgstr "Responsabile progetto" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_pm_only +msgid "Project Manager Only" +msgstr "Solo responsabile progetto" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_group_only +msgid "Project Users Only" +msgstr "Solo utenti progetto" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_assigned_only +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_free +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_group_only +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_pm_only +msgid "Ready" +msgstr "Pronto" + +#. module: project_task_stage_change_restriction +#: model:project.project,name:project_task_stage_change_restriction.demo_project_restricted +msgid "Restricted Demo Project" +msgstr "Progetto demo limitato" + +#. module: project_task_stage_change_restriction +#. odoo-python +#: code:addons/project_task_stage_change_restriction/models/project_task.py:0 +#, python-format +msgid "" +"Sorry, you are not allowed to move the task '%(task)s' into the stage " +"'%(stage)s'." +msgstr "" +"Non si è abilitati allo spostamento del lavoro '%(task)s' alla fase " +"'%(stage)s'." + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "Stage Change Restriction" +msgstr "Limitazione modifica fase" + +#. module: project_task_stage_change_restriction +#: model:ir.model,name:project_task_stage_change_restriction.model_project_task +msgid "Task" +msgstr "Lavoro" + +#. module: project_task_stage_change_restriction +#: model:ir.model,name:project_task_stage_change_restriction.model_project_task_type +msgid "Task Stage" +msgstr "Fase lavoro" + +#. module: project_task_stage_change_restriction +#: model:project.project,label_tasks:project_task_stage_change_restriction.demo_project_restricted +msgid "Tasks" +msgstr "Lavori" diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/project_task_stage_change_restriction.pot b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/project_task_stage_change_restriction.pot new file mode 100644 index 0000000..331197a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/i18n/project_task_stage_change_restriction.pot @@ -0,0 +1,119 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_stage_change_restriction +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_stage_change_restriction +#: model:ir.model.fields,field_description:project_task_stage_change_restriction.field_project_task_type__allow_assigned_only +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_assigned_only +msgid "Assigned Only" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_assigned_only +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_free +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_group_only +#: model:project.task.type,legend_blocked:project_task_stage_change_restriction.demo_stage_pm_only +msgid "Blocked" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_free +msgid "Free" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:ir.model.fields,field_description:project_task_stage_change_restriction.field_project_task_type__allow_group_ids +msgid "Group Members" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "If enabled, only the project manager can move tasks into this stage." +msgstr "" + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "" +"If enabled, only users assigned to the task can move it into this stage." +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_assigned_only +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_free +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_group_only +#: model:project.task.type,legend_normal:project_task_stage_change_restriction.demo_stage_pm_only +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "Members of selected groups can move tasks into this stage." +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:ir.model.fields,field_description:project_task_stage_change_restriction.field_project_task_type__allow_project_manager +msgid "Project Manager" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_pm_only +msgid "Project Manager Only" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,name:project_task_stage_change_restriction.demo_stage_group_only +msgid "Project Users Only" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_assigned_only +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_free +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_group_only +#: model:project.task.type,legend_done:project_task_stage_change_restriction.demo_stage_pm_only +msgid "Ready" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:project.project,name:project_task_stage_change_restriction.demo_project_restricted +msgid "Restricted Demo Project" +msgstr "" + +#. module: project_task_stage_change_restriction +#. odoo-python +#: code:addons/project_task_stage_change_restriction/models/project_task.py:0 +#, python-format +msgid "" +"Sorry, you are not allowed to move the task '%(task)s' into the stage " +"'%(stage)s'." +msgstr "" + +#. module: project_task_stage_change_restriction +#: model_terms:ir.ui.view,arch_db:project_task_stage_change_restriction.view_project_task_type_form_restriction +msgid "Stage Change Restriction" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:ir.model,name:project_task_stage_change_restriction.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:ir.model,name:project_task_stage_change_restriction.model_project_task_type +msgid "Task Stage" +msgstr "" + +#. module: project_task_stage_change_restriction +#: model:project.project,label_tasks:project_task_stage_change_restriction.demo_project_restricted +msgid "Tasks" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/models/__init__.py b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/models/__init__.py new file mode 100644 index 0000000..f4ceadc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/models/__init__.py @@ -0,0 +1,5 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import project_task_type +from . import project_task diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/models/project_task.py b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/models/project_task.py new file mode 100644 index 0000000..e467709 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/models/project_task.py @@ -0,0 +1,78 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, models +from odoo.exceptions import UserError + + +class ProjectTask(models.Model): + _inherit = "project.task" + + def _is_move_allowed(self, task, new_stage, user): + """Return True if **user** may move **task** into **new_stage** (OR-logic). + + OR-logic sequence: + 1. No restrictions on stage, or superuser → always True + 2. allow_assigned_only and user in task.user_ids + 3. allow_project_manager and user is project.manager_id + 4. allow_group_ids and user in allowed groups + """ + # unrestricted stage / super-user + if not new_stage or not new_stage._has_restrictions() or user._is_superuser(): + return True + + # Assigned Only + if new_stage.allow_assigned_only and user in task.user_ids: + return True + + # Project Manager: use the core alias `manager_id` + pm = getattr(task.project_id, "manager_id", task.project_id.user_id) + if new_stage.allow_project_manager and pm and user == pm: + return True + + # Group Members + if new_stage._user_in_allowed_group(user): + return True + + return False + + def _check_stage_restriction(self, vals): + """Raise UserError if current env-user is NOT allowed.""" + stage_id = vals.get("stage_id") + if not stage_id: + return True + + new_stage = self.env["project.task.type"].browse(stage_id) + if not new_stage: + return True + + for task in self: + if not self._is_move_allowed(task, new_stage, self.env.user): + raise UserError( + _( + "Sorry, you are not allowed to move the task " + "'%(task)s' into the stage '%(stage)s'." + ) + % {"task": task.display_name, "stage": new_stage.display_name} + ) + return True + + def write(self, vals): + """Override write() to enforce stage‐change restrictions.""" + # validate the user is allowed to move into a new stage + self._check_stage_restriction(vals) + return super().write(vals) + + @api.model_create_multi + def create(self, vals_list): + """Override create() to enforce stage restrictions on new tasks. + + :param vals_list: list of dicts of values for each record + :return: the newly created recordset + """ + recs = super().create(vals_list) + # validate once stage is definitely set + for rec in recs: + if rec.stage_id: + rec._check_stage_restriction({"stage_id": rec.stage_id.id}) + return recs diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/models/project_task_type.py b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/models/project_task_type.py new file mode 100644 index 0000000..5520b18 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/models/project_task_type.py @@ -0,0 +1,37 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProjectTaskType(models.Model): + _inherit = "project.task.type" + + allow_assigned_only = fields.Boolean(string="Assigned Only") + allow_project_manager = fields.Boolean(string="Project Manager") + allow_group_ids = fields.Many2many( + "res.groups", + "project_task_stage_allowed_group_rel", + "stage_id", + "group_id", + string="Group Members", + ) + + def _has_restrictions(self): + """Return *True* if **any** restriction flag / group is set.""" + self.ensure_one() + return bool( + self.allow_assigned_only + or self.allow_project_manager + or self.allow_group_ids + ) + + def _user_in_allowed_group(self, user): + """ + Return *True* when *user* belongs to ≥ 1 selected groups. + Empty group list → rule **not** applied. + """ + self.ensure_one() + if not self.allow_group_ids: + return False + return bool(self.allow_group_ids & user.groups_id) diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/CONFIGURE.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/CONFIGURE.md new file mode 100644 index 0000000..95301f9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/CONFIGURE.md @@ -0,0 +1,16 @@ +The **Task Stages** menu is only visible when Odoo is in developer mode. +Please turn on developer mode before proceeding. + +Go to "Project > Configuration > Task Stages" and select or create a new task stage. +Configure the following fields in the "Stage Change Restriction" group: + +- **Assigned Only** + If enabled, only users assigned to the task can move it into this stage. +- **Project Manager** + If enabled, only the manager of the project this task belongs to can move it. +- **Group Members** + Select groups whose members can move tasks into this stage. + +Please be advised, that selected conditions are evaluated using the "OR" principle. So, a user should satisfy any of the selected conditions. + +NB: restrictions are not applied if a stage is being changed by a superuser. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/CONTEXT.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/CONTEXT.md new file mode 100644 index 0000000..1bdfa51 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/CONTEXT.md @@ -0,0 +1 @@ +There may be cases where you want to prevent certain users from moving a task into specific stages. For example, developers can move tasks to the "Review" stage, but only a project manager can move a task to the "Done" or "Cancel" stages. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/CONTRIBUTORS.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/CONTRIBUTORS.md new file mode 100644 index 0000000..4c60608 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/CONTRIBUTORS.md @@ -0,0 +1,4 @@ +Cetmix + Ivan Sokolov + Andrei Loukachov + \ No newline at end of file diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/DESCRIPTION.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/DESCRIPTION.md new file mode 100644 index 0000000..95d4159 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/DESCRIPTION.md @@ -0,0 +1 @@ +This module allows specifying which users or groups can move a task to a specific stage. diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/USAGE.md b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/USAGE.md new file mode 100644 index 0000000..f3346f1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/USAGE.md @@ -0,0 +1,2 @@ +Try to move a task to a restricted stage. If your user doesn't satisfy the stage-allowance conditions, the following access error will be raised: +"Sorry, you are not allowed to move the task '' into the stage ''." diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/newsfragments/.gitkeep b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/readme/newsfragments/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/static/description/icon.png b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/static/description/icon.png new file mode 100644 index 0000000..1dcc49c Binary files /dev/null and b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/static/description/index.html b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/static/description/index.html new file mode 100644 index 0000000..f92d18a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/static/description/index.html @@ -0,0 +1,124 @@ +
+
+
+

Module name

+

This module was written to extend the functionality of ... to support ... and allow you to ...

+
+
+
+ +
+
+
+

Installation

+
+
+

To install this module, you need to: +

    +
  • ...
  • +
+

+
+
+
+ + + +
+
+
+
+ +
+
+
+

Configuration

+
+
+

To configure this module, you need to: +

    +
  • ...
  • +
+

+
+
+
+ + + +
+
+
+
+ +
+
+
+

Usage

+
+
+

To use this module, you need to: +

    +
  • ...
  • +
+

+

For further information, please visit: +

+

+
+
+
+ + + +
+
+
+
+ +
+
+
+

Known issues / Roadmap

+
+
+

+

    +
  • ...
  • +
+

+
+
+
+ + + +
+
+
+
+ +
+
+
+

Credits

+
+
+

Contributors

+ +
+
+

Maintainer

+

+ This module is maintained by the OCA.
+ 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.
+ To contribute to this module, please visit http://odoo-community.org.
+ +

+
+
+
diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/tests/__init__.py b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/tests/__init__.py new file mode 100644 index 0000000..b49560d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_stage_change_restriction diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/tests/test_stage_change_restriction.py b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/tests/test_stage_change_restriction.py new file mode 100644 index 0000000..884038a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/tests/test_stage_change_restriction.py @@ -0,0 +1,277 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import SUPERUSER_ID +from odoo.exceptions import UserError +from odoo.tests import common as tests_common + +from odoo.addons.base.tests.common import BaseCommon + + +@tests_common.tagged("-at_install", "post_install") +class TestStageChangeRestriction(BaseCommon): + """Validate stage-change & creation access rules for project tasks.""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + env = cls.env + + gp_user = env.ref("project.group_project_user") + gp_manager = env.ref("project.group_project_manager") + try: + cls.grp_sales_admin = env.ref("sale.group_sale_manager") + except ValueError: + cls.grp_sales_admin = env["res.groups"].create( + {"name": "Sales / Manager (Test)"} + ) + + def _mk_user(login, groups): + return ( + env["res.users"] + .with_user(SUPERUSER_ID) + .create( + { + "name": login.replace("_", " ").title(), + "login": login, + "groups_id": [(4, g.id) for g in groups], + } + ) + ) + + cls.user_dev = _mk_user("dev_user", [gp_user]) + cls.user_pm = _mk_user("pm_user", [gp_user, gp_manager]) + cls.user_sales = _mk_user("sales_user", [gp_user, cls.grp_sales_admin]) + + cls.project = ( + env["project.project"] + .with_user(SUPERUSER_ID) + .create( + { + "name": "Demo Project", + "user_id": cls.user_pm.id, + } + ) + ) + + Stage = env["project.task.type"].with_user(SUPERUSER_ID).create + cls.stage_free = Stage({"name": "Free"}) + cls.stage_assigned = Stage( + {"name": "Assigned Only", "allow_assigned_only": True} + ) + cls.stage_pm = Stage( + {"name": "Project Manager Only", "allow_project_manager": True} + ) + cls.stage_group = Stage( + { + "name": "Sales Only", + "allow_group_ids": [(6, 0, [cls.grp_sales_admin.id])], + } + ) + cls.stage_assigned_or_pm = Stage( + { + "name": "Assigned OR PM", + "allow_assigned_only": True, + "allow_project_manager": True, + } + ) + cls.stage_assigned_or_group = Stage( + { + "name": "Assigned OR Sales", + "allow_assigned_only": True, + "allow_group_ids": [(6, 0, [cls.grp_sales_admin.id])], + } + ) + cls.stage_pm_or_group = Stage( + { + "name": "PM OR Sales", + "allow_project_manager": True, + "allow_group_ids": [(6, 0, [cls.grp_sales_admin.id])], + } + ) + + cls.task_tpl = ( + env["project.task"] + .with_user(SUPERUSER_ID) + .create( + { + "name": "Template Task", + "project_id": cls.project.id, + "stage_id": cls.stage_free.id, + } + ) + ) + + def _clone_task(self, acting_user, *, assignees=None, stage=None): + """Copy template and return it **as** ``acting_user``. + + :param acting_user: user performing follow‑up actions + :param assignees: list/tuple of users assigned to the task + :param stage: optional initial stage + """ + vals = { + "user_ids": [(6, 0, [u.id for u in (assignees or [])])], + "project_id": self.project.id, + } + if stage: + vals["stage_id"] = stage.id + return self.task_tpl.copy(vals).with_user(acting_user) + + def _ok_move(self, task, user, stage): + """ + Assert that `user` is allowed to move `task` to `stage`. + + :raises AssertionError: if the stage was not applied + """ + task.with_user(user).write({"stage_id": stage.id}) + self.assertEqual(task.stage_id, stage) + + def _fail_move(self, task, user, stage): + """ + Assert that `user` is NOT allowed to move `task` to `stage`. + + :raises UserError: if the write does not fail as expected + """ + with self.assertRaises(UserError): + task.with_user(user).write({"stage_id": stage.id}) + + def _ok_create(self, creator, stage, *, assignees=None): + """ + Assert that `creator` may create a task in `stage` (with optional assignees). + + :returns: the newly created task record + :raises AssertionError: if the task is not in the expected stage + """ + rec = ( + self.env["project.task"] + .with_user(creator) + .create( + { + "name": "Task", + "project_id": self.project.id, + "stage_id": stage.id, + "user_ids": [(6, 0, [u.id for u in (assignees or [])])], + } + ) + ) + self.assertEqual(rec.stage_id, stage) + + def _fail_create(self, creator, stage, *, assignees=None): + """ + Assert that `creator` may NOT create a task in `stage`. + + :raises UserError: if the create does not fail as expected + """ + with self.assertRaises(UserError): + self.env["project.task"].with_user(creator).create( + { + "name": "Bad", + "project_id": self.project.id, + "stage_id": stage.id, + "user_ids": [(6, 0, [u.id for u in (assignees or [])])], + } + ) + + def test_move_free(self): + task = self._clone_task(self.user_dev) + for u in (self.user_dev, self.user_pm, self.user_sales): + self._ok_move(task, u, self.stage_free) + + def test_move_assigned_only(self): + task = self._clone_task(self.user_dev, assignees=[self.user_dev]) + self._ok_move(task, self.user_dev, self.stage_assigned) + self._fail_move(task, self.user_pm, self.stage_assigned) + self._fail_move(task, self.user_sales, self.stage_assigned) + + def test_move_pm_only(self): + task = self._clone_task(self.user_dev) + self._ok_move(task, self.user_pm, self.stage_pm) + self._fail_move(task, self.user_dev, self.stage_pm) + self._fail_move(task, self.user_sales, self.stage_pm) + + def test_move_group_only(self): + task = self._clone_task(self.user_dev) + self._ok_move(task, self.user_sales, self.stage_group) + self._fail_move(task, self.user_dev, self.stage_group) + self._fail_move(task, self.user_pm, self.stage_group) + + def test_move_assigned_or_pm(self): + task = self._clone_task(self.user_dev, assignees=[self.user_dev]) + self._ok_move(task, self.user_dev, self.stage_assigned_or_pm) + self._ok_move(task, self.user_pm, self.stage_assigned_or_pm) + self._fail_move(task, self.user_sales, self.stage_assigned_or_pm) + + def test_move_assigned_or_group(self): + task = self._clone_task(self.user_dev, assignees=[self.user_dev]) + self._ok_move(task, self.user_dev, self.stage_assigned_or_group) + self._ok_move(task, self.user_sales, self.stage_assigned_or_group) + self._fail_move(task, self.user_pm, self.stage_assigned_or_group) + + def test_move_pm_or_group(self): + task = self._clone_task(self.user_dev) + self._ok_move(task, self.user_pm, self.stage_pm_or_group) + self._ok_move(task, self.user_sales, self.stage_pm_or_group) + self._fail_move(task, self.user_dev, self.stage_pm_or_group) + + def test_superuser_bypass_move(self): + task = self._clone_task(self.user_dev) + task.with_user(SUPERUSER_ID).write({"stage_id": self.stage_pm.id}) + self.assertEqual(task.stage_id, self.stage_pm) + + def test_create_free(self): + for u in (self.user_dev, self.user_pm, self.user_sales): + self._ok_create(u, self.stage_free) + + def test_create_assigned_only(self): + self._ok_create(self.user_dev, self.stage_assigned, assignees=[self.user_dev]) + self._fail_create(self.user_pm, self.stage_assigned, assignees=[self.user_dev]) + self._fail_create( + self.user_sales, self.stage_assigned, assignees=[self.user_dev] + ) + + def test_create_pm_only(self): + self._ok_create(self.user_pm, self.stage_pm) + self._fail_create(self.user_dev, self.stage_pm) + self._fail_create(self.user_sales, self.stage_pm) + + def test_create_group_only(self): + self._ok_create(self.user_sales, self.stage_group) + self._fail_create(self.user_dev, self.stage_group) + self._fail_create(self.user_pm, self.stage_group) + + def test_create_assigned_or_pm(self): + self._ok_create( + self.user_dev, self.stage_assigned_or_pm, assignees=[self.user_dev] + ) + self._ok_create(self.user_pm, self.stage_assigned_or_pm) + self._fail_create( + self.user_sales, self.stage_assigned_or_pm, assignees=[self.user_dev] + ) + + def test_create_assigned_or_group(self): + self._ok_create( + self.user_dev, self.stage_assigned_or_group, assignees=[self.user_dev] + ) + self._ok_create(self.user_sales, self.stage_assigned_or_group) + self._fail_create( + self.user_pm, self.stage_assigned_or_group, assignees=[self.user_dev] + ) + + def test_create_pm_or_group(self): + self._ok_create(self.user_pm, self.stage_pm_or_group) + self._ok_create(self.user_sales, self.stage_pm_or_group) + self._fail_create(self.user_dev, self.stage_pm_or_group) + + def test_superuser_bypass_create(self): + rec = ( + self.env["project.task"] + .with_user(SUPERUSER_ID) + .create( + { + "name": "SU task", + "project_id": self.project.id, + "stage_id": self.stage_assigned.id, + } + ) + ) + self.assertEqual(rec.stage_id, self.stage_assigned) diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/views/project_task_stage_views.xml b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/views/project_task_stage_views.xml new file mode 100644 index 0000000..b06a449 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/project_task_stage_change_restriction/views/project_task_stage_views.xml @@ -0,0 +1,27 @@ + + + + project.task.type.form.restriction + project.task.type + + + + + + + + + + + + diff --git a/odoo-bringout-oca-project-project_task_stage_change_restriction/pyproject.toml b/odoo-bringout-oca-project-project_task_stage_change_restriction/pyproject.toml new file mode 100644 index 0000000..182879c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_change_restriction/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_stage_change_restriction" +version = "16.0.0" +description = "Project Task Stage Change Restriction - Restrict project task stage" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_stage_change_restriction"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/README.md b/odoo-bringout-oca-project-project_task_stage_mgmt/README.md new file mode 100644 index 0000000..21c5218 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/README.md @@ -0,0 +1,46 @@ +# Project Task Stage Management + +Odoo addon: project_task_stage_mgmt + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_stage_mgmt +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Task Stage Management +- **Version**: 16.0.1.0.0 +- **Category**: Project +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_stage_mgmt`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/ARCHITECTURE.md new file mode 100644 index 0000000..a822482 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_stage_mgmt Module - project_task_stage_mgmt + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/CONFIGURATION.md new file mode 100644 index 0000000..cb48c77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_stage_mgmt. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/FAQ.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/FAQ.md new file mode 100644 index 0000000..bed8074 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_stage_mgmt or install in UI. diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/INSTALL.md new file mode 100644 index 0000000..285dadd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_stage_mgmt" +# or +uv pip install odoo-bringout-oca-project-project_task_stage_mgmt" +``` diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/MODELS.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/MODELS.md new file mode 100644 index 0000000..4c831b9 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/MODELS.md @@ -0,0 +1,11 @@ +# Models + +Detected core models and extensions in project_task_stage_mgmt. + +```mermaid +classDiagram +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/OVERVIEW.md new file mode 100644 index 0000000..ee24ce3 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_stage_mgmt. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_stage_mgmt +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/USAGE.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/USAGE.md new file mode 100644 index 0000000..efa8979 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_stage_mgmt +``` diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/README.rst b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/README.rst new file mode 100644 index 0000000..8ff0d52 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/README.rst @@ -0,0 +1,85 @@ +============================= +Project Task Stage Management +============================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5e0425d86357e30a291544233f2c3d0cde3ff43d79528238e4f8f5eadfeb2b69 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_stage_mgmt + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_stage_mgmt + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Allows to assign and create task stages when creating a project. Stages are visible on project views. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* David Jimenez +* Nils Coenen + +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-DavidJForgeFlow| image:: https://github.com/DavidJForgeFlow.png?size=40px + :target: https://github.com/DavidJForgeFlow + :alt: DavidJForgeFlow + +Current `maintainer `__: + +|maintainer-DavidJForgeFlow| + +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/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/__init__.py b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/__manifest__.py b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/__manifest__.py new file mode 100644 index 0000000..65ea657 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2022 ForgeFlow S.L. +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +{ + "name": "Project Task Stage Management", + "version": "16.0.1.0.0", + "development_status": "Beta", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "summary": "Allows to assign and create task stages on project creation wizard", + "website": "https://github.com/OCA/project", + "category": "Project", + "depends": ["project"], + "data": [ + "views/project.xml", + ], + "license": "AGPL-3", + "installable": True, + "maintainers": ["DavidJForgeFlow"], +} diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/bs.po b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/bs.po new file mode 100644 index 0000000..cf4f7b0 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/bs.po @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_stage_mgmt +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_stage_mgmt +#: model_terms:ir.ui.view,arch_db:project_task_stage_mgmt.project_project_view_form_inherit_stages +#: model_terms:ir.ui.view,arch_db:project_task_stage_mgmt.project_project_view_form_simplified_stage +msgid "Task Stages" +msgstr "Faze zadatka" diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/it.po b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/it.po new file mode 100644 index 0000000..e13b0df --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/it.po @@ -0,0 +1,23 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_stage_mgmt +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-10 21:22+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 4.14.1\n" + +#. module: project_task_stage_mgmt +#: model_terms:ir.ui.view,arch_db:project_task_stage_mgmt.project_project_view_form_inherit_stages +#: model_terms:ir.ui.view,arch_db:project_task_stage_mgmt.project_project_view_form_simplified_stage +msgid "Task Stages" +msgstr "Fasi del compito" diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/project_task_stage_mgmt.pot b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/project_task_stage_mgmt.pot new file mode 100644 index 0000000..e61584b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/project_task_stage_mgmt.pot @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_stage_mgmt +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_stage_mgmt +#: model_terms:ir.ui.view,arch_db:project_task_stage_mgmt.project_project_view_form_inherit_stages +#: model_terms:ir.ui.view,arch_db:project_task_stage_mgmt.project_project_view_form_simplified_stage +msgid "Task Stages" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/pt_BR.po b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/pt_BR.po new file mode 100644 index 0000000..d1bb72a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/i18n/pt_BR.po @@ -0,0 +1,23 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_stage_mgmt +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-28 09:43+0000\n" +"Last-Translator: Adriano Prado \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" +"X-Generator: Weblate 4.17\n" + +#. module: project_task_stage_mgmt +#: model_terms:ir.ui.view,arch_db:project_task_stage_mgmt.project_project_view_form_inherit_stages +#: model_terms:ir.ui.view,arch_db:project_task_stage_mgmt.project_project_view_form_simplified_stage +msgid "Task Stages" +msgstr "Estágios da Tarefa" diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..54fd22a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* David Jimenez +* Nils Coenen diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/readme/DESCRIPTION.rst new file mode 100644 index 0000000..7c22435 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Allows to assign and create task stages when creating a project. Stages are visible on project views. diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/static/description/icon.png b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/static/description/index.html b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/static/description/index.html new file mode 100644 index 0000000..a8090a5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/static/description/index.html @@ -0,0 +1,424 @@ + + + + + + +Project Task Stage Management + + + +
+

Project Task Stage Management

+ + +

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

+

Allows to assign and create task stages when creating a project. Stages are visible on project views.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
+
+ +
+

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:

+

DavidJForgeFlow

+

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/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/views/project.xml b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/views/project.xml new file mode 100644 index 0000000..3da49d6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/project_task_stage_mgmt/views/project.xml @@ -0,0 +1,46 @@ + + + + project.project.view.form.simplified.stage + project.project + + + +
+
+
+
+
+ + + project.form.inherit.stages + project.project + + + + + + + + + + + + + + + + + + + +
diff --git a/odoo-bringout-oca-project-project_task_stage_mgmt/pyproject.toml b/odoo-bringout-oca-project-project_task_stage_mgmt/pyproject.toml new file mode 100644 index 0000000..8345e68 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_mgmt/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_stage_mgmt" +version = "16.0.0" +description = "Project Task Stage Management - Allows to assign and create task stages on project creation wizard" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_stage_mgmt"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_task_stage_state/README.md b/odoo-bringout-oca-project-project_task_stage_state/README.md new file mode 100644 index 0000000..6deb2e7 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/README.md @@ -0,0 +1,46 @@ +# Add State field to Project Stages + +Odoo addon: project_task_stage_state + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_task_stage_state +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Add State field to Project Stages +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_task_stage_state`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_task_stage_state/doc/ARCHITECTURE.md new file mode 100644 index 0000000..f30de5a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_task_stage_state Module - project_task_stage_state + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_task_stage_state/doc/CONFIGURATION.md new file mode 100644 index 0000000..f991346 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_task_stage_state. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_task_stage_state/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_task_stage_state/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/FAQ.md b/odoo-bringout-oca-project-project_task_stage_state/doc/FAQ.md new file mode 100644 index 0000000..7ff4019 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_task_stage_state or install in UI. diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/INSTALL.md b/odoo-bringout-oca-project-project_task_stage_state/doc/INSTALL.md new file mode 100644 index 0000000..fa81979 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_task_stage_state" +# or +uv pip install odoo-bringout-oca-project-project_task_stage_state" +``` diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/MODELS.md b/odoo-bringout-oca-project-project_task_stage_state/doc/MODELS.md new file mode 100644 index 0000000..8e3fc3c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in project_task_stage_state. + +```mermaid +classDiagram + class project_task + class project_task_type +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_task_stage_state/doc/OVERVIEW.md new file mode 100644 index 0000000..1c230a8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_task_stage_state. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_task_stage_state +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/REPORTS.md b/odoo-bringout-oca-project-project_task_stage_state/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/SECURITY.md b/odoo-bringout-oca-project-project_task_stage_state/doc/SECURITY.md new file mode 100644 index 0000000..f733db8 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in project_task_stage_state. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../project_task_stage_state/security/ir.model.access.csv)** + - 2 model access rules + +## Record Rules + +Row-level security rules defined in: + +```mermaid +graph TB + subgraph "Security Layers" + A[Users] --> B[Groups] + B --> C[Access Control Lists] + C --> D[Models] + B --> E[Record Rules] + E --> F[Individual Records] + end +``` + +Security files overview: +- **[ir.model.access.csv](../project_task_stage_state/security/ir.model.access.csv)** + - Model access permissions (CRUD rights) + +Notes +- Access Control Lists define which groups can access which models +- Record Rules provide row-level security (filter records by user/group) +- Security groups organize users and define permission sets +- All security is enforced at the ORM level by Odoo diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_task_stage_state/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/USAGE.md b/odoo-bringout-oca-project-project_task_stage_state/doc/USAGE.md new file mode 100644 index 0000000..a48b9dd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_task_stage_state +``` diff --git a/odoo-bringout-oca-project-project_task_stage_state/doc/WIZARDS.md b/odoo-bringout-oca-project-project_task_stage_state/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/README.rst b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/README.rst new file mode 100644 index 0000000..ba5bb6f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/README.rst @@ -0,0 +1,105 @@ +================================= +Add State field to Project Stages +================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:386bce3b883f9ab43f569dec37e2e1b0e4d4a7565b7fb3cc3f74df914ad7c72e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_task_stage_state + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_stage_state + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module restores the `state` fields to Project Stages, removed in Odoo 8.0. + +For some use cases it‘s necessary to be able to map the multiple Stages into +a few broad groups. + +For example, this can allow to define automated actions and business logic for +Tasks not yet “Started”, knowing that “Started” means different Stages in +different Projects. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +You can configure stages from Project -> Configuration -> Stages + +Usage +===== + +To use this module, you need to: + +#. Go to Project -> Configuration -> Stages and click on a stage +#. Select the state you would like to associate that stage with from the dropdown "State" menu +#. Save your changes +#. Go to Project -> Dashboard and click on a project +#. Click on task in the stage you just edited +#. Under the "Customer" field, you can see the "State" field for that task + +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 +~~~~~~~ + +* Daniel Reis + +Contributors +~~~~~~~~~~~~ + +- Daniel Reis +- Rodrigo Ferreira +- Anand Kansagra +- Saran Lim. +- Nattapol Sinsuphan +- Manuel Regidor + +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. + +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/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/__init__.py b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/__init__.py new file mode 100644 index 0000000..e87e85c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import models diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/__manifest__.py b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/__manifest__.py new file mode 100644 index 0000000..d599fcc --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2014 Daniel Reis +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "Add State field to Project Stages", + "version": "16.0.1.0.0", + "category": "Project Management", + "summary": "Restore State attribute removed from Project Stages in 8.0", + "author": "Daniel Reis, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "license": "AGPL-3", + "installable": True, + "depends": ["project"], + "data": ["security/ir.model.access.csv", "views/project_view.xml"], +} diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ar.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ar.po new file mode 100644 index 0000000..76be0e6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ar.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: project (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-31 18:04+0000\n" +"PO-Revision-Date: 2015-07-21 19:20+0000\n" +"Last-Translator: <>\n" +"Language-Team: Arabic (http://www.transifex.com/oca/OCA-project-8-0/language/" +"ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "مهمة" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/bg.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/bg.po new file mode 100644 index 0000000..fbe73ff --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/bg.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Bulgarian (https://www.transifex.com/oca/teams/23907/bg/)\n" +"Language: bg\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Готово" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/bs.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/bs.po new file mode 100644 index 0000000..165286c --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/bs.po @@ -0,0 +1,31 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_stage_state +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Status" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Faza zadatka" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ca.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ca.po new file mode 100644 index 0000000..aed4044 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ca.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2019-08-04 17:43+0000\n" +"Last-Translator: eduardgm \n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"Language: ca\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.7.1\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Cancel·lat" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Fet" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "En procés" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Nou" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Pendent" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Estat" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tasca" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Estat de la Tasca" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/de.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/de.po new file mode 100644 index 0000000..d768d57 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/de.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +# Niki Waibel , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-22 01:55+0000\n" +"PO-Revision-Date: 2017-12-22 01:55+0000\n" +"Last-Translator: Niki Waibel , 2017\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\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" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Storniert" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Erledigt" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "In Bearbeitung" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Neu" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "laufend" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Status" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Aufgabe" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Aufgabenphase" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/el.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/el.po new file mode 100644 index 0000000..6e7c11a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/el.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: project (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-31 18:04+0000\n" +"PO-Revision-Date: 2015-07-21 19:20+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Greek (http://www.transifex.com/oca/OCA-project-8-0/language/" +"el/)\n" +"Language: el\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Εργασία" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/el_GR.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/el_GR.po new file mode 100644 index 0000000..ff2f3e1 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/el_GR.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/" +"el_GR/)\n" +"Language: el_GR\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Ολοκληρωμένο" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es.po new file mode 100644 index 0000000..c955a0e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-22 01:55+0000\n" +"PO-Revision-Date: 2019-02-08 14:50+0000\n" +"Last-Translator: Marta Vázquez Rodríguez \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\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 3.4\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Cancelado" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Hecho" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "En progreso" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Nuevo" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Pendiente" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Estado" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Estado actual" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_AR.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_AR.po new file mode 100644 index 0000000..6300787 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_AR.po @@ -0,0 +1,68 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-04-01 03:48+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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.3.2\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Cancelado" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Hecho" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "En Progreso" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Nuevo" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Pendiente" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Estado" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Etapa de la Tarea" + +#~ msgid "Display Name" +#~ msgstr "Mostrar Nombre" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última Modificación el" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_CR.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_CR.po new file mode 100644 index 0000000..c4af4da --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_CR.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: project (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-31 18:04+0000\n" +"PO-Revision-Date: 2015-07-21 19:20+0000\n" +"Last-Translator: <>\n" +"Language-Team: Spanish (Costa Rica) (http://www.transifex.com/oca/OCA-" +"project-8-0/language/es_CR/)\n" +"Language: es_CR\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_MX.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_MX.po new file mode 100644 index 0000000..c1579a6 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_MX.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Hecho" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Pendiente" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_PA.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_PA.po new file mode 100644 index 0000000..ed723ff --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_PA.po @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es_PA\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_VE.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_VE.po new file mode 100644 index 0000000..ac78480 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/es_VE.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: project (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-31 18:04+0000\n" +"PO-Revision-Date: 2015-07-21 19:20+0000\n" +"Last-Translator: <>\n" +"Language-Team: Spanish (Venezuela) (http://www.transifex.com/oca/OCA-" +"project-8-0/language/es_VE/)\n" +"Language: es_VE\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/fi.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/fi.po new file mode 100644 index 0000000..4154a58 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/fi.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Peruutettu" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Valmis" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Odottaa" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tehtävä" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Tehtävän vaihe" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/fr.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/fr.po new file mode 100644 index 0000000..94d0d19 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/fr.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-22 01:55+0000\n" +"PO-Revision-Date: 2021-04-04 16:46+0000\n" +"Last-Translator: Yves Le Doeuff \n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\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 4.3.2\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Annulé" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Terminé" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "En cours" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Nouveau" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "En attente" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Etat" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tâche" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Étape de la tâche" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/fr_FR.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/fr_FR.po new file mode 100644 index 0000000..98ac155 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/fr_FR.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-04-11 16:46+0000\n" +"Last-Translator: Yves Le Doeuff \n" +"Language-Team: none\n" +"Language: fr_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 4.3.2\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Annulé" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Terminé" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "En cours" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Nouveau" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "En attente" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Etat" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tâche" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Étape de la tâche" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/gl.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/gl.po new file mode 100644 index 0000000..f375442 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/gl.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2019-02-08 14:50+0000\n" +"Last-Translator: Marta Vázquez Rodríguez \n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"Language: gl\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.4\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Cancelado" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Realizado" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "En progreso" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Novo" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Pendente" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Estado" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tarefa" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Estado tarea" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/hr.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/hr.po new file mode 100644 index 0000000..6e0ff6a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/hr.po @@ -0,0 +1,63 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-22 01:55+0000\n" +"PO-Revision-Date: 2017-12-22 01:55+0000\n" +"Last-Translator: Bole , 2017\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Otkazano" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Izvršeno" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "U tijeku" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Novo" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "U tijeku" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Status" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Etapa zadatka" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/hr_HR.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/hr_HR.po new file mode 100644 index 0000000..4d23e78 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/hr_HR.po @@ -0,0 +1,63 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-17 09:31+0000\n" +"PO-Revision-Date: 2017-03-17 09:31+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Zadatak" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/hu.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/hu.po new file mode 100644 index 0000000..a4e3774 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/hu.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n" +"Language: hu\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Kész" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Függőben lévő" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Feladat" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/it.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/it.po new file mode 100644 index 0000000..6ae2710 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/it.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2023-06-14 14:10+0000\n" +"Last-Translator: mymage \n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\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 4.17\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Annullato" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Completato" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "In corso" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Nuovo" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "In attesa" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Stato" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Lavoro" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Fase lavoro" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ja.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ja.po new file mode 100644 index 0000000..e3dc7d5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ja.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: project (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-31 18:04+0000\n" +"PO-Revision-Date: 2015-07-21 19:20+0000\n" +"Last-Translator: <>\n" +"Language-Team: Japanese (http://www.transifex.com/oca/OCA-project-8-0/" +"language/ja/)\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "タスク" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/lt.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/lt.po new file mode 100644 index 0000000..4e3819d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/lt.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: project (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-31 18:04+0000\n" +"PO-Revision-Date: 2015-07-21 19:20+0000\n" +"Last-Translator: <>\n" +"Language-Team: Lithuanian (http://www.transifex.com/oca/OCA-project-8-0/" +"language/lt/)\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Užduotis" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/lv.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/lv.po new file mode 100644 index 0000000..b33b794 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/lv.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Latvian (https://www.transifex.com/oca/teams/23907/lv/)\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Gaida izpildi" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Uzdevums" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/mk.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/mk.po new file mode 100644 index 0000000..110f90d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/mk.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: project (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-31 18:04+0000\n" +"PO-Revision-Date: 2015-07-21 19:20+0000\n" +"Last-Translator: <>\n" +"Language-Team: Macedonian (http://www.transifex.com/oca/OCA-project-8-0/" +"language/mk/)\n" +"Language: mk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Задача" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/mn.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/mn.po new file mode 100644 index 0000000..86e489b --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/mn.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: project (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-31 18:04+0000\n" +"PO-Revision-Date: 2015-07-21 19:20+0000\n" +"Last-Translator: <>\n" +"Language-Team: Mongolian (http://www.transifex.com/oca/OCA-project-8-0/" +"language/mn/)\n" +"Language: mn\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Даалгавар" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nb.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nb.po new file mode 100644 index 0000000..a02f970 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nb.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Norwegian Bokmål (https://www.transifex.com/oca/teams/23907/" +"nb/)\n" +"Language: nb\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Venter" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nb_NO.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nb_NO.po new file mode 100644 index 0000000..324a607 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nb_NO.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/" +"teams/23907/nb_NO/)\n" +"Language: nb_NO\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Ferdig" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nl.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nl.po new file mode 100644 index 0000000..02ae9ab --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nl.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Geannuleerd" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Gereed" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Wachtend" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Taak" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Taak fase" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nl_NL.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nl_NL.po new file mode 100644 index 0000000..3c85bcb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/nl_NL.po @@ -0,0 +1,63 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-22 01:55+0000\n" +"PO-Revision-Date: 2017-12-22 01:55+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Geannuleerd" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Voltooid" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "In behandeling" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Nieuw" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "In afwachting" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Status" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Taak" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Taakfase" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pl.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pl.po new file mode 100644 index 0000000..f8b7ceb --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pl.po @@ -0,0 +1,63 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" +"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" +"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Wykonano" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Zadanie" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/project_stage_state.pot b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/project_stage_state.pot new file mode 100644 index 0000000..029770d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/project_stage_state.pot @@ -0,0 +1,74 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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_stage_state +#: model:ir.model.fields.selection,name:project_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_stage_state +#: model:ir.model.fields,field_description:project_stage_state.field_project_task__display_name +#: model:ir.model.fields,field_description:project_stage_state.field_project_task_type__display_name +msgid "Display Name" +msgstr "" + +#. module: project_stage_state +#: model:ir.model.fields.selection,name:project_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_stage_state +#: model:ir.model.fields,field_description:project_stage_state.field_project_task__id +#: model:ir.model.fields,field_description:project_stage_state.field_project_task_type__id +msgid "ID" +msgstr "" + +#. module: project_stage_state +#: model:ir.model.fields.selection,name:project_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_stage_state +#: model:ir.model.fields,field_description:project_stage_state.field_project_task____last_update +#: model:ir.model.fields,field_description:project_stage_state.field_project_task_type____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_stage_state +#: model:ir.model.fields.selection,name:project_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_stage_state +#: model:ir.model.fields.selection,name:project_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_stage_state +#: model:ir.model.fields,field_description:project_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_stage_state +#: model:ir.model,name:project_stage_state.model_project_task +msgid "Task" +msgstr "" + +#. module: project_stage_state +#: model:ir.model,name:project_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/project_task_stage_state.pot b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/project_task_stage_state.pot new file mode 100644 index 0000000..138a53a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/project_task_stage_state.pot @@ -0,0 +1,31 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_task_stage_state +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pt.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pt.po new file mode 100644 index 0000000..025a23f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pt.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Concluído" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Pendente" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tarefa" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Etapa Tarefa" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pt_BR.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pt_BR.po new file mode 100644 index 0000000..247bd80 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pt_BR.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-17 09:31+0000\n" +"PO-Revision-Date: 2017-03-17 09:31+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Cancelado" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Feito" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "Em Progresso" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Novo" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Pendente" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Estado" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tarefa" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Estágio da Tarefa" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pt_PT.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pt_PT.po new file mode 100644 index 0000000..c7fb8bd --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/pt_PT.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/" +"teams/23907/pt_PT/)\n" +"Language: pt_PT\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Concluído" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Pendente" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Tarefa" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Etapa da Tarefa" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ro.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ro.po new file mode 100644 index 0000000..8bf0d5f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ro.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: project (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-31 18:04+0000\n" +"PO-Revision-Date: 2015-07-21 19:20+0000\n" +"Last-Translator: <>\n" +"Language-Team: Romanian (http://www.transifex.com/oca/OCA-project-8-0/" +"language/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Sarcina" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ru.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ru.po new file mode 100644 index 0000000..8a3abec --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/ru.po @@ -0,0 +1,63 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" +"%100>=11 && n%100<=14)? 2 : 3);\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Завершен" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/sk.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/sk.po new file mode 100644 index 0000000..dcc9881 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/sk.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovak (https://www.transifex.com/oca/teams/23907/sk/)\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Hotovo" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/sl.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/sl.po new file mode 100644 index 0000000..71dc099 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/sl.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-17 09:31+0000\n" +"PO-Revision-Date: 2017-03-17 09:31+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\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" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "Preklicano" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Opravljeno" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "V teku" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Novo" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Na čakanju" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Stanje" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Opravilo" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Stopnja opravila" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/sv.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/sv.po new file mode 100644 index 0000000..79f5ea3 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/sv.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n" +"Language: sv\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Pågående" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Uppgift" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/tr.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/tr.po new file mode 100644 index 0000000..1b2d36a --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/tr.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +# Ivan BARAYEV , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-22 01:55+0000\n" +"PO-Revision-Date: 2017-12-22 01:55+0000\n" +"Last-Translator: Ivan BARAYEV , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\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_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "İptal edildi" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "Tamam" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "Devam etmekte" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "Yeni" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "Askıda olan" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "Durumu" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Görev" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "Görev Aşamaları" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/uk.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/uk.po new file mode 100644 index 0000000..4a37bfe --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/uk.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-23 02:44+0000\n" +"PO-Revision-Date: 2017-05-23 02:44+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Ukrainian (https://www.transifex.com/oca/teams/23907/uk/)\n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "Завдання" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/zh_CN.po b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/zh_CN.po new file mode 100644 index 0000000..06f0e49 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/i18n/zh_CN.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_stage_state +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-10 02:49+0000\n" +"PO-Revision-Date: 2017-08-10 02:49+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__cancelled +msgid "Cancelled" +msgstr "已取消" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__done +msgid "Done" +msgstr "完成" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__open +msgid "In Progress" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__draft +msgid "New" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model.fields.selection,name:project_task_stage_state.selection__project_task_type__state__pending +msgid "Pending" +msgstr "暂停中" + +#. module: project_task_stage_state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task__state +#: model:ir.model.fields,field_description:project_task_stage_state.field_project_task_type__state +#: model_terms:ir.ui.view,arch_db:project_task_stage_state.view_task_search_form +msgid "State" +msgstr "" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task +msgid "Task" +msgstr "任务" + +#. module: project_task_stage_state +#: model:ir.model,name:project_task_stage_state.model_project_task_type +msgid "Task Stage" +msgstr "任务阶段" diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/models/__init__.py b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/models/__init__.py new file mode 100644 index 0000000..b209446 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/models/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import project_task +from . import project_task_type diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/models/project_task.py b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/models/project_task.py new file mode 100644 index 0000000..9eae753 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/models/project_task.py @@ -0,0 +1,16 @@ +# Copyright 2014 Daniel Reis +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import fields, models + + +class ProjectTask(models.Model): + """Added state in the Project Task.""" + + _inherit = "project.task" + + state = fields.Selection(related="stage_id.state", store=True) + + @property + def SELF_READABLE_FIELDS(self): + return super().SELF_READABLE_FIELDS | {"state"} diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/models/project_task_type.py b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/models/project_task_type.py new file mode 100644 index 0000000..af19ad4 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/models/project_task_type.py @@ -0,0 +1,22 @@ +# Copyright 2014 Daniel Reis +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import api, fields, models + + +class ProjectTaskType(models.Model): + """Added state in the Project Task Type.""" + + _inherit = "project.task.type" + + @api.model + def _get_task_states(self): + return [ + ("draft", "New"), + ("open", "In Progress"), + ("pending", "Pending"), + ("done", "Done"), + ("cancelled", "Cancelled"), + ] + + state = fields.Selection(selection="_get_task_states") diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/CONFIGURE.rst b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/CONFIGURE.rst new file mode 100644 index 0000000..50b571d --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/CONFIGURE.rst @@ -0,0 +1 @@ +You can configure stages from Project -> Configuration -> Stages diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..d4a95e5 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +- Daniel Reis +- Rodrigo Ferreira +- Anand Kansagra +- Saran Lim. +- Nattapol Sinsuphan +- Manuel Regidor diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/DESCRIPTION.rst new file mode 100644 index 0000000..3f828c2 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/DESCRIPTION.rst @@ -0,0 +1,8 @@ +This module restores the `state` fields to Project Stages, removed in Odoo 8.0. + +For some use cases it‘s necessary to be able to map the multiple Stages into +a few broad groups. + +For example, this can allow to define automated actions and business logic for +Tasks not yet “Started”, knowing that “Started” means different Stages in +different Projects. diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/USAGE.rst b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/USAGE.rst new file mode 100644 index 0000000..e4d2a37 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/readme/USAGE.rst @@ -0,0 +1,8 @@ +To use this module, you need to: + +#. Go to Project -> Configuration -> Stages and click on a stage +#. Select the state you would like to associate that stage with from the dropdown "State" menu +#. Save your changes +#. Go to Project -> Dashboard and click on a project +#. Click on task in the stage you just edited +#. Under the "Customer" field, you can see the "State" field for that task diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/security/ir.model.access.csv b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/security/ir.model.access.csv new file mode 100644 index 0000000..d5a3f5e --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_project_task_type_empl,project.task.type.employees,project.model_project_task_type,base.group_user,1,1,0,0 +access_project_task_type_empl_manager,project.task.type.employees.manager,project.model_project_task_type,project.group_project_manager,1,1,1,1 diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/static/description/icon.png b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/static/description/index.html b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/static/description/index.html new file mode 100644 index 0000000..4caed71 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/static/description/index.html @@ -0,0 +1,448 @@ + + + + + +Add State field to Project Stages + + + +
+

Add State field to Project Stages

+ + +

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

+

This module restores the state fields to Project Stages, removed in Odoo 8.0.

+

For some use cases it‘s necessary to be able to map the multiple Stages into +a few broad groups.

+

For example, this can allow to define automated actions and business logic for +Tasks not yet “Started”, knowing that “Started” means different Stages in +different Projects.

+

Table of contents

+ +
+

Configuration

+

You can configure stages from Project -> Configuration -> Stages

+
+
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Project -> Configuration -> Stages and click on a stage
  2. +
  3. Select the state you would like to associate that stage with from the dropdown “State” menu
  4. +
  5. Save your changes
  6. +
  7. Go to Project -> Dashboard and click on a project
  8. +
  9. Click on task in the stage you just edited
  10. +
  11. Under the “Customer” field, you can see the “State” field for that task
  12. +
+
+
+

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

+
    +
  • Daniel Reis
  • +
+
+
+

Contributors

+ +
+
+

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.

+

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/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/views/project_view.xml b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/views/project_view.xml new file mode 100644 index 0000000..4c59d2f --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/project_task_stage_state/views/project_view.xml @@ -0,0 +1,42 @@ + + + + + project.task.search.form + project.task + + + + + + + + + + + + + task_type_edit_state + project.task.type + + + + + + + + + + project_task_form_stage + project.task + + + + + + + + diff --git a/odoo-bringout-oca-project-project_task_stage_state/pyproject.toml b/odoo-bringout-oca-project-project_task_stage_state/pyproject.toml new file mode 100644 index 0000000..4975c50 --- /dev/null +++ b/odoo-bringout-oca-project-project_task_stage_state/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-project-project_task_stage_state" +version = "16.0.0" +description = "Add State field to Project Stages - Restore State attribute removed from Project Stages in 8.0" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-ocb-project>=16.0.0", + "requests>=2.25.1" +] +readme = "README.md" +requires-python = ">= 3.11" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Office/Business", +] + +[project.urls] +homepage = "https://github.com/bringout/0" +repository = "https://github.com/bringout/0" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["project_task_stage_state"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-project-project_template/README.md b/odoo-bringout-oca-project-project_template/README.md new file mode 100644 index 0000000..1cccc37 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/README.md @@ -0,0 +1,46 @@ +# Project Templates + +Odoo addon: project_template + +## Installation + +```bash +pip install odoo-bringout-oca-project-project_template +``` + +## Dependencies + +This addon depends on: +- project + +## Manifest Information + +- **Name**: Project Templates +- **Version**: 16.0.1.0.0 +- **Category**: Project Management +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/project](https://github.com/OCA/project) branch 16.0, addon `project_template`. + +## License + +This package maintains the original AGPL-3 license from the upstream Odoo project. + +## Documentation + +- Overview: doc/OVERVIEW.md +- Architecture: doc/ARCHITECTURE.md +- Models: doc/MODELS.md +- Controllers: doc/CONTROLLERS.md +- Wizards: doc/WIZARDS.md +- Reports: doc/REPORTS.md +- Security: doc/SECURITY.md +- Install: doc/INSTALL.md +- Usage: doc/USAGE.md +- Configuration: doc/CONFIGURATION.md +- Dependencies: doc/DEPENDENCIES.md +- Troubleshooting: doc/TROUBLESHOOTING.md +- FAQ: doc/FAQ.md diff --git a/odoo-bringout-oca-project-project_template/doc/ARCHITECTURE.md b/odoo-bringout-oca-project-project_template/doc/ARCHITECTURE.md new file mode 100644 index 0000000..0d295b8 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/ARCHITECTURE.md @@ -0,0 +1,32 @@ +# Architecture + +```mermaid +flowchart TD + U[Users] -->|HTTP| V[Views and QWeb Templates] + V --> C[Controllers] + V --> W[Wizards – Transient Models] + C --> M[Models and ORM] + W --> M + M --> R[Reports] + DX[Data XML] --> M + S[Security – ACLs and Groups] -. enforces .-> M + + subgraph Project_template Module - project_template + direction LR + M:::layer + W:::layer + C:::layer + V:::layer + R:::layer + S:::layer + DX:::layer + end + + classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px +``` + +Notes +- Views include tree/form/kanban templates and report templates. +- Controllers provide website/portal routes when present. +- Wizards are UI flows implemented with `models.TransientModel`. +- Data XML loads data/demo records; Security defines groups and access. diff --git a/odoo-bringout-oca-project-project_template/doc/CONFIGURATION.md b/odoo-bringout-oca-project-project_template/doc/CONFIGURATION.md new file mode 100644 index 0000000..351c9a8 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for project_template. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-project-project_template/doc/CONTROLLERS.md b/odoo-bringout-oca-project-project_template/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-project-project_template/doc/DEPENDENCIES.md b/odoo-bringout-oca-project-project_template/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d6422c --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-project-project_template/doc/FAQ.md b/odoo-bringout-oca-project-project_template/doc/FAQ.md new file mode 100644 index 0000000..f9e1ffe --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/FAQ.md @@ -0,0 +1,4 @@ +# FAQ + +- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged). +- Q: How to enable? A: Start server with --addon project_template or install in UI. diff --git a/odoo-bringout-oca-project-project_template/doc/INSTALL.md b/odoo-bringout-oca-project-project_template/doc/INSTALL.md new file mode 100644 index 0000000..a11a886 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-project-project_template" +# or +uv pip install odoo-bringout-oca-project-project_template" +``` diff --git a/odoo-bringout-oca-project-project_template/doc/MODELS.md b/odoo-bringout-oca-project-project_template/doc/MODELS.md new file mode 100644 index 0000000..f12665c --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in project_template. + +```mermaid +classDiagram + class project_project +``` + +Notes +- Classes show model technical names; fields omitted for brevity. +- Items listed under _inherit are extensions of existing models. diff --git a/odoo-bringout-oca-project-project_template/doc/OVERVIEW.md b/odoo-bringout-oca-project-project_template/doc/OVERVIEW.md new file mode 100644 index 0000000..b54ce77 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: project_template. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon project_template +- License: LGPL-3 diff --git a/odoo-bringout-oca-project-project_template/doc/REPORTS.md b/odoo-bringout-oca-project-project_template/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-project-project_template/doc/SECURITY.md b/odoo-bringout-oca-project-project_template/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/SECURITY.md @@ -0,0 +1,8 @@ +# Security + +This module does not define custom security rules or access controls beyond Odoo defaults. + +Default Odoo security applies: +- Base user access through standard groups +- Model access inherited from dependencies +- No custom row-level security rules diff --git a/odoo-bringout-oca-project-project_template/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-project-project_template/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/TROUBLESHOOTING.md @@ -0,0 +1,5 @@ +# Troubleshooting + +- Ensure Python and Odoo environment matches repo guidance. +- Check database connectivity and logs if startup fails. +- Validate that dependent addons listed in DEPENDENCIES.md are installed. diff --git a/odoo-bringout-oca-project-project_template/doc/USAGE.md b/odoo-bringout-oca-project-project_template/doc/USAGE.md new file mode 100644 index 0000000..88c83ee --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/USAGE.md @@ -0,0 +1,7 @@ +# Usage + +Start Odoo including this addon (from repo root): + +```bash +python3 scripts/nix_odoo_web_server.py --db-name mydb --addon project_template +``` diff --git a/odoo-bringout-oca-project-project_template/doc/WIZARDS.md b/odoo-bringout-oca-project-project_template/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-project-project_template/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-project-project_template/project_template/README.rst b/odoo-bringout-oca-project-project_template/project_template/README.rst new file mode 100644 index 0000000..b3e20cb --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/README.rst @@ -0,0 +1,96 @@ +================= +Project Templates +================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:194e0553816f0e3651d753ca8bd2eaa43f6bb892f5c13aef08173c9d3fbe0ac3 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/project_template + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_template + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds templates for projects. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. Have Manager rights for Project group to edit projects and project templates. +#. Convert project to a project template by setting the "Is Template?" field on any project. +#. View Templates via the Template filter. +#. Use the "Create Project from Template" link in the drop down menu on each template while in the Kanban view or the button on the project template form. + +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 +~~~~~~~ + +* Patrick Wilson + +Contributors +~~~~~~~~~~~~ + +* Patrick Wilson +* Alfadil Mustafa +* Mantas Šniukas + +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-patrickrwilson| image:: https://github.com/patrickrwilson.png?size=40px + :target: https://github.com/patrickrwilson + :alt: patrickrwilson + +Current `maintainer `__: + +|maintainer-patrickrwilson| + +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/odoo-bringout-oca-project-project_template/project_template/__init__.py b/odoo-bringout-oca-project-project_template/project_template/__init__.py new file mode 100644 index 0000000..aa1a7e3 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/__init__.py @@ -0,0 +1,3 @@ +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +from . import models diff --git a/odoo-bringout-oca-project-project_template/project_template/__manifest__.py b/odoo-bringout-oca-project-project_template/project_template/__manifest__.py new file mode 100644 index 0000000..00af772 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2019 Patrick Wilson +# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). + +{ + "name": "Project Templates", + "summary": """Project Templates""", + "author": "Patrick Wilson, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/project", + "category": "Project Management", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "depends": ["project"], + "data": ["views/project.xml"], + "application": False, + "development_status": "Beta", + "maintainers": ["patrickrwilson"], +} diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/bs.po b/odoo-bringout-oca-project-project_template/project_template/i18n/bs.po new file mode 100644 index 0000000..c6b37b9 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/bs.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Stvori projekt iz predloška" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Stvori projekt iz predloška" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Je predložak" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "Je predložak?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "Nisu predlošci" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Predlošci" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/de.po b/odoo-bringout-oca-project-project_template/project_template/i18n/de.po new file mode 100644 index 0000000..80a5282 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/de.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-11-04 14:45+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 4.14.1\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Projekt aus dieser Vorlage erstellen" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Projekt aus dieser Vorlage erstellen" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Projekt-Vorlage" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "Projekt-Vorlage?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "Keine Vorlage" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Vorlagen" + +#~ msgid "Display Name" +#~ msgstr "Anzeigename" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Zuletzt geändert am" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/es.po b/odoo-bringout-oca-project-project_template/project_template/i18n/es.po new file mode 100644 index 0000000..c27c39a --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/es.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-11-07 18:02+0000\n" +"Last-Translator: María Asunción Daza \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 3.8\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Crear Proyecto desde Plantilla" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Crear Proyecto desde Plantilla" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Es una Plantilla" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "¿Es Una Plantilla?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "No son Plantillas" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Plantillas" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/es_AR.po b/odoo-bringout-oca-project-project_template/project_template/i18n/es_AR.po new file mode 100644 index 0000000..fc00f35 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/es_AR.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-04-01 03:48+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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.3.2\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Crear Proyecto desde Plantilla" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Crear Proyecto desde Plantilla" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Es una Plantilla" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "¿Es una Plantilla?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "No-Plantillas" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Proyecto" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Plantillas" + +#~ msgid "Display Name" +#~ msgstr "Mostrar Nombre" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última Modificación el" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/fr.po b/odoo-bringout-oca-project-project_template/project_template/i18n/fr.po new file mode 100644 index 0000000..b27e7c5 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/fr.po @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-04-04 16:46+0000\n" +"Last-Translator: Yves Le Doeuff \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 4.3.2\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Créer un projet depuis le modèle" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Créer un projet depuis le modèle" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Est un modèle" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "Est un modèle ?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "N'est pas un modèle" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Projet" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Modèles" + +#, fuzzy +#~ msgid "WBS element" +#~ msgstr "Élément SDP" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/fr_FR.po b/odoo-bringout-oca-project-project_template/project_template/i18n/fr_FR.po new file mode 100644 index 0000000..5c3fd33 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/fr_FR.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-04-11 16:46+0000\n" +"Last-Translator: Yves Le Doeuff \n" +"Language-Team: none\n" +"Language: fr_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 4.3.2\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Créer un projet depuis le modèle" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Créer un projet depuis le modèle" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Est un modèle" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "Est un modèle ?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "N'est pas un modèle" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Projet" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Modèles" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/he.po b/odoo-bringout-oca-project-project_template/project_template/i18n/he.po new file mode 100644 index 0000000..b13aa81 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/he.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-10-19 07:08+0000\n" +"Last-Translator: Yves Goldberg \n" +"Language-Team: none\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " +"n % 10 == 0) ? 2 : 3));\n" +"X-Generator: Weblate 3.10\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "צור תיק על פי תבנית" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "צור תיק על פי תבנית" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "האם תבנית" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "האם תבנית?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "ללא תבנית" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "פרויקט" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "תבניות" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/hr.po b/odoo-bringout-oca-project-project_template/project_template/i18n/hr.po new file mode 100644 index 0000000..c1f7509 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/hr.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-01-04 02:42+0000\n" +"Last-Translator: Bole \n" +"Language-Team: none\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Stvori projekt iz predloška" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Stvori projekt iz predloška" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Je predložak" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "Je predložak?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "Nisu predlošci" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Predlošci" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/it.po b/odoo-bringout-oca-project-project_template/project_template/i18n/it.po new file mode 100644 index 0000000..9dc35f8 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/it.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-10 21:22+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 4.14.1\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Crea progetto da modello" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Crea progetto da modello" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "È un modello" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "È un modello?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "Non modelli" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Progetto" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Modelli" + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/nl.po b/odoo-bringout-oca-project-project_template/project_template/i18n/nl.po new file mode 100644 index 0000000..80fe988 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/nl.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-09 02:52+0000\n" +"Last-Translator: \"Jan Tapper [Onestein]\" \n" +"Language-Team: none\n" +"Language: nl\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_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Project maken op basis van sjabloon" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Project maken op basis van sjabloon" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Is een sjabloon" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "Is een sjabloon?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "Geen sjablonen" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Sjablonen" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/project_template.pot b/odoo-bringout-oca-project-project_template/project_template/i18n/project_template.pot new file mode 100644 index 0000000..a195861 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/project_template.pot @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/pt.po b/odoo-bringout-oca-project-project_template/project_template/i18n/pt.po new file mode 100644 index 0000000..799a42a --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/pt.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-01-10 13:13+0000\n" +"Last-Translator: Pedro Castro Silva \n" +"Language-Team: none\n" +"Language: pt\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_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Criar Projeto a Partir de Modelo" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Criar Projeto a partir de Modelo" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "É um Modelo" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "É um Modelo?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "Não-Modelos" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Modelos" + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/pt_BR.po b/odoo-bringout-oca-project-project_template/project_template/i18n/pt_BR.po new file mode 100644 index 0000000..d6a9b6d --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/pt_BR.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-31 13:10+0000\n" +"Last-Translator: Adriano Prado \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" +"X-Generator: Weblate 4.17\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Criar Projeto a Partir do Modelo" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Criar Projeto a Partir do Modelo" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "É um Modelo" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "É um Modelo?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "Não é Modelo" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Projeto" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Modelos" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/sl.po b/odoo-bringout-oca-project-project_template/project_template/i18n/sl.po new file mode 100644 index 0000000..ffbfe9d --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/sl.po @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-03-31 10:13+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 3.10\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Ustvari projekt iz predloge" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Ustvari projekt iz predloge" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Je predloga" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "Je predloga?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "Niso predloge" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Predloge" + +#~ msgid "WBS element" +#~ msgstr "Projektni člen" diff --git a/odoo-bringout-oca-project-project_template/project_template/i18n/sv.po b/odoo-bringout-oca-project-project_template/project_template/i18n/sv.po new file mode 100644 index 0000000..5119fa0 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/i18n/sv.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_template +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-11-16 10:36+0000\n" +"Last-Translator: Simon S \n" +"Language-Team: none\n" +"Language: sv\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.3.2\n" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Create Project From Template" +msgstr "Skapa projekt från mall" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_kanban +msgid "Create Project from Template" +msgstr "Skapa projekt från mall" + +#. module: project_template +#: model:ir.model.fields,field_description:project_template.field_project_project__is_template +msgid "Is Template" +msgstr "Är mall" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_form +msgid "Is Template?" +msgstr "Är mall?" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Non-Templates" +msgstr "Icke-mallar" + +#. module: project_template +#: model:ir.model,name:project_template.model_project_project +msgid "Project" +msgstr "Projekt" + +#. module: project_template +#: model_terms:ir.ui.view,arch_db:project_template.project_template_view_inherit_search +msgid "Templates" +msgstr "Mallar" + +#~ msgid "Display Name" +#~ msgstr "Visningsnamn" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Senast ändrad den" diff --git a/odoo-bringout-oca-project-project_template/project_template/models/__init__.py b/odoo-bringout-oca-project-project_template/project_template/models/__init__.py new file mode 100644 index 0000000..6a689f5 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import project diff --git a/odoo-bringout-oca-project-project_template/project_template/models/project.py b/odoo-bringout-oca-project-project_template/project_template/models/project.py new file mode 100644 index 0000000..f24b511 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/models/project.py @@ -0,0 +1,55 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import api, fields, models + + +class Project(models.Model): + _inherit = "project.project" + + is_template = fields.Boolean(copy=False) + + # CREATE A PROJECT FROM A TEMPLATE AND OPEN THE NEWLY CREATED PROJECT + def create_project_from_template(self): + if " (TEMPLATE)" in self.name: + new_name = self.name.replace(" (TEMPLATE)", " (COPY)") + else: + new_name = self.name + " (COPY)" + new_project = self.copy( + default={"name": new_name, "active": True, "alias_name": False} + ) + + # SINCE THE END DATE DOESN'T COPY OVER ON TASKS + # (Even when changed to copy=true), POPULATE END DATES ON THE TASK + for new_task_record in new_project.task_ids: + for old_task_record in self.task_ids: + if new_task_record.name == old_task_record.name: + new_task_record.date_end = old_task_record.date_end + + # OPEN THE NEWLY CREATED PROJECT FORM + return { + "view_type": "form", + "view_mode": "form", + "res_model": "project.project", + "target": "current", + "res_id": new_project.id, + "type": "ir.actions.act_window", + } + + # ADD "(TEMPLATE)" TO THE NAME WHEN PROJECT IS MARKED AS A TEMPLATE + @api.onchange("is_template") + def on_change_is_template(self): + # Add "(TEMPLATE)" to the Name if is_template == true + # if self.name is needed for creating projects via configuration menu + if self.name: + if self.is_template: + if "(TEMPLATE)" not in self.name: + self.name = self.name + " (TEMPLATE)" + if self.user_id: + self.user_id = False + if self.partner_id: + self.partner_id = False + if self.alias_name: + self.alias_name = False + + else: + if " (TEMPLATE)" in self.name: + self.name = self.name.replace(" (TEMPLATE)", "") diff --git a/odoo-bringout-oca-project-project_template/project_template/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-project-project_template/project_template/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..685c545 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Patrick Wilson +* Alfadil Mustafa +* Mantas Šniukas diff --git a/odoo-bringout-oca-project-project_template/project_template/readme/DESCRIPTION.rst b/odoo-bringout-oca-project-project_template/project_template/readme/DESCRIPTION.rst new file mode 100644 index 0000000..6d1a92a --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds templates for projects. diff --git a/odoo-bringout-oca-project-project_template/project_template/readme/USAGE.rst b/odoo-bringout-oca-project-project_template/project_template/readme/USAGE.rst new file mode 100644 index 0000000..f9a513f --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/readme/USAGE.rst @@ -0,0 +1,6 @@ +To use this module, you need to: + +#. Have Manager rights for Project group to edit projects and project templates. +#. Convert project to a project template by setting the "Is Template?" field on any project. +#. View Templates via the Template filter. +#. Use the "Create Project from Template" link in the drop down menu on each template while in the Kanban view or the button on the project template form. diff --git a/odoo-bringout-oca-project-project_template/project_template/static/description/icon.png b/odoo-bringout-oca-project-project_template/project_template/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-project-project_template/project_template/static/description/icon.png differ diff --git a/odoo-bringout-oca-project-project_template/project_template/static/description/index.html b/odoo-bringout-oca-project-project_template/project_template/static/description/index.html new file mode 100644 index 0000000..0467d38 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/static/description/index.html @@ -0,0 +1,436 @@ + + + + + + +Project Templates + + + +
+

Project Templates

+ + +

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

+

This module adds templates for projects.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Have Manager rights for Project group to edit projects and project templates.
  2. +
  3. Convert project to a project template by setting the “Is Template?” field on any project.
  4. +
  5. View Templates via the Template filter.
  6. +
  7. Use the “Create Project from Template” link in the drop down menu on each template while in the Kanban view or the button on the project template form.
  8. +
+
+
+

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

+
    +
  • Patrick Wilson
  • +
+
+
+

Contributors

+ +
+
+

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:

+

patrickrwilson

+

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/odoo-bringout-oca-project-project_template/project_template/tests/__init__.py b/odoo-bringout-oca-project-project_template/project_template/tests/__init__.py new file mode 100644 index 0000000..16f937a --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_project_template diff --git a/odoo-bringout-oca-project-project_template/project_template/tests/test_project_template.py b/odoo-bringout-oca-project-project_template/project_template/tests/test_project_template.py new file mode 100644 index 0000000..c6a17bb --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/tests/test_project_template.py @@ -0,0 +1,63 @@ +# Copyright 2019 Patrick Wilson +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.tests import common + + +class TestProjectTemplate(common.TransactionCase): + def setUp(self): + super().setUp() + self.test_customer = self.env["res.partner"].create({"name": "TestCustomer"}) + self.test_project = self.env["project.project"].create( + { + "name": "TestProject", + "alias_name": "test_alias", + "partner_id": self.test_customer.id, + } + ) + self.env["project.task"].create( + {"name": "TestTask", "project_id": self.test_project.id} + ) + + # TEST 01: Set project to be a template and test name change + def test_on_change_is_template(self): + # Test when changing project to a template + project_01 = self.test_project + project_01.is_template = True + project_01.on_change_is_template() + self.assertEqual(project_01.name, "TestProject (TEMPLATE)") + + # Test when changing template back to project + project_01.is_template = False + project_01.on_change_is_template() + self.assertEqual(project_01.name, "TestProject") + + # TEST 02: Create project from template + def test_create_project_from_template(self): + # Set Project Template + project_01 = self.test_project + project_01.is_template = True + project_01.on_change_is_template() + + # Create new Project from Template + project_01.create_project_from_template() + new_project = self.env["project.project"].search( + [("name", "=", "TestProject (COPY)")] + ) + self.assertEqual(len(new_project), 1) + + # TEST 03: Create project from template using non-standard name + def test_create_project_from_template_non_standard_name(self): + # Set Project Template + project_01 = self.test_project + project_01.is_template = True + project_01.on_change_is_template() + # Change the name of project template + project_01.name = "TestProject(TEST)" + + # Create new Project from Template + project_01.create_project_from_template() + new_project = self.env["project.project"].search( + [("name", "=", "TestProject(TEST) (COPY)")] + ) + self.assertEqual(len(new_project), 1) diff --git a/odoo-bringout-oca-project-project_template/project_template/views/project.xml b/odoo-bringout-oca-project-project_template/project_template/views/project.xml new file mode 100644 index 0000000..54a3363 --- /dev/null +++ b/odoo-bringout-oca-project-project_template/project_template/views/project.xml @@ -0,0 +1,73 @@ + + + + project.template.form + project.project + + form + + +
+ + + 1 + + + + + + +
+ + account.analytic.line.kanban + account.analytic.line + + + + + + + + + + + + + 1 + + + + +
+ to + + +
+
+
+
diff --git a/odoo-bringout-oca-project-project_timesheet_time_control/project_timesheet_time_control/views/project_project_view.xml b/odoo-bringout-oca-project-project_timesheet_time_control/project_timesheet_time_control/views/project_project_view.xml new file mode 100644 index 0000000..584d76b --- /dev/null +++ b/odoo-bringout-oca-project-project_timesheet_time_control/project_timesheet_time_control/views/project_project_view.xml @@ -0,0 +1,117 @@ + + + + Add timesheet time controls + project.project + + +
+ +
+
+
+ + Add timesheet time controls + project.project + + + + +
+
+ + + Start work + +
+
+ +
+ + + Stop work + +
+
+ + + + + Add timesheet time controls + project.project + + + + +
+ + + 1 + + + + + + +