diff --git a/odoo-bringout-oca-maintenance-base_maintenance/README.md b/odoo-bringout-oca-maintenance-base_maintenance/README.md new file mode 100644 index 0000000..a53c4a8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/README.md @@ -0,0 +1,44 @@ +# Base Maintenance + +Odoo addon: base_maintenance + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-base_maintenance +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Base Maintenance +- **Version**: 16.0.1.0.2 +- **Category**: Maintenance +- **License**: LGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `base_maintenance`. + +## 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 +- 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-maintenance-base_maintenance/base_maintenance/README.rst b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/README.rst new file mode 100644 index 0000000..6581993 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/README.rst @@ -0,0 +1,85 @@ +================ +Base Maintenance +================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:a89cdc6a8983da7d4c5c6f938dea66e7e705d467122669fa664e5f3df19de91c + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/base_maintenance + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-base_maintenance + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of Odoo Maintenance module to add +some basic features that are standard in other Odoo apps: + +* Team leader in maintenance team. +* Description field in maintenance team. +* Creates the unexisting search view for maintenance team. +* Empty button box on maintenance request to be extended by other modules. +* Maintenance Request Report + +**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 +~~~~~~~~~~~~ + +* Lois Rilo +* Marcel Savegnago +* David Alonso + +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/maintenance `_ 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-maintenance-base_maintenance/base_maintenance/__init__.py b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/__manifest__.py b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/__manifest__.py new file mode 100644 index 0000000..a42be64 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2019 ForgeFlow S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +{ + "name": "Base Maintenance", + "version": "16.0.1.0.2", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "development_status": "Beta", + "website": "https://github.com/OCA/maintenance", + "category": "Maintenance", + "license": "LGPL-3", + "depends": ["maintenance"], + "data": [ + "views/maintenance_team_views.xml", + "views/maintenance_request_views.xml", + "views/maintenance_equipment_views.xml", + "views/report_maintenance_request.xml", + ], + "installable": True, +} diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/base_maintenance.pot b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/base_maintenance.pot new file mode 100644 index 0000000..8e85fad --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/base_maintenance.pot @@ -0,0 +1,125 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance +# +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: base_maintenance +#: model:ir.actions.report,print_report_name:base_maintenance.action_report_maintenance_request +msgid "'Maintenance Request - %s' % (object.name)" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Request" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Category:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Close Date:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Description:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Duration:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Equipment:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Type:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Model:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Priority:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Request Date:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Requested By:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Responsible:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Schedule Date:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Serial:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Stage:" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Team:" +msgstr "" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__description +#: model_terms:ir.ui.view,arch_db:base_maintenance.equipment_request_view_form +msgid "Description" +msgstr "" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.maintenance_team_view_form +msgid "Description of the team's function" +msgstr "" + +#. module: base_maintenance +#: model:ir.actions.report,name:base_maintenance.action_report_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: base_maintenance +#: model:ir.model,name:base_maintenance.model_maintenance_team +msgid "Maintenance Teams" +msgstr "" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__user_id +msgid "Team Leader" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/bs.po b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/bs.po new file mode 100644 index 0000000..532a2b1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/bs.po @@ -0,0 +1,125 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance +# +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: base_maintenance +#: model:ir.actions.report,print_report_name:base_maintenance.action_report_maintenance_request +msgid "'Maintenance Request - %s' % (object.name)" +msgstr "'Zahtjev za održavanje - %s' % (object.name)" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Category:" +msgstr "Kategorija:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Close Date:" +msgstr "Datum zatvaranja:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Description:" +msgstr "Opis:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Duration:" +msgstr "Trajanje:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Equipment:" +msgstr "Oprema:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Type:" +msgstr "Tip održavanja:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Model:" +msgstr "Model:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Priority:" +msgstr "Prioritet:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Request Date:" +msgstr "Datum zahtjeva:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Requested By:" +msgstr "Zahtijevano od:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Responsible:" +msgstr "Odgovoran:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Schedule Date:" +msgstr "Planirani datum:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Serial:" +msgstr "Serijski broj:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Stage:" +msgstr "Faza:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Team:" +msgstr "Tim:" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__description +#: model_terms:ir.ui.view,arch_db:base_maintenance.equipment_request_view_form +msgid "Description" +msgstr "Opis" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.maintenance_team_view_form +msgid "Description of the team's function" +msgstr "Opis funkcije tima" + +#. module: base_maintenance +#: model:ir.actions.report,name:base_maintenance.action_report_maintenance_request +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: base_maintenance +#: model:ir.model,name:base_maintenance.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Timovi za održavanje" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__user_id +msgid "Team Leader" +msgstr "Vođa tima" diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/es.po b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/es.po new file mode 100644 index 0000000..07f4276 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/es.po @@ -0,0 +1,128 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-22 23:09+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: base_maintenance +#: model:ir.actions.report,print_report_name:base_maintenance.action_report_maintenance_request +msgid "'Maintenance Request - %s' % (object.name)" +msgstr "'Solicitud de mantenimiento - %s' % (object.name)" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Request" +msgstr "Solicitud de mantenimiento" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Category:" +msgstr "Categoría:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Close Date:" +msgstr "Fecha de cierre:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Description:" +msgstr "Descripción:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Duration:" +msgstr "Duración:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Equipment:" +msgstr "Equipamiento:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Type:" +msgstr "Tipo de mantenimiento:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Model:" +msgstr "Modelo:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Priority:" +msgstr "Prioridad:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Request Date:" +msgstr "Fecha de solicitud:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Requested By:" +msgstr "Solicitado por:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Responsible:" +msgstr "Responsable:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Schedule Date:" +msgstr "Fecha programada:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Serial:" +msgstr "Serie:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Stage:" +msgstr "Estado:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Team:" +msgstr "Equipo:" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__description +#: model_terms:ir.ui.view,arch_db:base_maintenance.equipment_request_view_form +msgid "Description" +msgstr "descripción" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.maintenance_team_view_form +msgid "Description of the team's function" +msgstr "Descripción de la función del equipo" + +#. module: base_maintenance +#: model:ir.actions.report,name:base_maintenance.action_report_maintenance_request +msgid "Maintenance Request" +msgstr "Solicitud de mantenimiento" + +#. module: base_maintenance +#: model:ir.model,name:base_maintenance.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Equipos de Mantenimiento" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__user_id +msgid "Team Leader" +msgstr "Líder de equipo" diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/it.po b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/it.po new file mode 100644 index 0000000..424a71b --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/it.po @@ -0,0 +1,137 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-28 11:49+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.3.2\n" + +#. module: base_maintenance +#: model:ir.actions.report,print_report_name:base_maintenance.action_report_maintenance_request +msgid "'Maintenance Request - %s' % (object.name)" +msgstr "'Richiesta manutenzione - %s' % (object.name)" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Category:" +msgstr "Categoria:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Close Date:" +msgstr "Data chiusura:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Description:" +msgstr "Descrizione:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Duration:" +msgstr "Durata:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Equipment:" +msgstr "Attrezzatura:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Type:" +msgstr "Tipo manutenzione:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Model:" +msgstr "Modello:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Priority:" +msgstr "Priorità:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Request Date:" +msgstr "Data richiesta:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Requested By:" +msgstr "Richiesta da:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Responsible:" +msgstr "Responsabile:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Schedule Date:" +msgstr "Data programmata:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Serial:" +msgstr "Matricola:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Stage:" +msgstr "Fase:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Team:" +msgstr "Squadra:" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__description +#: model_terms:ir.ui.view,arch_db:base_maintenance.equipment_request_view_form +msgid "Description" +msgstr "Descrizione" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.maintenance_team_view_form +msgid "Description of the team's function" +msgstr "Descrizione del compito del team" + +#. module: base_maintenance +#: model:ir.actions.report,name:base_maintenance.action_report_maintenance_request +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: base_maintenance +#: model:ir.model,name:base_maintenance.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Squadra manutenzione" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__user_id +msgid "Team Leader" +msgstr "Responsabile squadra" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/pt.po b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/pt.po new file mode 100644 index 0000000..245072f --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/pt.po @@ -0,0 +1,128 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-12-03 13:44+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 4.14.1\n" + +#. module: base_maintenance +#: model:ir.actions.report,print_report_name:base_maintenance.action_report_maintenance_request +msgid "'Maintenance Request - %s' % (object.name)" +msgstr "‘Pedido de Manutenção - %s' % (object.name)" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Request" +msgstr "Pedido de Manutenção" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Category:" +msgstr "Categoria:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Close Date:" +msgstr "Data de Encerramento:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Description:" +msgstr "Descrição:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Duration:" +msgstr "Duração:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Equipment:" +msgstr "Equipamento:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Type:" +msgstr "Tipo de Manutenção:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Model:" +msgstr "Modelo:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Priority:" +msgstr "Prioridade:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Request Date:" +msgstr "Data do Pedido:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Requested By:" +msgstr "Solicitado por:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Responsible:" +msgstr "Responsável:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Schedule Date:" +msgstr "Data Agendada:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Serial:" +msgstr "Nº Série:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Stage:" +msgstr "Etapa:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Team:" +msgstr "Equipa:" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__description +#: model_terms:ir.ui.view,arch_db:base_maintenance.equipment_request_view_form +msgid "Description" +msgstr "Descrição" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.maintenance_team_view_form +msgid "Description of the team's function" +msgstr "Descrição da função da equipa" + +#. module: base_maintenance +#: model:ir.actions.report,name:base_maintenance.action_report_maintenance_request +msgid "Maintenance Request" +msgstr "Pedido de Manutenção" + +#. module: base_maintenance +#: model:ir.model,name:base_maintenance.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Equipas de Manutenção" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__user_id +msgid "Team Leader" +msgstr "Líder da Equipa" diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/pt_BR.po b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/pt_BR.po new file mode 100644 index 0000000..9699bc0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/pt_BR.po @@ -0,0 +1,136 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-07-16 16:08+0000\n" +"PO-Revision-Date: 2024-05-21 00:57+0000\n" +"Last-Translator: Rodrigo Macedo \n" +"Language-Team: \n" +"Language: pt_BR\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: base_maintenance +#: model:ir.actions.report,print_report_name:base_maintenance.action_report_maintenance_request +msgid "'Maintenance Request - %s' % (object.name)" +msgstr "???Solicita????o de Manuten????o - %s' % (object.name)" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Request" +msgstr "Solicita????o de Manuten????o" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Category:" +msgstr "Categoria:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Close Date:" +msgstr "Data de Encerramento:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Description:" +msgstr "Descri????o:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Duration:" +msgstr "Dura????o:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Equipment:" +msgstr "Equipamento:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Type:" +msgstr "Tipo de Manuten????o:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Model:" +msgstr "Modelo:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Priority:" +msgstr "Prioridade:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Request Date:" +msgstr "Data da Solicita????o:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Requested By:" +msgstr "Solicitado por:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Responsible:" +msgstr "Responsável:
" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Schedule Date:" +msgstr "Data do Agendamento:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Serial:" +msgstr "S??rie:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Stage:" +msgstr "Est??gio:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Team:" +msgstr "Equipe:" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__description +#: model_terms:ir.ui.view,arch_db:base_maintenance.equipment_request_view_form +msgid "Description" +msgstr "Descri????o" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.maintenance_team_view_form +msgid "Description of the team's function" +msgstr "Descri????o da fun????o da equipe" + +#. module: base_maintenance +#: model:ir.actions.report,name:base_maintenance.action_report_maintenance_request +msgid "Maintenance Request" +msgstr "Solicita????o de Manuten????o" + +#. module: base_maintenance +#: model:ir.model,name:base_maintenance.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Equipes de Manuten????o" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__user_id +msgid "Team Leader" +msgstr "L??der de Equipe" + +#~ msgid "Archived" +#~ msgstr "Arquivado" + +#~ msgid "Equipament:" +#~ msgstr "Equipamento:" diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/tr.po b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/tr.po new file mode 100644 index 0000000..0dc915a --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/i18n/tr.po @@ -0,0 +1,128 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-06-12 15:26+0000\n" +"Last-Translator: Betül Öğmen \n" +"Language-Team: none\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" +"X-Generator: Weblate 5.10.4\n" + +#. module: base_maintenance +#: model:ir.actions.report,print_report_name:base_maintenance.action_report_maintenance_request +msgid "'Maintenance Request - %s' % (object.name)" +msgstr "'Bakım Talebi - %s' % (object.name)" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Request" +msgstr "Bakım Talebi" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Category:" +msgstr "Kategori:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Close Date:" +msgstr "Kapanış Tarihi:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Description:" +msgstr "Açıklama:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Duration:" +msgstr "Süre:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Equipment:" +msgstr "Ekipman:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Maintenance Type:" +msgstr "Bakım Türü:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Model:" +msgstr "Model:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Priority:" +msgstr "Öncelik:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Request Date:" +msgstr "Talep Tarihi:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Requested By:" +msgstr "Talep Eden:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Responsible:" +msgstr "Sorumlu:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Schedule Date:" +msgstr "Planlama Tarihi:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Serial:" +msgstr "Seri:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Stage:" +msgstr "Aşama:" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.report_maintenance_request_document +msgid "Team:" +msgstr "Ekip:" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__description +#: model_terms:ir.ui.view,arch_db:base_maintenance.equipment_request_view_form +msgid "Description" +msgstr "Açıklama" + +#. module: base_maintenance +#: model_terms:ir.ui.view,arch_db:base_maintenance.maintenance_team_view_form +msgid "Description of the team's function" +msgstr "Ekip fonksiyonunun açıklaması" + +#. module: base_maintenance +#: model:ir.actions.report,name:base_maintenance.action_report_maintenance_request +msgid "Maintenance Request" +msgstr "Bakım Talebi" + +#. module: base_maintenance +#: model:ir.model,name:base_maintenance.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Bakım Ekipleri" + +#. module: base_maintenance +#: model:ir.model.fields,field_description:base_maintenance.field_maintenance_team__user_id +msgid "Team Leader" +msgstr "Ekip Lideri" diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/models/__init__.py b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/models/__init__.py new file mode 100644 index 0000000..e4c1bcb --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/models/__init__.py @@ -0,0 +1 @@ +from . import maintenance_team diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/models/maintenance_team.py b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/models/maintenance_team.py new file mode 100644 index 0000000..bdd63f5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/models/maintenance_team.py @@ -0,0 +1,11 @@ +# Copyright 2019 ForgeFlow S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import fields, models + + +class MaintenanceTeam(models.Model): + _inherit = "maintenance.team" + + user_id = fields.Many2one(comodel_name="res.users", string="Team Leader") + description = fields.Text() diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..bf667b6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Lois Rilo +* Marcel Savegnago +* David Alonso diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/readme/DESCRIPTION.rst new file mode 100644 index 0000000..a018ff4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/readme/DESCRIPTION.rst @@ -0,0 +1,8 @@ +This module extends the functionality of Odoo Maintenance module to add +some basic features that are standard in other Odoo apps: + +* Team leader in maintenance team. +* Description field in maintenance team. +* Creates the unexisting search view for maintenance team. +* Empty button box on maintenance request to be extended by other modules. +* Maintenance Request Report diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/static/description/icon.png b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/static/description/index.html b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/static/description/index.html new file mode 100644 index 0000000..4891063 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/static/description/index.html @@ -0,0 +1,433 @@ + + + + + +Base Maintenance + + + +
+

Base Maintenance

+ + +

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

+

This module extends the functionality of Odoo Maintenance module to add +some basic features that are standard in other Odoo apps:

+
    +
  • Team leader in maintenance team.
  • +
  • Description field in maintenance team.
  • +
  • Creates the unexisting search view for maintenance team.
  • +
  • Empty button box on maintenance request to be extended by other modules.
  • +
  • Maintenance Request Report
  • +
+

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
  • +
+
+
+

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/maintenance 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-maintenance-base_maintenance/base_maintenance/views/maintenance_equipment_views.xml b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/maintenance_equipment_views.xml new file mode 100644 index 0000000..ef1983c --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/maintenance_equipment_views.xml @@ -0,0 +1,16 @@ + + + + + equipment.form + maintenance.equipment + + + +
+
+
+
+
+
diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/maintenance_request_views.xml b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/maintenance_request_views.xml new file mode 100644 index 0000000..7dc195c --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/maintenance_request_views.xml @@ -0,0 +1,25 @@ + + + + + equipment.request.form + maintenance.request + + + + +
+ +
+
+ + + + + + + +
+
+
diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/maintenance_team_views.xml b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/maintenance_team_views.xml new file mode 100644 index 0000000..69ab495 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/maintenance_team_views.xml @@ -0,0 +1,36 @@ + + + + + maintenance.team.form + maintenance.team + + + + + + + + + + + + + + maintenance.team.tree + maintenance.team + + + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/report_maintenance_request.xml b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/report_maintenance_request.xml new file mode 100644 index 0000000..21ae678 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/base_maintenance/views/report_maintenance_request.xml @@ -0,0 +1,129 @@ + + + + + + + + Maintenance Request + maintenance.request + qweb-pdf + base_maintenance.report_maintenance_request + base_maintenance.report_maintenance_request + 'Maintenance Request - %s' % (object.name) + + report + + + diff --git a/odoo-bringout-oca-maintenance-base_maintenance/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/ARCHITECTURE.md new file mode 100644 index 0000000..2747562 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/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 Base_maintenance Module - base_maintenance + 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-maintenance-base_maintenance/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/CONFIGURATION.md new file mode 100644 index 0000000..d071c88 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for base_maintenance. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-base_maintenance/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-base_maintenance/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-base_maintenance/doc/FAQ.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/FAQ.md new file mode 100644 index 0000000..5cc3cbe --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/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 base_maintenance or install in UI. diff --git a/odoo-bringout-oca-maintenance-base_maintenance/doc/INSTALL.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/INSTALL.md new file mode 100644 index 0000000..e41c93f --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-base_maintenance" +# or +uv pip install odoo-bringout-oca-maintenance-base_maintenance" +``` diff --git a/odoo-bringout-oca-maintenance-base_maintenance/doc/MODELS.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/MODELS.md new file mode 100644 index 0000000..ccc6f4b --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in base_maintenance. + +```mermaid +classDiagram + class maintenance_team +``` + +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-maintenance-base_maintenance/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/OVERVIEW.md new file mode 100644 index 0000000..27d48ec --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: base_maintenance. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon base_maintenance +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-base_maintenance/doc/REPORTS.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-base_maintenance/doc/SECURITY.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/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-maintenance-base_maintenance/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/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-maintenance-base_maintenance/doc/USAGE.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/USAGE.md new file mode 100644 index 0000000..84bb4e6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/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 base_maintenance +``` diff --git a/odoo-bringout-oca-maintenance-base_maintenance/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-base_maintenance/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-base_maintenance/pyproject.toml b/odoo-bringout-oca-maintenance-base_maintenance/pyproject.toml new file mode 100644 index 0000000..4473155 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-base_maintenance" +version = "16.0.0" +description = "Base Maintenance - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["base_maintenance"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/README.md b/odoo-bringout-oca-maintenance-base_maintenance_config/README.md new file mode 100644 index 0000000..1cb9220 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/README.md @@ -0,0 +1,44 @@ +# Maintenance Settings + +Odoo addon: base_maintenance_config + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-base_maintenance_config +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Settings +- **Version**: 16.0.1.0.0 +- **Category**: Maintenance +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `base_maintenance_config`. + +## 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 +- 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-maintenance-base_maintenance_config/base_maintenance_config/README.rst b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/README.rst new file mode 100644 index 0000000..44cdc4e --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/README.rst @@ -0,0 +1,130 @@ +==================== +Maintenance Settings +==================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:658988c6ba9c1d353e20060bf2364a835066b73c622f089c3c655d7d9b39907e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/base_maintenance_config + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-base_maintenance_config + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides an empty general settings section for the maintenance +configuration. + +This is a technical module and it doesn't provide any new functionality. +Extend this module to add general settings related to the maintenance app. + +When extending the general settings view, here is an example of how the code +would look like: + +.. code:: xml + + + res.config.settings + + + +
+
+
+
+
+
+
+ +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To let one user access the general settings section for the maintenance +configuration, you should assign the 'Equipments Manager' group to that user. + +To do so, you need to: + +#. Go on 'Settings' -> 'Users & Companies' -> 'Groups'. +#. Open the group 'Maintenance / Equipment Manager' form. +#. In the tab 'Users', add the user you want to give access to. + +Usage +===== + +To use this module, you need to: + +#. Go to *Maintenance > Configuration > General Settings*. + +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 +~~~~~~~~~~~~ + +* Antonio Esposito +* Andrea Stirpe + +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/maintenance `_ 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-maintenance-base_maintenance_config/base_maintenance_config/__init__.py b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/__init__.py new file mode 100644 index 0000000..ef5ae35 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/__init__.py @@ -0,0 +1 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/__manifest__.py b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/__manifest__.py new file mode 100644 index 0000000..e4802d4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2017-2019 Onestein () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Settings", + "summary": "Provides general settings for the Maintenance App", + "author": "Onestein, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "category": "Maintenance", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "depends": ["maintenance"], + "data": ["views/res_config_settings.xml"], +} diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/base_maintenance_config.pot b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/base_maintenance_config.pot new file mode 100644 index 0000000..70a9d26 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/base_maintenance_config.pot @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_config +# +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: base_maintenance_config +#: model_terms:ir.ui.view,arch_db:base_maintenance_config.res_config_settings_view_form +msgid "Configure Maintenance" +msgstr "" + +#. module: base_maintenance_config +#: model:ir.actions.act_window,name:base_maintenance_config.action_maintenance_config_settings +#: model:ir.ui.menu,name:base_maintenance_config.menu_maintenance_config_settings +msgid "General Settings" +msgstr "" + +#. module: base_maintenance_config +#: model_terms:ir.ui.view,arch_db:base_maintenance_config.res_config_settings_view_form +msgid "Maintenance" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/bs.po b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/bs.po new file mode 100644 index 0000000..85e59a7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/bs.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_config +# +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: base_maintenance_config +#: model_terms:ir.ui.view,arch_db:base_maintenance_config.res_config_settings_view_form +msgid "Configure Maintenance" +msgstr "Konfigurišite održavanje" + +#. module: base_maintenance_config +#: model:ir.actions.act_window,name:base_maintenance_config.action_maintenance_config_settings +#: model:ir.ui.menu,name:base_maintenance_config.menu_maintenance_config_settings +msgid "General Settings" +msgstr "Opšte postavke" + +#. module: base_maintenance_config +#: model_terms:ir.ui.view,arch_db:base_maintenance_config.res_config_settings_view_form +msgid "Maintenance" +msgstr "Održavanje" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/es.po b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/es.po new file mode 100644 index 0000000..633f67e --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/es.po @@ -0,0 +1,33 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_config +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-06 13:48+0000\n" +"Last-Translator: David Alonso (Solvos) \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: base_maintenance_config +#: model_terms:ir.ui.view,arch_db:base_maintenance_config.res_config_settings_view_form +msgid "Configure Maintenance" +msgstr "Configurar Mantenimiento" + +#. module: base_maintenance_config +#: model:ir.actions.act_window,name:base_maintenance_config.action_maintenance_config_settings +#: model:ir.ui.menu,name:base_maintenance_config.menu_maintenance_config_settings +msgid "General Settings" +msgstr "Configuración" + +#. module: base_maintenance_config +#: model_terms:ir.ui.view,arch_db:base_maintenance_config.res_config_settings_view_form +msgid "Maintenance" +msgstr "Mantenimiento" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/it.po b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/it.po new file mode 100644 index 0000000..9368cb0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/i18n/it.po @@ -0,0 +1,33 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_config +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-23 15:49+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.3.2\n" + +#. module: base_maintenance_config +#: model_terms:ir.ui.view,arch_db:base_maintenance_config.res_config_settings_view_form +msgid "Configure Maintenance" +msgstr "Configurazione Manutenzione" + +#. module: base_maintenance_config +#: model:ir.actions.act_window,name:base_maintenance_config.action_maintenance_config_settings +#: model:ir.ui.menu,name:base_maintenance_config.menu_maintenance_config_settings +msgid "General Settings" +msgstr "Impostazioni generali" + +#. module: base_maintenance_config +#: model_terms:ir.ui.view,arch_db:base_maintenance_config.res_config_settings_view_form +msgid "Maintenance" +msgstr "Manutenzione" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/CONFIGURE.rst b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/CONFIGURE.rst new file mode 100644 index 0000000..2686e65 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/CONFIGURE.rst @@ -0,0 +1,8 @@ +To let one user access the general settings section for the maintenance +configuration, you should assign the 'Equipments Manager' group to that user. + +To do so, you need to: + +#. Go on 'Settings' -> 'Users & Companies' -> 'Groups'. +#. Open the group 'Maintenance / Equipment Manager' form. +#. In the tab 'Users', add the user you want to give access to. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..d3948e9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Antonio Esposito +* Andrea Stirpe diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/DESCRIPTION.rst new file mode 100644 index 0000000..e71298f --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/DESCRIPTION.rst @@ -0,0 +1,35 @@ +This module provides an empty general settings section for the maintenance +configuration. + +This is a technical module and it doesn't provide any new functionality. +Extend this module to add general settings related to the maintenance app. + +When extending the general settings view, here is an example of how the code +would look like: + +.. code:: xml + + + res.config.settings + + + +
+
+
+
+
+
+
diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/USAGE.rst b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/USAGE.rst new file mode 100644 index 0000000..3b4096d --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/readme/USAGE.rst @@ -0,0 +1,3 @@ +To use this module, you need to: + +#. Go to *Maintenance > Configuration > General Settings*. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/static/description/icon.png b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/static/description/index.html b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/static/description/index.html new file mode 100644 index 0000000..0d8bd5f --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/static/description/index.html @@ -0,0 +1,475 @@ + + + + + +Maintenance Settings + + + +
+

Maintenance Settings

+ + +

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

+

This module provides an empty general settings section for the maintenance +configuration.

+

This is a technical module and it doesn’t provide any new functionality. +Extend this module to add general settings related to the maintenance app.

+

When extending the general settings view, here is an example of how the code +would look like:

+
+<record id="res_config_settings_view_form" model="ir.ui.view">
+    <field name="model">res.config.settings</field>
+    <field name="inherit_id" ref="base_maintenance_config.res_config_settings_view_form"/>
+    <field name="arch" type="xml">
+        <xpath expr="//div[@id='configure_maintenance']" position="after">
+            <div class="col-xs-12 col-md-6 o_setting_box">
+                <div class="o_setting_right_pane">
+                    <label for="new_field_name"/>
+                    <span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
+                    <div class="row">
+                        <div class="text-muted col-md-8">
+                            Set some configuration data for this field ...
+                        </div>
+                    </div>
+                    <div class="content-group">
+                        <div class="mt16">
+                            <field name="new_field_name" class="o_light_label"/>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </xpath>
+    </field>
+</record>
+
+

Table of contents

+ +
+

Configuration

+

To let one user access the general settings section for the maintenance +configuration, you should assign the ‘Equipments Manager’ group to that user.

+

To do so, you need to:

+
    +
  1. Go on ‘Settings’ -> ‘Users & Companies’ -> ‘Groups’.
  2. +
  3. Open the group ‘Maintenance / Equipment Manager’ form.
  4. +
  5. In the tab ‘Users’, add the user you want to give access to.
  6. +
+
+
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Maintenance > Configuration > General Settings.
  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
  • +
+
+
+

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/maintenance 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-maintenance-base_maintenance_config/base_maintenance_config/views/res_config_settings.xml b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/views/res_config_settings.xml new file mode 100644 index 0000000..07e2fe6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/base_maintenance_config/views/res_config_settings.xml @@ -0,0 +1,43 @@ + + + + + res.config.settings + + + +
+

Maintenance

+
+
+
+
+
+
+ + General Settings + ir.actions.act_window + res.config.settings + form + inline + {'module' : 'maintenance'} + + +
diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/ARCHITECTURE.md new file mode 100644 index 0000000..47d68ed --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/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 Base_maintenance_config Module - base_maintenance_config + 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-maintenance-base_maintenance_config/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/CONFIGURATION.md new file mode 100644 index 0000000..ffb0b6d --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for base_maintenance_config. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/doc/FAQ.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/FAQ.md new file mode 100644 index 0000000..166b8f0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/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 base_maintenance_config or install in UI. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/doc/INSTALL.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/INSTALL.md new file mode 100644 index 0000000..523be87 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-base_maintenance_config" +# or +uv pip install odoo-bringout-oca-maintenance-base_maintenance_config" +``` diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/doc/MODELS.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/MODELS.md new file mode 100644 index 0000000..07e5f1e --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/MODELS.md @@ -0,0 +1,11 @@ +# Models + +Detected core models and extensions in base_maintenance_config. + +```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-maintenance-base_maintenance_config/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/OVERVIEW.md new file mode 100644 index 0000000..ca9bd4d --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: base_maintenance_config. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon base_maintenance_config +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/doc/REPORTS.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/doc/SECURITY.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/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-maintenance-base_maintenance_config/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/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-maintenance-base_maintenance_config/doc/USAGE.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/USAGE.md new file mode 100644 index 0000000..4af914e --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/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 base_maintenance_config +``` diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_config/pyproject.toml b/odoo-bringout-oca-maintenance-base_maintenance_config/pyproject.toml new file mode 100644 index 0000000..4e14e80 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_config/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-base_maintenance_config" +version = "16.0.0" +description = "Maintenance Settings - Provides general settings for the Maintenance App" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["base_maintenance_config"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/README.md b/odoo-bringout-oca-maintenance-base_maintenance_group/README.md new file mode 100644 index 0000000..6b238e9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/README.md @@ -0,0 +1,44 @@ +# Maintenance Groups + +Odoo addon: base_maintenance_group + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-base_maintenance_group +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Groups +- **Version**: 16.0.1.0.0 +- **Category**: Maintenance +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `base_maintenance_group`. + +## 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 +- 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-maintenance-base_maintenance_group/base_maintenance_group/README.rst b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/README.rst new file mode 100644 index 0000000..97270e8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/README.rst @@ -0,0 +1,98 @@ +================== +Maintenance Groups +================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:7c718a98ca46c4a655437411ed50024b0c76f69f839b6141348a6b6a859f5696 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/base_maintenance_group + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-base_maintenance_group + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides a security group category 'Maintenance' with two new user +groups: + +- 'User' +- 'Full Access'. + +The user group 'Equipment Manager', already provided by the standard Odoo, +will also be listed in the group category 'Maintenance'. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Assign any of the Maintenance groups ('User' or 'Equipment Manager' or +'Full Access') to the users, in order to enable the maintenance menus. + +To do so, you need to: + +#. Go on 'Settings' -> 'Users & Companies' -> 'Users'. +#. Create a new user or select an already existing one. +#. In the tab 'Access Rights', at the 'Application Accesses' paragraph, + set a group in the 'Maintenance' category. + +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 +~~~~~~~~~~~~ + +* Antonio Esposito +* Andrea Stirpe +* Luisa Miguéns + +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/maintenance `_ 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-maintenance-base_maintenance_group/base_maintenance_group/__init__.py b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/__init__.py new file mode 100644 index 0000000..ef5ae35 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/__init__.py @@ -0,0 +1 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/__manifest__.py b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/__manifest__.py new file mode 100644 index 0000000..0d30cac --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2017-2019 Onestein () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Groups", + "summary": "Provides base access groups for the Maintenance App", + "author": "Onestein, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "category": "Maintenance", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "depends": ["maintenance"], + "data": [ + "data/maintenance_data.xml", + "security/maintenance_security.xml", + "menuitems.xml", + ], +} diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/data/maintenance_data.xml b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/data/maintenance_data.xml new file mode 100644 index 0000000..8805b95 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/data/maintenance_data.xml @@ -0,0 +1,9 @@ + + + + + Maintenance + 103 + + diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/base_maintenance_group.pot b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/base_maintenance_group.pot new file mode 100644 index 0000000..8f7ba3b --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/base_maintenance_group.pot @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_group +# +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: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_manager +msgid "Full Access" +msgstr "" + +#. module: base_maintenance_group +#: model:ir.module.category,name:base_maintenance_group.module_maintenance +msgid "Maintenance" +msgstr "" + +#. module: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_user +msgid "User" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/bs.po b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/bs.po new file mode 100644 index 0000000..54f5f71 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/bs.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_group +# +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: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_manager +msgid "Full Access" +msgstr "Puni pristup" + +#. module: base_maintenance_group +#: model:ir.module.category,name:base_maintenance_group.module_maintenance +msgid "Maintenance" +msgstr "Održavanje" + +#. module: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_user +msgid "User" +msgstr "Korisnik" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/es.po b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/es.po new file mode 100644 index 0000000..c0901b2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/es.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-22 23:09+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: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_manager +msgid "Full Access" +msgstr "Acceso total" + +#. module: base_maintenance_group +#: model:ir.module.category,name:base_maintenance_group.module_maintenance +msgid "Maintenance" +msgstr "Mantenimiento" + +#. module: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_user +msgid "User" +msgstr "Usuario" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/it.po b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/it.po new file mode 100644 index 0000000..8cc3d8a --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/it.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-23 15:49+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.3.2\n" + +#. module: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_manager +msgid "Full Access" +msgstr "Accesso completo" + +#. module: base_maintenance_group +#: model:ir.module.category,name:base_maintenance_group.module_maintenance +msgid "Maintenance" +msgstr "Manutenzione" + +#. module: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_user +msgid "User" +msgstr "Utente" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/pt_BR.po b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/pt_BR.po new file mode 100644 index 0000000..71fac0d --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/pt_BR.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-06-23 22:10+0000\n" +"Last-Translator: Fernando Colus \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 3.10\n" + +#. module: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_manager +msgid "Full Access" +msgstr "Acesso Total" + +#. module: base_maintenance_group +#: model:ir.module.category,name:base_maintenance_group.module_maintenance +msgid "Maintenance" +msgstr "Manutenção" + +#. module: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_user +msgid "User" +msgstr "Usuário" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/sk.po b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/sk.po new file mode 100644 index 0000000..e51c44e --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/i18n/sk.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_maintenance_group +# +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: 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: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_manager +msgid "Full Access" +msgstr "" + +#. module: base_maintenance_group +#: model:ir.module.category,name:base_maintenance_group.module_maintenance +msgid "Maintenance" +msgstr "" + +#. module: base_maintenance_group +#: model:res.groups,name:base_maintenance_group.group_maintenance_user +msgid "User" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/menuitems.xml b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/menuitems.xml new file mode 100644 index 0000000..a9add3a --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/menuitems.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..bacb807 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Antonio Esposito +* Andrea Stirpe +* Luisa Miguéns diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/readme/DESCRIPTION.rst new file mode 100644 index 0000000..2890d83 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/readme/DESCRIPTION.rst @@ -0,0 +1,8 @@ +This module provides a security group category 'Maintenance' with two new user +groups: + +- 'User' +- 'Full Access'. + +The user group 'Equipment Manager', already provided by the standard Odoo, +will also be listed in the group category 'Maintenance'. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/readme/USAGE.rst b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/readme/USAGE.rst new file mode 100644 index 0000000..8ff2c54 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/readme/USAGE.rst @@ -0,0 +1,9 @@ +Assign any of the Maintenance groups ('User' or 'Equipment Manager' or +'Full Access') to the users, in order to enable the maintenance menus. + +To do so, you need to: + +#. Go on 'Settings' -> 'Users & Companies' -> 'Users'. +#. Create a new user or select an already existing one. +#. In the tab 'Access Rights', at the 'Application Accesses' paragraph, + set a group in the 'Maintenance' category. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/security/maintenance_security.xml b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/security/maintenance_security.xml new file mode 100644 index 0000000..95bc2a8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/security/maintenance_security.xml @@ -0,0 +1,52 @@ + + + + + + User + + + + + + + + Full Access + + + + + + + + Only Subscribe Maintenance Team + + + [('member_ids', 'in', [user.id])] + + + + + + + All Maintenance Team + + + [(1, '=', 1)] + + + + + + + diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/static/description/icon.png b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/static/description/index.html b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/static/description/index.html new file mode 100644 index 0000000..562220f --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/base_maintenance_group/static/description/index.html @@ -0,0 +1,443 @@ + + + + + + +Maintenance Groups + + + +
+

Maintenance Groups

+ + +

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

+

This module provides a security group category ‘Maintenance’ with two new user +groups:

+
    +
  • ‘User’
  • +
  • ‘Full Access’.
  • +
+

The user group ‘Equipment Manager’, already provided by the standard Odoo, +will also be listed in the group category ‘Maintenance’.

+

Table of contents

+ +
+

Usage

+

Assign any of the Maintenance groups (‘User’ or ‘Equipment Manager’ or +‘Full Access’) to the users, in order to enable the maintenance menus.

+

To do so, you need to:

+
    +
  1. Go on ‘Settings’ -> ‘Users & Companies’ -> ‘Users’.
  2. +
  3. Create a new user or select an already existing one.
  4. +
  5. In the tab ‘Access Rights’, at the ‘Application Accesses’ paragraph, +set a group in the ‘Maintenance’ category.
  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

+
    +
  • 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/maintenance 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-maintenance-base_maintenance_group/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/ARCHITECTURE.md new file mode 100644 index 0000000..16d44af --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/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 Base_maintenance_group Module - base_maintenance_group + 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-maintenance-base_maintenance_group/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/CONFIGURATION.md new file mode 100644 index 0000000..6f332cf --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for base_maintenance_group. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/doc/FAQ.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/FAQ.md new file mode 100644 index 0000000..106743e --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/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 base_maintenance_group or install in UI. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/doc/INSTALL.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/INSTALL.md new file mode 100644 index 0000000..e2b1a89 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-base_maintenance_group" +# or +uv pip install odoo-bringout-oca-maintenance-base_maintenance_group" +``` diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/doc/MODELS.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/MODELS.md new file mode 100644 index 0000000..df77bdc --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/MODELS.md @@ -0,0 +1,11 @@ +# Models + +Detected core models and extensions in base_maintenance_group. + +```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-maintenance-base_maintenance_group/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/OVERVIEW.md new file mode 100644 index 0000000..712d5d4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: base_maintenance_group. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon base_maintenance_group +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/doc/REPORTS.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/doc/SECURITY.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/SECURITY.md new file mode 100644 index 0000000..6e1c04a --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/SECURITY.md @@ -0,0 +1,66 @@ +# Security + +Access control and security definitions in base_maintenance_group. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[bosnian_translations.json](../bosnian_translations.json)** + - 1767 model access rules +- **[bosnian_translations_output.json](../bosnian_translations_output.json)** + - 414 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)** +- **[PACKAGES.md](../PACKAGES.md)** + - 298 model access rules +- **[README.md](../README.md)** + - 338 model access rules +- **[scripts](../scripts)** +- **[temp](../temp)** +- **[TRANSLATION_BS_SUMMARY.md](../TRANSLATION_BS_SUMMARY.md)** + - 225 model access rules + +## Record Rules + +Row-level security rules defined in: + +## Security Groups & Configuration + +Security groups and permissions defined in: +- **[maintenance_security.xml](../base_maintenance_group/security/maintenance_security.xml)** + - 3 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: +- **[maintenance_security.xml](../base_maintenance_group/security/maintenance_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-maintenance-base_maintenance_group/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/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-maintenance-base_maintenance_group/doc/USAGE.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/USAGE.md new file mode 100644 index 0000000..4950706 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/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 base_maintenance_group +``` diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-base_maintenance_group/pyproject.toml b/odoo-bringout-oca-maintenance-base_maintenance_group/pyproject.toml new file mode 100644 index 0000000..6ce75f7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-base_maintenance_group/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-base_maintenance_group" +version = "16.0.0" +description = "Maintenance Groups - Provides base access groups for the Maintenance App" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["base_maintenance_group"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_account/README.md b/odoo-bringout-oca-maintenance-maintenance_account/README.md new file mode 100644 index 0000000..6f04644 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/README.md @@ -0,0 +1,45 @@ +# Maintenance Account + +Odoo addon: maintenance_account + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_account +``` + +## Dependencies + +This addon depends on: +- maintenance_product +- account + +## Manifest Information + +- **Name**: Maintenance Account +- **Version**: 16.0.1.1.1 +- **Category**: Maintenance +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_account`. + +## 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 +- 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-maintenance-maintenance_account/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/ARCHITECTURE.md new file mode 100644 index 0000000..ff31bdf --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/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 Maintenance_account Module - maintenance_account + 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-maintenance-maintenance_account/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/CONFIGURATION.md new file mode 100644 index 0000000..09032e9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_account. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_account/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_account/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/DEPENDENCIES.md new file mode 100644 index 0000000..81f8012 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [maintenance_product](https://github.com/bringout/oca-technical) +- [account](https://github.com/bringout/oca-ocb-accounting/tree/b11fb50e2ed11eec1e305a0df730b49554c01199/odoo-bringout-oca-ocb-account) diff --git a/odoo-bringout-oca-maintenance-maintenance_account/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/FAQ.md new file mode 100644 index 0000000..bd374cf --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/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 maintenance_account or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_account/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/INSTALL.md new file mode 100644 index 0000000..9738691 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_account" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_account" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_account/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/MODELS.md new file mode 100644 index 0000000..9307633 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in maintenance_account. + +```mermaid +classDiagram + class account_move + class account_move_line + class maintenance_equipment +``` + +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-maintenance-maintenance_account/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/OVERVIEW.md new file mode 100644 index 0000000..dfc16f1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_account. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_account +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_account/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_account/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/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-maintenance-maintenance_account/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/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-maintenance-maintenance_account/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/USAGE.md new file mode 100644 index 0000000..5cadae7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/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 maintenance_account +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_account/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_account/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/README.rst b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/README.rst new file mode 100644 index 0000000..dad65c5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/README.rst @@ -0,0 +1,100 @@ +=================== +Maintenance Account +=================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:56d49297cf10a1df7a32e1fb0bf4444cb2c14784d3780ac38df3056c37f60e23 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_account + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_account + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module automatically creates the equipment when validating the purchase invoices. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +* Go to *Invoicing > Vendor > Bills* and create a new one with any product with the "Can be Maintenance" field checked. +* Confirm the invoice. +* A new equipment category linked to the product line has been created (if the product category did not already have one linked). +* A smart-button is displayed with the equipments created (as many equipments as the quantity of product lines are 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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* César Fernández Domínguez + +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza + * 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-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/maintenance `_ 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-maintenance-maintenance_account/maintenance_account/__init__.py b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/__manifest__.py new file mode 100644 index 0000000..5601fb0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Maintenance Account", + "version": "16.0.1.1.1", + "category": "Maintenance", + "website": "https://github.com/OCA/maintenance", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["maintenance_product", "account"], + "installable": True, + "data": [ + "views/maintenance_equipment_view.xml", + "views/account_move_view.xml", + ], + "maintainers": ["victoralmau"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/bs.po new file mode 100644 index 0000000..8a1a890 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/bs.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_account +# +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: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id +msgid "Equipment Category" +msgstr "Kategorija opreme" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_bank_statement_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_payment__equipment_count +msgid "Equipment Count" +msgstr "Equipment Broj" + +#. module: maintenance_account +#: model_terms:ir.ui.view,arch_db:maintenance_account.view_move_form +msgid "Equipment(s)" +msgstr "Equipment(s)" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_ids +msgid "Equipments" +msgstr "Oprema" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move +msgid "Journal Entry" +msgstr "Žurnal" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move_line +msgid "Journal Item" +msgstr "Stavka žurnala" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_id +msgid "Move" +msgstr "Kretanje" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_line_id +msgid "Move line" +msgstr "Potez line" diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/es.po new file mode 100644 index 0000000..9179c1c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/es.po @@ -0,0 +1,71 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_account +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-03-30 07:30+0000\n" +"PO-Revision-Date: 2023-07-06 20:08+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: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id +msgid "Equipment Category" +msgstr "Categoría de equipo" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_bank_statement_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_payment__equipment_count +msgid "Equipment Count" +msgstr "Total de equipos" + +#. module: maintenance_account +#: model_terms:ir.ui.view,arch_db:maintenance_account.view_move_form +msgid "Equipment(s)" +msgstr "Equipo(s)" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_ids +msgid "Equipments" +msgstr "Equipos" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move +msgid "Journal Entry" +msgstr "Asiento contable" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move_line +msgid "Journal Item" +msgstr "Apunte contable" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo de mantenimiento" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_id +msgid "Move" +msgstr "Asiento" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_line_id +msgid "Move line" +msgstr "Apunte" + +#. module: maintenance_account +#: model:ir.model.fields,help:maintenance_account.field_maintenance_equipment__move_id +msgid "The move of this entry line." +msgstr "El movimiento de esta línea de entrada." diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/it.po new file mode 100644 index 0000000..c4bab66 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/it.po @@ -0,0 +1,70 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_account +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-11-12 17:39+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: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id +msgid "Equipment Category" +msgstr "Categoria attrezzatura" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_bank_statement_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_payment__equipment_count +msgid "Equipment Count" +msgstr "Conteggio attrezzature" + +#. module: maintenance_account +#: model_terms:ir.ui.view,arch_db:maintenance_account.view_move_form +msgid "Equipment(s)" +msgstr "Attrezzatura(e)" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_ids +msgid "Equipments" +msgstr "Attrezzature" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move +msgid "Journal Entry" +msgstr "Registrazione contabile" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move_line +msgid "Journal Item" +msgstr "Movimento contabile" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_id +msgid "Move" +msgstr "Movimento" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_line_id +msgid "Move line" +msgstr "Riga movimento" + +#. module: maintenance_account +#: model:ir.model.fields,help:maintenance_account.field_maintenance_equipment__move_id +msgid "The move of this entry line." +msgstr "Il movimento per questa riga di registrazione." diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/maintenance_account.pot b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/maintenance_account.pot new file mode 100644 index 0000000..7f5a08d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/i18n/maintenance_account.pot @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_account +# +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: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id +msgid "Equipment Category" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_bank_statement_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_payment__equipment_count +msgid "Equipment Count" +msgstr "" + +#. module: maintenance_account +#: model_terms:ir.ui.view,arch_db:maintenance_account.view_move_form +msgid "Equipment(s)" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_ids +msgid "Equipments" +msgstr "" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_id +msgid "Move" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_line_id +msgid "Move line" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/models/__init__.py new file mode 100644 index 0000000..aeb7220 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/models/__init__.py @@ -0,0 +1,2 @@ +from . import account_move +from . import maintenance_equipment diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/models/account_move.py b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/models/account_move.py new file mode 100644 index 0000000..adabf4e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/models/account_move.py @@ -0,0 +1,134 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models +from odoo.tools import plaintext2html + + +class AccountMove(models.Model): + _inherit = "account.move" + + equipment_count = fields.Integer(compute="_compute_equipment_count") + + def _compute_equipment_count(self): + for item in self: + item.equipment_count = sum(item.mapped("line_ids.equipment_count")) + + def unlink(self): + items = self.env["maintenance.equipment"].search([("move_id", "in", self.ids)]) + items.write({"move_line_id": False, "move_id": False}) + return super().unlink() + + def action_post(self): + res = super().action_post() + # Prevent error if user does not have permission to create equipments + equipment_model = self.env["maintenance.equipment"].sudo() + for move in self.filtered(lambda r: r.is_purchase_document()): + for line in move.line_ids.filtered( + lambda x: ( + not x.equipment_ids + and x.product_id + and x.product_id.product_tmpl_id.maintenance_ok + ) + ): + if not line.equipment_category_id: + line._set_equipment_category() + # Create equipments + limit = int(line.quantity) + 1 + vals = line._prepare_equipment_vals() + equipment_ids = [] + for _i in range(1, limit): + equipment = equipment_model.with_company( + move.company_id, + ).create(vals.copy()) + equipment_ids.append((4, equipment.id)) + line.equipment_ids = equipment_ids + return res + + def action_view_equipments(self): + items = self.env["maintenance.equipment"].search([("move_id", "=", self.id)]) + action_dict = self.env["ir.actions.act_window"]._for_xml_id( + "maintenance.hr_equipment_action" + ) + if len(items) == 1: + res = self.env.ref("maintenance.hr_equipment_view_form", False) + action_dict["views"] = [(res and res.id or False, "form")] + action_dict["res_id"] = items.id + elif items: + action_dict["domain"] = [("id", "in", items.ids)] + else: + action_dict = {"type": "ir.actions.act_window_close"} + return action_dict + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + equipment_category_id = fields.Many2one( + comodel_name="maintenance.equipment.category", + string="Equipment Category", + compute="_compute_equipment_category_id", + store=True, + readonly=False, + ) + equipment_ids = fields.Many2many( + comodel_name="maintenance.equipment", + string="Equipments", + ) + equipment_count = fields.Integer(compute="_compute_equipment_count") + + @api.depends("product_id") + def _compute_equipment_category_id(self): + for item in self: + if ( + item.product_id.maintenance_ok + and item.product_id.product_tmpl_id.categ_id.equipment_category_ids + ): + item.equipment_category_id = fields.first( + item.product_id.product_tmpl_id.categ_id.equipment_category_ids + ) + else: + item.equipment_category_id = item.equipment_category_id + + def _compute_equipment_count(self): + data = self.env["maintenance.equipment"].read_group( + [("move_line_id", "in", self.ids)], ["move_line_id"], ["move_line_id"] + ) + mapping = {x["move_line_id"][0]: x["move_line_id_count"] for x in data} + for item in self: + item.equipment_count = mapping.get(item.id, 0) + + def _prepare_equipment_category_vals(self): + categ = self.product_id.product_tmpl_id.categ_id + return {"name": categ.name, "product_category_id": categ.id} + + def _set_equipment_category(self): + if not self.equipment_category_id: + category_model = self.env["maintenance.equipment.category"].sudo() + category = fields.first( + self.product_id.product_tmpl_id.categ_id.equipment_category_ids + ) + if not category: + category = category_model.create( + self._prepare_equipment_category_vals() + ) + self.equipment_category_id = category.id + + def _prepare_equipment_vals(self): + equipment_name = self.name + description = False + if "\n" in self.name: + lf_index = self.name.index("\n") + equipment_name = self.name[:lf_index] + description = plaintext2html(self.name[lf_index + 1 :]) + return { + "move_line_id": self.id, + "name": equipment_name, + "product_id": self.product_id.id, + "category_id": self.equipment_category_id.id, + "assign_date": self.move_id.date, + "effective_date": self.move_id.date, + "partner_id": self.move_id.partner_id.id, + "partner_ref": self.move_id.ref, + "note": description, + } diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/models/maintenance_equipment.py new file mode 100644 index 0000000..f1eca2c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/models/maintenance_equipment.py @@ -0,0 +1,19 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + move_id = fields.Many2one( + comodel_name="account.move", + related="move_line_id.move_id", + string="Move", + readonly=True, + ) + move_line_id = fields.Many2one( + comodel_name="account.move.line", + string="Move line", + readonly=True, + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..df91a8d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/readme/CONTRIBUTORS.rst @@ -0,0 +1,7 @@ +* César Fernández Domínguez + +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza + * Carolina Fernandez diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/readme/DESCRIPTION.rst new file mode 100644 index 0000000..cb5ff77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module automatically creates the equipment when validating the purchase invoices. diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/readme/USAGE.rst b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/readme/USAGE.rst new file mode 100644 index 0000000..8e3ffd0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/readme/USAGE.rst @@ -0,0 +1,6 @@ +To use this module, you need to: + +* Go to *Invoicing > Vendor > Bills* and create a new one with any product with the "Can be Maintenance" field checked. +* Confirm the invoice. +* A new equipment category linked to the product line has been created (if the product category did not already have one linked). +* A smart-button is displayed with the equipments created (as many equipments as the quantity of product lines are created). diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/static/description/index.html new file mode 100644 index 0000000..5e15cb3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/static/description/index.html @@ -0,0 +1,442 @@ + + + + + +Maintenance Account + + + +
+

Maintenance Account

+ + +

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

+

This module automatically creates the equipment when validating the purchase invoices.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  • Go to Invoicing > Vendor > Bills and create a new one with any product with the “Can be Maintenance” field checked.
  • +
  • Confirm the invoice.
  • +
  • A new equipment category linked to the product line has been created (if the product category did not already have one linked).
  • +
  • A smart-button is displayed with the equipments created (as many equipments as the quantity of product lines are 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

+
    +
  • 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:

+

victoralmau

+

This module is part of the OCA/maintenance 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-maintenance-maintenance_account/maintenance_account/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/tests/__init__.py new file mode 100644 index 0000000..6fefd88 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) + +from . import test_maintenance_account diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/tests/test_maintenance_account.py b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/tests/test_maintenance_account.py new file mode 100644 index 0000000..9e4f31b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/tests/test_maintenance_account.py @@ -0,0 +1,138 @@ +# Copyright 2022-2024 Tecnativa - Víctor Martínez +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) + +from odoo import fields +from odoo.tests import Form, common, new_test_user, tagged +from odoo.tests.common import users + +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + + +@tagged("-at_install", "post_install") +class TestAccountMove(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + if not cls.env.company.chart_template_id: + # Load a CoA if there's none in current company + coa = cls.env.ref("l10n_generic_coa.configurable_chart_template", False) + if not coa: + # Load the first available CoA + coa = cls.env["account.chart.template"].search( + [("visible", "=", True)], limit=1 + ) + coa.try_loading(company=cls.env.company, install_demo=False) + new_test_user( + cls.env, login="test-account-user", groups="account.group_account_invoice" + ) + cls.categ = cls.env["product.category"].create({"name": "Test category"}) + cls.product_a = cls.env["product.product"].create( + {"name": "Test product A", "maintenance_ok": True, "categ_id": cls.categ.id} + ) + cls.product_b = cls.env["product.product"].create( + {"name": "Test product B", "categ_id": cls.categ.id} + ) + cls.account_payable = cls.env["account.account"].create( + { + "name": "Test Account", + "code": "TEST", + "account_type": "liability_payable", + "reconcile": True, + } + ) + cls.account_expense = cls.env["account.account"].create( + { + "name": "Test Account", + "code": "ACC", + "account_type": "expense", + } + ) + cls.journal = cls.env["account.journal"].create( + { + "name": "Test purchase journal", + "type": "purchase", + "code": "TEST-PURCHASE", + } + ) + cls.partner = cls.env["res.partner"].create( + { + "name": "Test partner", + } + ) + + def _create_invoice(self, move_type="in_invoice"): + move_form = Form( + self.env["account.move"].with_context(default_move_type=move_type) + ) + move_form.partner_id = self.partner + move_form.ref = "SUPPLIE-REF" + move_form.invoice_date = fields.Date.from_string("2000-01-01") + with move_form.invoice_line_ids.new() as line_form: + line_form.product_id = self.product_a + line_form.name = "Product A\nTest description product A\nB" + line_form.quantity = 2 + with move_form.invoice_line_ids.new() as line_form: + line_form.product_id = self.product_b + line_form.quantity = 2 + invoice = move_form.save() + return invoice + + @users("test-account-user") + def test_invoice_out_invoice_action_post_equipment_1(self): + invoice = self._create_invoice("out_invoice") + line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) + line_b = invoice.line_ids.filtered(lambda x: x.product_id == self.product_b) + self.assertFalse(line_a.equipment_category_id) + self.assertFalse(line_b.equipment_category_id) + invoice.action_post() + equipments = invoice.mapped("line_ids.equipment_ids") + self.assertEqual(len(equipments), 0) + + @users("test-account-user") + def test_invoice_action_post_equipment_1(self): + invoice = self._create_invoice() + line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) + line_b = invoice.line_ids.filtered(lambda x: x.product_id == self.product_b) + self.assertFalse(line_a.equipment_category_id) + self.assertFalse(line_b.equipment_category_id) + invoice.action_post() + equipments = invoice.mapped("line_ids.equipment_ids") + self.assertEqual(len(equipments), 2) + self.assertTrue(line_a.equipment_category_id) + self.assertEqual(len(line_a.equipment_ids), 2) + self.assertEqual(len(line_b.equipment_ids), 0) + equipment = fields.first(equipments) + self.assertEqual(equipment.name, "Product A") + self.assertEqual(equipment.note, "

Test description product A
B

") + self.assertEqual(equipment.category_id.product_category_id, self.categ) + self.assertEqual(equipment.assign_date, invoice.date) + self.assertEqual(equipment.effective_date, invoice.date) + self.assertEqual(equipment.partner_id, self.partner) + self.assertEqual(equipment.partner_ref, invoice.ref) + + @users("test-account-user") + def test_invoice_action_post_equipment_1_multi_lines(self): + self.product_b.maintenance_ok = True + invoice = self._create_invoice() + line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) + line_b = invoice.line_ids.filtered(lambda x: x.product_id == self.product_b) + invoice.action_post() + equipments = invoice.mapped("line_ids.equipment_ids") + self.assertEqual(len(equipments.mapped("category_id")), 1) + self.assertEqual(line_a.equipment_category_id, line_b.equipment_category_id) + + @users("test-account-user") + def test_invoice_action_post_equipment_2(self): + category = ( + self.env["maintenance.equipment.category"] + .sudo() + .create({"name": self.categ.name, "product_category_id": self.categ.id}) + ) + invoice = self._create_invoice() + line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) + self.assertEqual(line_a.equipment_category_id, category) + invoice.action_post() + equipment = fields.first(line_a.equipment_ids) + self.assertEqual(equipment.category_id, category) diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/views/account_move_view.xml b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/views/account_move_view.xml new file mode 100644 index 0000000..6c5d699 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/views/account_move_view.xml @@ -0,0 +1,59 @@ + + + + account.move.form + account.move + + + + + + + + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/views/maintenance_equipment_view.xml b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/views/maintenance_equipment_view.xml new file mode 100644 index 0000000..c953986 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/maintenance_account/views/maintenance_equipment_view.xml @@ -0,0 +1,13 @@ + + + + equipment.form + maintenance.equipment + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_account/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_account/pyproject.toml new file mode 100644 index 0000000..2ecee39 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_account/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_account" +version = "16.0.0" +description = "Maintenance Account - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance_product>=16.0.0", + "odoo-bringout-oca-ocb-account>=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 = ["maintenance_account"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/README.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/README.md new file mode 100644 index 0000000..7e352e5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/README.md @@ -0,0 +1,44 @@ +# Maintenance Equipment Category Hierarchy + +Odoo addon: maintenance_equipment_category_hierarchy + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Equipment Category Hierarchy +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_category_hierarchy`. + +## 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 +- 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-maintenance-maintenance_equipment_category_hierarchy/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/ARCHITECTURE.md new file mode 100644 index 0000000..53301a8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/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 Maintenance_equipment_category_hierarchy Module - maintenance_equipment_category_hierarchy + 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-maintenance-maintenance_equipment_category_hierarchy/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/CONFIGURATION.md new file mode 100644 index 0000000..b4b127d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_equipment_category_hierarchy. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/FAQ.md new file mode 100644 index 0000000..a33c533 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/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 maintenance_equipment_category_hierarchy or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/INSTALL.md new file mode 100644 index 0000000..01cd79b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/MODELS.md new file mode 100644 index 0000000..a1ace6c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in maintenance_equipment_category_hierarchy. + +```mermaid +classDiagram + class maintenance_equipment_category +``` + +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-maintenance-maintenance_equipment_category_hierarchy/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/OVERVIEW.md new file mode 100644 index 0000000..bc64ddf --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_equipment_category_hierarchy. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_equipment_category_hierarchy +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/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-maintenance-maintenance_equipment_category_hierarchy/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/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-maintenance-maintenance_equipment_category_hierarchy/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/USAGE.md new file mode 100644 index 0000000..ef8630c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/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 maintenance_equipment_category_hierarchy +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/README.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/README.rst new file mode 100644 index 0000000..e17d280 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/README.rst @@ -0,0 +1,78 @@ +======================================== +Maintenance Equipment Category Hierarchy +======================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:56e884ba5b2eea18cd6f4523883ccb62ec04a894f0a23db188c986f892565ddc + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_category_hierarchy + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_category_hierarchy + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + + +**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 +~~~~~~~ + +* CreuBlanca + +Contributors +~~~~~~~~~~~~ + +* Enric Tobella +* Jaime Arroyo +* Olga Marco +* Kevin Luna + +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/maintenance `_ 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-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/__manifest__.py new file mode 100644 index 0000000..06e8ca8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Equipment Category Hierarchy", + "summary": """ + Equipment Categories Hierarchy""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "CreuBlanca, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance"], + "data": ["views/maintenance_equipment_category.xml"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/bs.po new file mode 100644 index 0000000..8577977 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/bs.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_category_hierarchy +# +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: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__child_id +msgid "Child Categories" +msgstr "Podkategorije" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__complete_name +msgid "Complete Name" +msgstr "Puni naziv" + +#. module: maintenance_equipment_category_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_category_hierarchy/models/maintenance_equipment_category.py:0 +#, python-format +msgid "Error ! You cannot create recursive categories." +msgstr "Greška! Ne možete kreirati rekurzivne kategorije." + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model,name:maintenance_equipment_category_hierarchy.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "Kategorija opreme za održavanje" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_id +msgid "Parent Category" +msgstr "Izvorna kategorija" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_path +msgid "Parent Path" +msgstr "Putanja nadređenih" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/es.po new file mode 100644 index 0000000..067b510 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/es.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_category_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-12 12:05+0000\n" +"PO-Revision-Date: 2019-12-12 13:06+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: \n" +"X-Generator: Poedit 2.0.6\n" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__child_id +msgid "Child Categories" +msgstr "Categorías hijas" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__complete_name +msgid "Complete Name" +msgstr "Nombre completo" + +#. module: maintenance_equipment_category_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_category_hierarchy/models/maintenance_equipment_category.py:0 +#, python-format +msgid "Error ! You cannot create recursive categories." +msgstr "Error ! No se pueden crear categorías cíclicas." + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model,name:maintenance_equipment_category_hierarchy.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_id +msgid "Parent Category" +msgstr "Categoría Padre" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_path +msgid "Parent Path" +msgstr "" + +#~ msgid "Asset Category" +#~ msgstr "Categoría de activo" + +#~ msgid "Left Parent" +#~ msgstr "Padre izquierdo" + +#~ msgid "Parent Categories" +#~ msgstr "Categorías Padre" + +#~ msgid "Right Parent" +#~ msgstr "Padre derecho" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/fr.po b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/fr.po new file mode 100644 index 0000000..8266a5a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/fr.po @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_category_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-06-18 12:02+0000\n" +"Last-Translator: Yann Papouin \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.17\n" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__child_id +msgid "Child Categories" +msgstr "Catégories enfants" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__complete_name +msgid "Complete Name" +msgstr "Nom complet" + +#. module: maintenance_equipment_category_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_category_hierarchy/models/maintenance_equipment_category.py:0 +#, python-format +msgid "Error ! You cannot create recursive categories." +msgstr "Erreur ! Vous ne pouvez pas créer de catégories récursives." + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model,name:maintenance_equipment_category_hierarchy.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "Catégorie d'équipment de maintenance" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_id +msgid "Parent Category" +msgstr "Catégorie parente" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_path +msgid "Parent Path" +msgstr "Chemin parent" + +#~ msgid "Display Name" +#~ msgstr "Nom affiché" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Dernière modification le" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/it.po new file mode 100644 index 0000000..4d41d26 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/it.po @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_category_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-02-16 17:45+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: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__child_id +msgid "Child Categories" +msgstr "Categorie figlie" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__complete_name +msgid "Complete Name" +msgstr "Nome completo" + +#. module: maintenance_equipment_category_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_category_hierarchy/models/maintenance_equipment_category.py:0 +#, python-format +msgid "Error ! You cannot create recursive categories." +msgstr "Errore! Non è possibile creare categorie ricorsive." + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model,name:maintenance_equipment_category_hierarchy.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "Categoria attrezzatura menutenzione" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_id +msgid "Parent Category" +msgstr "Categoria padre" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_path +msgid "Parent Path" +msgstr "Percorso padre" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/maintenance_equipment_category_hierarchy.pot b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/maintenance_equipment_category_hierarchy.pot new file mode 100644 index 0000000..5e6e3e6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/i18n/maintenance_equipment_category_hierarchy.pot @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_category_hierarchy +# +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: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__child_id +msgid "Child Categories" +msgstr "" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__complete_name +msgid "Complete Name" +msgstr "" + +#. module: maintenance_equipment_category_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_category_hierarchy/models/maintenance_equipment_category.py:0 +#, python-format +msgid "Error ! You cannot create recursive categories." +msgstr "" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model,name:maintenance_equipment_category_hierarchy.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_id +msgid "Parent Category" +msgstr "" + +#. module: maintenance_equipment_category_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_category_hierarchy.field_maintenance_equipment_category__parent_path +msgid "Parent Path" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/models/__init__.py new file mode 100644 index 0000000..da842f6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/models/__init__.py @@ -0,0 +1 @@ +from . import maintenance_equipment_category diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/models/maintenance_equipment_category.py b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/models/maintenance_equipment_category.py new file mode 100644 index 0000000..48b14af --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/models/maintenance_equipment_category.py @@ -0,0 +1,48 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class MaintenanceEquipmentCategory(models.Model): + + _inherit = "maintenance.equipment.category" + + _parent_name = "parent_id" + _parent_store = True + _parent_order = "name" + _rec_name = "complete_name" + _order = "parent_id" + + complete_name = fields.Char( + compute="_compute_complete_name", store=True, recursive=True + ) + + parent_id = fields.Many2one( + "maintenance.equipment.category", + "Parent Category", + index=True, + ondelete="cascade", + ) + child_id = fields.One2many( + "maintenance.equipment.category", "parent_id", "Child Categories" + ) + parent_path = fields.Char(index=True, unaccent=False) + + @api.depends("name", "parent_id.complete_name") + def _compute_complete_name(self): + for category in self: + if category.parent_id: + category.complete_name = "{} / {}".format( + category.parent_id.complete_name, + category.name, + ) + else: + category.complete_name = category.name + + @api.constrains("parent_id") + def _check_category_recursion(self): + if not self._check_recursion(): + raise ValidationError(_("Error ! You cannot create recursive categories.")) + return True diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..6b17bf9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* Enric Tobella +* Jaime Arroyo +* Olga Marco +* Kevin Luna diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/readme/DESCRIPTION.rst new file mode 100644 index 0000000..e69de29 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/static/description/index.html new file mode 100644 index 0000000..c88a96a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/static/description/index.html @@ -0,0 +1,425 @@ + + + + + +Maintenance Equipment Category Hierarchy + + + +
+

Maintenance Equipment Category Hierarchy

+ + +

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

+

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

+
    +
  • CreuBlanca
  • +
+
+
+

Contributors

+
    +
  • Enric Tobella
  • +
  • Jaime Arroyo
  • +
  • Olga Marco
  • +
  • Kevin Luna
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/tests/__init__.py new file mode 100644 index 0000000..6289c88 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_category diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/tests/test_maintenance_category.py b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/tests/test_maintenance_category.py new file mode 100644 index 0000000..4e38f7b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/tests/test_maintenance_category.py @@ -0,0 +1,21 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.exceptions import UserError +from odoo.tests.common import TransactionCase + + +class TestMaintenanceCategory(TransactionCase): + def setUp(self): + super().setUp() + self.category_1 = self.env["maintenance.equipment.category"].create( + {"name": "C1"} + ) + self.category_2 = self.env["maintenance.equipment.category"].create( + {"name": "C2", "parent_id": self.category_1.id} + ) + + def test_maintenance_category(self): + self.assertEqual(self.category_2.complete_name, "C1 / C2") + with self.assertRaises(UserError): + self.category_1.write({"parent_id": self.category_2.id}) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/views/maintenance_equipment_category.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/views/maintenance_equipment_category.xml new file mode 100644 index 0000000..e0910e5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/maintenance_equipment_category_hierarchy/views/maintenance_equipment_category.xml @@ -0,0 +1,42 @@ + + + + + maintenance.equipment.category.tree (in maintenance_equipment_category_hierarchy) + maintenance.equipment.category + + + + + + + + + maintenance.equipment.category.form (in maintenance_equipment_category_hierarchy) + maintenance.equipment.category + + + + + + + + + + maintenance.request.search (in maintenance_location) + maintenance.request + + + + [('category_id', 'child_of', raw_value)] + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/pyproject.toml new file mode 100644 index 0000000..5476c73 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy" +version = "16.0.0" +description = "Maintenance Equipment Category Hierarchy - + Equipment Categories Hierarchy" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_equipment_category_hierarchy"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/README.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/README.md new file mode 100644 index 0000000..4c78045 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/README.md @@ -0,0 +1,44 @@ +# Maintenance equipment certification + +Odoo addon: maintenance_equipment_certification + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_certification +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance equipment certification +- **Version**: 16.0.1.0.0 +- **Category**: Human Resources +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_certification`. + +## 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 +- 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-maintenance-maintenance_equipment_certification/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/ARCHITECTURE.md new file mode 100644 index 0000000..23d0ec3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/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 Maintenance_equipment_certification Module - maintenance_equipment_certification + 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-maintenance-maintenance_equipment_certification/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/CONFIGURATION.md new file mode 100644 index 0000000..30ff4ed --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_equipment_certification. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/FAQ.md new file mode 100644 index 0000000..b8c720d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/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 maintenance_equipment_certification or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/INSTALL.md new file mode 100644 index 0000000..a1b8051 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_certification" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_certification" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/MODELS.md new file mode 100644 index 0000000..749853b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in maintenance_equipment_certification. + +```mermaid +classDiagram + class maintenance_equipment_certificate + class maintenance_equipment +``` + +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-maintenance-maintenance_equipment_certification/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/OVERVIEW.md new file mode 100644 index 0000000..f8fa8a3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_equipment_certification. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_equipment_certification +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/SECURITY.md new file mode 100644 index 0000000..d269b07 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in maintenance_equipment_certification. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../maintenance_equipment_certification/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](../maintenance_equipment_certification/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-maintenance-maintenance_equipment_certification/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/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-maintenance-maintenance_equipment_certification/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/USAGE.md new file mode 100644 index 0000000..b1546e2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/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 maintenance_equipment_certification +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/README.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/README.rst new file mode 100644 index 0000000..ba79e4a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/README.rst @@ -0,0 +1,94 @@ +=================================== +Maintenance equipment certification +=================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:73d6dedecc9753187ee8d4627069ea90fe0ec5baf550af7b0d0208b7134ce46b + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_certification + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_certification + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Allows you to store a record of the certifications associated with a piece of +equipment. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +* Got to **Maintenance > Equipment** menu. +* Open any equipment. +* You will see a Certification 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 +~~~~~~~ + +* Trey (www.trey.es) + +Contributors +~~~~~~~~~~~~ + +* `Trey `_: + + * Vicent Cubells + +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-cubells| image:: https://github.com/cubells.png?size=40px + :target: https://github.com/cubells + :alt: cubells + +Current `maintainer `__: + +|maintainer-cubells| + +This module is part of the `OCA/maintenance `_ 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-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/__manifest__.py new file mode 100644 index 0000000..c16a658 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2025 Trey, Kilobytes de Soluciones - Vicent Cubells +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Maintenance equipment certification", + "summary": "Add to store certifications associated with a equipment.", + "category": "Human Resources", + "version": "16.0.1.0.0", + "author": "Trey (www.trey.es), Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "maintainers": ["cubells"], + "license": "AGPL-3", + "depends": [ + "maintenance", + ], + "data": [ + "security/ir.model.access.csv", + "views/maintenance_equipment_views.xml", + ], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/bs.po new file mode 100644 index 0000000..84efbf3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/bs.po @@ -0,0 +1,99 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_certification +# +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: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_file +msgid "Certificate" +msgstr "Certificate" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_filename +msgid "Certificate file name" +msgstr "Certificate file name" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment__certificate_ids +msgid "Certificates" +msgstr "Certificates" + +#. module: maintenance_equipment_certification +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_certification.hr_equipment_view_form +msgid "Certifications" +msgstr "Certifikacije" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__date +msgid "Date" +msgstr "Datum" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__equipment_id +msgid "Equipment" +msgstr "Oprema" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: maintenance_equipment_certification +#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_equipment_certification +#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment_certificate +msgid "Maintenance equipment certificate" +msgstr "Maintenance equipment certificate" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__name +msgid "Name" +msgstr "Naziv:" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__notes +msgid "Notes" +msgstr "Zabilješke" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/es.po new file mode 100644 index 0000000..8ad46ad --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/es.po @@ -0,0 +1,103 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_certification +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-20 15:45+0000\n" +"PO-Revision-Date: 2025-05-20 17:48+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: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_file +msgid "Certificate" +msgstr "Certificado" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_filename +msgid "Certificate file name" +msgstr "Nombre del fichero del certificado" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment__certificate_ids +msgid "Certificates" +msgstr "Certificados" + +#. module: maintenance_equipment_certification +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_certification.hr_equipment_view_form +msgid "Certifications" +msgstr "Certificaciones" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__date +msgid "Date" +msgstr "Fecha" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__equipment_id +msgid "Equipment" +msgstr "Equipo" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__id +msgid "ID" +msgstr "Identificador" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_uid +msgid "Last Updated by" +msgstr "Última modificación por" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: maintenance_equipment_certification +#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo de mantenimiento" + +#. module: maintenance_equipment_certification +#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment_certificate +msgid "Maintenance equipment certificate" +msgstr "Certificado del equipo de mantenimiento" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__name +msgid "Name" +msgstr "Nombre" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__notes +msgid "Notes" +msgstr "Notas" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/it.po new file mode 100644 index 0000000..6179888 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/it.po @@ -0,0 +1,102 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_certification +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-06-04 10: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: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_file +msgid "Certificate" +msgstr "Certificato" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_filename +msgid "Certificate file name" +msgstr "Nome file certificato" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment__certificate_ids +msgid "Certificates" +msgstr "Certificati" + +#. module: maintenance_equipment_certification +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_certification.hr_equipment_view_form +msgid "Certifications" +msgstr "Certificati" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__date +msgid "Date" +msgstr "Data" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__equipment_id +msgid "Equipment" +msgstr "Attrezzatura" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: maintenance_equipment_certification +#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_equipment_certification +#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment_certificate +msgid "Maintenance equipment certificate" +msgstr "Certificato attrezzatura manutenzione" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__name +msgid "Name" +msgstr "Nome" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__notes +msgid "Notes" +msgstr "Note" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/maintenance_equipment_certification.pot b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/maintenance_equipment_certification.pot new file mode 100644 index 0000000..5ef0fbe --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/i18n/maintenance_equipment_certification.pot @@ -0,0 +1,99 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_certification +# +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: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_file +msgid "Certificate" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_filename +msgid "Certificate file name" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment__certificate_ids +msgid "Certificates" +msgstr "" + +#. module: maintenance_equipment_certification +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_certification.hr_equipment_view_form +msgid "Certifications" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_uid +msgid "Created by" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_date +msgid "Created on" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__date +msgid "Date" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__equipment_id +msgid "Equipment" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__id +msgid "ID" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate____last_update +msgid "Last Modified on" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_date +msgid "Last Updated on" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment_certificate +msgid "Maintenance equipment certificate" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__name +msgid "Name" +msgstr "" + +#. module: maintenance_equipment_certification +#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__notes +msgid "Notes" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/models/__init__.py new file mode 100644 index 0000000..5b46a54 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/models/__init__.py @@ -0,0 +1,2 @@ +from . import maintenance_equipment +from . import maintenance_equipment_certificate diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/models/maintenance_equipment.py new file mode 100644 index 0000000..7f5c7ee --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/models/maintenance_equipment.py @@ -0,0 +1,13 @@ +# Copyright 2025 Trey, Kilobytes de Soluciones - Vicent Cubells +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + certificate_ids = fields.One2many( + comodel_name="maintenance.equipment.certificate", + inverse_name="equipment_id", + string="Certificates", + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/models/maintenance_equipment_certificate.py b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/models/maintenance_equipment_certificate.py new file mode 100644 index 0000000..fef284d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/models/maintenance_equipment_certificate.py @@ -0,0 +1,22 @@ +# Copyright 2025 Trey, Kilobytes de Soluciones - Vicent Cubells +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class MaintenanceEquipmentCertificate(models.Model): + _name = "maintenance.equipment.certificate" + _description = "Maintenance equipment certificate" + + name = fields.Char() + notes = fields.Text() + date = fields.Date() + certificate_file = fields.Binary( + string="Certificate", + attachment=True, + ) + certificate_filename = fields.Char( + string="Certificate file name", + ) + equipment_id = fields.Many2one( + comodel_name="maintenance.equipment", + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..0a10eb6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Trey `_: + + * Vicent Cubells diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/readme/DESCRIPTION.rst new file mode 100644 index 0000000..4cd413b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +Allows you to store a record of the certifications associated with a piece of +equipment. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/readme/USAGE.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/readme/USAGE.rst new file mode 100644 index 0000000..f5a47b1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/readme/USAGE.rst @@ -0,0 +1,3 @@ +* Got to **Maintenance > Equipment** menu. +* Open any equipment. +* You will see a Certification tab. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/security/ir.model.access.csv b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/security/ir.model.access.csv new file mode 100644 index 0000000..6cfaec6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/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_equipment_certification_user,Certification user,model_maintenance_equipment_certificate,base.group_user,1,0,0,0 +access_equipment_certification_admin,Certification admin,model_maintenance_equipment_certificate,maintenance.group_equipment_manager,1,1,1,1 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/static/description/index.html new file mode 100644 index 0000000..111ebf8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/static/description/index.html @@ -0,0 +1,438 @@ + + + + + +Maintenance equipment certification + + + +
+

Maintenance equipment certification

+ + +

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

+

Allows you to store a record of the certifications associated with a piece of +equipment.

+

Table of contents

+ +
+

Usage

+
    +
  • Got to Maintenance > Equipment menu.
  • +
  • Open any equipment.
  • +
  • You will see a Certification 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

+
    +
  • Trey (www.trey.es)
  • +
+
+
+

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:

+

cubells

+

This module is part of the OCA/maintenance 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-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/tests/__init__.py new file mode 100644 index 0000000..2dbc3e8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_equipment_certification diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/tests/test_maintenance_equipment_certification.py b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/tests/test_maintenance_equipment_certification.py new file mode 100644 index 0000000..7ff0289 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/tests/test_maintenance_equipment_certification.py @@ -0,0 +1,41 @@ +# Copyright 2025 Trey, Kilobytes de Soluciones - Vicent Cubells +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.exceptions import AccessError +from odoo.tests.common import TransactionCase + + +class TestMaintenanceEquipmentCertification(TransactionCase): + def setUp(self): + super().setUp() + self.equipment = self.env["maintenance.equipment"].create( + { + "name": "Test equipment", + } + ) + self.user_demo = self.env["res.users"].create( + { + "name": "Demo User", + "login": "Demo", + "email": "demo@user.com", + "groups_id": [ + (6, 0, [self.env.ref("base.group_user").id]), + ], + } + ) + + def test_user_with_no_permission(self): + """Test user with no permission can not modify equipment.""" + with self.assertRaises(AccessError): + self.equipment.with_user(self.user_demo).name = "Test equipment rename" + + def test_user_with_permission(self): + """Test user with permission can modify equipment.""" + self.user_demo.write( + { + "groups_id": [ + (6, 0, [self.env.ref("maintenance.group_equipment_manager").id]) + ], + } + ) + self.equipment.with_user(self.user_demo).name = "Test equipment rename" + self.assertEqual(self.equipment.name, "Test equipment rename") diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/views/maintenance_equipment_views.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/views/maintenance_equipment_views.xml new file mode 100644 index 0000000..60e5a06 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/maintenance_equipment_certification/views/maintenance_equipment_views.xml @@ -0,0 +1,27 @@ + + + + maintenance.equipment + + + + + + + + + + + + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_certification/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/pyproject.toml new file mode 100644 index 0000000..6128cd4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_certification/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_equipment_certification" +version = "16.0.0" +description = "Maintenance equipment certification - Add to store certifications associated with a equipment." +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_equipment_certification"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/README.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/README.md new file mode 100644 index 0000000..d3c9e0a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/README.md @@ -0,0 +1,45 @@ +# Maintenance Equipment Contract + +Odoo addon: maintenance_equipment_contract + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_contract +``` + +## Dependencies + +This addon depends on: +- contract +- base_maintenance + +## Manifest Information + +- **Name**: Maintenance Equipment Contract +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_contract`. + +## 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 +- 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-maintenance-maintenance_equipment_contract/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/ARCHITECTURE.md new file mode 100644 index 0000000..7329b56 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/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 Maintenance_equipment_contract Module - maintenance_equipment_contract + 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-maintenance-maintenance_equipment_contract/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/CONFIGURATION.md new file mode 100644 index 0000000..1079fb2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_equipment_contract. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/DEPENDENCIES.md new file mode 100644 index 0000000..4d5a385 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- contract +- [base_maintenance](https://github.com/bringout/oca-technical) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/FAQ.md new file mode 100644 index 0000000..937a73b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/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 maintenance_equipment_contract or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/INSTALL.md new file mode 100644 index 0000000..6262ca4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_contract" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_contract" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/MODELS.md new file mode 100644 index 0000000..6236d5d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in maintenance_equipment_contract. + +```mermaid +classDiagram + class contract_contract + class maintenance_equipment +``` + +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-maintenance-maintenance_equipment_contract/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/OVERVIEW.md new file mode 100644 index 0000000..3b35523 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_equipment_contract. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_equipment_contract +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/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-maintenance-maintenance_equipment_contract/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/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-maintenance-maintenance_equipment_contract/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/USAGE.md new file mode 100644 index 0000000..e2b8936 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/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 maintenance_equipment_contract +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/README.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/README.rst new file mode 100644 index 0000000..4b8275e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/README.rst @@ -0,0 +1,78 @@ +============================== +Maintenance Equipment Contract +============================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:012dbe851daa6bee2ba2641e1d26c43fed20bc878f4faf0d1ea1f2b9d6d5f201 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_contract + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_contract + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module links maintenance equipment with supplier contracts. +To link an equipment go to the contract's form and add it to the Equipments +field. + +**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 +~~~~~~~ + +* Creu Blanca + +Contributors +~~~~~~~~~~~~ + +* Jaime Arroyo + +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/maintenance `_ 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-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/__manifest__.py new file mode 100644 index 0000000..7a4c540 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Equipment Contract", + "summary": """ + Manage equipment contracts""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["contract", "base_maintenance"], + "data": ["views/contract_contract.xml", "views/maintenance_equipment.xml"], + "demo": ["demo/maintenance_equipment_contract_demo.xml"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/demo/maintenance_equipment_contract_demo.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/demo/maintenance_equipment_contract_demo.xml new file mode 100644 index 0000000..9023e89 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/demo/maintenance_equipment_contract_demo.xml @@ -0,0 +1,26 @@ + + + + + Equipment With A Contract + + + 26534/5436/2 + 532/54 + + + Contract Supplier + + 1 + + + Contract for an Equipment + + purchase + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/bs.po new file mode 100644 index 0000000..3c350a6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/bs.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_contract +# +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: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_contract_contract +msgid "Contract" +msgstr "Ugovor" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_count +msgid "Contract Count" +msgstr "Broj ugovora" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_ids +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_form +msgid "Contracts" +msgstr "Ugovori" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Doesn't have Contracts" +msgstr "Doesn't have Ugovors" + +#. module: maintenance_equipment_contract +#: model:maintenance.equipment,name:maintenance_equipment_contract.equipment_with_contract +msgid "Equipment With A Contract" +msgstr "Equipment With A Ugovor" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_contract_contract__equipment_ids +msgid "Equipments" +msgstr "Oprema" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Has Contracts" +msgstr "Has Ugovors" + +#. module: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/es.po new file mode 100644 index 0000000..446d9ba --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/es.po @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_contract +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-14 15:48+0000\n" +"Last-Translator: Enric Tobella \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: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_contract_contract +msgid "Contract" +msgstr "Contrato" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_count +msgid "Contract Count" +msgstr "# Contratos" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_ids +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_form +msgid "Contracts" +msgstr "Contratos" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Doesn't have Contracts" +msgstr "No tiene contratos" + +#. module: maintenance_equipment_contract +#: model:maintenance.equipment,name:maintenance_equipment_contract.equipment_with_contract +msgid "Equipment With A Contract" +msgstr "Equipamiento con contrato" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_contract_contract__equipment_ids +msgid "Equipments" +msgstr "Equipamientos" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Has Contracts" +msgstr "Tiene contratos" + +#. module: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipamiento" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/it.po new file mode 100644 index 0000000..ddc111e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/it.po @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_contract +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-13 11:10+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: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_contract_contract +msgid "Contract" +msgstr "Contratto" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_count +msgid "Contract Count" +msgstr "Conteggio contratti" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_ids +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_form +msgid "Contracts" +msgstr "Contratti" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Doesn't have Contracts" +msgstr "Non ha contratti" + +#. module: maintenance_equipment_contract +#: model:maintenance.equipment,name:maintenance_equipment_contract.equipment_with_contract +msgid "Equipment With A Contract" +msgstr "Attrezzatura con un contratto" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_contract_contract__equipment_ids +msgid "Equipments" +msgstr "Attrezzature" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Has Contracts" +msgstr "Ha contratti" + +#. module: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/maintenance_equipment_contract.pot b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/maintenance_equipment_contract.pot new file mode 100644 index 0000000..9ca1eab --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/maintenance_equipment_contract.pot @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_contract +# +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: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_count +msgid "Contract Count" +msgstr "" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_ids +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_form +msgid "Contracts" +msgstr "" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Doesn't have Contracts" +msgstr "" + +#. module: maintenance_equipment_contract +#: model:maintenance.equipment,name:maintenance_equipment_contract.equipment_with_contract +msgid "Equipment With A Contract" +msgstr "" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_contract_contract__equipment_ids +msgid "Equipments" +msgstr "" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Has Contracts" +msgstr "" + +#. module: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/pt_BR.po b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/pt_BR.po new file mode 100644 index 0000000..980f635 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/i18n/pt_BR.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_contract +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-05-22 03:11+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: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_contract_contract +msgid "Contract" +msgstr "Contrato" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_count +msgid "Contract Count" +msgstr "Contador de Contratos" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_maintenance_equipment__contract_ids +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_form +msgid "Contracts" +msgstr "Contratos" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Doesn't have Contracts" +msgstr "Não possui contratos" + +#. module: maintenance_equipment_contract +#: model:maintenance.equipment,name:maintenance_equipment_contract.equipment_with_contract +msgid "Equipment With A Contract" +msgstr "Equipamento Com Um Contrato" + +#. module: maintenance_equipment_contract +#: model:ir.model.fields,field_description:maintenance_equipment_contract.field_contract_contract__equipment_ids +msgid "Equipments" +msgstr "Equipamentos" + +#. module: maintenance_equipment_contract +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_contract.hr_equipment_view_search +msgid "Has Contracts" +msgstr "Possui contratos" + +#. module: maintenance_equipment_contract +#: model:ir.model,name:maintenance_equipment_contract.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipamento de Manutenção" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/models/__init__.py new file mode 100644 index 0000000..0aa3e62 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/models/__init__.py @@ -0,0 +1,2 @@ +from . import contract_contract +from . import maintenance_equipment diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/models/contract_contract.py b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/models/contract_contract.py new file mode 100644 index 0000000..07967b7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/models/contract_contract.py @@ -0,0 +1,11 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ContractContract(models.Model): + + _inherit = "contract.contract" + + equipment_ids = fields.Many2many("maintenance.equipment", string="Equipments") diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/models/maintenance_equipment.py new file mode 100644 index 0000000..011903b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/models/maintenance_equipment.py @@ -0,0 +1,40 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class MaintenanceEquipment(models.Model): + + _inherit = "maintenance.equipment" + + contract_ids = fields.Many2many("contract.contract", string="Contracts") + contract_count = fields.Integer( + compute="_compute_contract_count", + ) + + @api.depends("contract_ids") + def _compute_contract_count(self): + for record in self: + record.contract_count = len(record.contract_ids.ids) + + def action_view_contracts(self): + action = self.env["ir.actions.act_window"]._for_xml_id( + "contract.action_customer_contract" + ) + if len(self.contract_ids) > 1: + action["domain"] = [("id", "in", self.contract_ids.ids)] + elif self.contract_ids: + action["views"] = [ + (self.env.ref("contract.contract_contract_form_view").id, "form") + ] + action["res_id"] = self.contract_ids.id + action["context"] = { + "default_equipment_ids": self.ids, + "is_contract": 1, + "search_default_not_finished": 1, + "search_default_recurring_invoices": 1, + "default_recurring_invoices": 1, + "default_contract_type": "purchase", + } + return action diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..e59d510 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Jaime Arroyo diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/readme/DESCRIPTION.rst new file mode 100644 index 0000000..2c1567c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module links maintenance equipment with supplier contracts. +To link an equipment go to the contract's form and add it to the Equipments +field. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/static/description/index.html new file mode 100644 index 0000000..02ed2c2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/static/description/index.html @@ -0,0 +1,423 @@ + + + + + + +Maintenance Equipment Contract + + + +
+

Maintenance Equipment Contract

+ + +

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

+

This module links maintenance equipment with supplier contracts. +To link an equipment go to the contract’s form and add it to the Equipments +field.

+

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

+
    +
  • Creu Blanca
  • +
+
+ +
+

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/maintenance 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-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/tests/__init__.py new file mode 100644 index 0000000..3def2f6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/tests/__init__.py @@ -0,0 +1 @@ +from . import test_equipment_contract diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/tests/test_equipment_contract.py b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/tests/test_equipment_contract.py new file mode 100644 index 0000000..9c5063e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/tests/test_equipment_contract.py @@ -0,0 +1,36 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestEquipmentContract(TransactionCase): + def setUp(self): + super().setUp() + self.partner = self.env["res.partner"].create({"name": "Test partner"}) + self.equipment_id = self.env["maintenance.equipment"].create( + {"name": "Equipment"} + ) + self.contract = self.env["contract.contract"].create( + { + "name": "Contract", + "partner_id": self.partner.id, + "equipment_ids": [(4, self.equipment_id.id)], + } + ) + + def test_equipment_contract(self): + self.assertEqual(self.equipment_id.contract_count, 1) + action = self.equipment_id.action_view_contracts() + self.assertEqual(action["res_id"], self.contract.id) + + self.env["contract.contract"].create( + { + "name": "Contract 2", + "partner_id": self.partner.id, + "equipment_ids": [(4, self.equipment_id.id)], + } + ) + self.assertEqual(self.equipment_id.contract_count, 2) + action = self.equipment_id.action_view_contracts() + self.assertIn("domain", action.keys()) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/views/contract_contract.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/views/contract_contract.xml new file mode 100644 index 0000000..f7021d7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/views/contract_contract.xml @@ -0,0 +1,33 @@ + + + + + contract.contract.form (in maintenance_equipment_contract) + contract.contract + + + + + + + + + contract.contract.search (in maintenance_equipment_contract) + contract.contract + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/views/maintenance_equipment.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/views/maintenance_equipment.xml new file mode 100644 index 0000000..73b240c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/maintenance_equipment_contract/views/maintenance_equipment.xml @@ -0,0 +1,47 @@ + + + + + maintenance.equipment.form (in maintenance_equipment_contract) + maintenance.equipment + + +
+ + +
+
+
+ + maintenance.equipment.search (in maintenance_equipment_contract) + maintenance.equipment + + + + + + + + + +
diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_contract/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/pyproject.toml new file mode 100644 index 0000000..9bfba0d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_contract/pyproject.toml @@ -0,0 +1,44 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_equipment_contract" +version = "16.0.0" +description = "Maintenance Equipment Contract - + Manage equipment contracts" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-contract>=16.0.0", + "odoo-bringout-oca-maintenance-base_maintenance>=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 = ["maintenance_equipment_contract"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/README.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/README.md new file mode 100644 index 0000000..c4aabba --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/README.md @@ -0,0 +1,44 @@ +# Maintenance Equipments Hierarchy + +Odoo addon: maintenance_equipment_hierarchy + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Equipments Hierarchy +- **Version**: 16.0.1.1.0 +- **Category**: Equipments, Assets, Internal Hardware, Allocation Tracking +- **License**: LGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_hierarchy`. + +## 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 +- 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-maintenance-maintenance_equipment_hierarchy/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/ARCHITECTURE.md new file mode 100644 index 0000000..7a6c63c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/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 Maintenance_equipment_hierarchy Module - maintenance_equipment_hierarchy + 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-maintenance-maintenance_equipment_hierarchy/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/CONFIGURATION.md new file mode 100644 index 0000000..23881c5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_equipment_hierarchy. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/FAQ.md new file mode 100644 index 0000000..d176201 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/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 maintenance_equipment_hierarchy or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/INSTALL.md new file mode 100644 index 0000000..899bedd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/MODELS.md new file mode 100644 index 0000000..d790312 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in maintenance_equipment_hierarchy. + +```mermaid +classDiagram + class maintenance_equipment +``` + +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-maintenance-maintenance_equipment_hierarchy/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/OVERVIEW.md new file mode 100644 index 0000000..fba3272 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_equipment_hierarchy. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_equipment_hierarchy +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/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-maintenance-maintenance_equipment_hierarchy/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/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-maintenance-maintenance_equipment_hierarchy/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/USAGE.md new file mode 100644 index 0000000..e5a9c7c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/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 maintenance_equipment_hierarchy +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/README.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/README.rst new file mode 100644 index 0000000..f1a96f4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/README.rst @@ -0,0 +1,86 @@ +================================ +Maintenance Equipments Hierarchy +================================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:df8f7913193eb911b9c6eea557052c5f1e0ed34b9e0a06bb3e9afff7e9d9ab89 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_hierarchy + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_hierarchy + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to manage a hierarchy of equipments. + +**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 +~~~~~~~~~~~~ + +* Adrià Gil Sorribes +* Jordi Ballester Alomar +* David Alonso + +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-dalonsod| image:: https://github.com/dalonsod.png?size=40px + :target: https://github.com/dalonsod + :alt: dalonsod + +Current `maintainer `__: + +|maintainer-dalonsod| + +This module is part of the `OCA/maintenance `_ 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-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/__manifest__.py new file mode 100644 index 0000000..32ad3e8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2020 ForgeFlow S.L. (https://forgeflow.com) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +{ + "name": "Maintenance Equipments Hierarchy", + "summary": "Manage equipment hierarchy", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "maintainers": ["dalonsod"], + "website": "https://github.com/OCA/maintenance", + "category": "Equipments, Assets, Internal Hardware, Allocation Tracking", + "version": "16.0.1.1.0", + "license": "LGPL-3", + "depends": ["maintenance"], + "data": ["views/maintenance_equipment_views.xml"], + "demo": ["data/demo_maintenance_equipment_hierarchy.xml"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/data/demo_maintenance_equipment_hierarchy.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/data/demo_maintenance_equipment_hierarchy.xml new file mode 100644 index 0000000..603d6e8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/data/demo_maintenance_equipment_hierarchy.xml @@ -0,0 +1,23 @@ + + + + HP Laptop battery + + + + + LP/303/28292090/BAT + 17-j059nr-bat + + + + HP Laptop case + + + + + LP/303/28292090/CAS + 17-j059nr-cas + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/bs.po new file mode 100644 index 0000000..306cc42 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/bs.po @@ -0,0 +1,81 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_hierarchy +# +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: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_ids +msgid "Child Equipments" +msgstr "Child Equipments" + +#. module: maintenance_equipment_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_hierarchy/models/maintenance_equipment.py:0 +#, python-format +msgid "Child equipment of %s" +msgstr "Child equipment of %s" + +#. module: maintenance_equipment_hierarchy +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_hierarchy.hr_equipment_view_form +msgid "Children" +msgstr "Podređeni" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__complete_name +msgid "Complete Name" +msgstr "Puni naziv" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_1 +msgid "HP Laptop battery" +msgstr "HP Laptop battery" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_2 +msgid "HP Laptop case" +msgstr "HP Laptop case" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_left +msgid "Left Parent" +msgstr "Left Parent" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model,name:maintenance_equipment_hierarchy.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_count +msgid "Number of child equipments" +msgstr "Broj of child equipments" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_id +msgid "Parent Equipment" +msgstr "Parent Equipment" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_path +msgid "Parent Path" +msgstr "Putanja nadređenih" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_right +msgid "Right Parent" +msgstr "Right Parent" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/es.po new file mode 100644 index 0000000..f4027d6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/es.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-22 23:09+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: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_ids +msgid "Child Equipments" +msgstr "Equipamientos Hijos" + +#. module: maintenance_equipment_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_hierarchy/models/maintenance_equipment.py:0 +#, python-format +msgid "Child equipment of %s" +msgstr "Equipo infantil de %s" + +#. module: maintenance_equipment_hierarchy +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_hierarchy.hr_equipment_view_form +msgid "Children" +msgstr "Hijos" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__complete_name +msgid "Complete Name" +msgstr "Nombre Completo" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__display_name +msgid "Display Name" +msgstr "Nombre a Mostrar" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_1 +msgid "HP Laptop battery" +msgstr "Batería de Portátil HP" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_2 +msgid "HP Laptop case" +msgstr "Funda de Portátil HP" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_left +msgid "Left Parent" +msgstr "Padre Izquierdo" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model,name:maintenance_equipment_hierarchy.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipamiento de mantenimiento" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_count +msgid "Number of child equipments" +msgstr "Número de Equipamientos Hijos" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_id +msgid "Parent Equipment" +msgstr "Equipo Padre" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_path +msgid "Parent Path" +msgstr "ruta parental" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_right +msgid "Right Parent" +msgstr "Padre derecho" + +#~ msgid "Equipment" +#~ msgstr "Equipamiento" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/fr.po b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/fr.po new file mode 100644 index 0000000..ab9678b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/fr.po @@ -0,0 +1,84 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-03-19 15:46+0000\n" +"Last-Translator: Sandrine (ACSONE) \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: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_ids +msgid "Child Equipments" +msgstr "Equipements enfants" + +#. module: maintenance_equipment_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_hierarchy/models/maintenance_equipment.py:0 +#, python-format +msgid "Child equipment of %s" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_hierarchy.hr_equipment_view_form +msgid "Children" +msgstr "Enfants" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__complete_name +msgid "Complete Name" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_1 +msgid "HP Laptop battery" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_2 +msgid "HP Laptop case" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_left +msgid "Left Parent" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model,name:maintenance_equipment_hierarchy.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipement" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_count +msgid "Number of child equipments" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_id +msgid "Parent Equipment" +msgstr "Equipement parent" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_path +msgid "Parent Path" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_right +msgid "Right Parent" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/it.po new file mode 100644 index 0000000..0bcfe7c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/it.po @@ -0,0 +1,84 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-10 11: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: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_ids +msgid "Child Equipments" +msgstr "Attrezzature discendenti" + +#. module: maintenance_equipment_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_hierarchy/models/maintenance_equipment.py:0 +#, python-format +msgid "Child equipment of %s" +msgstr "Attrezzatura figlia di %s" + +#. module: maintenance_equipment_hierarchy +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_hierarchy.hr_equipment_view_form +msgid "Children" +msgstr "Figli" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__complete_name +msgid "Complete Name" +msgstr "Nome completo" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_1 +msgid "HP Laptop battery" +msgstr "Batteria laptop HP" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_2 +msgid "HP Laptop case" +msgstr "Case laptop HP" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_left +msgid "Left Parent" +msgstr "Ascendente precedente" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model,name:maintenance_equipment_hierarchy.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_count +msgid "Number of child equipments" +msgstr "Numero di attrezzature discendenti" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_id +msgid "Parent Equipment" +msgstr "Attrezzatura ascendente" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_path +msgid "Parent Path" +msgstr "Percorso padre" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_right +msgid "Right Parent" +msgstr "Padre successivo" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/maintenance_equipment_hierarchy.pot b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/maintenance_equipment_hierarchy.pot new file mode 100644 index 0000000..4c3234d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/maintenance_equipment_hierarchy.pot @@ -0,0 +1,81 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_hierarchy +# +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: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_ids +msgid "Child Equipments" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_hierarchy/models/maintenance_equipment.py:0 +#, python-format +msgid "Child equipment of %s" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_hierarchy.hr_equipment_view_form +msgid "Children" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__complete_name +msgid "Complete Name" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_1 +msgid "HP Laptop battery" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_2 +msgid "HP Laptop case" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_left +msgid "Left Parent" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model,name:maintenance_equipment_hierarchy.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_count +msgid "Number of child equipments" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_id +msgid "Parent Equipment" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_path +msgid "Parent Path" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_right +msgid "Right Parent" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/sk.po b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/sk.po new file mode 100644 index 0000000..6176e64 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/i18n/sk.po @@ -0,0 +1,82 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_hierarchy +# +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: 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: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_ids +msgid "Child Equipments" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#. odoo-python +#: code:addons/maintenance_equipment_hierarchy/models/maintenance_equipment.py:0 +#, python-format +msgid "Child equipment of %s" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_hierarchy.hr_equipment_view_form +msgid "Children" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__complete_name +msgid "Complete Name" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_1 +msgid "HP Laptop battery" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:maintenance.equipment,name:maintenance_equipment_hierarchy.equipment_computer9_2 +msgid "HP Laptop case" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_left +msgid "Left Parent" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model,name:maintenance_equipment_hierarchy.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__child_count +msgid "Number of child equipments" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_id +msgid "Parent Equipment" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_path +msgid "Parent Path" +msgstr "" + +#. module: maintenance_equipment_hierarchy +#: model:ir.model.fields,field_description:maintenance_equipment_hierarchy.field_maintenance_equipment__parent_right +msgid "Right Parent" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/models/__init__.py new file mode 100644 index 0000000..e960c41 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/models/__init__.py @@ -0,0 +1 @@ +from . import maintenance_equipment diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/models/maintenance_equipment.py new file mode 100644 index 0000000..ee0dfbd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/models/maintenance_equipment.py @@ -0,0 +1,68 @@ +# Copyright 2020 ForgeFlow S.L. (https://forgeflow.com) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import _, api, fields, models + + +class MaintenanceEquipment(models.Model): + + _inherit = "maintenance.equipment" + _parent_name = "parent_id" + _parent_store = True + _parent_order = "name" + + parent_id = fields.Many2one( + "maintenance.equipment", + "Parent Equipment", + index=True, + ondelete="cascade", + tracking=True, + ) + child_ids = fields.One2many( + "maintenance.equipment", "parent_id", "Child Equipments" + ) + parent_left = fields.Integer("Left Parent", index=1) + parent_right = fields.Integer("Right Parent", index=1) + child_count = fields.Integer( + compute="_compute_child_count", string="Number of child equipments" + ) + display_name = fields.Char(compute="_compute_display_name") + complete_name = fields.Char( + compute="_compute_complete_name", store=True, recursive=True + ) + parent_path = fields.Char(index=True, unaccent=False) + + def name_get(self): + return [(equipment.id, equipment.complete_name) for equipment in self] + + @api.depends("child_ids") + def _compute_child_count(self): + for equipment in self: + equipment.child_count = len(equipment.child_ids) + + def _compute_display_name(self): + for equipment in self: + equipment.display_name = equipment.complete_name + + @api.depends("name", "parent_id.complete_name") # recursive definition + def _compute_complete_name(self): + for equipment in self: + if equipment.parent_id: + parent_name = equipment.parent_id.complete_name + equipment.complete_name = parent_name + " / " + equipment.name + else: + equipment.complete_name = equipment.name + + def preview_child_list(self): + return { + "name": _("Child equipment of %s") % self.name, + "type": "ir.actions.act_window", + "res_model": "maintenance.equipment", + "view_mode": "list,form", + "context": { + **self.env.context, + "default_parent_id": self.id, + "parent_id_editable": False, + }, + "domain": [("parent_id", "=", self.id)], + } diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..6ae5792 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Adrià Gil Sorribes +* Jordi Ballester Alomar +* David Alonso diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/readme/DESCRIPTION.rst new file mode 100644 index 0000000..c561add --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows to manage a hierarchy of equipments. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/static/description/index.html new file mode 100644 index 0000000..517411a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/static/description/index.html @@ -0,0 +1,425 @@ + + + + + + +Maintenance Equipments Hierarchy + + + +
+

Maintenance Equipments Hierarchy

+ + +

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

+

This module allows to manage a hierarchy of equipments.

+

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
  • +
+
+
+

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:

+

dalonsod

+

This module is part of the OCA/maintenance 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-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/tests/__init__.py new file mode 100644 index 0000000..08989b9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_equipment_hierarchy diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/tests/test_maintenance_equipment_hierarchy.py b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/tests/test_maintenance_equipment_hierarchy.py new file mode 100644 index 0000000..fe6c0df --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/tests/test_maintenance_equipment_hierarchy.py @@ -0,0 +1,37 @@ +# Copyright 2020 ForgeFlow S.L. (https://forgeflow.com) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo.exceptions import UserError +from odoo.tests import common + + +class TestMaintenanceEquipmentHierarchy(common.TransactionCase): + def setUp(self): + super(TestMaintenanceEquipmentHierarchy, self).setUp() + self.Equipment = self.env["maintenance.equipment"] + self.equipment1 = self.Equipment.create({"name": "Equipment 1"}) + + self.equipment1_1 = self.Equipment.create({"name": "Equipment 1.1"}) + + def test_01_hierarchy(self): + self.equipment1_1.parent_id = self.equipment1 + res = self.equipment1.preview_child_list() + self.assertEqual(res["domain"], [("parent_id", "=", self.equipment1.id)]) + + def test_02_recursion(self): + with self.assertRaises(UserError): + self.equipment1.parent_id = self.equipment1 + + def test_03_name_get_display_complete(self): + self.equipment1_1.parent_id = self.equipment1 + equipment1_1_complete_name = ( + self.equipment1.name + " / " + self.equipment1_1.name + ) + + self.assertEqual(self.equipment1.name_get()[0][1], self.equipment1.name) + self.assertEqual(self.equipment1.complete_name, self.equipment1.name) + self.assertEqual(self.equipment1.display_name, self.equipment1.name) + + self.assertEqual(self.equipment1_1.name_get()[0][1], equipment1_1_complete_name) + self.assertEqual(self.equipment1_1.complete_name, equipment1_1_complete_name) + self.assertEqual(self.equipment1_1.display_name, equipment1_1_complete_name) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/views/maintenance_equipment_views.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/views/maintenance_equipment_views.xml new file mode 100644 index 0000000..8a577ee --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/maintenance_equipment_hierarchy/views/maintenance_equipment_views.xml @@ -0,0 +1,51 @@ + + + + equipment.form + maintenance.equipment + + +
+ +
+ + + + +
+ + equipment.tree + maintenance.equipment + + + + + + + + + equipment.search + maintenance.equipment + + + + ['|','|','|',('complete_name','ilike',self),('model','ilike',self),('serial_no','ilike',self),('partner_ref', 'ilike', self)] + + + +
diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/pyproject.toml new file mode 100644 index 0000000..676b3c5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy" +version = "16.0.0" +description = "Maintenance Equipments Hierarchy - Manage equipment hierarchy" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_equipment_hierarchy"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/README.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/README.md new file mode 100644 index 0000000..4ceba27 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/README.md @@ -0,0 +1,44 @@ +# Maintenance Equipment Image + +Odoo addon: maintenance_equipment_image + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_image +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Equipment Image +- **Version**: 16.0.1.0.0 +- **Category**: Manufacturing/Maintenance +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_image`. + +## 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 +- 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-maintenance-maintenance_equipment_image/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/ARCHITECTURE.md new file mode 100644 index 0000000..a1cb952 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/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 Maintenance_equipment_image Module - maintenance_equipment_image + 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-maintenance-maintenance_equipment_image/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/CONFIGURATION.md new file mode 100644 index 0000000..0071435 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_equipment_image. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/FAQ.md new file mode 100644 index 0000000..09b8670 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/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 maintenance_equipment_image or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/INSTALL.md new file mode 100644 index 0000000..1fd16ce --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_image" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_image" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/MODELS.md new file mode 100644 index 0000000..dfbcb51 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in maintenance_equipment_image. + +```mermaid +classDiagram + class maintenance_equipment +``` + +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-maintenance-maintenance_equipment_image/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/OVERVIEW.md new file mode 100644 index 0000000..51192e3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_equipment_image. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_equipment_image +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/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-maintenance-maintenance_equipment_image/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/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-maintenance-maintenance_equipment_image/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/USAGE.md new file mode 100644 index 0000000..796ce26 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/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 maintenance_equipment_image +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/README.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/README.rst new file mode 100644 index 0000000..ad34bc9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/README.rst @@ -0,0 +1,84 @@ +=========================== +Maintenance Equipment Image +=========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5e0e01b8d0355fe067a5080c15f4b58dd7125bc1fc8b9e307c4164f5851f2fde + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_image + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_image + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds images to the maintenance equipments. + +**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 +~~~~~~~ + +* Exo Software + +Contributors +~~~~~~~~~~~~ + +* Pedro Castro Silva + +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-pedrocasi| image:: https://github.com/pedrocasi.png?size=40px + :target: https://github.com/pedrocasi + :alt: pedrocasi + +Current `maintainer `__: + +|maintainer-pedrocasi| + +This module is part of the `OCA/maintenance `_ 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-maintenance-maintenance_equipment_image/maintenance_equipment_image/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/__manifest__.py new file mode 100644 index 0000000..7aa3c4f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2021 Exo Software +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Equipment Image", + "summary": """Adds images to equipment.""", + "category": "Manufacturing/Maintenance", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Exo Software," "Odoo Community Association (OCA)", + "maintainers": ["pedrocasi"], + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance"], + "data": [ + "views/maintenance_equipment_views.xml", + ], + "installable": True, + "application": False, +} diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/bs.po new file mode 100644 index 0000000..7c473e0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/bs.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_image +# +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: maintenance_equipment_image +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_image.hr_equipment_view_kanban +msgid "Equipment" +msgstr "Oprema" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1920 +msgid "Image" +msgstr "Slika" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1024 +msgid "Image 1024" +msgstr "Slika 1024" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_128 +msgid "Image 128" +msgstr "Slika 128" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_256 +msgid "Image 256" +msgstr "Slika 256" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_512 +msgid "Image 512" +msgstr "Slika 512" + +#. module: maintenance_equipment_image +#: model:ir.model,name:maintenance_equipment_image.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/es.po new file mode 100644 index 0000000..209ced3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/es.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-22 23:09+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: maintenance_equipment_image +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_image.hr_equipment_view_kanban +msgid "Equipment" +msgstr "Equipamiento" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1920 +msgid "Image" +msgstr "Imagen" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1024 +msgid "Image 1024" +msgstr "Image 1024" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_128 +msgid "Image 128" +msgstr "Image 128" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_256 +msgid "Image 256" +msgstr "Image 256" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_512 +msgid "Image 512" +msgstr "Image 512" + +#. module: maintenance_equipment_image +#: model:ir.model,name:maintenance_equipment_image.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo de Mantenimiento" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/it.po new file mode 100644 index 0000000..adba534 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/it.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-25 12:12+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.17\n" + +#. module: maintenance_equipment_image +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_image.hr_equipment_view_kanban +msgid "Equipment" +msgstr "Attrezzatura" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1920 +msgid "Image" +msgstr "Immagine" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1024 +msgid "Image 1024" +msgstr "Immagine 1024" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_128 +msgid "Image 128" +msgstr "Immagine 128" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_256 +msgid "Image 256" +msgstr "Immagine 256" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_512 +msgid "Image 512" +msgstr "Immagine 512" + +#. module: maintenance_equipment_image +#: model:ir.model,name:maintenance_equipment_image.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/maintenance_equipment_image.pot b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/maintenance_equipment_image.pot new file mode 100644 index 0000000..f36217b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/maintenance_equipment_image.pot @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_image +# +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: maintenance_equipment_image +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_image.hr_equipment_view_kanban +msgid "Equipment" +msgstr "" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1920 +msgid "Image" +msgstr "" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1024 +msgid "Image 1024" +msgstr "" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_128 +msgid "Image 128" +msgstr "" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_256 +msgid "Image 256" +msgstr "" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_512 +msgid "Image 512" +msgstr "" + +#. module: maintenance_equipment_image +#: model:ir.model,name:maintenance_equipment_image.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/pt.po b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/pt.po new file mode 100644 index 0000000..f6df42a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/i18n/pt.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-12-04 10:04+0000\n" +"PO-Revision-Date: 2021-12-04 10:05+0000\n" +"Last-Translator: Pedro Castro Silva \n" +"Language-Team: \n" +"Language: pt\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 3.0\n" + +#. module: maintenance_equipment_image +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_image.hr_equipment_view_kanban +msgid "Equipment" +msgstr "Equipamento" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1920 +msgid "Image" +msgstr "Imagem" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_1024 +msgid "Image 1024" +msgstr "Imagem 1024" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_128 +msgid "Image 128" +msgstr "Imagem 128" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_256 +msgid "Image 256" +msgstr "Imagem 256" + +#. module: maintenance_equipment_image +#: model:ir.model.fields,field_description:maintenance_equipment_image.field_maintenance_equipment__image_512 +msgid "Image 512" +msgstr "Imagem 512" + +#. module: maintenance_equipment_image +#: model:ir.model,name:maintenance_equipment_image.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipamento de Manutenção" + +#~ msgid "Display Name" +#~ msgstr "Nome a Apresentar" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última Modificação Em" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/models/__init__.py new file mode 100644 index 0000000..e960c41 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/models/__init__.py @@ -0,0 +1 @@ +from . import maintenance_equipment diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/models/maintenance_equipment.py new file mode 100644 index 0000000..0d53838 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/models/maintenance_equipment.py @@ -0,0 +1,9 @@ +# Copyright 2021 Exo Software, Lda. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class MaintenanceEquipment(models.Model): + _inherit = ["maintenance.equipment", "image.mixin"] + _name = "maintenance.equipment" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..16fb9ca --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Pedro Castro Silva diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/readme/DESCRIPTION.rst new file mode 100644 index 0000000..47e9bce --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds images to the maintenance equipments. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/static/description/index.html new file mode 100644 index 0000000..44e0e25 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/static/description/index.html @@ -0,0 +1,423 @@ + + + + + + +Maintenance Equipment Image + + + +
+

Maintenance Equipment Image

+ + +

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

+

This module adds images to the maintenance equipments.

+

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

+
    +
  • Exo Software
  • +
+
+
+

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:

+

pedrocasi

+

This module is part of the OCA/maintenance 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-maintenance-maintenance_equipment_image/maintenance_equipment_image/views/maintenance_equipment_views.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/views/maintenance_equipment_views.xml new file mode 100644 index 0000000..5dd8fd1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/maintenance_equipment_image/views/maintenance_equipment_views.xml @@ -0,0 +1,39 @@ + + + + + maintenance.equipment + + + + + + + + + + maintenance.equipment + + + + + + +
+ Equipment +
+
+ +
+
+ +
diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_image/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_equipment_image/pyproject.toml new file mode 100644 index 0000000..b51b519 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_image/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_equipment_image" +version = "16.0.0" +description = "Maintenance Equipment Image - Adds images to equipment." +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_equipment_image"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/README.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/README.md new file mode 100644 index 0000000..8e1f4fb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/README.md @@ -0,0 +1,44 @@ +# Maintenance Equipment Sequence + +Odoo addon: maintenance_equipment_sequence + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_sequence +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Equipment Sequence +- **Version**: 16.0.1.0.2 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_sequence`. + +## 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 +- 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-maintenance-maintenance_equipment_sequence/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/ARCHITECTURE.md new file mode 100644 index 0000000..70253a7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_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 Maintenance_equipment_sequence Module - maintenance_equipment_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-maintenance-maintenance_equipment_sequence/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/CONFIGURATION.md new file mode 100644 index 0000000..1543b30 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_equipment_sequence. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/FAQ.md new file mode 100644 index 0000000..4a0a17d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_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 maintenance_equipment_sequence or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/INSTALL.md new file mode 100644 index 0000000..eafea4d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_sequence" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_sequence" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/MODELS.md new file mode 100644 index 0000000..9f2c045 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in maintenance_equipment_sequence. + +```mermaid +classDiagram + class maintenance_equipment + class maintenance_equipment_category +``` + +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-maintenance-maintenance_equipment_sequence/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/OVERVIEW.md new file mode 100644 index 0000000..4a8111c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_equipment_sequence. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_equipment_sequence +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_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-maintenance-maintenance_equipment_sequence/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_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-maintenance-maintenance_equipment_sequence/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/USAGE.md new file mode 100644 index 0000000..106eefc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_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 maintenance_equipment_sequence +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/README.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/README.rst new file mode 100644 index 0000000..db9f3c7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/README.rst @@ -0,0 +1,86 @@ +============================== +Maintenance Equipment Sequence +============================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:0961f01d04702ea5589459b97ebc32b4c47bf93df77150b4fcbf5fce3e91375d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_sequence + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module introduces a sequence to the maintenance equipment managed from the maintenance equipment category + +**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 S.L. + +Contributors +~~~~~~~~~~~~ + +* Adria Gil Sorribes +* Núria Martín Xifré +* Bernat Puig Font + +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-AdriaGForgeFlow| image:: https://github.com/AdriaGForgeFlow.png?size=40px + :target: https://github.com/AdriaGForgeFlow + :alt: AdriaGForgeFlow + +Current `maintainer `__: + +|maintainer-AdriaGForgeFlow| + +This module is part of the `OCA/maintenance `_ 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-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/__manifest__.py new file mode 100644 index 0000000..6d44162 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2021 ForgeFlow S.L. (https://forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Equipment Sequence", + "summary": """ + Adds sequence to maintenance equipment defined in the equipment's + category""", + "version": "16.0.1.0.2", + "license": "AGPL-3", + "author": "ForgeFlow S.L.," "Odoo Community Association (OCA)", + "maintainers": ["AdriaGForgeFlow"], + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance"], + "data": ["views/maintenance_views.xml"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/bs.po new file mode 100644 index 0000000..abb7678 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/bs.po @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_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: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_id +msgid "Entry Sequence" +msgstr "Ulazna sekvenca" + +#. module: maintenance_equipment_sequence +#: model:ir.model,name:maintenance_equipment_sequence.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_equipment_sequence +#: model:ir.model,name:maintenance_equipment_sequence.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "Kategorija opreme za održavanje" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_number_next +msgid "Next Number" +msgstr "Sljedeći broj" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_prefix +msgid "Sequence Prefix" +msgstr "Prefiks brojevnog kruga" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_prefix +msgid "The equipment's sequence will be created using this prefix." +msgstr "The equipment's sequence will be created using this prefix." + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_number_next +msgid "The next sequence number will be used for the next equipment." +msgstr "The next sequence number will be used for the next equipment." + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_id +msgid "" +"This field contains the information related to the numbering of the " +"equipments belonging to this category." +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/es.po new file mode 100644 index 0000000..e93a661 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/es.po @@ -0,0 +1,70 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-09-20 17:47+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: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_id +msgid "Entry Sequence" +msgstr "Secuencia" + +#. module: maintenance_equipment_sequence +#: model:ir.model,name:maintenance_equipment_sequence.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo de Mantenimiento" + +#. module: maintenance_equipment_sequence +#: model:ir.model,name:maintenance_equipment_sequence.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "Categoría Equipo de mantenimiento" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_number_next +msgid "Next Number" +msgstr "Número siguiente" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_prefix +msgid "Sequence Prefix" +msgstr "Prefijo de la secuencia" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_prefix +msgid "The equipment's sequence will be created using this prefix." +msgstr "La secuencia de este equipamiento se creará usando este prefijo." + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_number_next +msgid "The next sequence number will be used for the next equipment." +msgstr "Este campo se utilizará para el siguiente código de equipamiento." + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_id +msgid "" +"This field contains the information related to the numbering of the " +"equipments belonging to this category." +msgstr "" +"Este campo contiene la información relacionada con la numeración de los " +"equipamientos de esta categoría." + +#~ msgid "Code" +#~ msgstr "Código" + +#~ msgid "Equipment Code" +#~ msgstr "Código del Equipamiento" + +#~ msgid "Asset Category" +#~ msgstr "Categoría del activo" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/it.po new file mode 100644 index 0000000..9203977 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/it.po @@ -0,0 +1,70 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-28 09:49+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.3.2\n" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_id +msgid "Entry Sequence" +msgstr "Sequenza iniziale" + +#. module: maintenance_equipment_sequence +#: model:ir.model,name:maintenance_equipment_sequence.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_equipment_sequence +#: model:ir.model,name:maintenance_equipment_sequence.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "Categoria attrezzatura menutenzione" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_number_next +msgid "Next Number" +msgstr "Numero successivo" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_prefix +msgid "Sequence Prefix" +msgstr "Prefisso sequenza" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_prefix +msgid "The equipment's sequence will be created using this prefix." +msgstr "" +"La sequenza dell'attrezzatura verrà creata utilizzando questo prefisso." + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_number_next +msgid "The next sequence number will be used for the next equipment." +msgstr "" +"Il numero di sequenza successivo verrà utilizzato per la prossima " +"attrezzatura." + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_id +msgid "" +"This field contains the information related to the numbering of the " +"equipments belonging to this category." +msgstr "" +"Questo campo contiene l'informazione relativa alla numerazione delle " +"attrezzature appartenenti a questa categoria." + +#~ msgid "Code" +#~ msgstr "Codice" + +#~ msgid "Equipment Code" +#~ msgstr "Codice attrezzatura" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/maintenance_equipment_sequence.pot b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/maintenance_equipment_sequence.pot new file mode 100644 index 0000000..c3aead2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/i18n/maintenance_equipment_sequence.pot @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_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: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_id +msgid "Entry Sequence" +msgstr "" + +#. module: maintenance_equipment_sequence +#: model:ir.model,name:maintenance_equipment_sequence.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_equipment_sequence +#: model:ir.model,name:maintenance_equipment_sequence.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_number_next +msgid "Next Number" +msgstr "" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,field_description:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_prefix +msgid "Sequence Prefix" +msgstr "" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_prefix +msgid "The equipment's sequence will be created using this prefix." +msgstr "" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_number_next +msgid "The next sequence number will be used for the next equipment." +msgstr "" + +#. module: maintenance_equipment_sequence +#: model:ir.model.fields,help:maintenance_equipment_sequence.field_maintenance_equipment_category__sequence_id +msgid "" +"This field contains the information related to the numbering of the " +"equipments belonging to this category." +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/models/__init__.py new file mode 100644 index 0000000..12bf298 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/models/__init__.py @@ -0,0 +1 @@ +from . import maintenance diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/models/maintenance.py b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/models/maintenance.py new file mode 100644 index 0000000..f8b3fcc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/models/maintenance.py @@ -0,0 +1,129 @@ +# Copyright 2021 ForgeFlow S.L. (https://forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class MaintenanceEquipmentCategory(models.Model): + _inherit = "maintenance.equipment.category" + + sequence_prefix = fields.Char( + help="The equipment's sequence will be created using this prefix.", + ) + sequence_id = fields.Many2one( + "ir.sequence", + string="Entry Sequence", + help="This field contains the information related to the " + "numbering of the equipments belonging to this category.", + copy=False, + ) + sequence_number_next = fields.Integer( + string="Next Number", + help="The next sequence number will be used for the next equipment.", + compute="_compute_seq_number_next", + inverse="_inverse_seq_number_next", + ) + + @api.model + def _create_sequence(self, vals): + """Create new no_gap entry sequence""" + seq = { + "name": vals.get("name", False) or self.name, + "implementation": "no_gap", + "prefix": (vals.get("sequence_prefix", False) or self.sequence_prefix), + "padding": 4, + "number_increment": 1, + "use_date_range": False, + } + seq = self.env["ir.sequence"].create(seq) + seq_date_range = seq._get_current_sequence() + seq_date_range.number_next = vals.get("sequence_number_next", 1) + return seq + + # do not depend on 'sequence_id.date_range_ids', because + # sequence_id._get_current_sequence() may invalidate it! + @api.depends("sequence_id.use_date_range", "sequence_id.number_next_actual") + def _compute_seq_number_next(self): + """Compute 'sequence_number_next' according to the current sequence + in use, an ir.sequence or an ir.sequence.date_range. + """ + for category in self: + if category.sequence_id: + sequence = category.sequence_id._get_current_sequence() + category.sequence_number_next = sequence.number_next_actual + else: + category.sequence_number_next = 1 + + def _inverse_seq_number_next(self): + """ + Inverse 'sequence_number_next' to edit the current sequence next number + """ + for category in self: + if category.sequence_id and category.sequence_number_next: + sequence = category.sequence_id._get_current_sequence() + sequence.sudo().number_next = category.sequence_number_next + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if not vals.get("sequence_id", False): + if vals.get("sequence_prefix", False): + vals["sequence_id"] = self.sudo()._create_sequence(vals).id + else: + vals["sequence_prefix"] = ( + self.env["ir.sequence"].browse(vals["sequence_id"]).prefix + ) + result = super().create(vals_list) + result._compute_equipment_code() + return result + + def write(self, vals): + if not vals.get("sequence_id", False): + if vals.get("sequence_prefix", False): + vals["sequence_id"] = self.sudo()._create_sequence(vals).id + else: + vals["sequence_prefix"] = ( + self.env["ir.sequence"].browse(vals["sequence_id"]).prefix + ) + result = super(MaintenanceEquipmentCategory, self).write(vals) + self._compute_equipment_code() + return result + + @api.onchange("sequence_id") + def _onchange_sequence_id(self): + if self.sequence_id: + self.sequence_prefix = self.sequence_id.prefix + + def _compute_equipment_code(self): + for category in self: + if category.sequence_id: + category_equipments = category.env["maintenance.equipment"].search( + [("category_id", "=", category.id)] + ) + for equipment in category_equipments: + if not equipment.serial_no and equipment.category_id.sequence_id: + equipment.serial_no = equipment.category_id.sequence_id._next() + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + @api.model + def create(self, vals): + equipment = super(MaintenanceEquipment, self).create(vals) + if equipment.category_id and not equipment.serial_no: + sequence_id = ( + self.env["maintenance.equipment.category"] + .browse(vals["category_id"]) + .sequence_id + ) + if sequence_id: + equipment.serial_no = sequence_id._next() + return equipment + + def write(self, vals): + result = super(MaintenanceEquipment, self).write(vals) + for rec in self: + if rec.category_id and not rec.serial_no and rec.category_id.sequence_id: + rec.serial_no = rec.category_id.sequence_id._next() + return result diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..011fc69 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Adria Gil Sorribes +* Núria Martín Xifré +* Bernat Puig Font diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/readme/DESCRIPTION.rst new file mode 100644 index 0000000..2b48322 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module introduces a sequence to the maintenance equipment managed from the maintenance equipment category diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/static/description/index.html new file mode 100644 index 0000000..335dbf1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/static/description/index.html @@ -0,0 +1,427 @@ + + + + + +Maintenance Equipment Sequence + + + +
+

Maintenance Equipment Sequence

+ + +

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

+

This module introduces a sequence to the maintenance equipment managed from the maintenance equipment category

+

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 S.L.
  • +
+
+
+

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:

+

AdriaGForgeFlow

+

This module is part of the OCA/maintenance 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-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/tests/__init__.py new file mode 100644 index 0000000..10d0722 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_equipment_sequence diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/tests/test_maintenance_equipment_sequence.py b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/tests/test_maintenance_equipment_sequence.py new file mode 100644 index 0000000..b6bb5b6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/tests/test_maintenance_equipment_sequence.py @@ -0,0 +1,85 @@ +# Copyright 2020 ForgeFlow S.L. (https://forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestMaintenanceEquipmentSequence(TransactionCase): + def setUp(self): + super(TestMaintenanceEquipmentSequence, self).setUp() + self.maintenance_equipment_categ_obj = self.env[ + "maintenance.equipment.category" + ] + self.maintenance_equipment_obj = self.env["maintenance.equipment"] + self.sequence_obj = self.env["ir.sequence"] + + def test_01_maintenance_equipment_sequence(self): + """Create equipment category and check sequence has been + automatically created, create equipments inside category and check + sequence number has been set + """ + # Create category + categ_1 = self.maintenance_equipment_categ_obj.create( + { + "name": "Test Category", + "sequence_prefix": "TTC", + "sequence_number_next": 1, + } + ) + seq_1 = self.sequence_obj.search( + [("name", "=", categ_1.name), ("prefix", "=", "TTC")], limit=1 + ) + self.assertEqual(seq_1.prefix, categ_1.sequence_prefix) + self.assertEqual(seq_1.number_next_actual, categ_1.sequence_number_next) + + # Create category without sequence, then write prefix and number next + categ_2 = self.maintenance_equipment_categ_obj.create( + {"name": "Test Category 2"} + ) + categ_2.write({"sequence_prefix": "TTC2", "sequence_number_next": 100}) + seq_2 = self.sequence_obj.search( + [("name", "=", categ_2.name), ("prefix", "=", "TTC2")], limit=1 + ) + self.assertEqual(seq_2.prefix, categ_2.sequence_prefix) + self.assertEqual(seq_2.number_next_actual, categ_2.sequence_number_next) + + # Assign sequence 1 to category 2 + categ_2.write({"sequence_id": seq_1.id}) + categ_2._onchange_sequence_id() + + # Create equipment inside category + equipment_1 = self.maintenance_equipment_obj.create( + {"name": "Laptop 1", "category_id": categ_2.id} + ) + categ_2._compute_equipment_code() + self.assertEqual(equipment_1.serial_no, "TTC0001") + # Set code manually + equipment_1.write({"serial_no": "TTC0023"}) + self.assertEqual(equipment_1.serial_no, "TTC0023") + # Remove code and be automatically set to sequence next value + equipment_1.write({"serial_no": False}) + self.assertEqual(equipment_1.serial_no, "TTC0002") + + def test_02_maintenance_equipment_sequence(self): + """Create an equipment category linked to a default sequence with a prefix, + and verify that the category correctly inherits the sequence prefix. + """ + # Create a sequence + seq_1 = self.sequence_obj.create( + { + "name": "Test Sequence", + "implementation": "no_gap", + "prefix": "TTC_TEST", + "padding": 4, + "number_increment": 1, + "use_date_range": False, + } + ) + # Create an equipment category linked to the sequence + categ_1 = self.maintenance_equipment_categ_obj.create( + { + "name": "Test Category 0", + "sequence_id": seq_1.id, + } + ) + self.assertEqual(categ_1.sequence_prefix, seq_1.prefix) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/views/maintenance_views.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/views/maintenance_views.xml new file mode 100644 index 0000000..ec57b34 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/maintenance_equipment_sequence/views/maintenance_views.xml @@ -0,0 +1,63 @@ + + + + + equipment.category.form + maintenance.equipment.category + + + + + + + + + + + + + + equipment.form + maintenance.equipment + + 99 + + + 1 + + + + + + + equipment.tree + maintenance.equipment + + + + + + + + + equipment.search + maintenance.equipment + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/pyproject.toml new file mode 100644 index 0000000..e9439b9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_sequence/pyproject.toml @@ -0,0 +1,44 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_equipment_sequence" +version = "16.0.0" +description = "Maintenance Equipment Sequence - + Adds sequence to maintenance equipment defined in the equipment's + category" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_equipment_sequence"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/README.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/README.md new file mode 100644 index 0000000..eaad5fc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/README.md @@ -0,0 +1,44 @@ +# Maintenance Equipment Status + +Odoo addon: maintenance_equipment_status + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_status +``` + +## Dependencies + +This addon depends on: +- base_maintenance + +## Manifest Information + +- **Name**: Maintenance Equipment Status +- **Version**: 16.0.1.0.0 +- **Category**: +- **License**: LGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_status`. + +## 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 +- 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-maintenance-maintenance_equipment_status/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/ARCHITECTURE.md new file mode 100644 index 0000000..b371fe0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_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 Maintenance_equipment_status Module - maintenance_equipment_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-maintenance-maintenance_equipment_status/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/CONFIGURATION.md new file mode 100644 index 0000000..9870201 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_equipment_status. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/DEPENDENCIES.md new file mode 100644 index 0000000..02c57be --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [base_maintenance](https://github.com/bringout/oca-technical) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/FAQ.md new file mode 100644 index 0000000..03eaffb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_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 maintenance_equipment_status or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/INSTALL.md new file mode 100644 index 0000000..5ecc167 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_status" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_status" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/MODELS.md new file mode 100644 index 0000000..ae66de6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in maintenance_equipment_status. + +```mermaid +classDiagram + class maintenance_equipment_status + class maintenance_equipment +``` + +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-maintenance-maintenance_equipment_status/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/OVERVIEW.md new file mode 100644 index 0000000..abda47c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_equipment_status. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_equipment_status +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/SECURITY.md new file mode 100644 index 0000000..f5eeffb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in maintenance_equipment_status. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../maintenance_equipment_status/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](../maintenance_equipment_status/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-maintenance-maintenance_equipment_status/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_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-maintenance-maintenance_equipment_status/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/USAGE.md new file mode 100644 index 0000000..710ed23 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_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 maintenance_equipment_status +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/README.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/README.rst new file mode 100644 index 0000000..42db37c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/README.rst @@ -0,0 +1,78 @@ +============================ +Maintenance Equipment Status +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:91856c17f15d6d6512dfd905fcc6a185239aec17bc84786b791595538155954e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_status + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to indicate status of an equipment. + +**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 +~~~~~~~~~~~~ + +* Adriá Gil +* Jordi Ballester Alomar +* David Alonso + +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/maintenance `_ 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-maintenance-maintenance_equipment_status/maintenance_equipment_status/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/__manifest__.py new file mode 100644 index 0000000..15dd683 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2020 ForgeFlow S.L. (https://forgeflow.com) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). +{ + "name": "Maintenance Equipment Status", + "version": "16.0.1.0.0", + "category": "", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "license": "LGPL-3", + "depends": ["base_maintenance"], + "data": [ + "security/ir.model.access.csv", + "views/maintenance_equipment_status_views.xml", + "views/maintenance_equipment_views.xml", + ], + "demo": ["data/demo_maintenance_equipment_status.xml"], + "installable": True, + "auto_install": False, + "application": False, +} diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/data/demo_maintenance_equipment_status.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/data/demo_maintenance_equipment_status.xml new file mode 100644 index 0000000..1664fe6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/data/demo_maintenance_equipment_status.xml @@ -0,0 +1,31 @@ + + + + New + + + + Working + + + + Retired + + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/bs.po new file mode 100644 index 0000000..8031e66 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/bs.po @@ -0,0 +1,129 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_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: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__active +msgid "Active" +msgstr "Aktivan" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_search +msgid "Archived" +msgstr "Arhivirano" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__category_ids +msgid "Categories" +msgstr "Kategorije" + +#. module: maintenance_equipment_status +#: model_terms:ir.actions.act_window,help:maintenance_equipment_status.maintenance_equipment_status_action +msgid "Click to set a new status for your equipments." +msgstr "Click to set a new status for your equipments." + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_search +msgid "Equipment Status" +msgstr "Equipment Status" + +#. module: maintenance_equipment_status +#: model:ir.actions.act_window,name:maintenance_equipment_status.maintenance_equipment_status_action +#: model:ir.ui.menu,name:maintenance_equipment_status.menu_maintenance_equipment_status_act +msgid "Equipment Statuses" +msgstr "Equipment Statuses" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: maintenance_equipment_status +#: model:ir.model,name:maintenance_equipment_status.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_equipment_status +#: model:ir.model,name:maintenance_equipment_status.model_maintenance_equipment_status +msgid "Maintenance Equipment Status" +msgstr "Maintenance Equipment Status" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__name +msgid "Name" +msgstr "Naziv:" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__note +msgid "Note" +msgstr "Zabilješka" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +msgid "Notes" +msgstr "Zabilješke" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__sequence +msgid "Sequence" +msgstr "Sekvenca" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment__status_id +msgid "Status" +msgstr "Status" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,help:maintenance_equipment_status.field_maintenance_equipment_status__category_ids +msgid "" +"When set, this status will only be applicable to the equipments under these " +"categories." +msgstr "" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +msgid "e.g. Operational" +msgstr "e.g. Operacijaal" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/es.po new file mode 100644 index 0000000..2a21fab --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/es.po @@ -0,0 +1,140 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-22 23:09+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: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__active +msgid "Active" +msgstr "Activo" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_search +msgid "Archived" +msgstr "Archivado" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__category_ids +msgid "Categories" +msgstr "Categor??as" + +#. module: maintenance_equipment_status +#: model_terms:ir.actions.act_window,help:maintenance_equipment_status.maintenance_equipment_status_action +msgid "Click to set a new status for your equipments." +msgstr "Hacer click para crear nuevos estados para los equipamientos." + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_search +msgid "Equipment Status" +msgstr "Estado del Equipamiento" + +#. module: maintenance_equipment_status +#: model:ir.actions.act_window,name:maintenance_equipment_status.maintenance_equipment_status_action +#: model:ir.ui.menu,name:maintenance_equipment_status.menu_maintenance_equipment_status_act +msgid "Equipment Statuses" +msgstr "Estados de Equipamiento" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status____last_update +msgid "Last Modified on" +msgstr "??ltima modificaci??n en" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__write_uid +msgid "Last Updated by" +msgstr "actualizado por última vez por" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__write_date +msgid "Last Updated on" +msgstr "última actualización el" + +#. module: maintenance_equipment_status +#: model:ir.model,name:maintenance_equipment_status.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo de Mantenimiento" + +#. module: maintenance_equipment_status +#: model:ir.model,name:maintenance_equipment_status.model_maintenance_equipment_status +msgid "Maintenance Equipment Status" +msgstr "Estados de Equipo de mantenimiento" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__name +msgid "Name" +msgstr "Nombre" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__note +msgid "Note" +msgstr "Nota" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +msgid "Notes" +msgstr "Notas" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__sequence +msgid "Sequence" +msgstr "Secuencia" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment__status_id +msgid "Status" +msgstr "Estado" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,help:maintenance_equipment_status.field_maintenance_equipment_status__category_ids +msgid "" +"When set, this status will only be applicable to the equipments under these " +"categories." +msgstr "" +"Si se establece, este estado solo se aplicara a equipamientos de estas " +"categor??as." + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +msgid "e.g. Operational" +msgstr "p. e. Operativo" + +#~ msgid "Status name" +#~ msgstr "Nombre del Estado" + +#~ msgid "Equipment" +#~ msgstr "Equipamiento" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/it.po new file mode 100644 index 0000000..6ffa8fb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/it.po @@ -0,0 +1,134 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-12 12:09+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.17\n" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__active +msgid "Active" +msgstr "Attivo" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_search +msgid "Archived" +msgstr "In archivio" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__category_ids +msgid "Categories" +msgstr "Categorie" + +#. module: maintenance_equipment_status +#: model_terms:ir.actions.act_window,help:maintenance_equipment_status.maintenance_equipment_status_action +msgid "Click to set a new status for your equipments." +msgstr "Fare clic per impostare un nuovo stato per le attrezzature." + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_search +msgid "Equipment Status" +msgstr "Stato attrezzatura" + +#. module: maintenance_equipment_status +#: model:ir.actions.act_window,name:maintenance_equipment_status.maintenance_equipment_status_action +#: model:ir.ui.menu,name:maintenance_equipment_status.menu_maintenance_equipment_status_act +msgid "Equipment Statuses" +msgstr "Stati attrezzatura" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: maintenance_equipment_status +#: model:ir.model,name:maintenance_equipment_status.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_equipment_status +#: model:ir.model,name:maintenance_equipment_status.model_maintenance_equipment_status +msgid "Maintenance Equipment Status" +msgstr "Stato attrezzatura manutenzione" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__name +msgid "Name" +msgstr "Nome" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__note +msgid "Note" +msgstr "Nota" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +msgid "Notes" +msgstr "Note" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__sequence +msgid "Sequence" +msgstr "Sequenza" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment__status_id +msgid "Status" +msgstr "Stato" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,help:maintenance_equipment_status.field_maintenance_equipment_status__category_ids +msgid "" +"When set, this status will only be applicable to the equipments under these " +"categories." +msgstr "" +"Quando impostato, questo stato potrà essere applicato solo alle attrezzature " +"di queste categorie." + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +msgid "e.g. Operational" +msgstr "es. Operativo" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/maintenance_equipment_status.pot b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/maintenance_equipment_status.pot new file mode 100644 index 0000000..c9c61d4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/i18n/maintenance_equipment_status.pot @@ -0,0 +1,129 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_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: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__active +msgid "Active" +msgstr "" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_search +msgid "Archived" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__category_ids +msgid "Categories" +msgstr "" + +#. module: maintenance_equipment_status +#: model_terms:ir.actions.act_window,help:maintenance_equipment_status.maintenance_equipment_status_action +msgid "Click to set a new status for your equipments." +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__create_uid +msgid "Created by" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__create_date +msgid "Created on" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_search +msgid "Equipment Status" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.actions.act_window,name:maintenance_equipment_status.maintenance_equipment_status_action +#: model:ir.ui.menu,name:maintenance_equipment_status.menu_maintenance_equipment_status_act +msgid "Equipment Statuses" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__id +msgid "ID" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status____last_update +msgid "Last Modified on" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__write_date +msgid "Last Updated on" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model,name:maintenance_equipment_status.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model,name:maintenance_equipment_status.model_maintenance_equipment_status +msgid "Maintenance Equipment Status" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__name +msgid "Name" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__note +msgid "Note" +msgstr "" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +msgid "Notes" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment_status__sequence +msgid "Sequence" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,field_description:maintenance_equipment_status.field_maintenance_equipment__status_id +msgid "Status" +msgstr "" + +#. module: maintenance_equipment_status +#: model:ir.model.fields,help:maintenance_equipment_status.field_maintenance_equipment_status__category_ids +msgid "" +"When set, this status will only be applicable to the equipments under these " +"categories." +msgstr "" + +#. module: maintenance_equipment_status +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_status.maintenance_equipment_status_view_form +msgid "e.g. Operational" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/models/__init__.py new file mode 100644 index 0000000..56e8b5a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/models/__init__.py @@ -0,0 +1,2 @@ +from . import maintenance_equipment +from . import maintenance_equipment_status diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/models/maintenance_equipment.py new file mode 100644 index 0000000..d9c98cd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/models/maintenance_equipment.py @@ -0,0 +1,14 @@ +# Copyright 2020 ForgeFlow S.L. (https://forgeflow.com) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import fields, models + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + status_id = fields.Many2one( + string="Status", + comodel_name="maintenance.equipment.status", + tracking=True, + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/models/maintenance_equipment_status.py b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/models/maintenance_equipment_status.py new file mode 100644 index 0000000..f9226ad --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/models/maintenance_equipment_status.py @@ -0,0 +1,21 @@ +# Copyright 2020 ForgeFlow S.L. (https://forgeflow.com) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import fields, models + + +class MaintenanceEquipmentStatus(models.Model): + _name = "maintenance.equipment.status" + _description = "Maintenance Equipment Status" + _order = "sequence" + + active = fields.Boolean(default=True) + name = fields.Char() + note = fields.Text() + sequence = fields.Integer(default=10) + category_ids = fields.Many2many( + string="Categories", + comodel_name="maintenance.equipment.category", + help="When set, this status will only be applicable to the equipments " + "under these categories.", + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/readme/CONFIGURATION.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/readme/CONFIGURATION.rst new file mode 100644 index 0000000..b31f6ee --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/readme/CONFIGURATION.rst @@ -0,0 +1,5 @@ +To cotnfigure this module, you need to: + +#. Maintenance > Configuration > Equipment Statuses + +You can limit the usage of status to specific equipment categories. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..4cda070 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Adriá Gil +* Jordi Ballester Alomar +* David Alonso diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/readme/DESCRIPTION.rst new file mode 100644 index 0000000..6f03b21 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows to indicate status of an equipment. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/security/ir.model.access.csv b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/security/ir.model.access.csv new file mode 100644 index 0000000..55ce16e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_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 +access_maintenance_equipment_status,access_maintenance_equipment_status,model_maintenance_equipment_status,base.group_user,1,0,0,0 +access_maintenance_equipment_status_admin,access_maintenance_equipment_status_admin,model_maintenance_equipment_status,maintenance.group_equipment_manager,1,1,1,1 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/static/description/index.html new file mode 100644 index 0000000..6f0e2d3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/static/description/index.html @@ -0,0 +1,423 @@ + + + + + + +Maintenance Equipment Status + + + +
+

Maintenance Equipment Status

+ + +

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

+

This module allows to indicate status of an equipment.

+

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
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_equipment_status/maintenance_equipment_status/views/maintenance_equipment_status_views.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/views/maintenance_equipment_status_views.xml new file mode 100644 index 0000000..226f6a6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/views/maintenance_equipment_status_views.xml @@ -0,0 +1,82 @@ + + + + maintenance.equipment.status.form + maintenance.equipment.status + +
+
+ + + +
+
+ + + + +
+ + +
+
+
+ + + + + maintenance.equipment.status.tree + maintenance.equipment.status + + + + + + + + + + maintenance.equipment.status.search + maintenance.equipment.status + + + + + + + + + + Equipment Statuses + maintenance.equipment.status + + +

+ Click to set a new status for your equipments. +

+
+
+ + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/views/maintenance_equipment_views.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/views/maintenance_equipment_views.xml new file mode 100644 index 0000000..9b9398b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/maintenance_equipment_status/views/maintenance_equipment_views.xml @@ -0,0 +1,44 @@ + + + + + equipment.form + maintenance.equipment + + + + + + + + + equipment.tree + maintenance.equipment + + + + + + + + + equipment.kanban + maintenance.equipment + + + + + + +
+ +
+
+
+
+
diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_status/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_equipment_status/pyproject.toml new file mode 100644 index 0000000..f37145c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_status/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_equipment_status" +version = "16.0.0" +description = "Maintenance Equipment Status - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-base_maintenance>=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 = ["maintenance_equipment_status"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/README.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/README.md new file mode 100644 index 0000000..8bccc01 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/README.md @@ -0,0 +1,44 @@ +# Maintenance Equipment Tags + +Odoo addon: maintenance_equipment_tags + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_tags +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Equipment Tags +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_tags`. + +## 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 +- 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-maintenance-maintenance_equipment_tags/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/ARCHITECTURE.md new file mode 100644 index 0000000..cc5fe19 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/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 Maintenance_equipment_tags Module - maintenance_equipment_tags + 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-maintenance-maintenance_equipment_tags/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/CONFIGURATION.md new file mode 100644 index 0000000..095605b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_equipment_tags. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/FAQ.md new file mode 100644 index 0000000..096ad7f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/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 maintenance_equipment_tags or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/INSTALL.md new file mode 100644 index 0000000..bcc06d1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_tags" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_tags" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/MODELS.md new file mode 100644 index 0000000..1055f9a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in maintenance_equipment_tags. + +```mermaid +classDiagram + class maintenance_equipment_tag + class maintenance_equipment +``` + +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-maintenance-maintenance_equipment_tags/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/OVERVIEW.md new file mode 100644 index 0000000..ba8fe59 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_equipment_tags. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_equipment_tags +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/SECURITY.md new file mode 100644 index 0000000..80763f3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in maintenance_equipment_tags. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../maintenance_equipment_tags/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](../maintenance_equipment_tags/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-maintenance-maintenance_equipment_tags/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/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-maintenance-maintenance_equipment_tags/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/USAGE.md new file mode 100644 index 0000000..9c56475 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/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 maintenance_equipment_tags +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/README.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/README.rst new file mode 100644 index 0000000..a24413e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/README.rst @@ -0,0 +1,84 @@ +========================== +Maintenance Equipment Tags +========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:7c253aaf4a11474e8ddc6554e9826e7e95d2821195ee1a3ab887bd68c6811df3 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_tags + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_tags + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Adds category tags to equipment + +**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 +~~~~~~~ + +* Creu Blanca + +Contributors +~~~~~~~~~~~~ + +* Jaime Arroyo + +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-etobella| image:: https://github.com/etobella.png?size=40px + :target: https://github.com/etobella + :alt: etobella + +Current `maintainer `__: + +|maintainer-etobella| + +This module is part of the `OCA/maintenance `_ 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-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/__manifest__.py new file mode 100644 index 0000000..daa29c0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Equipment Tags", + "summary": """ + Adds category tags to equipment""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", + "maintainers": ["etobella"], + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance"], + "demo": ["demo/maintenance_equipment_tags_demo.xml"], + "data": [ + "security/ir.model.access.csv", + "views/maintenance_equipment.xml", + "views/maintenance_equipment_tag.xml", + ], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/demo/maintenance_equipment_tags_demo.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/demo/maintenance_equipment_tags_demo.xml new file mode 100644 index 0000000..58c49e3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/demo/maintenance_equipment_tags_demo.xml @@ -0,0 +1,17 @@ + + + + + Samsung + + + HP + + + Monitor + + + Printer + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/bs.po new file mode 100644 index 0000000..709f058 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/bs.po @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_tags +# +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: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__color +msgid "Color Index (0-15)" +msgstr "Boja Index (0-15)" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__equipment_ids +msgid "Equipment" +msgstr "Oprema" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__name +msgid "Equipment Tag" +msgstr "Equipment Tag" + +#. module: maintenance_equipment_tags +#: model:ir.actions.act_window,name:maintenance_equipment_tags.maintenance_equipment_tag_act_window +#: model:ir.ui.menu,name:maintenance_equipment_tags.maintenance_equipment_tag_menu +msgid "Equipment Tags" +msgstr "Equipment Tags" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment_tag +msgid "Maintenance Equipment Tag" +msgstr "Maintenance Equipment Tag" + +#. module: maintenance_equipment_tags +#: model:ir.model.constraint,message:maintenance_equipment_tags.constraint_maintenance_equipment_tag_name_uniq +msgid "Tag name already exists !" +msgstr "Naziv oznake već postoji!" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment__tag_ids +msgid "Tags" +msgstr "Oznake" + +#. module: maintenance_equipment_tags +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_tags.hr_equipment_view_form +msgid "e.g. Computers" +msgstr "e.g. Computers" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/es.po new file mode 100644 index 0000000..441d503 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/es.po @@ -0,0 +1,98 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_tags +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-22 23:09+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: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__color +msgid "Color Index (0-15)" +msgstr "Número del Color (0-15)" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__equipment_ids +msgid "Equipment" +msgstr "Equipamiento" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__name +msgid "Equipment Tag" +msgstr "Etiqueta de Equipamiento" + +#. module: maintenance_equipment_tags +#: model:ir.actions.act_window,name:maintenance_equipment_tags.maintenance_equipment_tag_act_window +#: model:ir.ui.menu,name:maintenance_equipment_tags.maintenance_equipment_tag_menu +msgid "Equipment Tags" +msgstr "Etiquetas de Equipamiento" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_uid +msgid "Last Updated by" +msgstr "Última modificación por" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_date +msgid "Last Updated on" +msgstr "Última Actualización el" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Mantenimiento de Equipos" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment_tag +msgid "Maintenance Equipment Tag" +msgstr "Etiqueta de Equipamiento" + +#. module: maintenance_equipment_tags +#: model:ir.model.constraint,message:maintenance_equipment_tags.constraint_maintenance_equipment_tag_name_uniq +msgid "Tag name already exists !" +msgstr "Este nombre de etiqueta ya existe !" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment__tag_ids +msgid "Tags" +msgstr "Etiquetas" + +#. module: maintenance_equipment_tags +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_tags.hr_equipment_view_form +msgid "e.g. Computers" +msgstr "p.e Ordenadores" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/it.po new file mode 100644 index 0000000..829cd26 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/it.po @@ -0,0 +1,98 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_tags +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-17 17: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.14.1\n" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__color +msgid "Color Index (0-15)" +msgstr "Indice colore (0-15)" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__equipment_ids +msgid "Equipment" +msgstr "Attrezzatura" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__name +msgid "Equipment Tag" +msgstr "Etichetta attrezzatura" + +#. module: maintenance_equipment_tags +#: model:ir.actions.act_window,name:maintenance_equipment_tags.maintenance_equipment_tag_act_window +#: model:ir.ui.menu,name:maintenance_equipment_tags.maintenance_equipment_tag_menu +msgid "Equipment Tags" +msgstr "Etichette attrezzatura" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment_tag +msgid "Maintenance Equipment Tag" +msgstr "Etichetta attrezzatura manutenzione" + +#. module: maintenance_equipment_tags +#: model:ir.model.constraint,message:maintenance_equipment_tags.constraint_maintenance_equipment_tag_name_uniq +msgid "Tag name already exists !" +msgstr "Il nome etichetta esiste già!" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment__tag_ids +msgid "Tags" +msgstr "Etichette" + +#. module: maintenance_equipment_tags +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_tags.hr_equipment_view_form +msgid "e.g. Computers" +msgstr "es. Computer" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/maintenance_equipment_tags.pot b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/maintenance_equipment_tags.pot new file mode 100644 index 0000000..8aa1bbb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/maintenance_equipment_tags.pot @@ -0,0 +1,95 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_tags +# +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: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__color +msgid "Color Index (0-15)" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_uid +msgid "Created by" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_date +msgid "Created on" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__equipment_ids +msgid "Equipment" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__name +msgid "Equipment Tag" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.actions.act_window,name:maintenance_equipment_tags.maintenance_equipment_tag_act_window +#: model:ir.ui.menu,name:maintenance_equipment_tags.maintenance_equipment_tag_menu +msgid "Equipment Tags" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__id +msgid "ID" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag____last_update +msgid "Last Modified on" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_date +msgid "Last Updated on" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment_tag +msgid "Maintenance Equipment Tag" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.constraint,message:maintenance_equipment_tags.constraint_maintenance_equipment_tag_name_uniq +msgid "Tag name already exists !" +msgstr "" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment__tag_ids +msgid "Tags" +msgstr "" + +#. module: maintenance_equipment_tags +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_tags.hr_equipment_view_form +msgid "e.g. Computers" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/pt.po b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/pt.po new file mode 100644 index 0000000..6bb92a3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/pt.po @@ -0,0 +1,98 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_tags +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-12-04 12:36+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 4.3.2\n" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__color +msgid "Color Index (0-15)" +msgstr "Índice de Cores (0-15)" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__display_name +msgid "Display Name" +msgstr "Nome a Apresentar" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__equipment_ids +msgid "Equipment" +msgstr "Equipamento" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__name +msgid "Equipment Tag" +msgstr "Etiqueta do Equipamento" + +#. module: maintenance_equipment_tags +#: model:ir.actions.act_window,name:maintenance_equipment_tags.maintenance_equipment_tag_act_window +#: model:ir.ui.menu,name:maintenance_equipment_tags.maintenance_equipment_tag_menu +msgid "Equipment Tags" +msgstr "Etiquetas de Equipamentos" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag____last_update +msgid "Last Modified on" +msgstr "Última Modificação Em" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_uid +msgid "Last Updated by" +msgstr "Última Atualização por" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_date +msgid "Last Updated on" +msgstr "Última Atualização Em" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipamento de Manutenção" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment_tag +msgid "Maintenance Equipment Tag" +msgstr "Etiqueta do Equipamento de Manutenção" + +#. module: maintenance_equipment_tags +#: model:ir.model.constraint,message:maintenance_equipment_tags.constraint_maintenance_equipment_tag_name_uniq +msgid "Tag name already exists !" +msgstr "Nome da etiqueta já existe!" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment__tag_ids +msgid "Tags" +msgstr "Etiquetas" + +#. module: maintenance_equipment_tags +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_tags.hr_equipment_view_form +msgid "e.g. Computers" +msgstr "por ex., computadores" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/pt_BR.po b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/pt_BR.po new file mode 100644 index 0000000..0482076 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/i18n/pt_BR.po @@ -0,0 +1,98 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_tags +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-06-23 22:10+0000\n" +"Last-Translator: Fernando Colus \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 3.10\n" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__color +msgid "Color Index (0-15)" +msgstr "Índice de Cores (0-15)" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__display_name +msgid "Display Name" +msgstr "Exibir Nome" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__equipment_ids +msgid "Equipment" +msgstr "Equipamento" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__name +msgid "Equipment Tag" +msgstr "Etiqueta do Equipamento" + +#. module: maintenance_equipment_tags +#: model:ir.actions.act_window,name:maintenance_equipment_tags.maintenance_equipment_tag_act_window +#: model:ir.ui.menu,name:maintenance_equipment_tags.maintenance_equipment_tag_menu +msgid "Equipment Tags" +msgstr "Etiquetas do Equipamento" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__id +msgid "ID" +msgstr "ID (Identificação)" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag____last_update +msgid "Last Modified on" +msgstr "Última Modificação Feita em" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_uid +msgid "Last Updated by" +msgstr "Última Atualização Feita por" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment_tag__write_date +msgid "Last Updated on" +msgstr "Última Atualização Feita em" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipamento de Manutenção" + +#. module: maintenance_equipment_tags +#: model:ir.model,name:maintenance_equipment_tags.model_maintenance_equipment_tag +msgid "Maintenance Equipment Tag" +msgstr "Etiqueta do Equipamento de Manutenção" + +#. module: maintenance_equipment_tags +#: model:ir.model.constraint,message:maintenance_equipment_tags.constraint_maintenance_equipment_tag_name_uniq +msgid "Tag name already exists !" +msgstr "Nome da etiqueta já existe !" + +#. module: maintenance_equipment_tags +#: model:ir.model.fields,field_description:maintenance_equipment_tags.field_maintenance_equipment__tag_ids +msgid "Tags" +msgstr "Etiquetas" + +#. module: maintenance_equipment_tags +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_tags.hr_equipment_view_form +msgid "e.g. Computers" +msgstr "Por Exemplo Computadores" diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/models/__init__.py new file mode 100644 index 0000000..a416ae8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/models/__init__.py @@ -0,0 +1,2 @@ +from . import maintenance_equipment_tag +from . import maintenance_equipment diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/models/maintenance_equipment.py new file mode 100644 index 0000000..0278637 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/models/maintenance_equipment.py @@ -0,0 +1,17 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class MaintenanceEquipment(models.Model): + + _inherit = "maintenance.equipment" + + tag_ids = fields.Many2many( + "maintenance.equipment.tag", + "equipment_tag_rel", + "equipment_id", + "tag_id", + string="Tags", + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/models/maintenance_equipment_tag.py b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/models/maintenance_equipment_tag.py new file mode 100644 index 0000000..1ca635d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/models/maintenance_equipment_tag.py @@ -0,0 +1,31 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from random import randint + +from odoo import fields, models + + +class MaintenanceEquipmentTag(models.Model): + + _name = "maintenance.equipment.tag" + _description = "Maintenance Equipment Tag" + + def get_default_color_value(self): + return randint(1, 15) + + name = fields.Char(string="Equipment Tag", required=True) + color = fields.Integer( + string="Color Index (0-15)", default=lambda self: self.get_default_color_value() + ) + equipment_ids = fields.Many2many( + "maintenance.equipment", + "equipment_tag_rel", + "tag_id", + "equipment_id", + string="Equipment", + ) + + _sql_constraints = [ + ("name_uniq", "unique (name)", "Tag name already exists !"), + ] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..e59d510 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Jaime Arroyo diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/readme/DESCRIPTION.rst new file mode 100644 index 0000000..cb5f88a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Adds category tags to equipment diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/security/ir.model.access.csv b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/security/ir.model.access.csv new file mode 100644 index 0000000..88a6be9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/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_maintenance_equipment_tag,access_maintenance_equipment_tag,model_maintenance_equipment_tag,base.group_user,1,0,0,0 +access_maintenance_equipment_tag_man,access_maintenance_equipment_tag_man,model_maintenance_equipment_tag,maintenance.group_equipment_manager,1,1,1,1 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/static/description/index.html new file mode 100644 index 0000000..26a331f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/static/description/index.html @@ -0,0 +1,423 @@ + + + + + + +Maintenance Equipment Tags + + + +
+

Maintenance Equipment Tags

+ + +

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

+

Adds category tags to equipment

+

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

+
    +
  • Creu Blanca
  • +
+
+ +
+

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:

+

etobella

+

This module is part of the OCA/maintenance 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-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/views/maintenance_equipment.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/views/maintenance_equipment.xml new file mode 100644 index 0000000..bd30219 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/views/maintenance_equipment.xml @@ -0,0 +1,66 @@ + + + + + maintenance.equipment.form (in maintenance_equipment_tags) + maintenance.equipment + + + + + + + + + maintenance.equipment.kanban (in maintenance_equipment_tags) + maintenance.equipment + + + + + + + + + maintenance.equipment.tree (in maintenance_equipment_tags) + maintenance.equipment + + + + + + + + + maintenance.equipment.search (in maintenance_equipment_tags) + maintenance.equipment + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/views/maintenance_equipment_tag.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/views/maintenance_equipment_tag.xml new file mode 100644 index 0000000..538a158 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/maintenance_equipment_tags/views/maintenance_equipment_tag.xml @@ -0,0 +1,45 @@ + + + + + maintenance.equipment.tag.form (in maintenance_equipment_tags) + maintenance.equipment.tag + +
+ + + + + + +
+
+
+ + maintenance.equipment.tag.tree (in maintenance_equipment_tags) + maintenance.equipment.tag + + + + + + + + Equipment Tags + maintenance.equipment.tag + tree,form + [] + {} + + + Equipment Tags + + + + +
diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_tags/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/pyproject.toml new file mode 100644 index 0000000..7e72416 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_tags/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_equipment_tags" +version = "16.0.0" +description = "Maintenance Equipment Tags - + Adds category tags to equipment" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_equipment_tags"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/README.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/README.md new file mode 100644 index 0000000..9ae2aaa --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/README.md @@ -0,0 +1,44 @@ +# Maintenance Equipment Usage + +Odoo addon: maintenance_equipment_usage + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_usage +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Equipment Usage +- **Version**: 16.0.1.0.0 +- **Category**: Maintenance +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_usage`. + +## 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 +- 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-maintenance-maintenance_equipment_usage/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/ARCHITECTURE.md new file mode 100644 index 0000000..4af9211 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/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 Maintenance_equipment_usage Module - maintenance_equipment_usage + 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-maintenance-maintenance_equipment_usage/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/CONFIGURATION.md new file mode 100644 index 0000000..ef0d8e2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_equipment_usage. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/FAQ.md new file mode 100644 index 0000000..0b7fcc1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/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 maintenance_equipment_usage or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/INSTALL.md new file mode 100644 index 0000000..a799920 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_equipment_usage" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_usage" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/MODELS.md new file mode 100644 index 0000000..f542d56 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in maintenance_equipment_usage. + +```mermaid +classDiagram + class maintenance_equipment_usage + class maintenance_equipment +``` + +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-maintenance-maintenance_equipment_usage/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/OVERVIEW.md new file mode 100644 index 0000000..ddefb97 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_equipment_usage. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_equipment_usage +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/SECURITY.md new file mode 100644 index 0000000..878fd9e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/SECURITY.md @@ -0,0 +1,41 @@ +# Security + +Access control and security definitions in maintenance_equipment_usage. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../maintenance_equipment_usage/security/ir.model.access.csv)** + - 1 model access rules + +## Record Rules + +Row-level security rules defined in: + +## Security Groups & Configuration + +Security groups and permissions defined in: +- **[security.xml](../maintenance_equipment_usage/security/security.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](../maintenance_equipment_usage/security/ir.model.access.csv)** + - Model access permissions (CRUD rights) +- **[security.xml](../maintenance_equipment_usage/security/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-maintenance-maintenance_equipment_usage/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/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-maintenance-maintenance_equipment_usage/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/USAGE.md new file mode 100644 index 0000000..2f17d01 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/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 maintenance_equipment_usage +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/README.rst b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/README.rst new file mode 100644 index 0000000..38c435a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/README.rst @@ -0,0 +1,91 @@ +=========================== +Maintenance Equipment Usage +=========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d53788ade2957febd9e19be9b1d26ece20167e5aaeaab1d3946180ff53896b23 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_usage + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_usage + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to record usages of maintenante equipments by employees, +with their dates, states and comments. + +**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 +~~~~~~~ + +* César Fernández +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* César Fernández Domínguez + +* `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/maintenance `_ 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-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/__manifest__.py new file mode 100644 index 0000000..acff6f5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2021 César Fernández Domínguez +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Maintenance Equipment Usage", + "version": "16.0.1.0.0", + "category": "Maintenance", + "website": "https://github.com/OCA/maintenance", + "author": "César Fernández, Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["maintenance"], + "installable": True, + "data": [ + "security/ir.model.access.csv", + "security/security.xml", + "data/ir_sequence_data.xml", + "views/maintenance_equipment_usage_views.xml", + "views/maintenance_equipment_view.xml", + ], + "maintainers": ["victoralmau"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/data/ir_sequence_data.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/data/ir_sequence_data.xml new file mode 100644 index 0000000..bd9a9c4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/data/ir_sequence_data.xml @@ -0,0 +1,12 @@ + + + + Maintenance Equipment Usage + maintenance.equipment.usage + EU/ + 5 + 1 + 1 + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/i18n/bs.po new file mode 100644 index 0000000..3ea4f97 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/i18n/bs.po @@ -0,0 +1,399 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_equipment_usage +# +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: maintenance_equipment_usage +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_usage.hr_equipment_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_equipment_usage.hr_equipment_view_kanban +msgid "" +" + + diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/static/description/index.html new file mode 100644 index 0000000..2ec1180 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/static/description/index.html @@ -0,0 +1,430 @@ + + + + + + +Maintenance Equipment Usage + + + +
+

Maintenance Equipment Usage

+ + +

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

+

This module allows to record usages of maintenante equipments by employees, +with their dates, states and comments.

+

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

+
    +
  • César Fernández
  • +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • César Fernández Domínguez
  • +
  • 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/maintenance 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-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/tests/__init__.py new file mode 100644 index 0000000..487a399 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_equipment_usage diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/tests/test_maintenance_equipment_usage.py b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/tests/test_maintenance_equipment_usage.py new file mode 100644 index 0000000..e102886 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/tests/test_maintenance_equipment_usage.py @@ -0,0 +1,56 @@ +# Copyright 2022-2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.exceptions import UserError +from odoo.tests import Form, new_test_user + +from odoo.addons.base.tests.common import BaseCommon + + +class TestMaintenanceEquipmentUsage(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.user = new_test_user( + cls.env, + login="test_basic_user", + ) + cls.equipment = cls.env["maintenance.equipment"].create( + {"name": "Test equipment"} + ) + cls.equipment_usage = cls._create_equipment_usage(cls) + + def _create_equipment_usage(self): + equipment_usage_form = Form(self.env["maintenance.equipment.usage"]) + equipment_usage_form.equipment_id = self.equipment + equipment_usage_form.user_id = self.user + return equipment_usage_form.save() + + def test_maintenance_equipment_full_process(self): + self.assertIn(self.equipment_usage, self.equipment.usage_ids) + self.assertFalse(self.equipment.in_use) + self.assertEqual(self.equipment_usage.state, "draft") + self.equipment_usage.action_pick() + self.assertTrue(self.equipment_usage.date_picking) + self.assertEqual(self.equipment_usage.state, "in_use") + self.assertTrue(self.equipment.in_use) + self.equipment_usage.action_return() + self.assertEqual(self.equipment_usage.state, "returned") + self.assertTrue(self.equipment_usage.date_return) + self.assertFalse(self.equipment.in_use) + + def test_maintenance_equipment_cancel_process(self): + self.assertEqual(self.equipment_usage.state, "draft") + self.equipment_usage.action_cancel() + self.assertEqual(self.equipment_usage.state, "cancel") + + def test_maintenance_equipment_multi(self): + self.equipment_usage.action_pick() + self.assertEqual(self.equipment_usage.state, "in_use") + equipment_usage2 = self._create_equipment_usage() + with self.assertRaises(UserError): + equipment_usage2.action_pick() + self.equipment_usage.action_cancel() + self.assertEqual(self.equipment_usage.state, "cancel") + equipment_usage2.action_pick() + self.assertEqual(equipment_usage2.state, "in_use") diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/views/maintenance_equipment_usage_views.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/views/maintenance_equipment_usage_views.xml new file mode 100644 index 0000000..4320021 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/views/maintenance_equipment_usage_views.xml @@ -0,0 +1,203 @@ + + + + maintenance.equipment.usage.tree + maintenance.equipment.usage + + + + + + + + + + + + + + maintenance.equipment.usage.form + maintenance.equipment.usage + +
+
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+ + maintenance.equipment.usage.search + maintenance.equipment.usage + + + + + + + + + + + + + + + + + + + + + + + Equipment Usage + ir.actions.act_window + maintenance.equipment.usage + tree,form + + {'search_default_not_returned': 1} + +

Click to create an Equipment Usage.

+
+
+ + + + Equipment Usage + ir.actions.act_window + maintenance.equipment.usage + tree,form + + + {'default_equipment_id': active_id, 'search_default_not_returned': 1} + [('equipment_id', '=', active_id)] + +

Click to create an Equipment Usage.

+
+
+
diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/views/maintenance_equipment_view.xml b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/views/maintenance_equipment_view.xml new file mode 100644 index 0000000..537fe5e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/maintenance_equipment_usage/views/maintenance_equipment_view.xml @@ -0,0 +1,46 @@ + + + + equipment.kanban + maintenance.equipment + + + + + + + In use + + + + + equipment.form + maintenance.equipment + + +
+ +
+ + + In use + +
+
+
diff --git a/odoo-bringout-oca-maintenance-maintenance_equipment_usage/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/pyproject.toml new file mode 100644 index 0000000..f131775 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_equipment_usage/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_equipment_usage" +version = "16.0.0" +description = "Maintenance Equipment Usage - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_equipment_usage"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_location/README.md b/odoo-bringout-oca-maintenance-maintenance_location/README.md new file mode 100644 index 0000000..707ac7a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/README.md @@ -0,0 +1,44 @@ +# Maintenance Location + +Odoo addon: maintenance_location + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_location +``` + +## Dependencies + +This addon depends on: +- maintenance_plan + +## Manifest Information + +- **Name**: Maintenance Location +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_location`. + +## 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 +- 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-maintenance-maintenance_location/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/ARCHITECTURE.md new file mode 100644 index 0000000..f924247 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/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 Maintenance_location Module - maintenance_location + 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-maintenance-maintenance_location/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/CONFIGURATION.md new file mode 100644 index 0000000..8e0e64d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_location. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_location/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_location/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/DEPENDENCIES.md new file mode 100644 index 0000000..cbafb41 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance_plan](https://github.com/bringout/oca-technical) diff --git a/odoo-bringout-oca-maintenance-maintenance_location/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/FAQ.md new file mode 100644 index 0000000..d9d7861 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/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 maintenance_location or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_location/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/INSTALL.md new file mode 100644 index 0000000..ec789ca --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_location" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_location" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_location/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/MODELS.md new file mode 100644 index 0000000..a74b271 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/doc/MODELS.md @@ -0,0 +1,15 @@ +# Models + +Detected core models and extensions in maintenance_location. + +```mermaid +classDiagram + class maintenance_location + class maintenance_equipment + class maintenance_plan + class maintenance_request +``` + +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-maintenance-maintenance_location/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/OVERVIEW.md new file mode 100644 index 0000000..c8e20e0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_location. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_location +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_location/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_location/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/SECURITY.md new file mode 100644 index 0000000..3fef6fb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in maintenance_location. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../maintenance_location/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](../maintenance_location/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-maintenance-maintenance_location/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/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-maintenance-maintenance_location/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/USAGE.md new file mode 100644 index 0000000..5c52286 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/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 maintenance_location +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_location/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_location/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/README.rst b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/README.rst new file mode 100644 index 0000000..43ae1b7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/README.rst @@ -0,0 +1,79 @@ +==================== +Maintenance Location +==================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5143b2a600e8f73c5247e22c749cce44d1092909b5ded3d7af91d2d797f81924 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_location + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_location + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Define a location system with hierarchy for maintenance equipments and requests. + +**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 +~~~~~~~ + +* CreuBlanca + +Contributors +~~~~~~~~~~~~ + +* CreuBlanca + * Enric Tobella + * Kevin Luna + * Jaime Arroyo + +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/maintenance `_ 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-maintenance-maintenance_location/maintenance_location/__init__.py b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/__manifest__.py new file mode 100644 index 0000000..b471f16 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Location", + "summary": """ + Define a location system for maintenance""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "CreuBlanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance_plan"], + "data": [ + "views/maintenance_plan.xml", + "views/maintenance_equipment.xml", + "security/ir.model.access.csv", + "views/maintenance_request.xml", + "views/maintenance_location.xml", + ], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/bs.po new file mode 100644 index 0000000..985b414 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/bs.po @@ -0,0 +1,182 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_location +# +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: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "" +"
\n" +" Longitude:" +msgstr "" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.hr_equipment_view_kanban +msgid "" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__active +msgid "Active" +msgstr "Aktivan" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__child_id +msgid "Child Locations" +msgstr "Child Lokacijas" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__complete_name +msgid "Complete Name" +msgstr "Puni naziv" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__description +msgid "Description" +msgstr "Opis" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: maintenance_location +#. odoo-python +#: code:addons/maintenance_location/models/maintenance_location.py:0 +#, python-format +msgid "Error ! You cannot create recursive Locations." +msgstr "Greška ! You cannot create recursive Locations." + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__latitude +msgid "Latitude" +msgstr "Latitude" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Latitude:" +msgstr "Latitude:" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment__location_id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_plan__location_id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_request__location_id +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Location" +msgstr "Lokacija" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.hr_equipment_request_view_kanban +msgid "Location :" +msgstr "Lokacija :" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment__location +msgid "Location Old" +msgstr "Lokacija Old" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Location name" +msgstr "Lokacija name" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__longitude +msgid "Longitude" +msgstr "Longitude" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_location +#: model:ir.actions.act_window,name:maintenance_location.maintenance_location_act_window +#: model:ir.model,name:maintenance_location.model_maintenance_location +msgid "Maintenance Location" +msgstr "Maintenance Lokacija" + +#. module: maintenance_location +#: model:ir.ui.menu,name:maintenance_location.maintenance_location_menu +msgid "Maintenance Locations" +msgstr "Maintenance Lokacijas" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_plan +msgid "Maintenance Plan" +msgstr "Maintenance Plan" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_request +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__name +msgid "Name" +msgstr "Naziv:" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__parent_id +msgid "Parent Location" +msgstr "Nadređena lokacija" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__parent_path +msgid "Parent Path" +msgstr "Putanja nadređenih" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__partner_id +msgid "Partner" +msgstr "Partner" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__sequence +msgid "Sequence" +msgstr "Sekvenca" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "e.g. Building A" +msgstr "e.g. Zgrada A" diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/es.po new file mode 100644 index 0000000..4e3f9dd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/es.po @@ -0,0 +1,136 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_location +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-12 11:56+0000\n" +"PO-Revision-Date: 2019-12-12 13:00+0100\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"Language: es\n" +"X-Generator: Poedit 2.0.6\n" + +#. module: maintenance_location +#: model:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Location name" +msgstr "Nombre de la ubicación" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_child_id +msgid "Child Locations" +msgstr "Ubicaciones Hijas" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_complete_name +msgid "Complete Name" +msgstr "Nombre completo" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_equipment +msgid "Equipment" +msgstr "Equipamiento" + +#. module: maintenance_location +#: code:addons/maintenance_location/models/maintenance_location.py:52 +#, python-format +msgid "Error ! You cannot create recursive Locations." +msgstr "Error! No puedes crear ubicaciones cíclicas." + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_id +msgid "ID" +msgstr "ID (identificación)" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location___last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_parent_left +msgid "Left Parent" +msgstr "Padre izquierdo" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment_location_id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_request_location_id +msgid "Location" +msgstr "Ubicación" + +#. module: maintenance_location +#: model:ir.ui.view,arch_db:maintenance_location.hr_equipment_request_view_kanban +msgid "Location :" +msgstr "Location :" + +#. module: maintenance_location +#: model:ir.actions.act_window,name:maintenance_location.maintenance_location_act_window +#: model:ir.model,name:maintenance_location.model_maintenance_location +msgid "Maintenance Location" +msgstr "Ubicación" + +#. module: maintenance_location +#: model:ir.ui.menu,name:maintenance_location.maintenance_location_menu +msgid "Maintenance Locations" +msgstr "Ubicaciones" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_request +msgid "Maintenance Requests" +msgstr "Peticiones de mantenimiento" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_name +msgid "Name" +msgstr "Nombre" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_parent_id +msgid "Parent Location" +msgstr "Ubicación padre" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_partner_id +msgid "Partner" +msgstr "Centro" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location_parent_right +msgid "Right Parent" +msgstr "Padre derecho" + +#. module: maintenance_location +#: model:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "e.g. Building A" +msgstr "p.e. Edificio A" diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/it.po new file mode 100644 index 0000000..0caa0bf --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/it.po @@ -0,0 +1,195 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_location +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-01-31 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: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "" +"
\n" +" Longitude:" +msgstr "" +"
\n" +" Longitudine:" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.hr_equipment_view_kanban +msgid "" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__active +msgid "Active" +msgstr "Attiva" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__child_id +msgid "Child Locations" +msgstr "Ubicazioni figlie" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__complete_name +msgid "Complete Name" +msgstr "Nome completo" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__description +msgid "Description" +msgstr "Descrizione" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment__display_name +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__display_name +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_plan__display_name +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_request__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_location +#: code:addons/maintenance_location/models/maintenance_location.py:0 +#, python-format +msgid "Error ! You cannot create recursive Locations." +msgstr "Errore! Non è possibile creare ubicazioni ricorsive." + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment__id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_plan__id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_request__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment____last_update +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location____last_update +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_plan____last_update +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__latitude +msgid "Latitude" +msgstr "Latitudine" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Latitude:" +msgstr "Latitudine:" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment__location_id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_plan__location_id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_request__location_id +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Location" +msgstr "Ubicazione" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.hr_equipment_request_view_kanban +msgid "Location :" +msgstr "Ubicazione:" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment__location +msgid "Location Old" +msgstr "Ubicazione vecchia" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Location name" +msgstr "Nome ubicazione" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__longitude +msgid "Longitude" +msgstr "Longitudine" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_location +#: model:ir.actions.act_window,name:maintenance_location.maintenance_location_act_window +#: model:ir.model,name:maintenance_location.model_maintenance_location +msgid "Maintenance Location" +msgstr "Ubicazione manutenzione" + +#. module: maintenance_location +#: model:ir.ui.menu,name:maintenance_location.maintenance_location_menu +msgid "Maintenance Locations" +msgstr "Ubicazioni manutenzione" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_plan +msgid "Maintenance Plan" +msgstr "Piano manutenzione" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_request +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__name +msgid "Name" +msgstr "Nome" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__parent_id +msgid "Parent Location" +msgstr "Ubicazione padre" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__parent_path +msgid "Parent Path" +msgstr "Percorso padre" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__partner_id +msgid "Partner" +msgstr "Partner" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__sequence +msgid "Sequence" +msgstr "Sequenza" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "e.g. Building A" +msgstr "e.g. Fabbricato A" diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/maintenance_location.pot b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/maintenance_location.pot new file mode 100644 index 0000000..4263221 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/i18n/maintenance_location.pot @@ -0,0 +1,182 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_location +# +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: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "" +"
\n" +" Longitude:" +msgstr "" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.hr_equipment_view_kanban +msgid "" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__active +msgid "Active" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__child_id +msgid "Child Locations" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__complete_name +msgid "Complete Name" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__create_uid +msgid "Created by" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__create_date +msgid "Created on" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__description +msgid "Description" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_location +#. odoo-python +#: code:addons/maintenance_location/models/maintenance_location.py:0 +#, python-format +msgid "Error ! You cannot create recursive Locations." +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__id +msgid "ID" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location____last_update +msgid "Last Modified on" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__write_date +msgid "Last Updated on" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__latitude +msgid "Latitude" +msgstr "" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Latitude:" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment__location_id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_plan__location_id +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_request__location_id +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Location" +msgstr "" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.hr_equipment_request_view_kanban +msgid "Location :" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_equipment__location +msgid "Location Old" +msgstr "" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "Location name" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__longitude +msgid "Longitude" +msgstr "" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_location +#: model:ir.actions.act_window,name:maintenance_location.maintenance_location_act_window +#: model:ir.model,name:maintenance_location.model_maintenance_location +msgid "Maintenance Location" +msgstr "" + +#. module: maintenance_location +#: model:ir.ui.menu,name:maintenance_location.maintenance_location_menu +msgid "Maintenance Locations" +msgstr "" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_plan +msgid "Maintenance Plan" +msgstr "" + +#. module: maintenance_location +#: model:ir.model,name:maintenance_location.model_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__name +msgid "Name" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__parent_id +msgid "Parent Location" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__parent_path +msgid "Parent Path" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__partner_id +msgid "Partner" +msgstr "" + +#. module: maintenance_location +#: model:ir.model.fields,field_description:maintenance_location.field_maintenance_location__sequence +msgid "Sequence" +msgstr "" + +#. module: maintenance_location +#: model_terms:ir.ui.view,arch_db:maintenance_location.maintenance_location_form_view +msgid "e.g. Building A" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/__init__.py new file mode 100644 index 0000000..3b2481d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/__init__.py @@ -0,0 +1,4 @@ +from . import maintenance_location +from . import maintenance_request +from . import maintenance_equipment +from . import maintenance_plan diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_equipment.py new file mode 100644 index 0000000..7614226 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_equipment.py @@ -0,0 +1,20 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class MaintenanceEquipment(models.Model): + + _inherit = "maintenance.equipment" + + location_id = fields.Many2one("maintenance.location", tracking=True) + location = fields.Char(string="Location Old") + + def _prepare_request_from_plan(self, maintenance_plan, next_maintenance_date): + res = super()._prepare_request_from_plan( + maintenance_plan, next_maintenance_date + ) + location = maintenance_plan.location_id or self.location_id + res.update({"location_id": location.id}) + return res diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_location.py b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_location.py new file mode 100644 index 0000000..7224041 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_location.py @@ -0,0 +1,54 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class MaintenanceLocation(models.Model): + + _name = "maintenance.location" + _description = "Maintenance Location" + _parent_name = "parent_id" + _parent_store = True + _parent_order = "name" + _rec_name = "complete_name" + _order = "complete_name,id" + + name = fields.Char(required=True) + description = fields.Char() + complete_name = fields.Char( + compute="_compute_complete_name", store=True, recursive=True + ) + + partner_id = fields.Many2one("res.partner") + + parent_id = fields.Many2one( + "maintenance.location", + "Parent Location", + index=True, + ondelete="cascade", + ) + child_id = fields.One2many("maintenance.location", "parent_id", "Child Locations") + parent_path = fields.Char(index=True, unaccent=False) + latitude = fields.Float(digits=(16, 5)) + longitude = fields.Float(digits=(16, 5)) + sequence = fields.Integer(default=10) + active = fields.Boolean(default=True) + + @api.depends("name", "parent_id.complete_name") + def _compute_complete_name(self): + for location in self: + if location.parent_id: + location.complete_name = "{} / {}".format( + location.parent_id.complete_name, + location.name, + ) + else: + location.complete_name = location.name + + @api.constrains("parent_id") + def _check_category_recursion(self): + if not self._check_recursion(): + raise ValidationError(_("Error ! You cannot create recursive Locations.")) + return True diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_plan.py b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_plan.py new file mode 100644 index 0000000..3a02e1f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_plan.py @@ -0,0 +1,11 @@ +# Copyright 2020 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class MaintenancePlan(models.Model): + + _inherit = "maintenance.plan" + + location_id = fields.Many2one("maintenance.location") diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_request.py b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_request.py new file mode 100644 index 0000000..df41916 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_request.py @@ -0,0 +1,22 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class MaintenanceRequest(models.Model): + + _inherit = "maintenance.request" + + location_id = fields.Many2one( + "maintenance.location", + compute="_compute_equipment_id", + store=True, + readonly=False, + ) + + @api.depends("equipment_id") + def _compute_equipment_id(self): + for record in self: + if record.equipment_id and record.equipment_id.location_id: + record.location_id = record.equipment_id.location_id diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..3221219 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* CreuBlanca + * Enric Tobella + * Kevin Luna + * Jaime Arroyo diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/readme/DESCRIPTION.rst new file mode 100644 index 0000000..6b5f209 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Define a location system with hierarchy for maintenance equipments and requests. diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/security/ir.model.access.csv b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/security/ir.model.access.csv new file mode 100644 index 0000000..0e7eb05 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/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_maintenance_location,access_maintenance_location,model_maintenance_location,base.group_user,1,0,0,0 +access_maintenance_location_maintenance,access_maintenance_location_maintenance,model_maintenance_location,maintenance.group_equipment_manager,1,1,1,1 diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/static/description/index.html new file mode 100644 index 0000000..6dbd49a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/static/description/index.html @@ -0,0 +1,424 @@ + + + + + + +Maintenance Location + + + +
+

Maintenance Location

+ + +

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

+

Define a location system with hierarchy for maintenance equipments and requests.

+

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

+
    +
  • CreuBlanca
  • +
+
+
+

Contributors

+
    +
  • CreuBlanca +* Enric Tobella +* Kevin Luna +* Jaime Arroyo
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_location/maintenance_location/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/tests/__init__.py new file mode 100644 index 0000000..e76ac8f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_location diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/tests/test_maintenance_location.py b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/tests/test_maintenance_location.py new file mode 100644 index 0000000..4305a5d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/tests/test_maintenance_location.py @@ -0,0 +1,53 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.exceptions import UserError +from odoo.tests.common import TransactionCase + + +class TestMaintenanceLocation(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + self = cls + self.location_1 = self.env["maintenance.location"].create({"name": "L1"}) + self.location_2 = self.env["maintenance.location"].create( + {"name": "L2", "parent_id": self.location_1.id} + ) + self.equipment = self.env["maintenance.equipment"].create( + {"name": "L2", "location_id": self.location_1.id} + ) + self.team = self.env["maintenance.team"].create({"name": "Team"}) + self.request = self.env["maintenance.request"].create( + {"name": "Request", "maintenance_team_id": self.team.id} + ) + + self.equipment = self.env["maintenance.equipment"].create( + {"name": "Laptop", "location_id": self.location_1.id} + ) + + self.plan = self.env["maintenance.plan"].create( + { + "equipment_id": self.equipment.id, + "interval": 1, + "interval_step": "month", + "maintenance_plan_horizon": 2, + "planning_step": "month", + "maintenance_team_id": self.team.id, + "location_id": self.location_1.id, + } + ) + + def test_maintenance_location(self): + self.assertEqual(self.location_2.complete_name, "L1 / L2") + with self.assertRaises(UserError): + self.location_1.write({"parent_id": self.location_2.id}) + + self.request.write({"equipment_id": self.equipment.id}) + self.assertEqual(self.request.location_id.id, self.location_1.id) + + def test_request_creation(self): + request = self.equipment._create_new_request(self.plan) + self.assertTrue(request) + for r in request: + self.assertEqual(r.location_id.id, self.location_1.id) diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_equipment.xml b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_equipment.xml new file mode 100644 index 0000000..bdf29e9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_equipment.xml @@ -0,0 +1,59 @@ + + + + + maintenance.equipment.form (in maintenance_location) + maintenance.equipment + + + + 1 + + + + + + + + + + + maintenance.equipment.search (in maintenance_location) + maintenance.equipment + + + + + + + + + maintenance.equipment.tree (in maintenance_location) + maintenance.equipment + + + + + + + + + maintenance.equipment.tree (in maintenance_location) + maintenance.equipment + + +
+
+ + +
+
+
+
+
diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_location.xml b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_location.xml new file mode 100644 index 0000000..311d11c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_location.xml @@ -0,0 +1,61 @@ + + + + + maintenance.location.form (in cb_maintenance) + maintenance.location + +
+ +
+
+ + + + +
+
+
+
+ + maintenance.location.search (in cb_maintenance) + maintenance.location + + + + + + + + maintenance.location.tree (in cb_maintenance) + maintenance.location + + + + + + + + Maintenance Location + maintenance.location + tree,form + [] + {} + + + Maintenance Locations + + + + +
diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_plan.xml b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_plan.xml new file mode 100644 index 0000000..ba44e49 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_plan.xml @@ -0,0 +1,35 @@ + + + + + maintenance.plan.form (in maintenance_location) + maintenance.plan + + + + + + + + + maintenance.plan.search (in maintenance_location) + maintenance.plan + + + + + + + + + maintenance.plan.tree (in maintenance_location) + maintenance.plan + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_request.xml b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_request.xml new file mode 100644 index 0000000..e6a8493 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/views/maintenance_request.xml @@ -0,0 +1,51 @@ + + + + + maintenance.request.form (in maintenance_location) + maintenance.request + + + + + + + + + maintenance.request.search (in maintenance_location) + maintenance.request + + + + + + + + + maintenance.request.tree (in maintenance_location) + maintenance.request + + + + + + + + + maintenance.request.kanban (in maintenance_location) + maintenance.request + + + + Location :
+
+
+
+
diff --git a/odoo-bringout-oca-maintenance-maintenance_location/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_location/pyproject.toml new file mode 100644 index 0000000..abf9367 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_location/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_location" +version = "16.0.0" +description = "Maintenance Location - + Define a location system for maintenance" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance_plan>=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 = ["maintenance_location"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/README.md b/odoo-bringout-oca-maintenance-maintenance_plan/README.md new file mode 100644 index 0000000..dba2449 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/README.md @@ -0,0 +1,44 @@ +# Maintenance Plan + +Odoo addon: maintenance_plan + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_plan +``` + +## Dependencies + +This addon depends on: +- base_maintenance + +## Manifest Information + +- **Name**: Maintenance Plan +- **Version**: 16.0.1.0.0 +- **Category**: Maintenance +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_plan`. + +## 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 +- 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-maintenance-maintenance_plan/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/ARCHITECTURE.md new file mode 100644 index 0000000..b2f60a2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/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 Maintenance_plan Module - maintenance_plan + 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-maintenance-maintenance_plan/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/CONFIGURATION.md new file mode 100644 index 0000000..f8c1a02 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_plan. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/DEPENDENCIES.md new file mode 100644 index 0000000..02c57be --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [base_maintenance](https://github.com/bringout/oca-technical) diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/FAQ.md new file mode 100644 index 0000000..e7e470a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/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 maintenance_plan or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/INSTALL.md new file mode 100644 index 0000000..d042b4e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_plan" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_plan" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/MODELS.md new file mode 100644 index 0000000..d447d92 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/doc/MODELS.md @@ -0,0 +1,15 @@ +# Models + +Detected core models and extensions in maintenance_plan. + +```mermaid +classDiagram + class maintenance_kind + class maintenance_plan + class maintenance_equipment + class maintenance_request +``` + +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-maintenance-maintenance_plan/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/OVERVIEW.md new file mode 100644 index 0000000..931d154 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_plan. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_plan +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/SECURITY.md new file mode 100644 index 0000000..be22e7d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/doc/SECURITY.md @@ -0,0 +1,41 @@ +# Security + +Access control and security definitions in maintenance_plan. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../maintenance_plan/security/ir.model.access.csv)** + - 4 model access rules + +## Record Rules + +Row-level security rules defined in: + +## Security Groups & Configuration + +Security groups and permissions defined in: +- **[maintenance_security.xml](../maintenance_plan/security/maintenance_security.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](../maintenance_plan/security/ir.model.access.csv)** + - Model access permissions (CRUD rights) +- **[maintenance_security.xml](../maintenance_plan/security/maintenance_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-maintenance-maintenance_plan/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/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-maintenance-maintenance_plan/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/USAGE.md new file mode 100644 index 0000000..d256f6a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/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 maintenance_plan +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_plan/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/README.rst b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/README.rst new file mode 100644 index 0000000..6a46e8c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/README.rst @@ -0,0 +1,135 @@ +================ +Maintenance Plan +================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:51d1395956daf1de19f24abe40f89528841450822d90006b04a75e26f1913828 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_plan + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_plan + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of Odoo Maintenance module by allowing +an equipment to have different preventive maintenance kinds. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +Install the module. + +Should you already use the maintenance module and have equipments with field +'Preventive Maintenance Frequency' defined, a new maintenance plan will be +automatically created on these equipments with maintenance kind 'Install'. + +Moreover if a Request of type 'preventive' exists, whose stage isn't marked as +'Request done', and has a Request Date matching the equipment's +'Next Preventive Maintenance', the request will be updated with the +'Install' maintenance kind. + +Make sure you don't have multiple 'preventive' requests at a stage which isn't +marked as 'Request done' and on the same 'Request date' as the equipment or +the module installation will fail with a User Error. + +Usage +===== + +Instead of defining a period and duration for only one preventive maintenance +per equipment, you can define multiple preventive maintenance kind for each +equipment. + +Maintenance Kinds have to be defined through the configuration menu. Their name +have to be unique and can be set as active or inactive, should these not be +used anymore. + +On any equipment over the maintenance tab, the maintenance plan be accessible, +allowing to add different maintenance kind with their +own frequency and duration. The next maintenance date will then be computed +automatically according to the start's date and the frequency defined, but the +maintenance request won't be created automatically as is the case in Odoo's +Maintenance module. In the plan there's also a field allowing the user to set the +maintenance horizon, insert the instructions to follow on the maintenance that +will be forwarded to the maintenance request generated from the plan. + +This module uses the original Cron job of Odoo's Maintenance module to generate +maintenance requests. To do so, it takes into account the planning horizon and +generates all maintenance requests whose schedule date would fall inside that +planning horizon. Therefore, the maintenance manager can have a proper planning +of how many maintenance requests are programming for the future. Leaving planning +horizon to 0 will only create those maintenance request that are scheduled for +today. + +We can also create maintenance requests from a plan using a domain for selecting the equipments. +This way, we might have a single plan that will generate all the requests. +In order to use it, we need to mark the `Generate with Domain` field. + +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 SA +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* Akim Juillerat +* Matteo Mazzoni +* David Alonso +* Adrià Gil Sorribes +* Jordi Ballester Alomar +* Lois Rilo +* Enric Tobella +* Alexei Rivera + +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/maintenance `_ 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-maintenance-maintenance_plan/maintenance_plan/__init__.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/__init__.py new file mode 100644 index 0000000..cc6b635 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/__init__.py @@ -0,0 +1,2 @@ +from . import models +from .hooks import post_init_hook diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/__manifest__.py new file mode 100644 index 0000000..8670afa --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2017 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Maintenance Plan", + "summary": "Extends preventive maintenance planning", + "version": "16.0.1.0.0", + "author": "Camptocamp SA, ForgeFlow, Odoo Community Association (OCA)", + "license": "AGPL-3", + "category": "Maintenance", + "website": "https://github.com/OCA/maintenance", + "images": [], + "depends": ["base_maintenance"], + "data": [ + "security/ir.model.access.csv", + "security/maintenance_security.xml", + "views/maintenance_kind_views.xml", + "views/maintenance_plan_views.xml", + "views/maintenance_equipment_views.xml", + "views/report_maintenance_request.xml", + ], + "external_dependencies": {"python": ["dateutil"]}, + "demo": ["data/demo_maintenance_plan.xml"], + "post_init_hook": "post_init_hook", + "installable": True, +} diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/data/demo_maintenance_plan.xml b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/data/demo_maintenance_plan.xml new file mode 100644 index 0000000..e7e07e9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/data/demo_maintenance_plan.xml @@ -0,0 +1,57 @@ + + + + + Monthly + + + + Weekly + + + + + + + 1 + month + 2 + 2 + month + + + + + 1 + month + 2 + 2 + month + + + + + 1 + month + 2 + 1 + month + + + + + 1 + month + 4 + 3 + month + + + + + 7 + 2 + 1 + month + + diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/hooks.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/hooks.py new file mode 100644 index 0000000..b649056 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/hooks.py @@ -0,0 +1,52 @@ +# Copyright 2017 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import logging + +from odoo import SUPERUSER_ID, _, api +from odoo.exceptions import UserError + + +def post_init_hook(cr, registry): + + logging.getLogger("odoo.addons.maintenance_plan").info( + "Migrating existing preventive maintenance" + ) + + env = api.Environment(cr, SUPERUSER_ID, {}) + + equipments = env["maintenance.equipment"].search([("period", "!=", False)]) + + if equipments: + + maintenance_kind = env["maintenance.kind"].create( + {"name": "Install", "active": True} + ) + + for equipment in equipments: + request = equipment.maintenance_ids.filtered( + lambda r: r.maintenance_type == "preventive" + and not r.stage_id.done + and r.request_date == equipment.next_action_date + ) + if len(request) > 1: + raise UserError( + _( + "You have multiple preventive maintenance requests on " + "equipment %(name)s next action date (%(date)s). Please leave only " + "one preventive request on the date of equipment's next " + "action to install the module.", + name=equipment.name, + date=equipment.next_action_date, + ) + ) + elif len(request) == 1: + request.write({"maintenance_kind_id": maintenance_kind.id}) + env["maintenance.plan"].create( + { + "equipment_id": equipment.id, + "maintenance_kind_id": maintenance_kind.id, + "duration": equipment.maintenance_duration, + "interval": equipment.period, + } + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/bs.po new file mode 100644 index 0000000..4f7beb6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/bs.po @@ -0,0 +1,650 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan +# +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: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.report_maintenance_request_document +msgid "Instructions:" +msgstr "Instructions:" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction +msgid "Action Needed" +msgstr "Potrebna akcija" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__active +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Active" +msgstr "Aktivan" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__active +msgid "Active Kind" +msgstr "Aktivna vrsta" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_ids +msgid "Activities" +msgstr "Aktivnosti" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Dekoracija iznimke aktivnosti" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_state +msgid "Activity State" +msgstr "Status aktivnosti" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Activity Type Icon" +msgstr "Ikona tipa aktivnosti" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_domain +msgid "Apply on" +msgstr "Primjeni na" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Archived" +msgstr "Arhivirano" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_attachment_count +msgid "Attachment Count" +msgstr "Broj priloga" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__company_id +msgid "Company" +msgstr "Preduzeće" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_open_count +msgid "Current Maintenance" +msgstr "Trenutno održavanje" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Date from which the maintenance will we active" +msgstr "Datum od kojeg će održavanje biti aktivno" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__day +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__day +msgid "Day(s)" +msgstr "Dan(i)" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Describe the maintenance to do..." +msgstr "Describe the maintenance to do..." + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__name +msgid "Description" +msgstr "Opis" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__display_name +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__skip_notify_follower_on_requests +msgid "Do not notify to follower when creating requests?" +msgstr "Ne obavještavaj pratioce prilikom kreiranja zahtjeva?" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__duration +msgid "Duration (hours)" +msgstr "Trajanje (sati)" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__equipment_id +msgid "Equipment" +msgstr "Oprema" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_follower_ids +msgid "Followers" +msgstr "Pratioci" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_partner_ids +msgid "Followers (Partners)" +msgstr "Pratioci (Partneri)" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Font awesome ikona npr. fa-tasks" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval +msgid "Frequency" +msgstr "Frekvencija" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_with_domain +msgid "Generate With Domain" +msgstr "Generiši sa domenom" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Generate requests for current threshold" +msgstr "Generate requests for current threshold" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__has_message +msgid "Has Message" +msgstr "Ima poruku" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__id +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon" +msgstr "Ikona" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Ikona za prikaz iznimki." + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Ako je zakačeno, nove poruke će zahtjevati vašu pažnju" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__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: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "If not clicked, the scheduled action will do it for you." +msgstr "If not clicked, the scheduled action will do it for you." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Inactive" +msgstr "Neaktivan" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Instructions" +msgstr "Instructions" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval +msgid "Interval between each maintenance" +msgstr "Interval između svakog održavanja" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_is_follower +msgid "Is Follower" +msgstr "Pratilac" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Kind" +msgstr "Kind" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind____last_update +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__planning_step +msgid "Let the event automatically repeat at that interval" +msgstr "Neka se događaj automatski ponavlja u ovim intervalima" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval_step +msgid "Let the event automatically repeat at that interval step" +msgstr "Dozvoli da se događaj automatski ponavlja u zadanom intervalu" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_main_attachment_id +msgid "Main Attachment" +msgstr "Glavna zakačka" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Maintenace Equipment must belong to the equipment's company" +msgstr "Maintenace Equipment must belong to the equipment's company" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_count +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance" +msgstr "Održavanje" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__search_maintenance_plan_count +msgid "Maintenance All Plan Count" +msgstr "Ukupan broj planova održavanja" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_kind +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_kind_id +msgid "Maintenance Kind" +msgstr "Maintenance Kind" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance Plan" +msgstr "Plan održavanja" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_count +msgid "Maintenance Plan Count" +msgstr "Broj planova održavanja" + +#. module: maintenance_plan +#: model:ir.ui.menu,name:maintenance_plan.menu_m_plan_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Maintenance Plans" +msgstr "Planovi održavanja" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_request +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.hr_equipment_request_action_from_plan +msgid "Maintenance Requests" +msgstr "Zahtjevi za održavanje" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_team_id +msgid "Maintenance Team" +msgstr "Tim za održavanje" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_team_required +msgid "Maintenance Team Required" +msgstr "Tim za održavanje je obavezan" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__duration +msgid "Maintenance duration in hours" +msgstr "Trajanje održavanja u satima" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_kind_id +msgid "Maintenance kind" +msgstr "Vrsta održavanja" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_kind_name_uniq +msgid "Maintenance kind name already exists." +msgstr "Naziv vrste održavanja već postoji." + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_kind_action +#: model:ir.ui.menu,name:maintenance_plan.menu_maintenance_kind_configuration +msgid "Maintenance kinds" +msgstr "Maintenance kinds" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_ids +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_plan_id +msgid "Maintenance plan" +msgstr "Plan održavanja" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "" +"Maintenance planning horizon. Only the maintenance requests inside the " +"horizon will be created." +msgstr "" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_action +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_equipment_action +msgid "Maintenance plans" +msgstr "Maintenance plans" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_ids +msgid "Maintenance requests" +msgstr "Zahtjevi za održavanje" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error +msgid "Message Delivery error" +msgstr "Greška pri isporuci poruke" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_ids +msgid "Messages" +msgstr "Poruke" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__month +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__month +msgid "Month(s)" +msgstr "Mjesec(i)" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_monthly +msgid "Monthly" +msgstr "Mjesečno" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Rok za moju aktivnost" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__name +msgid "Name" +msgstr "Naziv:" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Krajnji rok za sljedeću aktivnost" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_summary +msgid "Next Activity Summary" +msgstr "Pregled sljedeće aktivnosti" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_id +msgid "Next Activity Type" +msgstr "Tip sljedeće aktivnosti" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__next_maintenance_date +msgid "Next Maintenance Date" +msgstr "Datum sljedećeg održavanja" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__note +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__note +msgid "Note" +msgstr "Zabilješka" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__notes +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +msgid "Notes" +msgstr "Zabilješke" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of Actions" +msgstr "Broj akcija" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of errors" +msgstr "Broj grešaka" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Broj poruka koje zahtijevaju aktivnost" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Broj poruka sa greškama pri isporuci" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon period" +msgstr "P. Horizon period" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon step" +msgstr "P. Horizon step" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Planning Horizon" +msgstr "Planning Horizon" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "Planning Horizon period" +msgstr "Period horizonta planiranja" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__planning_step +msgid "Planning Horizon step" +msgstr "Korak horizonta planiranja" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Plans" +msgstr "Planovi" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(description)s" +msgstr "Preventive Maintenance (%(kind)s) - %(description)s" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(plan)s" +msgstr "Preventive Maintenance (%(kind)s) - %(plan)s" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval_step +msgid "Recurrence" +msgstr "Ponavljanje" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_user_id +msgid "Responsible User" +msgstr "Odgovorni korisnik" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__search_equipment_id +msgid "Search Equipment" +msgstr "Pretraga opreme" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "" +"Some maintenance plan's company is incompatible with the company of this " +"equipment." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Start Date" +msgstr "Početni datum" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Start Maintenance Date" +msgstr "Datum početka održavanja" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__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: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Team" +msgstr "Tim" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "" +"The maintenance plan %(kind)s of equipment %(eqpmnt)s has generated a " +"request which is not done yet. You should either set the request as done, " +"remove its maintenance kind or delete it first." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Vrsta aktivnosti iznimke na zapisu." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Under Maintenance" +msgstr "Pod održavanjem" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmnt)s)" +msgstr "Unnamed %(kind)s plan (%(eqpmnt)s)" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmt)s)" +msgstr "Unnamed %(kind)s plan (%(eqpmt)s)" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(void)s plan (%(eqpmnt)s)" +msgstr "Unnamed %(void)s plan (%(eqpmnt)s)" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Unspecified kind" +msgstr "Unspecified kind" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unsupported search operator" +msgstr "Unsupported search operator" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website Messages" +msgstr "Poruke sa website-a" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website communication history" +msgstr "Povijest komunikacije Web stranice" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__week +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__week +msgid "Week(s)" +msgstr "Sedmica" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_weekly +msgid "Weekly" +msgstr "Sedmično" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__year +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__year +msgid "Year(s)" +msgstr "Godin(e)a" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_plan_equipment_kind_uniq +msgid "" +"You cannot define multiple times the same maintenance kind on an equipment " +"maintenance plan." +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/hooks.py:0 +#, python-format +msgid "" +"You have multiple preventive maintenance requests on equipment %(name)s next" +" action date (%(date)s). Please leave only one preventive request on the " +"date of equipment's next action to install the module." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "e.g. Calibration" +msgstr "e.g. Calibration" diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/es.po new file mode 100644 index 0000000..11b663c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/es.po @@ -0,0 +1,680 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-03-01 13:30+0000\n" +"PO-Revision-Date: 2024-02-03 10:34+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: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.report_maintenance_request_document +msgid "Instructions:" +msgstr "Instrucciones:" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction +msgid "Action Needed" +msgstr "Acción necesaria" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__active +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Active" +msgstr "Activo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__active +msgid "Active Kind" +msgstr "Tipo activo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_ids +msgid "Activities" +msgstr "Actividades" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decoración de Actividad de Excepción" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_state +msgid "Activity State" +msgstr "Estado de actividad" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Activity Type Icon" +msgstr "Actividad de Tipo de Iconos" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_domain +msgid "Apply on" +msgstr "Solicitar el" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Archived" +msgstr "Archivado" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_attachment_count +msgid "Attachment Count" +msgstr "Total de adjuntos" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__company_id +msgid "Company" +msgstr "Compañía" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_open_count +msgid "Current Maintenance" +msgstr "Mantenimiento actual" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Date from which the maintenance will we active" +msgstr "Fecha desde la cual el mantenimiento estará activo" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__day +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__day +msgid "Day(s)" +msgstr "Día(s)" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Describe the maintenance to do..." +msgstr "Describa el mantenimiento a hacer..." + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__name +msgid "Description" +msgstr "Descripción" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__display_name +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__skip_notify_follower_on_requests +msgid "Do not notify to follower when creating requests?" +msgstr "¿No notificar al seguidor cuando se crean las peticiones?" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__duration +msgid "Duration (hours)" +msgstr "Duración (horas)" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__equipment_id +msgid "Equipment" +msgstr "Equipo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_follower_ids +msgid "Followers" +msgstr "Seguidores" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidores (Socios)" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Icono de Font Awesome ej. fa-tasks" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval +msgid "Frequency" +msgstr "Frecuencia" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_with_domain +msgid "Generate With Domain" +msgstr "Generar Con Dominio" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Generate requests for current threshold" +msgstr "Generar peticiones para el umbral actual" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__has_message +msgid "Has Message" +msgstr "Tiene mensaje" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__id +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon" +msgstr "Icono" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icono para indicar una actividad de excepción." + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_unread +msgid "If checked, new messages require your attention." +msgstr "Si está marcado hay nuevos mensajes que requieren su atención." + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Si se encuentra marcado, algunos mensajes tienen error de envío." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "If not clicked, the scheduled action will do it for you." +msgstr "Si no se pulsa, la acción programada lo hará por usted." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Inactive" +msgstr "Inactivo" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Instructions" +msgstr "Instrucciones" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval +msgid "Interval between each maintenance" +msgstr "Intervalo entre cada mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_is_follower +msgid "Is Follower" +msgstr "Es seguidor" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Kind" +msgstr "Amablemente" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind____last_update +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_uid +msgid "Last Updated by" +msgstr "actualizado por última vez por" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__planning_step +msgid "Let the event automatically repeat at that interval" +msgstr "Permitir que el evento se repita automáticamente a cada intervalo" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval_step +msgid "Let the event automatically repeat at that interval step" +msgstr "" +"Permitir que el evento se repita automáticamente a cada paso del intervalo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_main_attachment_id +msgid "Main Attachment" +msgstr "Adjunto principal" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Maintenace Equipment must belong to the equipment's company" +msgstr "El equipo de mantenimiento debe pertenecer a la empresa del equipo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_count +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance" +msgstr "Mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__search_maintenance_plan_count +msgid "Maintenance All Plan Count" +msgstr "Mantenimiento Recuento de todos los planes" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_kind +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_kind_id +msgid "Maintenance Kind" +msgstr "Tipo de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance Plan" +msgstr "Plan de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_count +msgid "Maintenance Plan Count" +msgstr "Número de planes de mantenimiento" + +#. module: maintenance_plan +#: model:ir.ui.menu,name:maintenance_plan.menu_m_plan_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Maintenance Plans" +msgstr "Planes de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_request +msgid "Maintenance Request" +msgstr "Peticiones de mantenimiento" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.hr_equipment_request_action_from_plan +msgid "Maintenance Requests" +msgstr "Peticiones de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_team_id +msgid "Maintenance Team" +msgstr "Equipo de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_team_required +msgid "Maintenance Team Required" +msgstr "Equipo de mantenimiento exigido" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__duration +msgid "Maintenance duration in hours" +msgstr "Duración del mantenimiento en horas" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_kind_id +msgid "Maintenance kind" +msgstr "Tipo de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_kind_name_uniq +msgid "Maintenance kind name already exists." +msgstr "Ya existe ese nombre de tipo de mantenimiento." + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_kind_action +#: model:ir.ui.menu,name:maintenance_plan.menu_maintenance_kind_configuration +msgid "Maintenance kinds" +msgstr "Tipos de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_ids +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_plan_id +msgid "Maintenance plan" +msgstr "Plan de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "" +"Maintenance planning horizon. Only the maintenance requests inside the " +"horizon will be created." +msgstr "" +"Horizonte del planning de mantenimiento. Solo se crearán las peticiones de " +"mantenimiento dentro del horizonte." + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_action +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_equipment_action +msgid "Maintenance plans" +msgstr "Planes de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_ids +msgid "Maintenance requests" +msgstr "Peticiones de mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error +msgid "Message Delivery error" +msgstr "Error de Envío de Mensaje" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_ids +msgid "Messages" +msgstr "Mensajes" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__month +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__month +msgid "Month(s)" +msgstr "Mensual(es)" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_monthly +msgid "Monthly" +msgstr "Mensual" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Mi plazo de actividades" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__name +msgid "Name" +msgstr "Nombre" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Siguiente plazo de actividad" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_summary +msgid "Next Activity Summary" +msgstr "Resumen de la siguiente actividad" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_id +msgid "Next Activity Type" +msgstr "Siguiente tipo de actividad" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__next_maintenance_date +msgid "Next Maintenance Date" +msgstr "Próximo mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__note +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__note +msgid "Note" +msgstr "Nota" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__notes +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +msgid "Notes" +msgstr "Notas" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de acciones" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of errors" +msgstr "Numero de errores" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "Número de mensajes que requieren una acción" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensajes con error de envío" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_unread_counter +msgid "Number of unread messages" +msgstr "Número de mensajes no leidos" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon period" +msgstr "P. Periodo horizonte" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon step" +msgstr "P. Paso al horizonte" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Planning Horizon" +msgstr "Horizonte de planning" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "Planning Horizon period" +msgstr "Perido del horizonte de planning" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__planning_step +msgid "Planning Horizon step" +msgstr "Paso del horizonte de planning" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Plans" +msgstr "Planes" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(description)s" +msgstr "Mantenimiento preventivo (%(kind)s)-%(description)s" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(plan)s" +msgstr "Mantenimiento preventivo (%(kind)s)-%(plan)s" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval_step +msgid "Recurrence" +msgstr "Recurrencia" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_user_id +msgid "Responsible User" +msgstr "Usuario responsable" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__search_equipment_id +msgid "Search Equipment" +msgstr "Equipo de Búsqueda" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "" +"Some maintenance plan's company is incompatible with the company of this " +"equipment." +msgstr "" +"algún plan de mantenimiento de la compañía es incompatible con la compañía " +"de este equipo." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Start Date" +msgstr "Fecha de inicio" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Start Maintenance Date" +msgstr "Fecha de inicio del mantenimiento" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__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 "" +"Estado basado en actividades\n" +"Vencida: la fecha tope ya ha pasado\n" +"Hoy: La fecha tope es hoy\n" +"Planificada: futuras actividades." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Team" +msgstr "Equipo" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "" +"The maintenance plan %(kind)s of equipment %(eqpmnt)s has generated a " +"request which is not done yet. You should either set the request as done, " +"remove its maintenance kind or delete it first." +msgstr "" +"El plan de mantenimiento %(kind)s del equipo %(eqpmnt)s ha generado una " +"solicitud que aún no se ha realizado. Debe establecer la solicitud como " +"realizada, eliminar su tipo de mantenimiento o eliminarla primero." + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo de actividad de excepción registrada." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Under Maintenance" +msgstr "En mantenimiento" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmnt)s)" +msgstr "Plan %(kind)s sin nombre (%(eqpmnt)s)" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmt)s)" +msgstr "Plan %(kind)s sin nombre (%(eqpmt)s)" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(void)s plan (%(eqpmnt)s)" +msgstr "Plan %(void)s sin nombre (%(eqpmnt)s)" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_unread +msgid "Unread Messages" +msgstr "Mensajes sin leer" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Contador de mensajes sin leer" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Unspecified kind" +msgstr "Tipo no especificado" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unsupported search operator" +msgstr "Operador de búsqueda no soportado" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website Messages" +msgstr "Mensajes de la página web" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website communication history" +msgstr "historial de la comunicación en la web" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__week +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__week +msgid "Week(s)" +msgstr "Semana(s)" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_weekly +msgid "Weekly" +msgstr "Semanal" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__year +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__year +msgid "Year(s)" +msgstr "Año(s)" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_plan_equipment_kind_uniq +msgid "" +"You cannot define multiple times the same maintenance kind on an equipment " +"maintenance plan." +msgstr "" +"No se pueden definir varias veces el mismo tipo de mantenimiento en el plan " +"de mantenimiento de un equipo." + +#. module: maintenance_plan +#: code:addons/maintenance_plan/hooks.py:0 +#, python-format +msgid "" +"You have multiple preventive maintenance requests on equipment %(name)s next " +"action date (%(date)s). Please leave only one preventive request on the date " +"of equipment's next action to install the module." +msgstr "" +"Tiene varias solicitudes de mantenimiento preventivo en la fecha de la " +"próxima acción del equipo %(name)s (%(date)s). Por favor, deje sólo una " +"solicitud preventiva en la fecha de la próxima acción del equipo para " +"instalar el módulo." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "e.g. Calibration" +msgstr "p.ej. Calibración" + +#~ msgid "SMS Delivery error" +#~ msgstr "Error de envío SMS" diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/it.po new file mode 100644 index 0000000..9796341 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/it.po @@ -0,0 +1,739 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-12-31 16: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: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.report_maintenance_request_document +msgid "Instructions:" +msgstr "Istruzioni:" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction +msgid "Action Needed" +msgstr "Azione richiesta" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__active +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Active" +msgstr "Attivo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__active +msgid "Active Kind" +msgstr "Genere attivo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_ids +msgid "Activities" +msgstr "Attività" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decorazione eccezione attività" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_state +msgid "Activity State" +msgstr "Stato attività" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Activity Type Icon" +msgstr "Icona tipo attività" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_domain +msgid "Apply on" +msgstr "Applica a" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Archived" +msgstr "In archivio" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_attachment_count +msgid "Attachment Count" +msgstr "Conteggio allegati" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__company_id +msgid "Company" +msgstr "Azienda" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_open_count +msgid "Current Maintenance" +msgstr "Manutenzione corrente" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Date from which the maintenance will we active" +msgstr "Data dalla quale la manutenzione sarà attiva" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__day +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__day +msgid "Day(s)" +msgstr "Giorno(i)" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Describe the maintenance to do..." +msgstr "Descrivere la manutenzione da fare..." + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__name +msgid "Description" +msgstr "Descrizione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__display_name +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__skip_notify_follower_on_requests +msgid "Do not notify to follower when creating requests?" +msgstr "Non segnalare a chi segue quando si creano richieste?" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__duration +msgid "Duration (hours)" +msgstr "Durata (ore)" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__equipment_id +msgid "Equipment" +msgstr "Attrezzatura" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_follower_ids +msgid "Followers" +msgstr "Seguito da" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguito da (partner)" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Icona Font Awesome es. fa-tasks" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval +msgid "Frequency" +msgstr "Frequenza" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_with_domain +msgid "Generate With Domain" +msgstr "Genera con dominio" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Generate requests for current threshold" +msgstr "Genera richieste per la soglia attuale" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__has_message +msgid "Has Message" +msgstr "Ha un messaggio" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__id +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon" +msgstr "Icona" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icona per indicare un'attività eccezione." + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_unread +msgid "If checked, new messages require your attention." +msgstr "Se selezionata, nuovi messaggi richiedono attenzione." + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "If not clicked, the scheduled action will do it for you." +msgstr "Se non viene cliccato, l'azione schedulata lo farà automaticamente." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Inactive" +msgstr "Inattivo" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Instructions" +msgstr "Istruzioni" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval +msgid "Interval between each maintenance" +msgstr "Intervallo tra le manutenzioni" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_is_follower +msgid "Is Follower" +msgstr "Segue" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Kind" +msgstr "Genere" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind____last_update +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__planning_step +msgid "Let the event automatically repeat at that interval" +msgstr "Consente la ripetizione automatica dell'evento con quell'intervallo" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval_step +msgid "Let the event automatically repeat at that interval step" +msgstr "" +"Consente la ripetizione automatica dell'evento con quell'incremento di " +"intervallo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_main_attachment_id +msgid "Main Attachment" +msgstr "Allegato principale" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Maintenace Equipment must belong to the equipment's company" +msgstr "" +"L'attrezzatura di manutenzione deve appartenere all'azienda dell'attrezzatura" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_count +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance" +msgstr "Manutenzione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__search_maintenance_plan_count +msgid "Maintenance All Plan Count" +msgstr "Conteggio di tutti i piani manutenzione" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_kind +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_kind_id +msgid "Maintenance Kind" +msgstr "Genere manutenzione" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance Plan" +msgstr "Piano manutenzione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_count +msgid "Maintenance Plan Count" +msgstr "Conteggio piano di manutenzione" + +#. module: maintenance_plan +#: model:ir.ui.menu,name:maintenance_plan.menu_m_plan_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Maintenance Plans" +msgstr "Piani di manutenzione" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_request +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.hr_equipment_request_action_from_plan +msgid "Maintenance Requests" +msgstr "Richieste di manutenzione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_team_id +msgid "Maintenance Team" +msgstr "Squadra manutenzione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_team_required +msgid "Maintenance Team Required" +msgstr "Squadra di manutenzione richiesta" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__duration +msgid "Maintenance duration in hours" +msgstr "Durata manutenzione in ore" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_kind_id +msgid "Maintenance kind" +msgstr "Genere manutenzione" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_kind_name_uniq +msgid "Maintenance kind name already exists." +msgstr "Nome genere manutenzione già esistente." + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_kind_action +#: model:ir.ui.menu,name:maintenance_plan.menu_maintenance_kind_configuration +msgid "Maintenance kinds" +msgstr "Generi manutenzione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_ids +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_plan_id +msgid "Maintenance plan" +msgstr "Piano di manutenzione" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "" +"Maintenance planning horizon. Only the maintenance requests inside the " +"horizon will be created." +msgstr "" +"Orizzonte pianificazione manutenzione. Solo le manutenzioni richieste entro " +"l'orizzonte verranno create." + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_action +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_equipment_action +msgid "Maintenance plans" +msgstr "Piani di manutenzione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_ids +msgid "Maintenance requests" +msgstr "Richieste manutenzione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error +msgid "Message Delivery error" +msgstr "Errore di consegna messaggio" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_ids +msgid "Messages" +msgstr "Messaggi" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__month +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__month +msgid "Month(s)" +msgstr "Mese(i)" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_monthly +msgid "Monthly" +msgstr "Mensile" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Scadenza mia attività" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__name +msgid "Name" +msgstr "Nome" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Scadenza prossima attività" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_summary +msgid "Next Activity Summary" +msgstr "Riepilogo prossima attività" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_id +msgid "Next Activity Type" +msgstr "Tipo prossima attività" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__next_maintenance_date +msgid "Next Maintenance Date" +msgstr "Data manutenzione successiva" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__note +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__note +msgid "Note" +msgstr "Nota" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__notes +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +msgid "Notes" +msgstr "Note" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of Actions" +msgstr "Numero di azioni" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of errors" +msgstr "Numero di errori" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "Numero di messaggi che richiedono un'azione" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Numero di messaggi con errore di consegna" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_unread_counter +msgid "Number of unread messages" +msgstr "Numero di messaggi non letti" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon period" +msgstr "Periodo orizzonte piano" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon step" +msgstr "Passo orizzonte piano" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Planning Horizon" +msgstr "Orizzonte pianificazione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "Planning Horizon period" +msgstr "Periodo orizzonte pianificazione" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__planning_step +msgid "Planning Horizon step" +msgstr "Incremento orizzonte pianificazione" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Plans" +msgstr "Piani" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(description)s" +msgstr "Manutenzione preventiva (%(kind)s) - %(description)s" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(plan)s" +msgstr "Manutenzione preventiva (%(kind)s) - %(plan)s" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval_step +msgid "Recurrence" +msgstr "Ricorrenza" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_user_id +msgid "Responsible User" +msgstr "Utente responsabile" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__search_equipment_id +msgid "Search Equipment" +msgstr "Cerca attrezzatura" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "" +"Some maintenance plan's company is incompatible with the company of this " +"equipment." +msgstr "" +"Alcune aziende del piano manutenzione sono incompatibili con l'azienda di " +"questa attrezzatura." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Start Date" +msgstr "Data inizio" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Start Maintenance Date" +msgstr "Data inizio manutenzione" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__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: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Team" +msgstr "Squadra" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "" +"The maintenance plan %(kind)s of equipment %(eqpmnt)s has generated a " +"request which is not done yet. You should either set the request as done, " +"remove its maintenance kind or delete it first." +msgstr "" +"Il piano di manutenzione %(kind)s dell'attrezzatura %(eqpmnt)s ha generato " +"una richiesta che non è ancora stata evasa. Bisogna prima impostarla ad " +"eseguita o eliminare il genere di manutenzione o eliminarla." + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo di attività eccezione sul record." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Under Maintenance" +msgstr "In manutenzione" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmnt)s)" +msgstr "Piano %(kind)s anonimo (%(eqpmnt)s)" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmt)s)" +msgstr "Piano %(kind)s anonimo (%(eqpmt)s)" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(void)s plan (%(eqpmnt)s)" +msgstr "Piano %(void)s anonimo (%(eqpmnt)s)" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_unread +msgid "Unread Messages" +msgstr "Messaggi non letti" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Numero messaggi non letti" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Unspecified kind" +msgstr "Genere non specificato" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unsupported search operator" +msgstr "Operatore di ricerca non supportato" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website Messages" +msgstr "Messaggi sito web" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website communication history" +msgstr "Storico comunicazioni sito web" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__week +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__week +msgid "Week(s)" +msgstr "Settimana(e)" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_weekly +msgid "Weekly" +msgstr "Settimanale" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__year +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__year +msgid "Year(s)" +msgstr "Anno(i)" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_plan_equipment_kind_uniq +msgid "" +"You cannot define multiple times the same maintenance kind on an equipment " +"maintenance plan." +msgstr "" +"Non si può definire più volte lo stesso genere di manutenzione in un piano " +"di manutenzione attrezzatura." + +#. module: maintenance_plan +#: code:addons/maintenance_plan/hooks.py:0 +#, python-format +msgid "" +"You have multiple preventive maintenance requests on equipment %(name)s next " +"action date (%(date)s). Please leave only one preventive request on the date " +"of equipment's next action to install the module." +msgstr "" +"Ci sono richieste di manutenzione preventiva multiple per l'attrezzatura " +"%(name)s alla data azione successiva (%(date)s). Lasciare solo una richiesta " +"preventiva alla successiva data azione dell'attrezzatura per installare il " +"modulo." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "e.g. Calibration" +msgstr "es. calibrazione" + +#~ msgid "SMS Delivery error" +#~ msgstr "Errore consegna SMS" + +#~ msgid "Internal notes..." +#~ msgstr "Note interne..." + +#, python-format +#~ msgid "" +#~ "The maintenance plan %(kind)s of equipment %(plan)s has generated a " +#~ "request which is not done yet. You should either set the request as done, " +#~ "remove its maintenance kind or delete it first." +#~ msgstr "" +#~ "Il piano manutenzione %(kind)s dell'attrezzatura %(plan)s ha generato una " +#~ "richiesta che non è ancora eseguita. Bisogna prima impostare la richiesta " +#~ "a eseguita, o eliminare il suo tipo di manutenzione, o eliminarla." + +#, python-format +#~ msgid "Unnamed %(kind)s plan (%(equipment)s)" +#~ msgstr "Piano %(kind)s (%(equipment)s) senza nome" + +#, python-format +#~ msgid "Unnamed %(kind)s plan (%(plan)s)" +#~ msgstr "Piano (%(plan)s) %(kind)s senza nome" + +#, python-format +#~ msgid "Unnamed %(nothing)s plan (%(equipment)s)" +#~ msgstr "Piano (%(equipment)s) %(nothing)s senza nome" + +#~ msgid "Maintenance Kinds" +#~ msgstr "Pianificazioni manutenzione" + +#~ msgid "Next maintenance date" +#~ msgstr "Data manutenzione successiva" + +#~ msgid "Preventive Maintenance (%s) - %s" +#~ msgstr "Manutenzione preventiva (%s) - %s" + +#~ msgid "Start maintenance date" +#~ msgstr "Data inizio manutenzione" + +#~ msgid "" +#~ "The maintenance plan %s of equipment %s has generated a request which is " +#~ "not done yet. You should either set the request as done, remove its " +#~ "maintenance kind or delete it first." +#~ msgstr "" +#~ "Il piano di manutenzione %s dell'attrezzatura %s ha generato una " +#~ "richiesta che non è ancora stata eseguita. Si deve prima impostare la " +#~ "richiesta come eseguita, eliminare la sua pianificazione o cancellarla." + +#~ msgid "Unnamed %s plan (%s)" +#~ msgstr "Piano %s senza nome (%s)" + +#~ msgid "" +#~ "You have multiple preventive maintenance requests on equipment %s next " +#~ "action date (%s). Please leave only one preventive request on the date of " +#~ "equipment's next action to install the module." +#~ msgstr "" +#~ "Ci sono richieste di manutenzione multiple per l'attrezzatura %s alla " +#~ "data della prossima azione (%s). Per installare il modulo, lasciare solo " +#~ "una richiesta preventiva nella data della prossima azione." diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/maintenance_plan.pot b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/maintenance_plan.pot new file mode 100644 index 0000000..34d49a7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/maintenance_plan.pot @@ -0,0 +1,650 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan +# +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: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.report_maintenance_request_document +msgid "Instructions:" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__active +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Active" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__active +msgid "Active Kind" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_ids +msgid "Activities" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_state +msgid "Activity State" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_domain +msgid "Apply on" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Archived" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__company_id +msgid "Company" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_uid +msgid "Created by" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_date +msgid "Created on" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_open_count +msgid "Current Maintenance" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Date from which the maintenance will we active" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__day +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__day +msgid "Day(s)" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Describe the maintenance to do..." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__name +msgid "Description" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__display_name +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__skip_notify_follower_on_requests +msgid "Do not notify to follower when creating requests?" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__duration +msgid "Duration (hours)" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__equipment_id +msgid "Equipment" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval +msgid "Frequency" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_with_domain +msgid "Generate With Domain" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Generate requests for current threshold" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__has_message +msgid "Has Message" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__id +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__id +msgid "ID" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "If not clicked, the scheduled action will do it for you." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Inactive" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Instructions" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval +msgid "Interval between each maintenance" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Kind" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind____last_update +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan____last_update +msgid "Last Modified on" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_date +msgid "Last Updated on" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__planning_step +msgid "Let the event automatically repeat at that interval" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval_step +msgid "Let the event automatically repeat at that interval step" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Maintenace Equipment must belong to the equipment's company" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_count +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__search_maintenance_plan_count +msgid "Maintenance All Plan Count" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_kind +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_kind_id +msgid "Maintenance Kind" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance Plan" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_count +msgid "Maintenance Plan Count" +msgstr "" + +#. module: maintenance_plan +#: model:ir.ui.menu,name:maintenance_plan.menu_m_plan_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Maintenance Plans" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.hr_equipment_request_action_from_plan +msgid "Maintenance Requests" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_team_id +msgid "Maintenance Team" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_team_required +msgid "Maintenance Team Required" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__duration +msgid "Maintenance duration in hours" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_kind_id +msgid "Maintenance kind" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_kind_name_uniq +msgid "Maintenance kind name already exists." +msgstr "" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_kind_action +#: model:ir.ui.menu,name:maintenance_plan.menu_maintenance_kind_configuration +msgid "Maintenance kinds" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_ids +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_plan_id +msgid "Maintenance plan" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "" +"Maintenance planning horizon. Only the maintenance requests inside the " +"horizon will be created." +msgstr "" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_action +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_equipment_action +msgid "Maintenance plans" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_ids +msgid "Maintenance requests" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_ids +msgid "Messages" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__month +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__month +msgid "Month(s)" +msgstr "" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_monthly +msgid "Monthly" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__name +msgid "Name" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__next_maintenance_date +msgid "Next Maintenance Date" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__note +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__note +msgid "Note" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__notes +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +msgid "Notes" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon period" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon step" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Planning Horizon" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "Planning Horizon period" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__planning_step +msgid "Planning Horizon step" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Plans" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(description)s" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(plan)s" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval_step +msgid "Recurrence" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__search_equipment_id +msgid "Search Equipment" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "" +"Some maintenance plan's company is incompatible with the company of this " +"equipment." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Start Date" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Start Maintenance Date" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__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: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Team" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "" +"The maintenance plan %(kind)s of equipment %(eqpmnt)s has generated a " +"request which is not done yet. You should either set the request as done, " +"remove its maintenance kind or delete it first." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Under Maintenance" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmnt)s)" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmt)s)" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(void)s plan (%(eqpmnt)s)" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Unspecified kind" +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unsupported search operator" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__week +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__week +msgid "Week(s)" +msgstr "" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_weekly +msgid "Weekly" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__year +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__year +msgid "Year(s)" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_plan_equipment_kind_uniq +msgid "" +"You cannot define multiple times the same maintenance kind on an equipment " +"maintenance plan." +msgstr "" + +#. module: maintenance_plan +#. odoo-python +#: code:addons/maintenance_plan/hooks.py:0 +#, python-format +msgid "" +"You have multiple preventive maintenance requests on equipment %(name)s next" +" action date (%(date)s). Please leave only one preventive request on the " +"date of equipment's next action to install the module." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "e.g. Calibration" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/pt.po b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/pt.po new file mode 100644 index 0000000..5e17b40 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/pt.po @@ -0,0 +1,699 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-12-03 13:44+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 4.14.1\n" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.report_maintenance_request_document +msgid "Instructions:" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction +msgid "Action Needed" +msgstr "Ação Necessária" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__active +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Active" +msgstr "Ativo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__active +msgid "Active Kind" +msgstr "Tipo Ativo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_ids +msgid "Activities" +msgstr "Atividades" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decoração da Atividade Excepcção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_state +msgid "Activity State" +msgstr "Estado da Atividade" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Activity Type Icon" +msgstr "Ícone de Tipo de Atividade" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_domain +msgid "Apply on" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Archived" +msgstr "Arquivado" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_attachment_count +msgid "Attachment Count" +msgstr "Número de Anexos" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__company_id +msgid "Company" +msgstr "Empresa" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_open_count +msgid "Current Maintenance" +msgstr "Manutenção Atual" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Date from which the maintenance will we active" +msgstr "Data a partir da qual a manutenção estará ativa" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__day +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__day +msgid "Day(s)" +msgstr "Dia(s)" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Describe the maintenance to do..." +msgstr "Descrever a manutenção a fazer..." + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__name +msgid "Description" +msgstr "Descrição" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__display_name +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__display_name +msgid "Display Name" +msgstr "Nome a Apresentar" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__skip_notify_follower_on_requests +msgid "Do not notify to follower when creating requests?" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__duration +msgid "Duration (hours)" +msgstr "Duração (horas)" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__equipment_id +msgid "Equipment" +msgstr "Equipamento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_follower_ids +msgid "Followers" +msgstr "Seguidores" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidores (Parceiros)" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Ícone font awesome, por exemplo fa-tasks" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval +msgid "Frequency" +msgstr "Frequência" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_with_domain +msgid "Generate With Domain" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Generate requests for current threshold" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__has_message +msgid "Has Message" +msgstr "Tem mensagem" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__id +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon" +msgstr "Ícone" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Ícone para indicar uma exceção na atividade." + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_unread +msgid "If checked, new messages require your attention." +msgstr "Se marcado, há novas mensagens que pedem a sua atenção." + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Se estiver marcado, algumas mensagens têm um erro de entrega." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "If not clicked, the scheduled action will do it for you." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Inactive" +msgstr "Inativo" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Instructions" +msgstr "Instruções" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval +msgid "Interval between each maintenance" +msgstr "Intervalo entre cada manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_is_follower +msgid "Is Follower" +msgstr "É Seguidor" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Kind" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind____last_update +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan____last_update +msgid "Last Modified on" +msgstr "Última Modificação em" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_uid +msgid "Last Updated by" +msgstr "Última atualização por" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_date +msgid "Last Updated on" +msgstr "Última Atualização em" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__planning_step +msgid "Let the event automatically repeat at that interval" +msgstr "Deixar o evento repetir-se automaticamente naquele intervalo" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval_step +msgid "Let the event automatically repeat at that interval step" +msgstr "Deixe o evento se repetir automaticamente nessa etapa de intervalo" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_main_attachment_id +msgid "Main Attachment" +msgstr "Anexo Principal" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Maintenace Equipment must belong to the equipment's company" +msgstr "O equipamento de manutenção deve pertencer à empresa do equipamento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_count +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance" +msgstr "Manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__search_maintenance_plan_count +msgid "Maintenance All Plan Count" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipamento de Manutenção" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_kind +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_kind_id +msgid "Maintenance Kind" +msgstr "Tipo de Manutenção" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance Plan" +msgstr "Plano de Manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_count +msgid "Maintenance Plan Count" +msgstr "Núm. de Planos de Manutenção" + +#. module: maintenance_plan +#: model:ir.ui.menu,name:maintenance_plan.menu_m_plan_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Maintenance Plans" +msgstr "Planos de Manutenção" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_request +msgid "Maintenance Request" +msgstr "Pedido de Manutenção" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.hr_equipment_request_action_from_plan +msgid "Maintenance Requests" +msgstr "Pedidos de Manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_team_id +msgid "Maintenance Team" +msgstr "Equipa de Manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_team_required +msgid "Maintenance Team Required" +msgstr "Equipa de Manutenção necessária" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__duration +msgid "Maintenance duration in hours" +msgstr "Duração da manutenção em horas" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_kind_id +msgid "Maintenance kind" +msgstr "Tipo de manutenção" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_kind_name_uniq +msgid "Maintenance kind name already exists." +msgstr "O nome do tipo manutenção já existe." + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_kind_action +#: model:ir.ui.menu,name:maintenance_plan.menu_maintenance_kind_configuration +msgid "Maintenance kinds" +msgstr "Tipos de manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_ids +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_plan_id +msgid "Maintenance plan" +msgstr "Plano de manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "" +"Maintenance planning horizon. Only the maintenance requests inside the " +"horizon will be created." +msgstr "" +"Horizonte de planeamento da manutenção. Somente as solicitações de " +"manutenção dentro do horizonte serão criadas." + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_action +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_equipment_action +msgid "Maintenance plans" +msgstr "Planos de manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_ids +msgid "Maintenance requests" +msgstr "Pedidos de manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error +msgid "Message Delivery error" +msgstr "Erro de Envio de Mensagem" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_ids +msgid "Messages" +msgstr "Mensagens" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__month +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__month +msgid "Month(s)" +msgstr "Mes(es)" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_monthly +msgid "Monthly" +msgstr "Mensalmente" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Prazo Limite da Minha Atividade" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__name +msgid "Name" +msgstr "Nome" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Prazo da Próxima Atividade" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_summary +msgid "Next Activity Summary" +msgstr "Resumo da Próxima Atividade" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_id +msgid "Next Activity Type" +msgstr "Tipo da Próxima Atividade" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__next_maintenance_date +msgid "Next Maintenance Date" +msgstr "Data da Próxima Manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__note +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__note +msgid "Note" +msgstr "Nota" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__notes +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +msgid "Notes" +msgstr "Notas" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de Ações" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of errors" +msgstr "Número de erros" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "Número de mensagens que requerem uma ação" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensagens com um erro de entrega" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_unread_counter +msgid "Number of unread messages" +msgstr "Número de mensagens não lidas" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon period" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon step" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Planning Horizon" +msgstr "Horizonte de Planeamento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "Planning Horizon period" +msgstr "Período do horizonte de planeamento" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__planning_step +msgid "Planning Horizon step" +msgstr "Etapa do Horizonte de Planeamento" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Plans" +msgstr "Planos" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(description)s" +msgstr "Manutenção Preventiva (%(kind)s) - %(description)s" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(plan)s" +msgstr "Manutenção Preventiva (%(kind)s) - %(plan)s" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval_step +msgid "Recurrence" +msgstr "Recorrência" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_user_id +msgid "Responsible User" +msgstr "Utilizador Responsável" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__search_equipment_id +msgid "Search Equipment" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "" +"Some maintenance plan's company is incompatible with the company of this " +"equipment." +msgstr "" +"A empresa de alguns planos de manutenção é incompatível com a empresa deste " +"equipamento." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Start Date" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Start Maintenance Date" +msgstr "Data de Início da manutenção" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__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 "" +"Estado com base nas atividades\n" +"Em atraso: A data limite foi ultrapassada\n" +"Hoje: A data da atividade é a atual\n" +"Planeado: Atividades futuras." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Team" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "" +"The maintenance plan %(kind)s of equipment %(eqpmnt)s has generated a " +"request which is not done yet. You should either set the request as done, " +"remove its maintenance kind or delete it first." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo de atividade de exceção no registo." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Under Maintenance" +msgstr "Em Manutenção" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmnt)s)" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmt)s)" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(void)s plan (%(eqpmnt)s)" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_unread +msgid "Unread Messages" +msgstr "Mensagens Não Lidas" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Contador de Mensagens Não Lidas" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Unspecified kind" +msgstr "Tipo indeterminado" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unsupported search operator" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website Messages" +msgstr "Mensagens do Website" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website communication history" +msgstr "Histórico de Comunicação do Website" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__week +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__week +msgid "Week(s)" +msgstr "Semana(s)" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_weekly +msgid "Weekly" +msgstr "Semanalmente" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__year +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__year +msgid "Year(s)" +msgstr "Ano(s)" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_plan_equipment_kind_uniq +msgid "" +"You cannot define multiple times the same maintenance kind on an equipment " +"maintenance plan." +msgstr "" +"Você não pode definir várias vezes o mesmo tipo de manutenção num plano de " +"manutenção de equipamentos." + +#. module: maintenance_plan +#: code:addons/maintenance_plan/hooks.py:0 +#, python-format +msgid "" +"You have multiple preventive maintenance requests on equipment %(name)s next " +"action date (%(date)s). Please leave only one preventive request on the date " +"of equipment's next action to install the module." +msgstr "" +"Tem múltiplos pedidos de manutenção preventiva para o equipamento %(name)s e " +"próxima data de ação (%(date)s). Por favor, deixe apenas uma solicitação " +"preventiva na data da próxima ação do equipamento para instalar o módulo." + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "e.g. Calibration" +msgstr "p. ex., Calibração" + +#~ msgid "SMS Delivery error" +#~ msgstr "Erro de entrega de SMS" + +#~ msgid "Internal notes..." +#~ msgstr "Notas Internas..." + +#, python-format +#~ msgid "" +#~ "The maintenance plan %(kind)s of equipment %(plan)s has generated a " +#~ "request which is not done yet. You should either set the request as done, " +#~ "remove its maintenance kind or delete it first." +#~ msgstr "" +#~ "O plano de manutenção %(kind)s do equipamento %(plan)s gerou um pedido " +#~ "que ainda não foi efetuado. Deve definir o pedido como feito, remover o " +#~ "seu tipo de manutenção ou eliminá-lo primeiro." + +#, python-format +#~ msgid "Unnamed %(kind)s plan (%(equipment)s)" +#~ msgstr "Plano %(kind)s sem nome (%(equipment)s)" + +#, python-format +#~ msgid "Unnamed %(kind)s plan (%(plan)s)" +#~ msgstr "Plano %(kind)s sem nome (%(plan)s)" + +#, python-format +#~ msgid "Unnamed %(nothing)s plan (%(equipment)s)" +#~ msgstr "Plano %(nothing)s sem nome (%(equipment)s)" diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/zh_CN.po b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/zh_CN.po new file mode 100644 index 0000000..25ccff5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/i18n/zh_CN.po @@ -0,0 +1,656 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan +# +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: 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: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.report_maintenance_request_document +msgid "Instructions:" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__active +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Active" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__active +msgid "Active Kind" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_ids +msgid "Activities" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_state +msgid "Activity State" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_domain +msgid "Apply on" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Archived" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__company_id +msgid "Company" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_uid +msgid "Created by" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__create_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__create_date +msgid "Created on" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_open_count +msgid "Current Maintenance" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Date from which the maintenance will we active" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__day +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__day +msgid "Day(s)" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Describe the maintenance to do..." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__name +msgid "Description" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__display_name +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__skip_notify_follower_on_requests +msgid "Do not notify to follower when creating requests?" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__duration +msgid "Duration (hours)" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__equipment_id +msgid "Equipment" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval +msgid "Frequency" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__generate_with_domain +msgid "Generate With Domain" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Generate requests for current threshold" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__has_message +msgid "Has Message" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__id +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__id +msgid "ID" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_unread +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "If not clicked, the scheduled action will do it for you." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Inactive" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Instructions" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval +msgid "Interval between each maintenance" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Kind" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind____last_update +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan____last_update +msgid "Last Modified on" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_uid +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__write_date +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__write_date +msgid "Last Updated on" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__planning_step +msgid "Let the event automatically repeat at that interval" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__interval_step +msgid "Let the event automatically repeat at that interval step" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Maintenace Equipment must belong to the equipment's company" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_count +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__search_maintenance_plan_count +msgid "Maintenance All Plan Count" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_kind +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_kind_id +msgid "Maintenance Kind" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Maintenance Plan" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_count +msgid "Maintenance Plan Count" +msgstr "" + +#. module: maintenance_plan +#: model:ir.ui.menu,name:maintenance_plan.menu_m_plan_form +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Maintenance Plans" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model,name:maintenance_plan.model_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.hr_equipment_request_action_from_plan +msgid "Maintenance Requests" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_team_id +msgid "Maintenance Team" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_team_required +msgid "Maintenance Team Required" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__duration +msgid "Maintenance duration in hours" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_kind_id +msgid "Maintenance kind" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_kind_name_uniq +msgid "Maintenance kind name already exists." +msgstr "" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_kind_action +#: model:ir.ui.menu,name:maintenance_plan.menu_maintenance_kind_configuration +msgid "Maintenance kinds" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__maintenance_plan_ids +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__maintenance_plan_id +msgid "Maintenance plan" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "" +"Maintenance planning horizon. Only the maintenance requests inside the " +"horizon will be created." +msgstr "" + +#. module: maintenance_plan +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_action +#: model:ir.actions.act_window,name:maintenance_plan.maintenance_plan_equipment_action +msgid "Maintenance plans" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_ids +msgid "Maintenance requests" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_ids +msgid "Messages" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__month +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__month +msgid "Month(s)" +msgstr "" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_monthly +msgid "Monthly" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_kind__name +msgid "Name" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__next_maintenance_date +msgid "Next Maintenance Date" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__note +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_request__note +msgid "Note" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_equipment__notes +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_request_view_form +msgid "Notes" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__message_unread_counter +msgid "Number of unread messages" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon period" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "P. Horizon step" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "Planning Horizon" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__maintenance_plan_horizon +msgid "Planning Horizon period" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__planning_step +msgid "Planning Horizon step" +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Plans" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(description)s" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Preventive Maintenance (%(kind)s) - %(plan)s" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__interval_step +msgid "Recurrence" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__search_equipment_id +msgid "Search Equipment" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "" +"Some maintenance plan's company is incompatible with the company of this " +"equipment." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Start Date" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__start_maintenance_date +msgid "Start Maintenance Date" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__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: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.hr_equipment_view_form +msgid "Team" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "" +"The maintenance plan %(kind)s of equipment %(eqpmnt)s has generated a " +"request which is not done yet. You should either set the request as done, " +"remove its maintenance kind or delete it first." +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_search +msgid "Under Maintenance" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmnt)s)" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(kind)s plan (%(eqpmt)s)" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/tests/test_maintenance_plan.py:0 +#, python-format +msgid "Unnamed %(void)s plan (%(eqpmnt)s)" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_equipment.py:0 +#, python-format +msgid "Unspecified kind" +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/models/maintenance_plan.py:0 +#, python-format +msgid "Unsupported search operator" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields,help:maintenance_plan.field_maintenance_plan__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__week +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__week +msgid "Week(s)" +msgstr "" + +#. module: maintenance_plan +#: model:maintenance.kind,name:maintenance_plan.maintenance_kind_weekly +msgid "Weekly" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__interval_step__year +#: model:ir.model.fields.selection,name:maintenance_plan.selection__maintenance_plan__planning_step__year +msgid "Year(s)" +msgstr "" + +#. module: maintenance_plan +#: model:ir.model.constraint,message:maintenance_plan.constraint_maintenance_plan_equipment_kind_uniq +msgid "" +"You cannot define multiple times the same maintenance kind on an equipment " +"maintenance plan." +msgstr "" + +#. module: maintenance_plan +#: code:addons/maintenance_plan/hooks.py:0 +#, python-format +msgid "" +"You have multiple preventive maintenance requests on equipment %(name)s next " +"action date (%(date)s). Please leave only one preventive request on the date " +"of equipment's next action to install the module." +msgstr "" + +#. module: maintenance_plan +#: model_terms:ir.ui.view,arch_db:maintenance_plan.maintenance_plan_view_form +msgid "e.g. Calibration" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/__init__.py new file mode 100644 index 0000000..b4d1731 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/__init__.py @@ -0,0 +1,4 @@ +from . import maintenance_kind +from . import maintenance_plan +from . import maintenance_equipment +from . import maintenance_request diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_equipment.py new file mode 100644 index 0000000..d6fe208 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_equipment.py @@ -0,0 +1,200 @@ +# Copyright 2017 Camptocamp SA +# Copyright 2019-20 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class MaintenanceEquipment(models.Model): + + _inherit = "maintenance.equipment" + + maintenance_plan_ids = fields.One2many( + string="Maintenance plan", + comodel_name="maintenance.plan", + inverse_name="equipment_id", + ) + maintenance_plan_count = fields.Integer( + compute="_compute_maintenance_plan_count", + store=True, + ) + search_maintenance_plan_count = fields.Integer( + compute="_compute_search_maintenance_plan_count", + string="Maintenance All Plan Count", + ) + maintenance_team_required = fields.Boolean(compute="_compute_team_required") + notes = fields.Text() + + @api.depends("maintenance_plan_ids", "maintenance_plan_ids.active") + def _compute_maintenance_plan_count(self): + for equipment in self: + equipment.maintenance_plan_count = len( + equipment.with_context(active_test=False).maintenance_plan_ids + ) + + @api.depends("maintenance_plan_ids") + def _compute_search_maintenance_plan_count(self): + for equipment in self: + equipment.search_maintenance_plan_count = ( + self.env["maintenance.plan"] + .with_context(active_test=False) + .search_count([("search_equipment_id", "=", equipment.id)]) + ) + + @api.depends("maintenance_plan_ids") + def _compute_team_required(self): + for equipment in self: + equipment.maintenance_team_required = ( + len( + equipment.maintenance_plan_ids.filtered( + lambda r: not r.maintenance_team_id + ) + ) + >= 1 + ) + + @api.constrains("company_id", "maintenance_plan_ids") + def _check_company_id(self): + for rec in self: + if rec.company_id and not all( + rec.company_id == p.company_id for p in rec.maintenance_plan_ids + ): + raise ValidationError( + _( + "Some maintenance plan's company is incompatible with " + "the company of this equipment." + ) + ) + + def _prepare_requests_from_plan(self, maintenance_plan, next_maintenance_date): + if self: + return self._prepare_request_from_plan( + maintenance_plan, next_maintenance_date + ) + equipments = maintenance_plan._get_maintenance_equipments() + return [ + equipment._prepare_request_from_plan( + maintenance_plan, next_maintenance_date + ) + for equipment in equipments + ] + + def _prepare_request_from_plan(self, maintenance_plan, next_maintenance_date): + team_id = maintenance_plan.maintenance_team_id.id or self.maintenance_team_id.id + request_model = self.env["maintenance.request"] + if not team_id: + team_id = request_model._get_default_team_id() + + description = self.name if self else maintenance_plan.name + kind = maintenance_plan.maintenance_kind_id.name or _("Unspecified kind") + name = _( + "Preventive Maintenance (%(kind)s) - %(description)s", + kind=kind, + description=description, + ) + + data = { + "name": name, + "request_date": next_maintenance_date, + "schedule_date": next_maintenance_date, + "category_id": self.category_id.id, + "equipment_id": self.id, + "maintenance_type": "preventive", + "owner_user_id": self.owner_user_id.id or self.env.user.id, + "user_id": self.technician_user_id.id, + "maintenance_team_id": team_id, + "maintenance_kind_id": maintenance_plan.maintenance_kind_id.id, + "maintenance_plan_id": maintenance_plan.id, + "duration": maintenance_plan.duration, + "note": maintenance_plan.note, + "company_id": maintenance_plan.company_id.id or self.company_id.id, + } + # This field comes from maintenance_timesheet for avoiding a glue module + if "planned_hours" in request_model._fields: + data["planned_hours"] = maintenance_plan.duration + return data + + def _create_new_request(self, mtn_plan): + # Compute horizon date adding to today the planning horizon + horizon_date = fields.Date.today() + mtn_plan.get_relativedelta( + mtn_plan.maintenance_plan_horizon, mtn_plan.planning_step or "year" + ) + # We check maintenance request already created and create until + # planning horizon is met + start_maintenance_date_plan = mtn_plan.start_maintenance_date + furthest_maintenance_request = self.env["maintenance.request"].search( + [ + ("maintenance_plan_id", "=", mtn_plan.id), + ("request_date", ">=", start_maintenance_date_plan), + ], + order="request_date desc", + limit=1, + ) + if furthest_maintenance_request: + next_maintenance_date = ( + furthest_maintenance_request.request_date + + mtn_plan.get_relativedelta( + mtn_plan.interval, mtn_plan.interval_step or "year" + ) + ) + else: + next_maintenance_date = mtn_plan.next_maintenance_date + skip_notify_follower = mtn_plan.skip_notify_follower_on_requests + # Skip assigned mail + Activity mail + request_model = self.env["maintenance.request"].with_context( + mail_activity_quick_update=skip_notify_follower, + mail_auto_subscribe_no_notify=skip_notify_follower, + ) + requests = request_model + # Create maintenance request until we reach planning horizon + while next_maintenance_date <= horizon_date: + if next_maintenance_date >= fields.Date.today(): + vals = self._prepare_requests_from_plan(mtn_plan, next_maintenance_date) + requests |= request_model.create(vals) + next_maintenance_date = next_maintenance_date + mtn_plan.get_relativedelta( + mtn_plan.interval, mtn_plan.interval_step or "year" + ) + return requests + + @api.model + def _cron_generate_requests(self): + """ + Generates maintenance request on the next_maintenance_date or + today if none exists + """ + for plan in ( + self.env["maintenance.plan"] + .sudo() + .search([("interval", ">", 0)]) + .filtered(lambda x: True if not x.equipment_id else x.equipment_id.active) + ): + equipment = plan.equipment_id + equipment._create_new_request(plan) + + @api.depends( + "maintenance_plan_ids.next_maintenance_date", "maintenance_ids.request_date" + ) + def _compute_next_maintenance(self): + """Redefine the function to display next_action_date in kanban view""" + for equipment in self: + next_plan_dates = equipment.maintenance_plan_ids.mapped( + "next_maintenance_date" + ) + next_unplanned_dates = ( + self.env["maintenance.request"] + .search( + [ + ("equipment_id", "=", equipment.id), + ("maintenance_kind_id", "=", None), + ("request_date", ">", fields.Date.context_today(self)), + ("stage_id.done", "!=", True), + ("close_date", "=", False), + ] + ) + .mapped("request_date") + ) + if len(next_plan_dates + next_unplanned_dates) <= 0: + equipment.next_action_date = None + else: + equipment.next_action_date = min(next_plan_dates + next_unplanned_dates) diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_kind.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_kind.py new file mode 100644 index 0000000..04db3cd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_kind.py @@ -0,0 +1,18 @@ +# Copyright 2017 Camptocamp SA +# Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com). +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class MaintenanceKind(models.Model): + + _name = "maintenance.kind" + _description = "Maintenance Kind" + + name = fields.Char(required=True, translate=True) + active = fields.Boolean("Active Kind", required=True, default=True) + + _sql_constraints = [ + ("name_uniq", "unique (name)", "Maintenance kind name already exists.") + ] diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_plan.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_plan.py new file mode 100644 index 0000000..85b6977 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_plan.py @@ -0,0 +1,261 @@ +# Copyright 2017 Camptocamp SA +# Copyright 2019-20 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from dateutil.relativedelta import relativedelta + +from odoo import _, api, fields, models +from odoo.exceptions import UserError, ValidationError +from odoo.tools import safe_eval + + +class MaintenancePlan(models.Model): + _name = "maintenance.plan" + _description = "Maintenance Plan" + _inherit = ["mail.thread", "mail.activity.mixin"] + + name = fields.Char("Description") + active = fields.Boolean(default=True) + equipment_id = fields.Many2one( + string="Equipment", comodel_name="maintenance.equipment", ondelete="cascade" + ) + company_id = fields.Many2one( + comodel_name="res.company", + default=lambda self: self.env.company, + ) + maintenance_kind_id = fields.Many2one( + string="Maintenance Kind", comodel_name="maintenance.kind", ondelete="restrict" + ) + interval = fields.Integer( + string="Frequency", default=1, help="Interval between each maintenance" + ) + interval_step = fields.Selection( + [ + ("day", "Day(s)"), + ("week", "Week(s)"), + ("month", "Month(s)"), + ("year", "Year(s)"), + ], + string="Recurrence", + default="year", + help="Let the event automatically repeat at that interval step", + ) + duration = fields.Float( + string="Duration (hours)", help="Maintenance duration in hours" + ) + start_maintenance_date = fields.Date( + default=fields.Date.context_today, + help="Date from which the maintenance will we active", + ) + next_maintenance_date = fields.Date(compute="_compute_next_maintenance", store=True) + maintenance_plan_horizon = fields.Integer( + string="Planning Horizon period", + default=1, + help="Maintenance planning horizon. Only the maintenance requests " + "inside the horizon will be created.", + ) + planning_step = fields.Selection( + [ + ("day", "Day(s)"), + ("week", "Week(s)"), + ("month", "Month(s)"), + ("year", "Year(s)"), + ], + string="Planning Horizon step", + default="year", + help="Let the event automatically repeat at that interval", + ) + note = fields.Html() + maintenance_ids = fields.One2many( + "maintenance.request", "maintenance_plan_id", string="Maintenance requests" + ) + maintenance_count = fields.Integer( + compute="_compute_maintenance_count", string="Maintenance", store=True + ) + maintenance_open_count = fields.Integer( + compute="_compute_maintenance_count", string="Current Maintenance", store=True + ) + maintenance_team_id = fields.Many2one("maintenance.team") + skip_notify_follower_on_requests = fields.Boolean( + string="Do not notify to follower when creating requests?", default=True + ) + generate_with_domain = fields.Boolean() + generate_domain = fields.Char(string="Apply on") + search_equipment_id = fields.Many2one( + comodel_name="maintenance.equipment", + compute="_compute_search_equipment", + search="_search_search_equipment", + ) + + @api.model + def _search_search_equipment(self, operator, value): + if operator != "=" or (not value and not isinstance(value, models.NewId)): + raise ValueError(_("Unsupported search operator")) + plans = self.search([("generate_with_domain", "=", True)]) + plan_ids = [] + equipment = self.env["maintenance.equipment"].browse(value) + for plan in plans: + if equipment.filtered_domain( + safe_eval.safe_eval( + plan.generate_domain or "[]", plan._get_eval_context() + ) + ): + plan_ids.append(plan.id) + return ["|", ("equipment_id", "=", value), ("id", "in", plan_ids)] + + @api.depends("equipment_id") + def _compute_search_equipment(self): + for record in self: + record.search_equipment_id = record.equipment_id + + def _get_eval_context(self): + """Prepare the context used when evaluating python code + :returns: dict -- evaluation context given to safe_eval + """ + return { + "datetime": safe_eval.datetime, + "dateutil": safe_eval.dateutil, + "time": safe_eval.time, + } + + def name_get(self): + result = [] + for plan in self: + result.append( + ( + plan.id, + plan.name + or _( + "Unnamed %(kind)s plan (%(eqpmt)s)", + kind=plan.maintenance_kind_id.name or "", + eqpmt=plan.equipment_id.name, + ), + ) + ) + return result + + @api.depends("maintenance_ids.stage_id.done") + def _compute_maintenance_count(self): + for equipment in self: + equipment.maintenance_count = len(equipment.maintenance_ids) + equipment.maintenance_open_count = len( + equipment.maintenance_ids.filtered(lambda x: not x.stage_id.done) + ) + + def get_relativedelta(self, interval, step): + if step == "day": + return relativedelta(days=interval) + elif step == "week": + return relativedelta(weeks=interval) + elif step == "month": + return relativedelta(months=interval) + elif step == "year": + return relativedelta(years=interval) + + @api.depends( + "interval", + "interval_step", + "start_maintenance_date", + "maintenance_ids.request_date", + "maintenance_ids.close_date", + ) + def _compute_next_maintenance(self): + for plan in self.filtered(lambda x: x.interval > 0): + + interval_timedelta = plan.get_relativedelta( + plan.interval, plan.interval_step + ) + + next_maintenance_todo = self.env["maintenance.request"].search( + [ + ("maintenance_plan_id", "=", plan.id), + ("stage_id.done", "!=", True), + ("close_date", "=", False), + ("request_date", ">=", plan.start_maintenance_date), + ], + order="request_date asc", + limit=1, + ) + + if next_maintenance_todo: + plan.next_maintenance_date = next_maintenance_todo.request_date + else: + last_maintenance_done = self.env["maintenance.request"].search( + [ + ("maintenance_plan_id", "=", plan.id), + ("request_date", ">=", plan.start_maintenance_date), + ], + order="request_date desc", + limit=1, + ) + if last_maintenance_done: + plan.next_maintenance_date = ( + last_maintenance_done.request_date + interval_timedelta + ) + else: + next_date = plan.start_maintenance_date + while next_date < fields.Date.today(): + next_date = next_date + interval_timedelta + plan.next_maintenance_date = next_date + + @api.constrains("company_id", "equipment_id") + def _check_company_id(self): + for rec in self: + if ( + rec.equipment_id.company_id + and rec.company_id != rec.equipment_id.company_id + ): + raise ValidationError( + _("Maintenace Equipment must belong to the equipment's company") + ) + + def unlink(self): + """Restrict deletion of maintenance plan should there be maintenance + requests of this kind which are not done for its equipment""" + for plan in self: + request = plan.equipment_id.mapped("maintenance_ids").filtered( + lambda r: ( + r.maintenance_kind_id == plan.maintenance_kind_id + and not r.stage_id.done + and r.maintenance_type == "preventive" + ) + ) + if request: + raise UserError( + _( + "The maintenance plan %(kind)s of equipment %(eqpmnt)s " + "has generated a request which is not done " + "yet. You should either set the request as " + "done, remove its maintenance kind or " + "delete it first.", + kind=plan.maintenance_kind_id.name, + eqpmnt=plan.equipment_id.name, + ) + ) + return super().unlink() + + _sql_constraints = [ + ( + "equipment_kind_uniq", + "unique (equipment_id, maintenance_kind_id)", + "You cannot define multiple times the same maintenance kind on an " + "equipment maintenance plan.", + ) + ] + + def button_manual_request_generation(self): + """Call the same method that the cron for generating manually the maintenance + requests.""" + for plan in self: + equipment = plan.equipment_id + equipment._create_new_request(plan) + + def _get_maintenance_equipments(self): + self.ensure_one() + if self.generate_with_domain and not self.equipment_id: + return self.env["maintenance.equipment"].search( + safe_eval.safe_eval( + self.generate_domain or "[]", self._get_eval_context() + ) + ) + return [self.equipment_id] diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_request.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_request.py new file mode 100644 index 0000000..35ec260 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/models/maintenance_request.py @@ -0,0 +1,19 @@ +# Copyright 2017 Camptocamp SA +# Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class MaintenanceRequest(models.Model): + + _inherit = "maintenance.request" + + maintenance_kind_id = fields.Many2one( + string="Maintenance kind", comodel_name="maintenance.kind", ondelete="restrict" + ) + + maintenance_plan_id = fields.Many2one( + string="Maintenance plan", comodel_name="maintenance.plan", ondelete="restrict" + ) + note = fields.Html() diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..22aed97 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/CONTRIBUTORS.rst @@ -0,0 +1,8 @@ +* Akim Juillerat +* Matteo Mazzoni +* David Alonso +* Adrià Gil Sorribes +* Jordi Ballester Alomar +* Lois Rilo +* Enric Tobella +* Alexei Rivera diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/DESCRIPTION.rst new file mode 100644 index 0000000..2e3ff22 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module extends the functionality of Odoo Maintenance module by allowing +an equipment to have different preventive maintenance kinds. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/INSTALL.rst b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/INSTALL.rst new file mode 100644 index 0000000..7231233 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/INSTALL.rst @@ -0,0 +1,14 @@ +Install the module. + +Should you already use the maintenance module and have equipments with field +'Preventive Maintenance Frequency' defined, a new maintenance plan will be +automatically created on these equipments with maintenance kind 'Install'. + +Moreover if a Request of type 'preventive' exists, whose stage isn't marked as +'Request done', and has a Request Date matching the equipment's +'Next Preventive Maintenance', the request will be updated with the +'Install' maintenance kind. + +Make sure you don't have multiple 'preventive' requests at a stage which isn't +marked as 'Request done' and on the same 'Request date' as the equipment or +the module installation will fail with a User Error. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/USAGE.rst b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/USAGE.rst new file mode 100644 index 0000000..f484363 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/readme/USAGE.rst @@ -0,0 +1,28 @@ +Instead of defining a period and duration for only one preventive maintenance +per equipment, you can define multiple preventive maintenance kind for each +equipment. + +Maintenance Kinds have to be defined through the configuration menu. Their name +have to be unique and can be set as active or inactive, should these not be +used anymore. + +On any equipment over the maintenance tab, the maintenance plan be accessible, +allowing to add different maintenance kind with their +own frequency and duration. The next maintenance date will then be computed +automatically according to the start's date and the frequency defined, but the +maintenance request won't be created automatically as is the case in Odoo's +Maintenance module. In the plan there's also a field allowing the user to set the +maintenance horizon, insert the instructions to follow on the maintenance that +will be forwarded to the maintenance request generated from the plan. + +This module uses the original Cron job of Odoo's Maintenance module to generate +maintenance requests. To do so, it takes into account the planning horizon and +generates all maintenance requests whose schedule date would fall inside that +planning horizon. Therefore, the maintenance manager can have a proper planning +of how many maintenance requests are programming for the future. Leaving planning +horizon to 0 will only create those maintenance request that are scheduled for +today. + +We can also create maintenance requests from a plan using a domain for selecting the equipments. +This way, we might have a single plan that will generate all the requests. +In order to use it, we need to mark the `Generate with Domain` field. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/security/ir.model.access.csv b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/security/ir.model.access.csv new file mode 100644 index 0000000..8329361 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_maintenance_kind_user,access_maintenance_kind_user,model_maintenance_kind,base.group_user,1,0,0,0 +access_maintenance_plan_user,access_maintenance_plan_user,model_maintenance_plan,base.group_user,1,0,0,0 +access_maintenance_kind_manager,access_maintenance_kind_manager,model_maintenance_kind,maintenance.group_equipment_manager,1,1,1,1 +access_maintenance_plan_manager,access_maintenance_plan_manager,model_maintenance_plan,maintenance.group_equipment_manager,1,1,1,1 diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/security/maintenance_security.xml b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/security/maintenance_security.xml new file mode 100644 index 0000000..77a3658 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/security/maintenance_security.xml @@ -0,0 +1,27 @@ + + + + Maintenance plan multi-company + + + ['|',('company_id','=',False),('company_id', 'in', company_ids)] + + + Users are allowed to access plan from equipments they follow + + [('equipment_id.message_partner_ids', 'in', [user.partner_id.id])] + + + + Administrator of maintenance plans + + [(1, '=', 1)] + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/static/description/index.html new file mode 100644 index 0000000..82005e9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/static/description/index.html @@ -0,0 +1,473 @@ + + + + + + +Maintenance Plan + + + +
+

Maintenance Plan

+ + +

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

+

This module extends the functionality of Odoo Maintenance module by allowing +an equipment to have different preventive maintenance kinds.

+

Table of contents

+ +
+

Installation

+

Install the module.

+

Should you already use the maintenance module and have equipments with field +‘Preventive Maintenance Frequency’ defined, a new maintenance plan will be +automatically created on these equipments with maintenance kind ‘Install’.

+

Moreover if a Request of type ‘preventive’ exists, whose stage isn’t marked as +‘Request done’, and has a Request Date matching the equipment’s +‘Next Preventive Maintenance’, the request will be updated with the +‘Install’ maintenance kind.

+

Make sure you don’t have multiple ‘preventive’ requests at a stage which isn’t +marked as ‘Request done’ and on the same ‘Request date’ as the equipment or +the module installation will fail with a User Error.

+
+
+

Usage

+

Instead of defining a period and duration for only one preventive maintenance +per equipment, you can define multiple preventive maintenance kind for each +equipment.

+

Maintenance Kinds have to be defined through the configuration menu. Their name +have to be unique and can be set as active or inactive, should these not be +used anymore.

+

On any equipment over the maintenance tab, the maintenance plan be accessible, +allowing to add different maintenance kind with their +own frequency and duration. The next maintenance date will then be computed +automatically according to the start’s date and the frequency defined, but the +maintenance request won’t be created automatically as is the case in Odoo’s +Maintenance module. In the plan there’s also a field allowing the user to set the +maintenance horizon, insert the instructions to follow on the maintenance that +will be forwarded to the maintenance request generated from the plan.

+

This module uses the original Cron job of Odoo’s Maintenance module to generate +maintenance requests. To do so, it takes into account the planning horizon and +generates all maintenance requests whose schedule date would fall inside that +planning horizon. Therefore, the maintenance manager can have a proper planning +of how many maintenance requests are programming for the future. Leaving planning +horizon to 0 will only create those maintenance request that are scheduled for +today.

+

We can also create maintenance requests from a plan using a domain for selecting the equipments. +This way, we might have a single plan that will generate all the requests. +In order to use it, we need to mark the Generate with Domain field.

+
+
+

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 SA
  • +
  • ForgeFlow
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_plan/maintenance_plan/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/__init__.py new file mode 100644 index 0000000..def774e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_maintenance_plan +from . import test_maintenance_plan_domain diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/common.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/common.py new file mode 100644 index 0000000..bc5fbbd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/common.py @@ -0,0 +1,83 @@ +# Copyright 2017 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from freezegun import freeze_time + +import odoo.tests.common as test_common + + +class TestMaintenancePlanBase(test_common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # HACK https://github.com/spulec/freezegun/issues/485 + freezer = freeze_time("2023-01-25 15:30:00") + freezer.__enter__() + cls.addClassCleanup(freezer.__exit__) + # Remove this variable in v16 and put instead: + # from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + DISABLED_MAIL_CONTEXT = { + "tracking_disable": True, + "mail_create_nolog": True, + "mail_create_nosubscribe": True, + "mail_notrack": True, + "no_reset_password": True, + } + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + cls.maintenance_request_obj = cls.env["maintenance.request"] + cls.maintenance_plan_obj = cls.env["maintenance.plan"] + cls.maintenance_equipment_obj = cls.env["maintenance.equipment"] + cls.cron = cls.env.ref("maintenance.maintenance_requests_cron") + cls.weekly_kind = cls.env.ref("maintenance_plan.maintenance_kind_weekly") + cls.done_stage = cls.env.ref("maintenance.stage_3") + + cls.equipment_1 = cls.maintenance_equipment_obj.create({"name": "Laptop 1"}) + cls.maintenance_plan_1 = cls.maintenance_plan_obj.create( + { + "equipment_id": cls.equipment_1.id, + "start_maintenance_date": "2023-01-25", + "interval": 1, + "interval_step": "month", + "maintenance_plan_horizon": 2, + "planning_step": "month", + } + ) + cls.maintenance_plan_2 = cls.maintenance_plan_obj.create( + { + "equipment_id": cls.equipment_1.id, + "maintenance_kind_id": cls.weekly_kind.id, + "interval": 1, + "interval_step": "week", + "maintenance_plan_horizon": 2, + "planning_step": "month", + } + ) + cls.maintenance_plan_3 = cls.maintenance_plan_obj.create( + { + "name": "My custom plan", + "equipment_id": cls.equipment_1.id, + "interval": 2, + "interval_step": "week", + "maintenance_plan_horizon": 2, + "planning_step": "month", + } + ) + cls.maintenance_plan_4 = cls.maintenance_plan_obj.create( + { + "name": "Plan without equipment", + "maintenance_kind_id": cls.weekly_kind.id, + "interval": 1, + "interval_step": "week", + "maintenance_plan_horizon": 2, + "planning_step": "month", + } + ) + cls.maintenance_plan_5 = cls.maintenance_plan_obj.create( + { + "start_maintenance_date": "2023-01-25", + "interval": 1, + "interval_step": "month", + "maintenance_plan_horizon": 2, + "planning_step": "month", + } + ) + cls.report_obj = cls.env["ir.actions.report"] diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/test_maintenance_plan.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/test_maintenance_plan.py new file mode 100644 index 0000000..585e1b1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/test_maintenance_plan.py @@ -0,0 +1,231 @@ +# Copyright 2017 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from dateutil.relativedelta import relativedelta + +from odoo import _, fields + +from .common import TestMaintenancePlanBase + + +class TestMaintenancePlan(TestMaintenancePlanBase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.today_date = fields.Date.from_string("2023-01-25") + + def test_name_get(self): + self.assertEqual( + self.maintenance_plan_1.name_get()[0][1], + _( + "Unnamed %(void)s plan (%(eqpmnt)s)", + void="", + eqpmnt=self.maintenance_plan_1.equipment_id.name, + ), + ) + self.assertEqual( + self.maintenance_plan_2.name_get()[0][1], + _( + "Unnamed %(kind)s plan (%(eqpmnt)s)", + kind=self.maintenance_plan_2.maintenance_kind_id.name, + eqpmnt=self.maintenance_plan_2.equipment_id.name, + ), + ) + self.assertEqual( + self.maintenance_plan_3.name_get()[0][1], self.maintenance_plan_3.name + ) + + def test_next_maintenance_date_01(self): + # We set start maintenance date tomorrow and check next maintenance + # date has been correctly computed + self.maintenance_plan_1.start_maintenance_date = "2023-01-24" + # Check next maintenance date is 1 month from start date + self.assertEqual( + self.maintenance_plan_1.next_maintenance_date, + fields.Date.from_string("2023-02-24"), + ) + + def test_next_maintenance_date_02(self): + self.cron.method_direct_trigger() + # Check maintenance plan dates + self.assertEqual( + self.maintenance_plan_1.start_maintenance_date, self.today_date + ) + self.assertEqual(self.maintenance_plan_1.next_maintenance_date, self.today_date) + # Check information from generated_requests + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_1.id)], + order="schedule_date asc", + ) + self.assertEqual(len(generated_requests), 3) + maintenance_1 = generated_requests[0] + # First maintenance was planned 2023-01-25 + self.assertEqual(maintenance_1.request_date, self.today_date) + # Complete request: + maintenance_1.stage_id = self.done_stage + # Check next one: + maintenance_2 = generated_requests[1] + # This should be expected 2023-02-25 + self.assertEqual( + maintenance_2.request_date, fields.Date.from_string("2023-02-25") + ) + # Complete request and Check next one: + maintenance_2.stage_id = self.done_stage + maintenance_3 = generated_requests[2] + # This one should be expected 2023-03-25 + self.assertEqual( + maintenance_3.request_date, fields.Date.from_string("2023-03-25") + ) + # Move it to a date before `start_maintenance_date` (the request should + # be ignored) + past_date = fields.Date.from_string("2022-12-25") + maintenance_3.request_date = past_date + self.assertNotEqual(self.maintenance_plan_1.next_maintenance_date, past_date) + self.assertEqual( + self.maintenance_plan_1.next_maintenance_date, + fields.Date.from_string("2023-03-25"), + ) + # Move the request_date far into the future: + future_date = fields.Date.from_string("2023-05-25") + maintenance_3.request_date = future_date + self.assertEqual(self.maintenance_plan_1.next_maintenance_date, future_date) + # Complete request in that date, next expected date should be 1 month + # after latest request done.: + maintenance_3.stage_id = self.done_stage + self.assertEqual( + self.maintenance_plan_1.next_maintenance_date, + fields.Date.from_string("2023-06-25"), + ) + + def test_generate_requests(self): + self.cron.method_direct_trigger() + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_1.id)], + order="schedule_date asc", + ) + self.assertEqual(len(generated_requests), 3) + self.assertEqual( + fields.Date.to_date(generated_requests[0].schedule_date), self.today_date + ) + self.assertEqual( + fields.Date.to_date(generated_requests[1].schedule_date), + fields.Date.from_string("2023-02-25"), + ) + self.assertEqual( + fields.Date.to_date(generated_requests[2].schedule_date), + fields.Date.from_string("2023-03-25"), + ) + generated_request = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_4.id)], limit=1 + ) + self.assertEqual( + generated_request.name, + _( + "Preventive Maintenance (%(kind)s) - %(plan)s", + kind=self.weekly_kind.name, + plan=self.maintenance_plan_4.name, + ), + ) + + def test_generate_requests2(self): + self.cron.method_direct_trigger() + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_1.id)], + order="schedule_date asc", + ) + + self.assertEqual(len(generated_requests), 3) + # We set plan start_maintenanca_date to a future one. New requests should take + # into account this new date. + new_date = fields.Date.from_string("2023-04-25") + self.maintenance_plan_1.next_maintenance_date = new_date + self.maintenance_plan_1.maintenance_plan_horizon = 3 + self.cron.method_direct_trigger() + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_1.id)], + order="schedule_date asc", + ) + self.assertEqual(len(generated_requests), 4) + self.assertEqual(generated_requests[-1].request_date, new_date) + + def test_generate_requests_no_equipment(self): + self.cron.method_direct_trigger() + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_5.id)], + order="schedule_date asc", + ) + + self.assertEqual(len(generated_requests), 3) + + # We set plan start_maintenanca_date to a future one. New requests should take + # into account this new date. + + self.maintenance_plan_5.write( + { + "start_maintenance_date": fields.Date.to_string( + self.today_date + relativedelta(weeks=9) + ), + "maintenance_plan_horizon": 3, + } + ) + + self.cron.method_direct_trigger() + + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_5.id)], + order="schedule_date asc", + ) + + self.assertEqual(len(generated_requests), 4) + self.assertEqual( + generated_requests[-1].request_date, + self.today_date + relativedelta(weeks=9), + ) + self.assertFalse(generated_requests.mapped("equipment_id")) + + def test_get_relativedelta(self): + plan = self.maintenance_plan_1 + result = plan.get_relativedelta(1, "day") + self.assertEqual(relativedelta(days=1), result) + result = plan.get_relativedelta(1, "week") + self.assertEqual(relativedelta(weeks=1), result) + result = plan.get_relativedelta(1, "month") + self.assertEqual(relativedelta(months=1), result) + result = plan.get_relativedelta(1, "year") + self.assertEqual(relativedelta(years=1), result) + + def test_generate_requests_inactive_equipment(self): + self.equipment_1.active = False + self.cron.method_direct_trigger() + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_1.id)], + order="schedule_date asc", + ) + self.assertEqual(len(generated_requests), 0) + self.equipment_1.active = True + self.cron.method_direct_trigger() + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_1.id)], + order="schedule_date asc", + ) + self.assertEqual(len(generated_requests), 3) + + def test_maintenance_request_report(self): + self.cron.method_direct_trigger() + generated_request = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_1.id)], + order="schedule_date asc", + limit=1, + ) + generated_request.note = "TEST-INSTRUCTIONS" + res = self.report_obj._render_qweb_text( + "base_maintenance.report_maintenance_request", + generated_request.ids, + False, + ) + self.assertRegex(str(res[0]), "TEST-INSTRUCTIONS") + + def test_maintenance_plan_button_manual_request_generation(self): + self.assertEqual(len(self.maintenance_plan_1.maintenance_ids), 0) + self.maintenance_plan_1.button_manual_request_generation() + self.assertEqual(len(self.maintenance_plan_1.maintenance_ids), 3) diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/test_maintenance_plan_domain.py b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/test_maintenance_plan_domain.py new file mode 100644 index 0000000..6e05783 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/tests/test_maintenance_plan_domain.py @@ -0,0 +1,38 @@ +# Copyright 2023 Dixmit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import json + +from odoo.addons.maintenance_plan.tests.common import TestMaintenancePlanBase + + +class TestMaintenancePlanDomain(TestMaintenancePlanBase): + def test_generate_requests_no_domain(self): + self.cron.method_direct_trigger() + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_5.id)], + order="schedule_date asc", + ) + + self.assertEqual(len(generated_requests), 3) + self.assertFalse(generated_requests.mapped("equipment_id")) + + def test_generate_requests_domain(self): + equipment_2 = self.maintenance_equipment_obj.create({"name": "Laptop 2"}) + self.maintenance_plan_5.write( + { + "generate_with_domain": True, + "generate_domain": json.dumps( + [("id", "in", [equipment_2.id, self.equipment_1.id])] + ), + } + ) + self.cron.method_direct_trigger() + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_5.id)], + order="schedule_date asc", + ) + + self.assertEqual(len(generated_requests), 6) + self.assertIn(equipment_2, generated_requests.mapped("equipment_id")) + self.assertIn(self.equipment_1, generated_requests.mapped("equipment_id")) diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/maintenance_equipment_views.xml b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/maintenance_equipment_views.xml new file mode 100644 index 0000000..3568a81 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/maintenance_equipment_views.xml @@ -0,0 +1,111 @@ + + + + + equipment.form.inherit + + maintenance.equipment + +
+ +
+ + {'invisible': 1} + + + + + + + + + + + + + + + + + + + + + + {'required': [('maintenance_team_required', '=', True)]} + + +
+ + equipment.search-oxigen + maintenance.equipment + + + + + + + + + + equipment.request.form.inherit + maintenance.request + + + + + + + + + + + + + + Notes + + + + + {'hide_equipment_id': 1} + + + + equipment.request.tree + maintenance.request + + + + + + + + +
diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/maintenance_kind_views.xml b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/maintenance_kind_views.xml new file mode 100644 index 0000000..7b781d5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/maintenance_kind_views.xml @@ -0,0 +1,26 @@ + + + + maintenance.kind.tree + maintenance.kind + + + + + + + + + Maintenance kinds + maintenance.kind + tree + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/maintenance_plan_views.xml b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/maintenance_plan_views.xml new file mode 100644 index 0000000..25987bc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/maintenance_plan_views.xml @@ -0,0 +1,204 @@ + + + + Maintenance Requests + maintenance.request + + kanban,tree,form,pivot,graph,calendar + { + 'default_maintenance_plan_id': active_id, + } + [('maintenance_plan_id', '=', active_id)] + + + maintenance.plan.form + maintenance.plan + +
+
+
+ + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + +
+ + + + + maintenance.plan.tree + maintenance.plan + + + + + + + + + + + + + + + + + + + + maintenance.plan.search + maintenance.plan + + + + + + + + + + + + + + + + Maintenance plans + maintenance.plan + tree,form + + ['|', ('active', '=', True), ('active', '=', + False)] + + + + Maintenance plans + maintenance.plan + tree,form + + { + 'default_equipment_id': active_id, 'hide_equipment_id': 0 + } + ['|', ('active', '=', True), ('active', '=', + False), ('search_equipment_id', '=', active_id)] + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/report_maintenance_request.xml b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/report_maintenance_request.xml new file mode 100644 index 0000000..008874e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/maintenance_plan/views/report_maintenance_request.xml @@ -0,0 +1,16 @@ + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_plan/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_plan/pyproject.toml new file mode 100644 index 0000000..c80223d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_plan" +version = "16.0.0" +description = "Maintenance Plan - Extends preventive maintenance planning" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-base_maintenance>=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 = ["maintenance_plan"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/README.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/README.md new file mode 100644 index 0000000..fa9e7fc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/README.md @@ -0,0 +1,44 @@ +# Maintenance Plan Activity + +Odoo addon: maintenance_plan_activity + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_plan_activity +``` + +## Dependencies + +This addon depends on: +- maintenance_plan + +## Manifest Information + +- **Name**: Maintenance Plan Activity +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_plan_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 +- 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-maintenance-maintenance_plan_activity/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/ARCHITECTURE.md new file mode 100644 index 0000000..70a3a41 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_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 Maintenance_plan_activity Module - maintenance_plan_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-maintenance-maintenance_plan_activity/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/CONFIGURATION.md new file mode 100644 index 0000000..fa0717e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_plan_activity. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/DEPENDENCIES.md new file mode 100644 index 0000000..cbafb41 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance_plan](https://github.com/bringout/oca-technical) diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/FAQ.md new file mode 100644 index 0000000..320bf0f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_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 maintenance_plan_activity or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/INSTALL.md new file mode 100644 index 0000000..78bfc8b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_plan_activity" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_plan_activity" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/MODELS.md new file mode 100644 index 0000000..1f77fac --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in maintenance_plan_activity. + +```mermaid +classDiagram + class maintenance_planned_activity + class maintenance_equipment + class maintenance_plan +``` + +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-maintenance-maintenance_plan_activity/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/OVERVIEW.md new file mode 100644 index 0000000..03da234 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_plan_activity. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_plan_activity +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/SECURITY.md new file mode 100644 index 0000000..3b4c13c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/SECURITY.md @@ -0,0 +1,34 @@ +# Security + +Access control and security definitions in maintenance_plan_activity. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[ir.model.access.csv](../maintenance_plan_activity/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](../maintenance_plan_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-maintenance-maintenance_plan_activity/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_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-maintenance-maintenance_plan_activity/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/USAGE.md new file mode 100644 index 0000000..c1b6c7c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_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 maintenance_plan_activity +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/README.rst b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/README.rst new file mode 100644 index 0000000..f02e056 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/README.rst @@ -0,0 +1,80 @@ +========================= +Maintenance Plan Activity +========================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:7117d40453faf264cb3c6537a9ac18fec6f26f4eb8dfbd8e417cefd46f5a655d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_plan_activity + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_plan_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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows defining in the maintenance plan activities that will be created once the maintenance +requests are created as a consequence of the plan itself. + +.. image:: https://raw.githubusercontent.com/maintenance_plan_activity/static/description/maintenance_plan_activity.png + :alt: Maintenance Planned Activities + +**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 +~~~~~~~~~~~~ + +* Adria Gil Sorribes + +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/maintenance `_ 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-maintenance-maintenance_plan_activity/maintenance_plan_activity/__init__.py b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/__manifest__.py new file mode 100644 index 0000000..cfe7d98 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2019-20 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Plan Activity", + "summary": """ + This module allows defining in the maintenance plan activities that + will be created once the maintenance requests are created as a + consequence of the plan itself.""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "maintainers": [], + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance_plan"], + "data": ["security/ir.model.access.csv", "views/maintenance_views.xml"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/bs.po new file mode 100644 index 0000000..8f58520 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/bs.po @@ -0,0 +1,104 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan_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: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__date_before_request +msgid "# Days before request" +msgstr "# Dana prije zahtjeva" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__activity_type_id +msgid "Activity Type" +msgstr "Tip aktivnosti" + +#. module: maintenance_plan_activity +#. odoo-python +#: code:addons/maintenance_plan_activity/models/maintenance.py:0 +#, python-format +msgid "Activity automatically generated from maintenance plan" +msgstr "Aktivnost automatski generisana iz plana održavanja" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__display_name +msgid "Display Name" +msgstr "Prikazani naziv" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__maintenance_plan_id +msgid "Maintenance Plan" +msgstr "Plan održavanja" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_planned_activity +msgid "Maintenance Planned Activity" +msgstr "Planirana aktivnost održavanja" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_plan__planned_activity_ids +msgid "Planned Activities" +msgstr "Planirane aktivnosti" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__user_id +msgid "Responsible" +msgstr "Odgovoran" + +#. module: maintenance_plan_activity +#: model_terms:ir.ui.view,arch_db:maintenance_plan_activity.maintenance_plan_view_form +msgid "Scheduled Activities" +msgstr "Planirane aktivnosti" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,help:maintenance_plan_activity.field_maintenance_planned_activity__date_before_request +msgid "" +"This is the number of days the due date of the activity will beset before " +"the Maintenance request scheduled date" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/es.po new file mode 100644 index 0000000..b125972 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/es.po @@ -0,0 +1,111 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan_activity +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-14 15:48+0000\n" +"Last-Translator: Enric Tobella \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: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__date_before_request +msgid "# Days before request" +msgstr "# Días antes de la petición" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__activity_type_id +msgid "Activity Type" +msgstr "Tipo de actividad" + +#. module: maintenance_plan_activity +#: code:addons/maintenance_plan_activity/models/maintenance.py:0 +#, python-format +msgid "Activity automatically generated from maintenance plan" +msgstr "Actividad generada automáticamente desde un plan de mantenimiento" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__write_uid +msgid "Last Updated by" +msgstr "Última modificación por" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipamiento" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__maintenance_plan_id +msgid "Maintenance Plan" +msgstr "Plan de mantenimiento" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_planned_activity +msgid "Maintenance Planned Activity" +msgstr "Actividad planificada de mantenimiento" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_plan__planned_activity_ids +msgid "Planned Activities" +msgstr "Actividades planificadas" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__user_id +msgid "Responsible" +msgstr "Responsable" + +#. module: maintenance_plan_activity +#: model_terms:ir.ui.view,arch_db:maintenance_plan_activity.maintenance_plan_view_form +msgid "Scheduled Activities" +msgstr "Actividades programadas" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,help:maintenance_plan_activity.field_maintenance_planned_activity__date_before_request +msgid "" +"This is the number of days the due date of the activity will beset before " +"the Maintenance request scheduled date" +msgstr "" +"Este es el número de días para definir la fecha prevista de la actividades " +"desde la fecha programada de la solicitud" + +#~ msgid "Maintenance Planned Activities" +#~ msgstr "Actividades planificadas de mantenimiento" diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/it.po new file mode 100644 index 0000000..1c4c1ae --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/it.po @@ -0,0 +1,111 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan_activity +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-12-31 16: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: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__date_before_request +msgid "# Days before request" +msgstr "N° giorni prima della richiesta" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__activity_type_id +msgid "Activity Type" +msgstr "Tipo attività" + +#. module: maintenance_plan_activity +#: code:addons/maintenance_plan_activity/models/maintenance.py:0 +#, python-format +msgid "Activity automatically generated from maintenance plan" +msgstr "Attività generata automaticamente da piano di manutenzione" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__maintenance_plan_id +msgid "Maintenance Plan" +msgstr "Piano manutenzione" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_planned_activity +msgid "Maintenance Planned Activity" +msgstr "Attività di manutenzione pianificata" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_plan__planned_activity_ids +msgid "Planned Activities" +msgstr "Attività pianificate" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__user_id +msgid "Responsible" +msgstr "Responsabile" + +#. module: maintenance_plan_activity +#: model_terms:ir.ui.view,arch_db:maintenance_plan_activity.maintenance_plan_view_form +msgid "Scheduled Activities" +msgstr "Attività schedulate" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,help:maintenance_plan_activity.field_maintenance_planned_activity__date_before_request +msgid "" +"This is the number of days the due date of the activity will beset before " +"the Maintenance request scheduled date" +msgstr "" +"Questo è il numero di giorni in cui la data di scadenza dell'attività verrà " +"fissata prima della data pianificata della richiesta di manutenzione" + +#~ msgid "Maintenance Planned Activities" +#~ msgstr "Attività piano di manutenzione" diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/maintenance_plan_activity.pot b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/maintenance_plan_activity.pot new file mode 100644 index 0000000..a1f8405 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/i18n/maintenance_plan_activity.pot @@ -0,0 +1,104 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_plan_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: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__date_before_request +msgid "# Days before request" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__activity_type_id +msgid "Activity Type" +msgstr "" + +#. module: maintenance_plan_activity +#. odoo-python +#: code:addons/maintenance_plan_activity/models/maintenance.py:0 +#, python-format +msgid "Activity automatically generated from maintenance plan" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__create_uid +msgid "Created by" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__create_date +msgid "Created on" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__id +msgid "ID" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity____last_update +msgid "Last Modified on" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__write_date +msgid "Last Updated on" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_plan +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__maintenance_plan_id +msgid "Maintenance Plan" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model,name:maintenance_plan_activity.model_maintenance_planned_activity +msgid "Maintenance Planned Activity" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_plan__planned_activity_ids +msgid "Planned Activities" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,field_description:maintenance_plan_activity.field_maintenance_planned_activity__user_id +msgid "Responsible" +msgstr "" + +#. module: maintenance_plan_activity +#: model_terms:ir.ui.view,arch_db:maintenance_plan_activity.maintenance_plan_view_form +msgid "Scheduled Activities" +msgstr "" + +#. module: maintenance_plan_activity +#: model:ir.model.fields,help:maintenance_plan_activity.field_maintenance_planned_activity__date_before_request +msgid "" +"This is the number of days the due date of the activity will beset before " +"the Maintenance request scheduled date" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/models/__init__.py new file mode 100644 index 0000000..e715e62 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/models/__init__.py @@ -0,0 +1,2 @@ +from . import maintenance +from . import maintenance_planned_activity diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/models/maintenance.py b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/models/maintenance.py new file mode 100644 index 0000000..3c6ad3b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/models/maintenance.py @@ -0,0 +1,44 @@ +# Copyright 2019-20 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from datetime import timedelta + +from odoo import _, fields, models + + +class MaintenancePlan(models.Model): + _inherit = "maintenance.plan" + + planned_activity_ids = fields.One2many( + "maintenance.planned.activity", "maintenance_plan_id", "Planned Activities" + ) + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + def _create_new_request(self, maintenance_plan): + new_requests = super()._create_new_request(maintenance_plan) + for request in new_requests: + for planned_activity in maintenance_plan.planned_activity_ids: + # In case mail_activity_team is installed this makes sure + # the correct activity team is selected. If that module is + # not installed the context does nothing + self.env["mail.activity"].with_context( + default_res_model="maintenance.request" + ).create( + { + "activity_type_id": planned_activity.activity_type_id.id, + "note": _( + "Activity automatically generated from maintenance plan" + ), + "user_id": planned_activity.user_id.id or self.env.user.id, + "res_id": request.id, + "res_model_id": self.env.ref( + "maintenance.model_maintenance_request" + ).id, + "date_deadline": request.schedule_date + - timedelta(days=planned_activity.date_before_request), + } + ) + return new_requests diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/models/maintenance_planned_activity.py b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/models/maintenance_planned_activity.py new file mode 100644 index 0000000..1b75523 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/models/maintenance_planned_activity.py @@ -0,0 +1,22 @@ +# Copyright 2019-20 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class MiantenancePlannedactivity(models.Model): + _name = "maintenance.planned.activity" + _description = "Maintenance Planned Activity" + + activity_type_id = fields.Many2one( + "mail.activity.type", "Activity Type", required=True + ) + user_id = fields.Many2one( + "res.users", "Responsible", default=lambda self: self.env.user + ) + date_before_request = fields.Integer( + "# Days before request", + help="This is the number of days the due date of the activity will be" + "set before the Maintenance request scheduled date", + ) + maintenance_plan_id = fields.Many2one("maintenance.plan", "Maintenance Plan") diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..06b212d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Adria Gil Sorribes diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/readme/DESCRIPTION.rst new file mode 100644 index 0000000..f647b2c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module allows defining in the maintenance plan activities that will be created once the maintenance +requests are created as a consequence of the plan itself. + +.. image:: /maintenance_plan_activity/static/description/maintenance_plan_activity.png + :alt: Maintenance Planned Activities diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/security/ir.model.access.csv b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/security/ir.model.access.csv new file mode 100644 index 0000000..56fe8f5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/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_maintenance_planned_activity_user,access_maintenance_planned_activity_user,model_maintenance_planned_activity,base.group_user,1,0,0,0 +access_maintenance_planned_activity_manager,access_maintenance_planned_activity_manager,model_maintenance_planned_activity,maintenance.group_equipment_manager,1,1,1,1 diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/static/description/index.html new file mode 100644 index 0000000..93b1f24 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/static/description/index.html @@ -0,0 +1,423 @@ + + + + + + +Maintenance Plan Activity + + + +
+

Maintenance Plan Activity

+ + +

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

+

This module allows defining in the maintenance plan activities that will be created once the maintenance +requests are created as a consequence of the plan itself.

+Maintenance Planned Activities +

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
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_plan_activity/maintenance_plan_activity/static/description/maintenance_plan_activity.png b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/static/description/maintenance_plan_activity.png new file mode 100644 index 0000000..f0bca4a Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/static/description/maintenance_plan_activity.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/tests/__init__.py new file mode 100644 index 0000000..950ba7f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_plan_activity diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/tests/test_maintenance_plan_activity.py b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/tests/test_maintenance_plan_activity.py new file mode 100644 index 0000000..bf2c533 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/tests/test_maintenance_plan_activity.py @@ -0,0 +1,61 @@ +# Copyright 2019-20 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from datetime import timedelta + +import odoo.tests.common as test_common +from odoo import fields + + +class TestMaintenancePlanActivity(test_common.TransactionCase): + def setUp(self): + super(TestMaintenancePlanActivity, self).setUp() + self.maintenance_request_obj = self.env["maintenance.request"] + self.maintenance_plan_obj = self.env["maintenance.plan"] + self.maintenance_equipment_obj = self.env["maintenance.equipment"] + self.maintenance_planned_activity_obj = self.env["maintenance.planned.activity"] + self.mail_activity_obj = self.env["mail.activity"] + self.cron = self.env.ref("maintenance.maintenance_requests_cron") + + self.equipment_1 = self.maintenance_equipment_obj.create({"name": "Laptop 1"}) + self.call = self.env["mail.activity.type"].search( + [("name", "=", "Call")], limit=1 + ) + self.maintenance_plan_1 = self.maintenance_plan_obj.create( + { + "equipment_id": self.equipment_1.id, + "interval": 1, + "interval_step": "month", + "maintenance_plan_horizon": 2, + "planning_step": "month", + } + ) + self.planned_activity = self.maintenance_planned_activity_obj.create( + { + "maintenance_plan_id": self.maintenance_plan_1.id, + "activity_type_id": self.call.id, + "date_before_request": 2, + } + ) + + def test_01_cron_auto_create_activities(self): + """Execute cron and check the request and the activities that have + been created + """ + self.cron.method_direct_trigger() + + generated_requests = self.maintenance_request_obj.search( + [("maintenance_plan_id", "=", self.maintenance_plan_1.id)] + ) + self.assertEqual(len(generated_requests), 3) + request_1 = generated_requests[0] + # Check if activity Call has been created for the request 1 + generated_activities = self.mail_activity_obj.search( + [("res_id", "=", request_1.id)] + ) + self.assertEqual(len(generated_activities), 2) + self.assertEqual(generated_activities[0].activity_type_id.name, self.call.name) + self.assertEqual( + generated_activities[0].date_deadline, + fields.Date.to_date(request_1.schedule_date) - timedelta(days=2), + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/views/maintenance_views.xml b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/views/maintenance_views.xml new file mode 100644 index 0000000..45f3433 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/maintenance_plan_activity/views/maintenance_views.xml @@ -0,0 +1,28 @@ + + + + + maintenance.plan.form + maintenance.plan + + + + + + + + + + + + maintenance.planned.activity.tree + maintenance.planned.activity + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_plan_activity/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_plan_activity/pyproject.toml new file mode 100644 index 0000000..b41fe77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_plan_activity/pyproject.toml @@ -0,0 +1,45 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_plan_activity" +version = "16.0.0" +description = "Maintenance Plan Activity - + This module allows defining in the maintenance plan activities that + will be created once the maintenance requests are created as a + consequence of the plan itself." +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance_plan>=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 = ["maintenance_plan_activity"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_product/README.md b/odoo-bringout-oca-maintenance-maintenance_product/README.md new file mode 100644 index 0000000..291e7be --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/README.md @@ -0,0 +1,45 @@ +# Maintenance Product + +Odoo addon: maintenance_product + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_product +``` + +## Dependencies + +This addon depends on: +- maintenance +- product + +## Manifest Information + +- **Name**: Maintenance Product +- **Version**: 16.0.1.0.0 +- **Category**: Maintenance +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_product`. + +## 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 +- 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-maintenance-maintenance_product/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/ARCHITECTURE.md new file mode 100644 index 0000000..6e8cd7d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/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 Maintenance_product Module - maintenance_product + 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-maintenance-maintenance_product/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/CONFIGURATION.md new file mode 100644 index 0000000..9c658cc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_product. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_product/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_product/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/DEPENDENCIES.md new file mode 100644 index 0000000..55f774e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) +- [product](https://github.com/bringout/oca-ocb-sale/tree/681dc8d5fff638cb0862a34e48091a2098d091f8/odoo-bringout-oca-ocb-product) diff --git a/odoo-bringout-oca-maintenance-maintenance_product/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/FAQ.md new file mode 100644 index 0000000..a24129d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/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 maintenance_product or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_product/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/INSTALL.md new file mode 100644 index 0000000..3e18a69 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_product" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_product" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_product/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/MODELS.md new file mode 100644 index 0000000..2d464b4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/doc/MODELS.md @@ -0,0 +1,16 @@ +# Models + +Detected core models and extensions in maintenance_product. + +```mermaid +classDiagram + class maintenance_equipment + class maintenance_equipment_category + class product_category + class product_product + class product_template +``` + +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-maintenance-maintenance_product/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/OVERVIEW.md new file mode 100644 index 0000000..7d730cc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_product. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_product +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_product/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_product/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/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-maintenance-maintenance_product/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/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-maintenance-maintenance_product/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/USAGE.md new file mode 100644 index 0000000..d5d060e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/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 maintenance_product +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_product/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_product/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/README.rst b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/README.rst new file mode 100644 index 0000000..7bb3acd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/README.rst @@ -0,0 +1,105 @@ +=================== +Maintenance Product +=================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:c968eeb1ea028e306cece6e04b7423c3b6b8aba357f290269a51e83ecf8aa1fa + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_product + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_product + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module links *Maintenance Equipments* and *Products*, easing creation of new equipments. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Equipment Categories: + +* Go to *Maintenance > Configuration > Equipment Categories* and create a new one (or modify an existing one) filling in the new field *Product Category*. +* The name of the *Equipment Category* is set to the name of the *Product Category*. + +Equipment: + +* Go to *Maintenance > Equipments* and create a new one filling in the new field *Product*. +* The name of the *Equipment* is set to the name of the *Product*. +* The vendor of the *Equipment* is set to the seller of the *Product* (if only one is set). +* The vendor reference of the *Equipment* is set to the seller reference of the *Product* (if only one is set). +* The cost of the *Equipment* is set to the standard cost of the *Product*. + +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 +~~~~~~~~~~~~ + +* César Fernández Domínguez + +* `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/maintenance `_ 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-maintenance-maintenance_product/maintenance_product/__init__.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/__manifest__.py new file mode 100644 index 0000000..475e77f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Maintenance Product", + "version": "16.0.1.0.0", + "category": "Maintenance", + "website": "https://github.com/OCA/maintenance", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["maintenance", "product"], + "installable": True, + "data": [ + "views/maintenance_equipment_view.xml", + "views/product_template_view.xml", + ], + "maintainers": ["victoralmau"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/bs.po new file mode 100644 index 0000000..9f68c13 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/bs.po @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_product +# +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: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_product__maintenance_ok +#: model:ir.model.fields,field_description:maintenance_product.field_product_template__maintenance_ok +msgid "Can be Maintenance" +msgstr "Može biti održavanje" + +#. module: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_category__equipment_category_ids +msgid "Equipment Categories" +msgstr "Kategorije opreme" + +#. module: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_product__equipment_ids +msgid "Equipments" +msgstr "Oprema" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "Kategorija opreme za održavanje" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_template +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment__product_id +msgid "Product" +msgstr "Artikal" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_category +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment__product_category_id +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment_category__product_category_id +msgid "Product Category" +msgstr "Kategorija proizvoda" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_product +msgid "Product Variant" +msgstr "Varijanta proizvoda" diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/es.po new file mode 100644 index 0000000..f145f2b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/es.po @@ -0,0 +1,74 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_product +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-03-23 13:57+0000\n" +"PO-Revision-Date: 2023-07-22 23:09+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: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_product__maintenance_ok +#: model:ir.model.fields,field_description:maintenance_product.field_product_template__maintenance_ok +msgid "Can be Maintenance" +msgstr "Puede ser un mantenimiento" + +#. module: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_category__equipment_category_ids +msgid "Equipment Categories" +msgstr "Categorías de equipamiento" + +#. module: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_product__equipment_ids +msgid "Equipments" +msgstr "Equipos" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo de mantenimiento" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "Categoría Equipo de mantenimiento" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_template +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment__product_id +msgid "Product" +msgstr "Producto" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_category +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment__product_category_id +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment_category__product_category_id +msgid "Product Category" +msgstr "Categoría de producto" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_product +msgid "Product Variant" +msgstr "Variante de Producto" + +#~ msgid "Display Name" +#~ msgstr "Nombre mostrado" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificación el" + +#~ msgid "Product Template" +#~ msgstr "Plantilla de producto" diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/it.po new file mode 100644 index 0000000..ac3b63f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/it.po @@ -0,0 +1,73 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_product +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-08 11: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: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_product__maintenance_ok +#: model:ir.model.fields,field_description:maintenance_product.field_product_template__maintenance_ok +msgid "Can be Maintenance" +msgstr "Manutenibile" + +#. module: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_category__equipment_category_ids +msgid "Equipment Categories" +msgstr "Categorie attrezzatura" + +#. module: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_product__equipment_ids +msgid "Equipments" +msgstr "Attrezzature" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "Categoria attrezzatura manutenzione" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_template +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment__product_id +msgid "Product" +msgstr "Prodotto" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_category +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment__product_category_id +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment_category__product_category_id +msgid "Product Category" +msgstr "Categoria prodotto" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_product +msgid "Product Variant" +msgstr "Variante prodotto" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" + +#~ msgid "Product Template" +#~ msgstr "Modello prodotto" diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/maintenance_product.pot b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/maintenance_product.pot new file mode 100644 index 0000000..58dd76a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/i18n/maintenance_product.pot @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_product +# +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: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_product__maintenance_ok +#: model:ir.model.fields,field_description:maintenance_product.field_product_template__maintenance_ok +msgid "Can be Maintenance" +msgstr "" + +#. module: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_category__equipment_category_ids +msgid "Equipment Categories" +msgstr "" + +#. module: maintenance_product +#: model:ir.model.fields,field_description:maintenance_product.field_product_product__equipment_ids +msgid "Equipments" +msgstr "" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_maintenance_equipment_category +msgid "Maintenance Equipment Category" +msgstr "" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_template +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment__product_id +msgid "Product" +msgstr "" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_category +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment__product_category_id +#: model:ir.model.fields,field_description:maintenance_product.field_maintenance_equipment_category__product_category_id +msgid "Product Category" +msgstr "" + +#. module: maintenance_product +#: model:ir.model,name:maintenance_product.model_product_product +msgid "Product Variant" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/__init__.py new file mode 100644 index 0000000..e5f36ac --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/__init__.py @@ -0,0 +1,4 @@ +from . import maintenance_equipment +from . import product_category +from . import product_product +from . import product_template diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/maintenance_equipment.py new file mode 100644 index 0000000..c8b2375 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/maintenance_equipment.py @@ -0,0 +1,43 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + product_id = fields.Many2one( + comodel_name="product.product", + string="Product", + tracking=True, + domain="[('categ_id','=',product_category_id),('maintenance_ok','=',True)]", + ) + product_category_id = fields.Many2one( + comodel_name="product.category", related="category_id.product_category_id" + ) + + @api.onchange("product_id") + def _onchange_product_id(self): + """If product is set, equipment name, seller, seller ref and cost defaults + to product ones. + """ + if self.product_id: + self.name = self.product_id.name + self.cost = self.product_id.standard_price + if self.product_id.seller_ids: + first_seller = fields.first(self.product_id.seller_ids) + self.partner_id = first_seller.partner_id + self.partner_ref = first_seller.product_code + + +class MaintenanceEquipmentCategory(models.Model): + _inherit = "maintenance.equipment.category" + + product_category_id = fields.Many2one( + comodel_name="product.category", string="Product Category", tracking=True + ) + + @api.onchange("product_category_id") + def _onchange_product_category_id(self): + if self.product_category_id: + self.name = self.product_category_id.name diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/product_category.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/product_category.py new file mode 100644 index 0000000..9017f52 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/product_category.py @@ -0,0 +1,13 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class ProductCategory(models.Model): + _inherit = "product.category" + + equipment_category_ids = fields.One2many( + comodel_name="maintenance.equipment.category", + inverse_name="product_category_id", + string="Equipment Categories", + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/product_product.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/product_product.py new file mode 100644 index 0000000..6daa805 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/product_product.py @@ -0,0 +1,13 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class ProductProduct(models.Model): + _inherit = "product.product" + + equipment_ids = fields.One2many( + comodel_name="maintenance.equipment", + inverse_name="product_id", + string="Equipments", + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/product_template.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/product_template.py new file mode 100644 index 0000000..b00daf9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/models/product_template.py @@ -0,0 +1,9 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + maintenance_ok = fields.Boolean(string="Can be Maintenance") diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..536c589 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* César Fernández Domínguez + +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/readme/DESCRIPTION.rst new file mode 100644 index 0000000..36f73bf --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module links *Maintenance Equipments* and *Products*, easing creation of new equipments. diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/readme/USAGE.rst b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/readme/USAGE.rst new file mode 100644 index 0000000..871d4e6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/readme/USAGE.rst @@ -0,0 +1,12 @@ +Equipment Categories: + +* Go to *Maintenance > Configuration > Equipment Categories* and create a new one (or modify an existing one) filling in the new field *Product Category*. +* The name of the *Equipment Category* is set to the name of the *Product Category*. + +Equipment: + +* Go to *Maintenance > Equipments* and create a new one filling in the new field *Product*. +* The name of the *Equipment* is set to the name of the *Product*. +* The vendor of the *Equipment* is set to the seller of the *Product* (if only one is set). +* The vendor reference of the *Equipment* is set to the seller reference of the *Product* (if only one is set). +* The cost of the *Equipment* is set to the standard cost of the *Product*. diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/static/description/index.html new file mode 100644 index 0000000..02d63cd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/static/description/index.html @@ -0,0 +1,445 @@ + + + + + + +Maintenance Product + + + +
+

Maintenance Product

+ + +

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

+

This module links Maintenance Equipments and Products, easing creation of new equipments.

+

Table of contents

+ +
+

Usage

+

Equipment Categories:

+
    +
  • Go to Maintenance > Configuration > Equipment Categories and create a new one (or modify an existing one) filling in the new field Product Category.
  • +
  • The name of the Equipment Category is set to the name of the Product Category.
  • +
+

Equipment:

+
    +
  • Go to Maintenance > Equipments and create a new one filling in the new field Product.
  • +
  • The name of the Equipment is set to the name of the Product.
  • +
  • The vendor of the Equipment is set to the seller of the Product (if only one is set).
  • +
  • The vendor reference of the Equipment is set to the seller reference of the Product (if only one is set).
  • +
  • The cost of the Equipment is set to the standard cost of the Product.
  • +
+
+
+

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:

+

victoralmau

+

This module is part of the OCA/maintenance 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-maintenance-maintenance_product/maintenance_product/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/tests/__init__.py new file mode 100644 index 0000000..a0bf7c8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/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_maintenance_product diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/tests/common.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/tests/common.py new file mode 100644 index 0000000..6a794d7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/tests/common.py @@ -0,0 +1,23 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests import common + + +class TestMaintenanceProductBase(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.product_category = cls.env["product.category"].create( + {"name": "test-product-category"} + ) + cls.partner = cls.env["res.partner"].create({"name": "Mr Odoo"}) + cls.product = cls.env["product.product"].create( + { + "name": "test-product", + "categ_id": cls.product_category.id, + "standard_price": 10, + "maintenance_ok": True, + "seller_ids": [(0, 0, {"partner_id": cls.partner.id})], + } + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/tests/test_maintenance_product.py b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/tests/test_maintenance_product.py new file mode 100644 index 0000000..d288365 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/tests/test_maintenance_product.py @@ -0,0 +1,30 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests import Form + +from .common import TestMaintenanceProductBase + + +class TestMaintenanceProduct(TestMaintenanceProductBase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.category = cls.env["maintenance.equipment.category"].create( + {"name": "test-maintenance-equipment-category"} + ) + cls.equipment = cls.env["maintenance.equipment"].create( + {"name": "test-maintenance-equipment"} + ) + + def test_maintenance_equipment_category(self): + category_form = Form(self.category) + category_form.product_category_id = self.product_category + self.assertEqual(category_form.name, "test-product-category") + + def test_maintenance_equipment(self): + equipment_form = Form(self.equipment) + equipment_form.product_id = self.product + self.assertEqual(equipment_form.name, "test-product") + self.assertEqual(equipment_form.cost, 10) + self.assertEqual(equipment_form.partner_id, self.partner) diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/views/maintenance_equipment_view.xml b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/views/maintenance_equipment_view.xml new file mode 100644 index 0000000..f8c5bec --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/views/maintenance_equipment_view.xml @@ -0,0 +1,34 @@ + + + + pm.maintenance.equipment.form.view + maintenance.equipment + + + + + + + + + + pm.maintenance.equipment.search.view + maintenance.equipment + + + + + + + + + pm.maintenance.equipment.category.form.view + maintenance.equipment.category + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/views/product_template_view.xml b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/views/product_template_view.xml new file mode 100644 index 0000000..79992a4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/maintenance_product/views/product_template_view.xml @@ -0,0 +1,16 @@ + + + + product.template.common.form + product.template + + + +
+ +
+
+
+
+
diff --git a/odoo-bringout-oca-maintenance-maintenance_product/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_product/pyproject.toml new file mode 100644 index 0000000..fd393f0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_product/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_product" +version = "16.0.0" +description = "Maintenance Product - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_product"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_project/README.md b/odoo-bringout-oca-maintenance-maintenance_project/README.md new file mode 100644 index 0000000..561ceb6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/README.md @@ -0,0 +1,45 @@ +# Maintenance Projects + +Odoo addon: maintenance_project + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_project +``` + +## Dependencies + +This addon depends on: +- base_maintenance +- project + +## Manifest Information + +- **Name**: Maintenance Projects +- **Version**: 16.0.2.0.0 +- **Category**: Maintenance +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_project`. + +## 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 +- 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-maintenance-maintenance_project/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/ARCHITECTURE.md new file mode 100644 index 0000000..040dabc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/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 Maintenance_project Module - maintenance_project + 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-maintenance-maintenance_project/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/CONFIGURATION.md new file mode 100644 index 0000000..4ced556 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_project. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_project/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_project/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/DEPENDENCIES.md new file mode 100644 index 0000000..fb2c3eb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [base_maintenance](https://github.com/bringout/oca-technical) +- [project](https://github.com/bringout/oca-ocb-project/tree/5bbf7d0517a5706a48472bdf6a077a4467d11869/odoo-bringout-oca-ocb-project) diff --git a/odoo-bringout-oca-maintenance-maintenance_project/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/FAQ.md new file mode 100644 index 0000000..b435d29 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/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 maintenance_project or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_project/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/INSTALL.md new file mode 100644 index 0000000..ce305b9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_project" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_project" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_project/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/MODELS.md new file mode 100644 index 0000000..0e001d9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in maintenance_project. + +```mermaid +classDiagram + class maintenance_equipment + class maintenance_request + 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-maintenance-maintenance_project/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/OVERVIEW.md new file mode 100644 index 0000000..63c9c28 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_project. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_project +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_project/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/REPORTS.md new file mode 100644 index 0000000..4ab864a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/doc/REPORTS.md @@ -0,0 +1,22 @@ +# Reports + +Report definitions and templates in maintenance_project. + +```mermaid +classDiagram +``` + +## Available Reports + +No named reports found in XML files. + + +## Report Files + +- **maintenance_request_report.xml** (XML template/definition) + +## Notes +- Named reports above are accessible through Odoo's reporting menu +- Python files define report logic and data processing +- XML files contain report templates, definitions, and formatting +- Reports are integrated with Odoo's printing and email systems diff --git a/odoo-bringout-oca-maintenance-maintenance_project/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/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-maintenance-maintenance_project/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/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-maintenance-maintenance_project/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/USAGE.md new file mode 100644 index 0000000..e402193 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/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 maintenance_project +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_project/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_project/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/README.rst b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/README.rst new file mode 100644 index 0000000..33a75e2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/README.rst @@ -0,0 +1,81 @@ +==================== +Maintenance Projects +==================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d68a0f7d567eafa344eb212be0520f6c37c4dccc3ec106ebad8884fa57af3fa9 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_project + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_project + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of Odoo Maintenance module adding this features: + +- Adds a project to an equipment. You can link an existing project or create a new one (with the Create project button) after creating the equipment. +- Adds project and task to a maintenance request. The default project for a request will be the equipment one, including the preventive requests periodically created. + +This is is a technical addon to allow timesheet assignment to a maintenance request. + +**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 +~~~~~~~ + +* Solvos + +Contributors +~~~~~~~~~~~~ + +* David Alonso + +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/maintenance `_ 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-maintenance-maintenance_project/maintenance_project/__init__.py b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/__manifest__.py new file mode 100644 index 0000000..e82a688 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2019 Solvos Consultoría Informática () +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +{ + "name": "Maintenance Projects", + "summary": "Adds projects to maintenance equipments and requests", + "version": "16.0.2.0.0", + "author": "Odoo Community Association (OCA), Solvos", + "license": "AGPL-3", + "category": "Maintenance", + "website": "https://github.com/OCA/maintenance", + "depends": ["base_maintenance", "project"], + "data": [ + "views/maintenance_equipment_views.xml", + "views/maintenance_request_views.xml", + "views/project_project_views.xml", + "report/maintenance_request_report.xml", + ], + "demo": ["data/demo_maintenance_project.xml"], + "installable": True, +} diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/data/demo_maintenance_project.xml b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/data/demo_maintenance_project.xml new file mode 100644 index 0000000..a7f83ea --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/data/demo_maintenance_project.xml @@ -0,0 +1,60 @@ + + + General equipment project + + + + + + General task + + + + + Default preventive task + + + Generic Monitor + + + + + S/N 1 + MODEL1 + + + + Generic Monitor with preventive + + + + + + S/N 2 + MODEL2 + + + + + + + Generic Computer with own project + + + + + S/N 3 + MODEL3 + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/bs.po new file mode 100644 index 0000000..7c8cce6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/bs.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_project +# +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: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_view_form +msgid " Create project" +msgstr " Kreiraj projekat" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.view_project_kanban +msgid "Equipments" +msgstr "Oprema" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.view_project_kanban +msgid "Requests" +msgstr "Zahtjevi" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.report_maintenance_request_document +msgid "Project:" +msgstr "Projekat:" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.report_maintenance_request_document +msgid "Task:" +msgstr "Zadatak:" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_equipment__preventive_default_task_id +msgid "Default Task" +msgstr "Podrazumijevani zadatak" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__equipment_count +msgid "Equipment Count" +msgstr "Broj opreme" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__equipment_ids +#: model_terms:ir.ui.view,arch_db:maintenance_project.edit_project +msgid "Equipments" +msgstr "Oprema" + +#. module: maintenance_project +#: model:project.project,name:maintenance_project.project_project_1 +msgid "General equipment project" +msgstr "Opšti projekat opreme" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_3 +msgid "Generic Computer with own project" +msgstr "Generički računar sa vlastitim projektom" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_1 +msgid "Generic Monitor" +msgstr "Generički monitor" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_2 +msgid "Generic Monitor with preventive" +msgstr "Generički monitor sa preventivnim održavanjem" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_maintenance_request +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__maintenance_request_count +msgid "Maintenance Request Count" +msgstr "Broj zahtjeva za održavanje" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__maintenance_request_ids +msgid "Maintenance Requests" +msgstr "Zahtjevi za održavanje" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_project_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_equipment__project_id +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_request__project_id +msgid "Project" +msgstr "Projekat" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_view_kanban +msgid "Project:" +msgstr "Projekat:" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.edit_project +msgid "Requests" +msgstr "Zahtjevi" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_request__task_id +msgid "Task" +msgstr "Zadatak" + +#. module: maintenance_project +#: model:project.project,label_tasks:maintenance_project.project_project_1 +msgid "Tasks" +msgstr "Zadaci" diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/es.po new file mode 100644 index 0000000..23e935c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/es.po @@ -0,0 +1,139 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_project +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-09-18 17:04+0000\n" +"PO-Revision-Date: 2023-07-22 23:09+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: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_view_form +msgid " Create project" +msgstr "" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.view_project_kanban +msgid "Equipments" +msgstr "Equipos" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.view_project_kanban +msgid "Requests" +msgstr "Peticiones" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.report_maintenance_request_document +msgid "Project:" +msgstr "Proyecto:" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.report_maintenance_request_document +msgid "Task:" +msgstr "Tarea:" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_equipment__preventive_default_task_id +msgid "Default Task" +msgstr "Tarea por defecto" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__equipment_count +msgid "Equipment Count" +msgstr "N??mero de equipos" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__equipment_ids +#: model_terms:ir.ui.view,arch_db:maintenance_project.edit_project +msgid "Equipments" +msgstr "Equipos" + +#. module: maintenance_project +#: model:project.project,name:maintenance_project.project_project_1 +msgid "General equipment project" +msgstr "Proyecto de equipamiento general" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_3 +msgid "Generic Computer with own project" +msgstr "Ordenador gen??rico con su propio proyecto" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_1 +msgid "Generic Monitor" +msgstr "Monitor gen??rico" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_2 +msgid "Generic Monitor with preventive" +msgstr "Monitor gen??rico con preventivo" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_maintenance_request +msgid "Maintenance Request" +msgstr "Petici??n de mantenimiento" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__maintenance_request_count +msgid "Maintenance Request Count" +msgstr "N??mero de peticiones de mantenimiento" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__maintenance_request_ids +msgid "Maintenance Requests" +msgstr "Peticiones de mantenimiento" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_project_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_equipment__project_id +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_request__project_id +msgid "Project" +msgstr "Proyecto" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_view_kanban +msgid "Project:" +msgstr "Proyecto:" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.edit_project +msgid "Requests" +msgstr "Peticiones" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_request__task_id +msgid "Task" +msgstr "Tarea" + +#. module: maintenance_project +#: model:project.project,label_tasks:maintenance_project.project_project_1 +msgid "Tasks" +msgstr "Tareas" + +#~ msgid "Create Project From Equipment" +#~ msgstr "Crear proyecto a partir del equipo" + +#~ msgid "Display Name" +#~ msgstr "Nombre a mostrar" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificación en" diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/it.po new file mode 100644 index 0000000..ced742d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/it.po @@ -0,0 +1,138 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_project +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-12-31 16: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: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_view_form +msgid " Create project" +msgstr " Crea progetto" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.view_project_kanban +msgid "Equipments" +msgstr "Attrezzature" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.view_project_kanban +msgid "Requests" +msgstr "Richieste" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.report_maintenance_request_document +msgid "Project:" +msgstr "Progetto:" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.report_maintenance_request_document +msgid "Task:" +msgstr "Lavoro:" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_equipment__preventive_default_task_id +msgid "Default Task" +msgstr "Lavoro predefinito" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__equipment_count +msgid "Equipment Count" +msgstr "Conteggio attrezzature" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__equipment_ids +#: model_terms:ir.ui.view,arch_db:maintenance_project.edit_project +msgid "Equipments" +msgstr "Attrezzature" + +#. module: maintenance_project +#: model:project.project,name:maintenance_project.project_project_1 +msgid "General equipment project" +msgstr "Progetto attrezzatura generica" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_3 +msgid "Generic Computer with own project" +msgstr "Computer generico con progetto proprio" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_1 +msgid "Generic Monitor" +msgstr "Monitor generico" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_2 +msgid "Generic Monitor with preventive" +msgstr "Monitor generico con preventiva" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_maintenance_request +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__maintenance_request_count +msgid "Maintenance Request Count" +msgstr "Conta richiesta manutenzione" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__maintenance_request_ids +msgid "Maintenance Requests" +msgstr "Richieste di manutenzione" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_project_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_equipment__project_id +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_request__project_id +msgid "Project" +msgstr "Progetto" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_view_kanban +msgid "Project:" +msgstr "Progetto:" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.edit_project +msgid "Requests" +msgstr "Richieste" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_request__task_id +msgid "Task" +msgstr "Lavoro" + +#. module: maintenance_project +#: model:project.project,label_tasks:maintenance_project.project_project_1 +msgid "Tasks" +msgstr "Lavori" + +#~ msgid "Create Project From Equipment" +#~ msgstr "Crea un progetto dall'attrezzatura" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/maintenance_project.pot b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/maintenance_project.pot new file mode 100644 index 0000000..ad25cd4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/i18n/maintenance_project.pot @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_project +# +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: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_view_form +msgid " Create project" +msgstr "" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.view_project_kanban +msgid "Equipments" +msgstr "" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.view_project_kanban +msgid "Requests" +msgstr "" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.report_maintenance_request_document +msgid "Project:" +msgstr "" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.report_maintenance_request_document +msgid "Task:" +msgstr "" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_equipment__preventive_default_task_id +msgid "Default Task" +msgstr "" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__equipment_count +msgid "Equipment Count" +msgstr "" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__equipment_ids +#: model_terms:ir.ui.view,arch_db:maintenance_project.edit_project +msgid "Equipments" +msgstr "" + +#. module: maintenance_project +#: model:project.project,name:maintenance_project.project_project_1 +msgid "General equipment project" +msgstr "" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_3 +msgid "Generic Computer with own project" +msgstr "" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_1 +msgid "Generic Monitor" +msgstr "" + +#. module: maintenance_project +#: model:maintenance.equipment,name:maintenance_project.equipment_2 +msgid "Generic Monitor with preventive" +msgstr "" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__maintenance_request_count +msgid "Maintenance Request Count" +msgstr "" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_project_project__maintenance_request_ids +msgid "Maintenance Requests" +msgstr "" + +#. module: maintenance_project +#: model:ir.model,name:maintenance_project.model_project_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_equipment__project_id +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_request__project_id +msgid "Project" +msgstr "" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_project.hr_equipment_view_kanban +msgid "Project:" +msgstr "" + +#. module: maintenance_project +#: model_terms:ir.ui.view,arch_db:maintenance_project.edit_project +msgid "Requests" +msgstr "" + +#. module: maintenance_project +#: model:ir.model.fields,field_description:maintenance_project.field_maintenance_request__task_id +msgid "Task" +msgstr "" + +#. module: maintenance_project +#: model:project.project,label_tasks:maintenance_project.project_project_1 +msgid "Tasks" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/migrations/16.0.2.0.0/post-migration.py b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/migrations/16.0.2.0.0/post-migration.py new file mode 100644 index 0000000..84d0260 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/migrations/16.0.2.0.0/post-migration.py @@ -0,0 +1,11 @@ +# Copyright 2024 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): + env.ref("maintenance.group_equipment_manager").write( + {"implied_ids": [(3, env.ref("project.group_project_manager").id)]} + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/__init__.py new file mode 100644 index 0000000..5348c70 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/__init__.py @@ -0,0 +1,3 @@ +from . import maintenance_equipment +from . import maintenance_request +from . import project_project diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/maintenance_equipment.py new file mode 100644 index 0000000..cde8a9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/maintenance_equipment.py @@ -0,0 +1,27 @@ +# Copyright 2019 Solvos Consultoría Informática () +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import fields, models + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + project_id = fields.Many2one(comodel_name="project.project", ondelete="restrict") + preventive_default_task_id = fields.Many2one( + string="Default Task", comodel_name="project.task" + ) + + def action_create_project(self): + self.ensure_one() + if not self.project_id: + self.project_id = self.env["project.project"].create( + self._prepare_project_from_equipment_values() + ) + + def _prepare_project_from_equipment_values(self): + """ + Default project data creation hook + """ + return {"name": self.name} diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/maintenance_request.py b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/maintenance_request.py new file mode 100644 index 0000000..568f025 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/maintenance_request.py @@ -0,0 +1,33 @@ +# Copyright 2019 Solvos Consultoría Informática () +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import api, fields, models + + +class MaintenanceRequest(models.Model): + _inherit = "maintenance.request" + + project_id = fields.Many2one(comodel_name="project.project") + task_id = fields.Many2one(comodel_name="project.task") + + @api.model_create_multi + def create(self, vals_list): + """ + We ensure for appropiate project and task for new requests, + specially the automatically generated ones + """ + newreqs = super().create(vals_list) + for newreq in newreqs: + if not newreq.project_id and newreq.equipment_id: + newreq.project_id = newreq.equipment_id.project_id + if not newreq.task_id and newreq.maintenance_type == "preventive": + newreq.task_id = newreq.equipment_id.preventive_default_task_id + + return newreqs + + @api.onchange("equipment_id") + def onchange_equipment_id(self): + res = super().onchange_equipment_id() + if self.equipment_id and self.equipment_id.project_id: + self.project_id = self.equipment_id.project_id + return res diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/project_project.py b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/project_project.py new file mode 100644 index 0000000..00394de --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/models/project_project.py @@ -0,0 +1,58 @@ +# Copyright 2019 Solvos Consultoría Informática () +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import api, fields, models + + +class ProjectProject(models.Model): + _inherit = "project.project" + + equipment_count = fields.Integer(compute="_compute_equipment_count") + equipment_ids = fields.One2many( + "maintenance.equipment", "project_id", string="Equipments" + ) + maintenance_request_count = fields.Integer( + compute="_compute_maintenance_request_count" + ) + maintenance_request_ids = fields.One2many( + "maintenance.request", "project_id", string="Maintenance Requests" + ) + + @api.depends("equipment_ids") + def _compute_equipment_count(self): + for project in self: + project.equipment_count = len(project.equipment_ids) + + def action_view_equipment_ids(self): + """ + Access to the current equipments for this project + """ + self.ensure_one() + action = self.env["ir.actions.actions"]._for_xml_id( + "maintenance.hr_equipment_action" + ) + action["domain"] = [("project_id", "=", self.id)] + action["context"] = { + "default_project_id": self.id, + "default_create_project_from_equipment": False, + } + return action + + @api.depends("maintenance_request_ids") + def _compute_maintenance_request_count(self): + for project in self: + project.maintenance_request_count = len( + project.maintenance_request_ids.filtered(lambda x: not x.stage_id.done) + ) + + def action_view_maintenance_request_ids(self): + """ + Access to the undone maintenance requests for this project + """ + self.ensure_one() + action = self.env["ir.actions.actions"]._for_xml_id( + "maintenance.hr_equipment_request_action" + ) + action["domain"] = [("project_id", "=", self.id), ("stage_id.done", "=", False)] + action["context"] = {"default_project_id": self.id} + return action diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..423455d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* David Alonso diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/readme/DESCRIPTION.rst new file mode 100644 index 0000000..b151978 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/readme/DESCRIPTION.rst @@ -0,0 +1,6 @@ +This module extends the functionality of Odoo Maintenance module adding this features: + +- Adds a project to an equipment. You can link an existing project or create a new one (with the Create project button) after creating the equipment. +- Adds project and task to a maintenance request. The default project for a request will be the equipment one, including the preventive requests periodically created. + +This is is a technical addon to allow timesheet assignment to a maintenance request. diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/report/maintenance_request_report.xml b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/report/maintenance_request_report.xml new file mode 100644 index 0000000..6308512 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/report/maintenance_request_report.xml @@ -0,0 +1,20 @@ + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/static/description/index.html new file mode 100644 index 0000000..0dd0723 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/static/description/index.html @@ -0,0 +1,428 @@ + + + + + +Maintenance Projects + + + +
+

Maintenance Projects

+ + +

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

+

This module extends the functionality of Odoo Maintenance module adding this features:

+
    +
  • Adds a project to an equipment. You can link an existing project or create a new one (with the Create project button) after creating the equipment.
  • +
  • Adds project and task to a maintenance request. The default project for a request will be the equipment one, including the preventive requests periodically created.
  • +
+

This is is a technical addon to allow timesheet assignment to a maintenance request.

+

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

+
    +
  • Solvos
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_project/maintenance_project/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/tests/__init__.py new file mode 100644 index 0000000..8b261cd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_project diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/tests/test_maintenance_project.py b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/tests/test_maintenance_project.py new file mode 100644 index 0000000..90218bf --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/tests/test_maintenance_project.py @@ -0,0 +1,114 @@ +# Copyright 2019 Solvos Consultor??a Inform??tica () +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo.tests import Form, new_test_user +from odoo.tests.common import users + +from odoo.addons.base.tests.common import BaseCommon + + +class TestMaintenanceProject(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.cron = cls.env.ref("maintenance.maintenance_requests_cron") + cls.project1 = cls.env["project.project"].create({"name": "My project"}) + cls.project_demo = cls.env.ref("maintenance_project.project_project_1") + new_test_user( + cls.env, + login="test-user", + groups="maintenance.group_equipment_manager,project.group_project_user", + ) + new_test_user( + cls.env, + login="test-project_manager-user", + groups="maintenance.group_equipment_manager,project.group_project_manager", + ) + cls.equipment1 = cls.env["maintenance.equipment"].create( + { + "name": "My equipment", + "maintenance_team_id": cls.env.ref( + "maintenance.equipment_team_metrology" + ).id, + "period": 30, + "maintenance_duration": 1.0, + } + ) + cls.equipment2 = cls.env["maintenance.equipment"].create( + { + "name": "My equipment without project", + } + ) + cls.equipment3 = cls.env["maintenance.equipment"].create( + { + "name": "My equipment with related project", + "project_id": cls.project1.id, + } + ) + cls.equipment_demo = cls.env.ref("maintenance_project.equipment_3") + + def test_maintenance_equipment_project_misc(self): + self.assertFalse(self.equipment1.project_id) + self.assertFalse(self.equipment2.project_id) + self.assertEqual(self.equipment3.project_id, self.project1) + self.assertEqual(self.equipment_demo.name, self.equipment_demo.project_id.name) + + @users("test-project_manager-user") + def test_maintenance_equipment_project_admin(self): + equipment_a = self.env["maintenance.equipment"].create( + { + "name": "Test equipment A", + } + ) + self.assertFalse(equipment_a.project_id) + equipment_a.action_create_project() + self.assertTrue(equipment_a.project_id) + self.assertEqual(equipment_a.name, equipment_a.project_id.name) + equipment_b = self.env["maintenance.equipment"].create( + { + "name": "Test equipment b", + "project_id": self.project1.id, + } + ) + self.assertEqual(equipment_b.project_id, self.project1) + equipment_b.action_create_project() + self.assertEqual(equipment_b.project_id, self.project1) + + def test_project_equipment_count(self): + self.equipment1.action_create_project() + self.assertEqual(self.project1.equipment_count, 1) + self.assertEqual(self.equipment1.project_id.equipment_count, 1) + self.assertEqual(self.project_demo.equipment_count, 2) + self.assertEqual(self.equipment_demo.project_id.equipment_count, 1) + + @users("test-user") + def test_request_equipment(self): + request_form_1 = Form(self.env["maintenance.request"]) + request_form_1.name = "My test request #1" + self.assertFalse(request_form_1.project_id) + request_form_1.equipment_id = self.equipment1 + self.assertEqual(request_form_1.project_id, self.equipment1.project_id) + request_form_2 = Form(self.env["maintenance.request"]) + request_form_2.name = "My test request #2" + request_form_2.equipment_id = self.equipment2 + self.assertFalse(request_form_2.project_id) + + def test_generate_requests(self): + self.cron.method_direct_trigger() + generated_requests = self.env["maintenance.request"].search( + [("project_id", "!=", False)] + ) + for req in generated_requests: + self.assertEqual(req.project_id, req.equipment_id.project_id) + self.assertEqual(req.task_id, req.equipment_id.preventive_default_task_id) + self.assertEqual(req.project_id.maintenance_request_count, 1) + + def test_project_action_views(self): + act1 = self.project1.action_view_equipment_ids() + self.assertEqual(act1["domain"][0][2], self.project1.id) + self.assertEqual(act1["context"]["default_project_id"], self.project1.id) + self.assertFalse(act1["context"]["default_create_project_from_equipment"]) + act2 = self.project1.action_view_maintenance_request_ids() + self.assertEqual(act2["domain"][0][2], self.project1.id) + self.assertEqual(act2["context"]["default_project_id"], self.project1.id) diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/views/maintenance_equipment_views.xml b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/views/maintenance_equipment_views.xml new file mode 100644 index 0000000..3707413 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/views/maintenance_equipment_views.xml @@ -0,0 +1,74 @@ + + + + maintenance.equipment + + + + + + + + + maintenance.equipment + + + + + + + + + maintenance.equipment + + + + + + +
+ Project: +
+
+
+
+ + maintenance.equipment + + + + + + + + + + + + +
diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/views/maintenance_request_views.xml b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/views/maintenance_request_views.xml new file mode 100644 index 0000000..a3f489b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/views/maintenance_request_views.xml @@ -0,0 +1,55 @@ + + + + maintenance.request + + + + + + + + + maintenance.request + + + + + + + + + maintenance.request + + + + + + +
+ Project: +
+
+
+
+ + maintenance.request + + + + + + + + + + +
diff --git a/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/views/project_project_views.xml b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/views/project_project_views.xml new file mode 100644 index 0000000..7576435 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/maintenance_project/views/project_project_views.xml @@ -0,0 +1,81 @@ + + + + project.project + + + + + + + + +
+ + + + Equipments +
+
+ +
+ + + + Requests +
+
+
+
+
+ + project.project + + + + + + + + +
diff --git a/odoo-bringout-oca-maintenance-maintenance_project/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_project/pyproject.toml new file mode 100644 index 0000000..779bb95 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_project/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_project" +version = "16.0.0" +description = "Maintenance Projects - Adds projects to maintenance equipments and requests" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-base_maintenance>=16.0.0", + "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 = ["maintenance_project"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/README.md b/odoo-bringout-oca-maintenance-maintenance_purchase/README.md new file mode 100644 index 0000000..5d760b7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/README.md @@ -0,0 +1,45 @@ +# Maintenance Purchase + +Odoo addon: maintenance_purchase + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_purchase +``` + +## Dependencies + +This addon depends on: +- maintenance_account +- purchase_stock + +## Manifest Information + +- **Name**: Maintenance Purchase +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_purchase`. + +## 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 +- 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-maintenance-maintenance_purchase/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/ARCHITECTURE.md new file mode 100644 index 0000000..b960dc8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/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 Maintenance_purchase Module - maintenance_purchase + 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-maintenance-maintenance_purchase/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/CONFIGURATION.md new file mode 100644 index 0000000..474f560 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_purchase. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/DEPENDENCIES.md new file mode 100644 index 0000000..f908a68 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [maintenance_account](https://github.com/bringout/oca-technical) +- [purchase_stock](https://github.com/bringout/oca-ocb-warehouse/tree/0ee5ffef60413a71dceb350918ad3fb572ec1875/odoo-bringout-oca-ocb-purchase_stock) diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/FAQ.md new file mode 100644 index 0000000..d33209d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/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 maintenance_purchase or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/INSTALL.md new file mode 100644 index 0000000..c8a2135 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_purchase" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_purchase" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/MODELS.md new file mode 100644 index 0000000..b26edfa --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in maintenance_purchase. + +```mermaid +classDiagram + class maintenance_equipment + class purchase_order + class purchase_order_line +``` + +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-maintenance-maintenance_purchase/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/OVERVIEW.md new file mode 100644 index 0000000..4b3f23f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_purchase. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_purchase +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/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-maintenance-maintenance_purchase/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/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-maintenance-maintenance_purchase/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/USAGE.md new file mode 100644 index 0000000..f22ece2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/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 maintenance_purchase +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/README.rst b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/README.rst new file mode 100644 index 0000000..e59dc2e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/README.rst @@ -0,0 +1,77 @@ +==================== +Maintenance Purchase +==================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9b4e0b44d941b38aadf91a2912f84cf907a7e32f5e5573d36779fd044fa0f7f9 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_purchase + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_purchase + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Create Equipments when the purchase is validated. + +**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 +~~~~~~~ + +* CreuBlanca + +Contributors +~~~~~~~~~~~~ + +* Enric Tobella +* Laurent Stukkens + +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/maintenance `_ 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-maintenance-maintenance_purchase/maintenance_purchase/__init__.py b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/__manifest__.py new file mode 100644 index 0000000..247efce --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2022 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Purchase", + "summary": """ + Create Equipments with purchases""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "CreuBlanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": [ + "maintenance_account", + "purchase_stock", + ], + "data": [ + "views/purchase_order.xml", + "views/maintenance_equipment.xml", + ], + "demo": [], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/bs.po new file mode 100644 index 0000000..092521e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/bs.po @@ -0,0 +1,60 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_purchase +# +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: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_category_id +msgid "Equipment Category" +msgstr "Kategorija opreme" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order__equipment_count +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_count +msgid "Equipment Count" +msgstr "Broj opreme" + +#. module: maintenance_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_purchase.purchase_order_form_view +msgid "Equipment(s)" +msgstr "Oprema" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_ids +msgid "Equipments" +msgstr "Oprema" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_id +msgid "Purchase" +msgstr "Nabavke" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_line_id +msgid "Purchase Line" +msgstr "Zahtjev za nabavu" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_purchase_order +msgid "Purchase Order" +msgstr "Nalog za nabavu" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Stavka naloga za nabavu" diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/es.po new file mode 100644 index 0000000..bec0eb2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/es.po @@ -0,0 +1,84 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-12-28 12:33+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: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__display_name +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order__display_name +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_category_id +msgid "Equipment Category" +msgstr "Categoría de Equipo" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order__equipment_count +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_count +msgid "Equipment Count" +msgstr "Total de Equipos" + +#. module: maintenance_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_purchase.purchase_order_form_view +msgid "Equipment(s)" +msgstr "Equipamiento(s)" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_ids +msgid "Equipments" +msgstr "Equipamientos" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__id +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order__id +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment____last_update +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order____last_update +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Mantenimiento de Equipos" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_id +msgid "Purchase" +msgstr "Compra" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_line_id +msgid "Purchase Line" +msgstr "Línea de Compra" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_purchase_order +msgid "Purchase Order" +msgstr "Orden de Compra" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Línea de Orden de Compra" diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/it.po new file mode 100644 index 0000000..cd43004 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/it.po @@ -0,0 +1,84 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-03-05 15: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.17\n" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__display_name +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order__display_name +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_category_id +msgid "Equipment Category" +msgstr "Categoria attrezzatura" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order__equipment_count +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_count +msgid "Equipment Count" +msgstr "Conteggio attrezzature" + +#. module: maintenance_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_purchase.purchase_order_form_view +msgid "Equipment(s)" +msgstr "Attrezzatura(e)" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_ids +msgid "Equipments" +msgstr "Attrezzature" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__id +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order__id +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment____last_update +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order____last_update +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_id +msgid "Purchase" +msgstr "Acquisto" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_line_id +msgid "Purchase Line" +msgstr "Riga acquisto" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_purchase_order +msgid "Purchase Order" +msgstr "Ordine di acquisto" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Riga ordine di acquisto" diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/maintenance_purchase.pot b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/maintenance_purchase.pot new file mode 100644 index 0000000..17d7307 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/i18n/maintenance_purchase.pot @@ -0,0 +1,60 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_purchase +# +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: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_category_id +msgid "Equipment Category" +msgstr "" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order__equipment_count +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_count +msgid "Equipment Count" +msgstr "" + +#. module: maintenance_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_purchase.purchase_order_form_view +msgid "Equipment(s)" +msgstr "" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_purchase_order_line__equipment_ids +msgid "Equipments" +msgstr "" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_id +msgid "Purchase" +msgstr "" + +#. module: maintenance_purchase +#: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_line_id +msgid "Purchase Line" +msgstr "" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: maintenance_purchase +#: model:ir.model,name:maintenance_purchase.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/models/__init__.py new file mode 100644 index 0000000..4bf07e1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/models/__init__.py @@ -0,0 +1,2 @@ +from . import maintenance_equipment +from . import purchase_order diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/models/maintenance_equipment.py new file mode 100644 index 0000000..a0bbaaa --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/models/maintenance_equipment.py @@ -0,0 +1,20 @@ +# Copyright 2022 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class MaintenanceEquipment(models.Model): + + _inherit = "maintenance.equipment" + + purchase_id = fields.Many2one( + comodel_name="purchase.order", + related="purchase_line_id.order_id", + string="Purchase", + readonly=True, + ) + purchase_line_id = fields.Many2one( + comodel_name="purchase.order.line", + readonly=True, + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/models/purchase_order.py b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/models/purchase_order.py new file mode 100644 index 0000000..f5e6503 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/models/purchase_order.py @@ -0,0 +1,137 @@ +# Copyright 2022 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class PurchaseOrder(models.Model): + + _inherit = "purchase.order" + + equipment_count = fields.Integer(compute="_compute_equipment_count") + + def _compute_equipment_count(self): + for item in self: + item.equipment_count = sum(item.mapped("order_line.equipment_count")) + + def unlink(self): + items = self.env["maintenance.equipment"].search( + [("purchase_id", "in", self.ids)] + ) + items.write({"purchase_line_id": False, "purchase_id": False}) + return super().unlink() + + def action_view_equipments(self): + items = self.env["maintenance.equipment"].search( + [("purchase_id", "=", self.id)] + ) + action = self.env.ref("maintenance.hr_equipment_action") + action_dict = action.sudo().read()[0] + if len(items) == 1: + res = self.env.ref("maintenance.hr_equipment_view_form", False) + action_dict["views"] = [(res and res.id or False, "form")] + action_dict["res_id"] = items.id + elif items: + action_dict["domain"] = [("purchase_id", "=", self.id)] + else: + action_dict = {"type": "ir.actions.act_window_close"} + return action_dict + + def button_approve(self, force=False): + result = super().button_approve(force=force) + equipment_model = self.env["maintenance.equipment"] + for order in self.filtered(lambda po: po.state in ("purchase", "done")): + for line in order.order_line.filtered( + lambda x: ( + not x.equipment_ids + and x.product_id + and x.product_id.product_tmpl_id.maintenance_ok + ) + ): + if not line.equipment_category_id: + line._set_equipment_category() + # Create equipments + limit = int(line.product_qty) + 1 + vals = line._prepare_equipment_vals() + equipment_ids = [] + for _i in range(1, limit): + equipment = equipment_model.create(vals) + equipment_ids.append((4, equipment.id)) + line.equipment_ids = equipment_ids + return result + + +class PurchaseOrderLine(models.Model): + _inherit = "purchase.order.line" + + equipment_category_id = fields.Many2one( + comodel_name="maintenance.equipment.category", + string="Equipment Category", + compute="_compute_equipment_category_id", + store=True, + readonly=False, + ) + equipment_ids = fields.Many2many( + comodel_name="maintenance.equipment", + string="Equipments", + copy=False, + ) + equipment_count = fields.Integer(compute="_compute_equipment_count") + + @api.depends("product_id") + def _compute_equipment_category_id(self): + for item in self: + if ( + item.product_id.maintenance_ok + and item.product_id.product_tmpl_id.categ_id.equipment_category_ids + ): + item.equipment_category_id = fields.first( + item.product_id.product_tmpl_id.categ_id.equipment_category_ids + ) + else: + item.equipment_category_id = item.equipment_category_id + + def _compute_equipment_count(self): + data = self.env["maintenance.equipment"].read_group( + [("purchase_line_id", "in", self.ids)], + ["purchase_line_id"], + ["purchase_line_id"], + ) + mapping = {x["purchase_line_id"][0]: x["purchase_line_id_count"] for x in data} + for item in self: + item.equipment_count = mapping.get(item.id, 0) + + def _prepare_equipment_category_vals(self): + categ = self.product_id.product_tmpl_id.categ_id + return {"name": categ.name, "product_category_id": categ.id} + + def _set_equipment_category(self): + if not self.equipment_category_id: + category_model = self.env["maintenance.equipment.category"].sudo() + category = fields.first( + self.product_id.product_tmpl_id.categ_id.equipment_category_ids + ) + if not category: + category = category_model.create( + self._prepare_equipment_category_vals() + ) + self.equipment_category_id = category.id + + def _prepare_equipment_vals(self): + return { + "purchase_line_id": self.id, + "name": self.product_id.name, + "product_id": self.product_id.id, + "category_id": self.equipment_category_id.id, + "assign_date": self.order_id.date_order, + "effective_date": self.order_id.date_planned, + "partner_id": self.order_id.partner_id.id, + "partner_ref": self.order_id.partner_ref, + } + + def _prepare_account_move_line(self, move=False): + result = super()._prepare_account_move_line(move=move) + result["equipment_ids"] = [ + (4, equipment.id) for equipment in self.equipment_ids + ] + return result diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..8500476 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Enric Tobella diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/readme/DESCRIPTION.rst new file mode 100644 index 0000000..074be9a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Create Equipments when the purchase is validated. diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/static/description/index.html new file mode 100644 index 0000000..458ca34 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/static/description/index.html @@ -0,0 +1,421 @@ + + + + + + +Maintenance Purchase + + + +
+

Maintenance Purchase

+ + +

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

+

Create Equipments when the purchase is validated.

+

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

+
    +
  • CreuBlanca
  • +
+
+
+

Contributors

+
    +
  • Enric Tobella
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_purchase/maintenance_purchase/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/tests/__init__.py new file mode 100644 index 0000000..165f23c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/tests/__init__.py @@ -0,0 +1 @@ +from . import test_purchase_order diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/tests/test_purchase_order.py b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/tests/test_purchase_order.py new file mode 100644 index 0000000..767da50 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/tests/test_purchase_order.py @@ -0,0 +1,206 @@ +# Copyright 2024 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import Command +from odoo.tests.common import TransactionCase + + +class TestMaintenanceProject(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.Equipment = cls.env["maintenance.equipment"] + cls.EquipmentCategory = cls.env["maintenance.equipment.category"] + cls.MaintenanceEquipmentCategory = cls.env["maintenance.equipment.category"] + cls.PurchaseOrder = cls.env["purchase.order"] + cls.PurchaseOrderLine = cls.env["purchase.order.line"] + cls.ProductCategory = cls.env["product.category"] + cls.ProductProduct = cls.env["product.product"] + cls.ProductTemplate = cls.env["product.template"] + cls.ResPartner = cls.env["res.partner"] + + cls.partner = cls.ResPartner.create( + { + "name": "partner", + } + ) + uom_unit = cls.env.ref("uom.product_uom_unit") + cls.maintenance_equipment_category1 = cls.MaintenanceEquipmentCategory.create( + {"name": "My Maintenance Equipment Category 1"} + ) + cls.maintenance_equipment_category2 = cls.MaintenanceEquipmentCategory.create( + {"name": "My Maintenance Equipment Category 2"} + ) + cls.product_category01 = cls.ProductCategory.create( + { + "name": "My Product Category 1", + "equipment_category_ids": [ + Command.set( + [ + cls.maintenance_equipment_category1.id, + cls.maintenance_equipment_category2.id, + ] + ) + ], + } + ) + cls.product_category02 = cls.ProductCategory.create( + { + "name": "My Product Category 2", + "equipment_category_ids": [ + Command.set([cls.maintenance_equipment_category2.id]) + ], + } + ) + cls.product_order_maintenance = cls.ProductProduct.create( + { + "name": "My Product", + "standard_price": 235.0, + "list_price": 280.0, + "type": "consu", + "uom_id": uom_unit.id, + "uom_po_id": uom_unit.id, + "purchase_method": "purchase", + "default_code": "PROD_ORDER", + "taxes_id": False, + "maintenance_ok": True, + "categ_id": cls.product_category01.id, + } + ) + cls.product_order_no_maintenance = cls.ProductProduct.create( + { + "name": "My Product", + "standard_price": 235.0, + "list_price": 280.0, + "type": "consu", + "uom_id": uom_unit.id, + "uom_po_id": uom_unit.id, + "purchase_method": "purchase", + "default_code": "PROD_ORDER", + "taxes_id": False, + "categ_id": cls.product_category02.id, + } + ) + cls.purchase_order = cls.PurchaseOrder.with_context( + tracking_disable=True + ).create( + { + "partner_id": cls.partner.id, + } + ) + PurchaseOrderLine = cls.PurchaseOrderLine.with_context(tracking_disable=True) + cls.purchase_line_order01 = PurchaseOrderLine.create( + { + "name": cls.product_order_maintenance.name, + "product_id": cls.product_order_maintenance.id, + "product_qty": 10.0, + "product_uom": cls.product_order_maintenance.uom_id.id, + "price_unit": cls.product_order_maintenance.list_price, + "order_id": cls.purchase_order.id, + "taxes_id": False, + } + ) + cls.purchase_line_order02 = PurchaseOrderLine.create( + { + "name": cls.product_order_no_maintenance.name, + "product_id": cls.product_order_no_maintenance.id, + "product_qty": 10.0, + "product_uom": cls.product_order_no_maintenance.uom_id.id, + "price_unit": cls.product_order_no_maintenance.list_price, + "order_id": cls.purchase_order.id, + "taxes_id": False, + } + ) + + def test_equipment_count(self): + self.purchase_order.button_approve() + self.assertEqual(self.purchase_order.equipment_count, 10) + self.assertEqual(self.purchase_line_order01.equipment_count, 10) + self.assertEqual(self.purchase_line_order02.equipment_count, 0) + self.purchase_order.button_draft() + self.purchase_line_order01.product_qty = 1 + self.purchase_order.button_approve() + self.assertEqual(self.purchase_order.equipment_count, 10) + self.purchase_order.button_draft() + self.purchase_line_order01.equipment_ids.unlink() + self.purchase_order.button_approve() + self.assertEqual(self.purchase_order.equipment_count, 1) + + def test_unlink_purchase_oder(self): + self.purchase_order.button_approve() + equipments = self.purchase_order.order_line.equipment_ids + self.assertEqual(equipments.purchase_id, self.purchase_order) + self.assertEqual(equipments.purchase_line_id, self.purchase_line_order01) + self.purchase_order.button_cancel() + self.assertEqual(equipments.purchase_id, self.purchase_order) + self.assertEqual(equipments.purchase_line_id, self.purchase_line_order01) + self.purchase_order.unlink() + self.assertFalse(equipments.purchase_id) + self.assertFalse(equipments.purchase_line_id) + + def test_equipment_category_id(self): + self.assertEqual( + self.purchase_line_order01.equipment_category_id, + self.maintenance_equipment_category1, + ) + self.assertFalse(self.purchase_line_order02.equipment_category_id) + self.product_order_no_maintenance.product_tmpl_id.maintenance_ok = True + self.assertFalse(self.purchase_line_order02.equipment_category_id) + self.purchase_line_order02.product_id = self.product_order_maintenance + self.purchase_line_order02.product_id = self.product_order_no_maintenance + self.assertEqual( + self.purchase_line_order02.equipment_category_id, + self.maintenance_equipment_category2, + ) + self.purchase_line_order01.equipment_ids.unlink() + self.purchase_line_order01.equipment_category_id = False + self.purchase_order.button_approve() + self.assertEqual( + self.purchase_line_order01.equipment_category_id, + self.maintenance_equipment_category1, + ) + self.purchase_line_order01.equipment_ids.unlink() + self.purchase_line_order01.equipment_category_id = False + product_category_withouth_equipement_category = self.ProductCategory.create( + { + "name": "My Product Category 2", + } + ) + self.purchase_line_order01.product_id.product_tmpl_id.categ_id = ( + product_category_withouth_equipement_category.id + ) + self.purchase_order.button_approve() + self.assertTrue(self.purchase_line_order01.equipment_category_id) + self.assertNotEqual( + self.purchase_line_order01.equipment_category_id, + self.maintenance_equipment_category1, + ) + + def test_account_move_line(self): + self.purchase_order.button_approve() + self.purchase_order.action_create_invoice() + self.assertEqual( + self.purchase_order.order_line.equipment_ids, + self.purchase_order.invoice_ids.line_ids.equipment_ids, + ) + + def test_action_view_equipments(self): + action = self.purchase_order.action_view_equipments() + self.assertEqual(action, {"type": "ir.actions.act_window_close"}) + self.purchase_line_order01.product_qty = 1 + self.purchase_order.button_approve() + view = self.env.ref("maintenance.hr_equipment_view_form", False) + action = self.purchase_order.action_view_equipments() + self.assertEqual(action["views"], [(view and view.id or False, "form")]) + self.assertEqual( + action["res_id"], self.purchase_line_order01.equipment_ids[0:].id + ) + self.purchase_order.button_draft() + self.purchase_line_order01.equipment_ids.unlink() + self.purchase_line_order01.product_qty = 2 + self.purchase_order.button_approve() + action = self.purchase_order.action_view_equipments() + self.assertEqual( + action["domain"], [("purchase_id", "=", self.purchase_order.id)] + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/views/maintenance_equipment.xml b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/views/maintenance_equipment.xml new file mode 100644 index 0000000..02f05cc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/views/maintenance_equipment.xml @@ -0,0 +1,16 @@ + + + + + equipment.form + maintenance.equipment + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/views/purchase_order.xml b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/views/purchase_order.xml new file mode 100644 index 0000000..9239a33 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/maintenance_purchase/views/purchase_order.xml @@ -0,0 +1,37 @@ + + + + + + purchase.order.form (in maintenance_purchase) + purchase.order + + + + + + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_purchase/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_purchase/pyproject.toml new file mode 100644 index 0000000..7321823 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_purchase/pyproject.toml @@ -0,0 +1,44 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_purchase" +version = "16.0.0" +description = "Maintenance Purchase - + Create Equipments with purchases" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance_account>=16.0.0", + "odoo-bringout-oca-maintenance-purchase_stock>=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 = ["maintenance_purchase"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/README.md b/odoo-bringout-oca-maintenance-maintenance_remote/README.md new file mode 100644 index 0000000..5cb7ee2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/README.md @@ -0,0 +1,45 @@ +# Maintenance Remote + +Odoo addon: maintenance_remote + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_remote +``` + +## Dependencies + +This addon depends on: +- maintenance +- base_remote + +## Manifest Information + +- **Name**: Maintenance Remote +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_remote`. + +## 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 +- 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-maintenance-maintenance_remote/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/ARCHITECTURE.md new file mode 100644 index 0000000..188c285 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/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 Maintenance_remote Module - maintenance_remote + 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-maintenance-maintenance_remote/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/CONFIGURATION.md new file mode 100644 index 0000000..0cd6535 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_remote. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/DEPENDENCIES.md new file mode 100644 index 0000000..85c18d1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) +- [base_remote](https://github.com/bringout/oca-technical) diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/FAQ.md new file mode 100644 index 0000000..8306846 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/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 maintenance_remote or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/INSTALL.md new file mode 100644 index 0000000..cd4e2f3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_remote" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_remote" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/MODELS.md new file mode 100644 index 0000000..5b474ae --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in maintenance_remote. + +```mermaid +classDiagram + class maintenance_request +``` + +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-maintenance-maintenance_remote/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/OVERVIEW.md new file mode 100644 index 0000000..3138400 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_remote. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_remote +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/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-maintenance-maintenance_remote/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/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-maintenance-maintenance_remote/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/USAGE.md new file mode 100644 index 0000000..abcf507 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/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 maintenance_remote +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_remote/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/README.rst b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/README.rst new file mode 100644 index 0000000..775e485 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/README.rst @@ -0,0 +1,77 @@ +================== +Maintenance Remote +================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:f402ab11faa86e0feea76f70b54ee5fca8fc5999599bca9d138e7d64cdc4cd2e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_remote + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_remote + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to show the remote on a maintenance request where the issue +was created. It is useful on requests related to IT. + +**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 +~~~~~~~ + +* Creu Blanca + +Contributors +~~~~~~~~~~~~ + +* Enric Tobella + +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/maintenance `_ 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-maintenance-maintenance_remote/maintenance_remote/__init__.py b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/__manifest__.py new file mode 100644 index 0000000..60e6d84 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Remote", + "summary": """ + Define remote on maintenance request""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance", "base_remote"], + "data": ["views/maintenance_request.xml"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/bs.po new file mode 100644 index 0000000..4723c12 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/bs.po @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_remote +# +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: maintenance_remote +#: model:ir.model,name:maintenance_remote.model_maintenance_request +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__remote_id +msgid "Remote" +msgstr "Udaljeno" diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/es.po new file mode 100644 index 0000000..a1d63bc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/es.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_remote +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-18 17:36+0000\n" +"Last-Translator: Enric Tobella \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: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: maintenance_remote +#: model:ir.model,name:maintenance_remote.model_maintenance_request +msgid "Maintenance Request" +msgstr "Peticiones de mantenimiento" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__remote_id +msgid "Remote" +msgstr "Remoto" diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/fr.po b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/fr.po new file mode 100644 index 0000000..4814102 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/fr.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_remote +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-06-17 13:38+0000\n" +"Last-Translator: Yann Papouin \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.17\n" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: maintenance_remote +#: model:ir.model,name:maintenance_remote.model_maintenance_request +msgid "Maintenance Request" +msgstr "Demande de maintenance" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__remote_id +msgid "Remote" +msgstr "Distant" diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/it.po new file mode 100644 index 0000000..0d6efbb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/it.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_remote +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-08-17 10: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.6.2\n" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: maintenance_remote +#: model:ir.model,name:maintenance_remote.model_maintenance_request +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__remote_id +msgid "Remote" +msgstr "Remoto" diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/maintenance_remote.pot b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/maintenance_remote.pot new file mode 100644 index 0000000..27bfb0c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/maintenance_remote.pot @@ -0,0 +1,24 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_remote +# +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: maintenance_remote +#: model:ir.model,name:maintenance_remote.model_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__remote_id +msgid "Remote" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/pt_BR.po b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/pt_BR.po new file mode 100644 index 0000000..722daa7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/i18n/pt_BR.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_remote +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-06-23 22:10+0000\n" +"Last-Translator: Fernando Colus \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 3.10\n" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__id +msgid "ID" +msgstr "" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "" + +#. module: maintenance_remote +#: model:ir.model,name:maintenance_remote.model_maintenance_request +msgid "Maintenance Request" +msgstr "Requisição de Manutenção" + +#. module: maintenance_remote +#: model:ir.model.fields,field_description:maintenance_remote.field_maintenance_request__remote_id +msgid "Remote" +msgstr "Remota" diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/models/__init__.py new file mode 100644 index 0000000..df8c9b5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/models/__init__.py @@ -0,0 +1 @@ +from . import maintenance_request diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/models/maintenance_request.py b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/models/maintenance_request.py new file mode 100644 index 0000000..e195a08 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/models/maintenance_request.py @@ -0,0 +1,17 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class MaintenanceRequest(models.Model): + + _inherit = "maintenance.request" + + @api.model + def _default_remote(self): + return self.remote.id + + remote_id = fields.Many2one( + "res.remote", readonly=True, default=lambda r: r._default_remote() + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..93ec993 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Enric Tobella diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/readme/DESCRIPTION.rst new file mode 100644 index 0000000..52dc312 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module allows to show the remote on a maintenance request where the issue +was created. It is useful on requests related to IT. diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/static/description/index.html new file mode 100644 index 0000000..3ef4a4a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/static/description/index.html @@ -0,0 +1,424 @@ + + + + + +Maintenance Remote + + + +
+

Maintenance Remote

+ + +

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

+

This module allows to show the remote on a maintenance request where the issue +was created. It is useful on requests related to IT.

+

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

+
    +
  • Creu Blanca
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_remote/maintenance_remote/views/maintenance_request.xml b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/views/maintenance_request.xml new file mode 100644 index 0000000..858b114 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/maintenance_remote/views/maintenance_request.xml @@ -0,0 +1,25 @@ + + + + + maintenance.request.form (in maintenance_remote) + maintenance.request + + + + + + + + + maintenance.request.search (in maintenance_remote) + maintenance.request + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_remote/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_remote/pyproject.toml new file mode 100644 index 0000000..10cea8c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_remote/pyproject.toml @@ -0,0 +1,44 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_remote" +version = "16.0.0" +description = "Maintenance Remote - + Define remote on maintenance request" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=16.0.0", + "odoo-bringout-oca-maintenance-base_remote>=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 = ["maintenance_remote"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/README.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/README.md new file mode 100644 index 0000000..c9813ce --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/README.md @@ -0,0 +1,45 @@ +# Maintenance Request Purchase + +Odoo addon: maintenance_request_purchase + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_request_purchase +``` + +## Dependencies + +This addon depends on: +- base_maintenance +- purchase + +## Manifest Information + +- **Name**: Maintenance Request Purchase +- **Version**: 16.0.1.0.2 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_request_purchase`. + +## 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 +- 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-maintenance-maintenance_request_purchase/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/ARCHITECTURE.md new file mode 100644 index 0000000..153a3e8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/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 Maintenance_request_purchase Module - maintenance_request_purchase + 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-maintenance-maintenance_request_purchase/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/CONFIGURATION.md new file mode 100644 index 0000000..be7870b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_request_purchase. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/DEPENDENCIES.md new file mode 100644 index 0000000..248dec1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [base_maintenance](https://github.com/bringout/oca-technical) +- [purchase](https://github.com/bringout/oca-ocb-core/tree/b3e6fb998e53b9eb1bc9669d992017616c2bd7b3/odoo-bringout-oca-ocb-purchase) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/FAQ.md new file mode 100644 index 0000000..b3ada35 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/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 maintenance_request_purchase or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/INSTALL.md new file mode 100644 index 0000000..8ad4c02 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_request_purchase" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_request_purchase" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/MODELS.md new file mode 100644 index 0000000..4252985 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in maintenance_request_purchase. + +```mermaid +classDiagram + class maintenance_request + class purchase_order +``` + +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-maintenance-maintenance_request_purchase/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/OVERVIEW.md new file mode 100644 index 0000000..44b41d4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_request_purchase. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_request_purchase +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/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-maintenance-maintenance_request_purchase/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/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-maintenance-maintenance_request_purchase/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/USAGE.md new file mode 100644 index 0000000..71c544b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/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 maintenance_request_purchase +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/README.rst b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/README.rst new file mode 100644 index 0000000..2e94379 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/README.rst @@ -0,0 +1,80 @@ +============================ +Maintenance Request Purchase +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:4a23a2dddf6911f177e08f1e5b740b4a0688eb78dad782ef3fff9c9f67f8b000 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_request_purchase + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_request_purchase + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to related a Maintenance Request with Purchase Orders + +**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 +~~~~~~~ + +* CreuBlanca +* Dixmit + +Contributors +~~~~~~~~~~~~ + +* Enric Tobella +* Jaime Arroyo +* Olga Marco +* Núria Sancho + +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/maintenance `_ 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-maintenance-maintenance_request_purchase/maintenance_request_purchase/__init__.py b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/__manifest__.py new file mode 100644 index 0000000..a450e1d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Request Purchase", + "summary": """ + Allows you to link PO with maintenance requests""", + "version": "16.0.1.0.2", + "license": "AGPL-3", + "author": "CreuBlanca,Dixmit,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["base_maintenance", "purchase"], + "data": [ + "views/maintenance_request.xml", + "views/purchase_order_views.xml", + ], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/bs.po new file mode 100644 index 0000000..685d03a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/bs.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_purchase +# +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: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_form +msgid "Maintenance" +msgstr "Održavanje" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_maintenance_request +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_request_ids +msgid "Maintenance Requests" +msgstr "Zahtjevi za održavanje" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_requests_count +msgid "Maintenance Requests Count" +msgstr "Broj zahtjeva za održavanje" + +#. module: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_tree +msgid "Open" +msgstr "Otvori" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_purchase_order +msgid "Purchase Order" +msgstr "Nalog za nabavu" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchase_order_ids +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.hr_equipment_request_view_form_button_box +msgid "Purchase Orders" +msgstr "Nalozi u nabavi" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchases_count +msgid "Purchases Count" +msgstr "Broj nabavki" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/ca.po b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/ca.po new file mode 100644 index 0000000..df23df3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/ca.po @@ -0,0 +1,67 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-11-15 18:36+0000\n" +"Last-Translator: Enric Tobella \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.17\n" + +#. module: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_form +msgid "Maintenance" +msgstr "Manteniment" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_maintenance_request +msgid "Maintenance Request" +msgstr "Petició de manteniment" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_request_ids +msgid "Maintenance Requests" +msgstr "Peticions de manteniment" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_requests_count +msgid "Maintenance Requests Count" +msgstr "Nombre de peticions de manteniment" + +#. module: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_tree +msgid "Open" +msgstr "" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_purchase_order +msgid "Purchase Order" +msgstr "Comanda de compra" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchase_order_ids +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.hr_equipment_request_view_form_button_box +msgid "Purchase Orders" +msgstr "Comandes de compra" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchases_count +msgid "Purchases Count" +msgstr "Nombre de comandes" + +#~ msgid "Display Name" +#~ msgstr "Nom a mostrar" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificació el" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/es.po new file mode 100644 index 0000000..1b74cf8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/es.po @@ -0,0 +1,103 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-12 11:51+0000\n" +"PO-Revision-Date: 2019-12-12 12:54+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: \n" +"X-Generator: Poedit 2.0.6\n" + +#. module: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_form +msgid "Maintenance" +msgstr "Mantenimiento" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_maintenance_request +msgid "Maintenance Request" +msgstr "Petición de Mantenimiento" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_request_ids +msgid "Maintenance Requests" +msgstr "Peticiones de Mantenimiento" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_requests_count +msgid "Maintenance Requests Count" +msgstr "Número de Peticiones de Mantenimiento" + +#. module: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_tree +msgid "Open" +msgstr "" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_purchase_order +msgid "Purchase Order" +msgstr "Pedido de compra" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchase_order_ids +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.hr_equipment_request_view_form_button_box +msgid "Purchase Orders" +msgstr "Pedidos de compra" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchases_count +msgid "Purchases Count" +msgstr "Número de Compras" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Created by" +#~ msgstr "Creado por" + +#~ msgid "Created on" +#~ msgstr "Creado en" + +#~ msgid "Display Name" +#~ msgstr "Nombre mostrado" + +#~ msgid "ID" +#~ msgstr "ID (identificación)" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificación en" + +#~ msgid "Last Updated by" +#~ msgstr "Última actualización de" + +#~ msgid "Last Updated on" +#~ msgstr "Última actualización en" + +#~ msgid "Link Selected Purchase Orders" +#~ msgstr "Relacionar órdenes de compra seleccionadas" + +#~ msgid "Link to PO" +#~ msgstr "Relacionar con PO" + +#~ msgid "New Purchase Order" +#~ msgstr "Nueva Orden de Compra" + +#~ msgid "Purchases" +#~ msgstr "Compras" + +#~ msgid "Select Purchase Orders and Link them or Create a new Purchase Order" +#~ msgstr "" +#~ "Selecciona órdenes de compra para relacionarlas con la petición o crea " +#~ "una nueva" + +#~ msgid "wizard.link.maintenance.po" +#~ msgstr "wizard.link.maintenance.po" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/it.po new file mode 100644 index 0000000..be5f8e7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/it.po @@ -0,0 +1,67 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-04-05 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.10.2\n" + +#. module: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_form +msgid "Maintenance" +msgstr "Manutenzione" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_maintenance_request +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_request_ids +msgid "Maintenance Requests" +msgstr "Richieste di manutenzione" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_requests_count +msgid "Maintenance Requests Count" +msgstr "Conta richieste manutenzione" + +#. module: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_tree +msgid "Open" +msgstr "Apri" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_purchase_order +msgid "Purchase Order" +msgstr "Ordine di acquisto" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchase_order_ids +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.hr_equipment_request_view_form_button_box +msgid "Purchase Orders" +msgstr "Ordini di acquisto" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchases_count +msgid "Purchases Count" +msgstr "Conteggio acquisti" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/maintenance_request_purchase.pot b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/maintenance_request_purchase.pot new file mode 100644 index 0000000..fdb2f9e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/i18n/maintenance_request_purchase.pot @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_purchase +# +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: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_form +msgid "Maintenance" +msgstr "" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_request_ids +msgid "Maintenance Requests" +msgstr "" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_purchase_order__maintenance_requests_count +msgid "Maintenance Requests Count" +msgstr "" + +#. module: maintenance_request_purchase +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.purchase_order_tree +msgid "Open" +msgstr "" + +#. module: maintenance_request_purchase +#: model:ir.model,name:maintenance_request_purchase.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchase_order_ids +#: model_terms:ir.ui.view,arch_db:maintenance_request_purchase.hr_equipment_request_view_form_button_box +msgid "Purchase Orders" +msgstr "" + +#. module: maintenance_request_purchase +#: model:ir.model.fields,field_description:maintenance_request_purchase.field_maintenance_request__purchases_count +msgid "Purchases Count" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/models/__init__.py new file mode 100644 index 0000000..e1f5284 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/models/__init__.py @@ -0,0 +1,2 @@ +from . import maintenance_request +from . import purchase_order diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/models/maintenance_request.py b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/models/maintenance_request.py new file mode 100644 index 0000000..1949bc5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/models/maintenance_request.py @@ -0,0 +1,29 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class MaintenanceRequest(models.Model): + + _inherit = "maintenance.request" + + purchase_order_ids = fields.Many2many( + "purchase.order", + "maintenance_purchase_order", + "maintenance_request_id", + "purchase_order_id", + groups="purchase.group_purchase_user", + string="Purchase Orders", + copy=False, + ) + purchases_count = fields.Integer( + compute="_compute_purchases_count", + store=True, + groups="purchase.group_purchase_user", + ) + + @api.depends("purchase_order_ids") + def _compute_purchases_count(self): + for record in self: + record.purchases_count = len(record.purchase_order_ids.ids) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/models/purchase_order.py b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/models/purchase_order.py new file mode 100644 index 0000000..b8eebe6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/models/purchase_order.py @@ -0,0 +1,39 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class PurchaseOrder(models.Model): + + _inherit = "purchase.order" + + maintenance_request_ids = fields.Many2many( + "maintenance.request", + "maintenance_purchase_order", + "purchase_order_id", + "maintenance_request_id", + string="Maintenance Requests", + copy=False, + ) + + maintenance_requests_count = fields.Integer( + compute="_compute_maintenance_requests_count", store=True + ) + + @api.depends("maintenance_request_ids") + def _compute_maintenance_requests_count(self): + for record in self: + record.maintenance_requests_count = len(record.maintenance_request_ids.ids) + + def action_view_maintenance_request(self): + action = self.env["ir.actions.act_window"]._for_xml_id( + "maintenance.hr_equipment_request_action" + ) + if len(self.maintenance_request_ids) > 1: + action["domain"] = [("id", "in", self.maintenance_request_ids.ids)] + elif self.maintenance_request_ids: + action["views"] = [(False, "form")] + action["res_id"] = self.maintenance_request_ids.id + action["context"] = {} + return action diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..0c89960 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* Enric Tobella +* Jaime Arroyo +* Olga Marco +* Núria Sancho diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/readme/DESCRIPTION.rst new file mode 100644 index 0000000..b0ec4d4 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows to related a Maintenance Request with Purchase Orders diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/static/description/index.html new file mode 100644 index 0000000..ff80f13 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/static/description/index.html @@ -0,0 +1,427 @@ + + + + + +Maintenance Request Purchase + + + +
+

Maintenance Request Purchase

+ + +

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

+

This module allows to related a Maintenance Request with Purchase Orders

+

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

+
    +
  • CreuBlanca
  • +
  • Dixmit
  • +
+
+
+

Contributors

+
    +
  • Enric Tobella
  • +
  • Jaime Arroyo
  • +
  • Olga Marco
  • +
  • Núria Sancho
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_request_purchase/maintenance_request_purchase/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/tests/__init__.py new file mode 100644 index 0000000..5d9f08d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_purchase diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/tests/test_maintenance_purchase.py b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/tests/test_maintenance_purchase.py new file mode 100644 index 0000000..12cc452 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/tests/test_maintenance_purchase.py @@ -0,0 +1,38 @@ +# Copyright 2023 Dixmit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestMaintenancePurchase(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.team_id = cls.env["maintenance.team"].create({"name": "Maintenance Team"}) + cls.request_1 = cls.env["maintenance.request"].create( + {"name": "Req 1", "maintenance_team_id": cls.team_id.id} + ) + cls.request_2 = cls.env["maintenance.request"].create( + {"name": "Req 1", "maintenance_team_id": cls.team_id.id} + ) + cls.supplier = cls.env["res.partner"].create({"name": "Supplier"}) + cls.po_1 = cls.env["purchase.order"].create( + { + "partner_id": cls.supplier.id, + "date_planned": "2017-02-11 22:00:00", + } + ) + + def test_maintenance_purchase(self): + self.assertEqual(self.request_1.purchases_count, 0) + self.assertEqual(self.po_1.maintenance_requests_count, 0) + self.request_1.purchase_order_ids = self.po_1 + self.assertEqual(self.request_1.purchases_count, 1) + self.assertEqual(self.po_1.maintenance_requests_count, 1) + action = self.po_1.action_view_maintenance_request() + self.assertEqual(action["res_id"], self.request_1.id) + self.request_2.write({"purchase_order_ids": [(4, self.po_1.id)]}) + action = self.po_1.action_view_maintenance_request() + requests = self.env[action["res_model"]].search(action["domain"]) + self.assertIn(self.request_1, requests) + self.assertIn(self.request_2, requests) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/views/maintenance_request.xml b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/views/maintenance_request.xml new file mode 100644 index 0000000..0771d74 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/views/maintenance_request.xml @@ -0,0 +1,26 @@ + + + + + maintenance.request.form (in maintenance_equipment_purchase) + maintenance.request + + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/views/purchase_order_views.xml b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/views/purchase_order_views.xml new file mode 100644 index 0000000..ca08379 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_purchase/maintenance_request_purchase/views/purchase_order_views.xml @@ -0,0 +1,51 @@ + + + + + purchase.order.form (in maintenance_equipment_purchase) + purchase.order + + +
+ + +
+
+
+ + + + purchase.order.form (in maintenance_purchase) + purchase.order + + + primary + + + +
+
+
+ + +
diff --git a/odoo-bringout-oca-maintenance-maintenance_request_repair/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_request_repair/pyproject.toml new file mode 100644 index 0000000..740aa17 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_repair/pyproject.toml @@ -0,0 +1,44 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_request_repair" +version = "16.0.0" +description = "Maintenance Request Repair - + This is a bridge module between Maintenance and Repair" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=16.0.0", + "odoo-bringout-oca-maintenance-repair>=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 = ["maintenance_request_repair"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/README.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/README.md new file mode 100644 index 0000000..d411572 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/README.md @@ -0,0 +1,44 @@ +# Maintenance Request Sequence + +Odoo addon: maintenance_request_sequence + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_request_sequence +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Request Sequence +- **Version**: 16.0.1.0.1 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_request_sequence`. + +## 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 +- 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-maintenance-maintenance_request_sequence/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/ARCHITECTURE.md new file mode 100644 index 0000000..8801945 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_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 Maintenance_request_sequence Module - maintenance_request_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-maintenance-maintenance_request_sequence/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/CONFIGURATION.md new file mode 100644 index 0000000..34cb7a0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_request_sequence. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/FAQ.md new file mode 100644 index 0000000..408f83e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_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 maintenance_request_sequence or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/INSTALL.md new file mode 100644 index 0000000..27290af --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_request_sequence" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_request_sequence" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/MODELS.md new file mode 100644 index 0000000..9d2f67f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in maintenance_request_sequence. + +```mermaid +classDiagram + class maintenance_request + class maintenance_team +``` + +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-maintenance-maintenance_request_sequence/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/OVERVIEW.md new file mode 100644 index 0000000..21f1733 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_request_sequence. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_request_sequence +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_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-maintenance-maintenance_request_sequence/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_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-maintenance-maintenance_request_sequence/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/USAGE.md new file mode 100644 index 0000000..6a01776 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_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 maintenance_request_sequence +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/README.rst b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/README.rst new file mode 100644 index 0000000..78076ac --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/README.rst @@ -0,0 +1,78 @@ +============================ +Maintenance Request Sequence +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:fe77ed50f2e996c9bd2afb1198d64bca28b1fcd77e508567241d8a709962ff37 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_request_sequence + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_request_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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Adds a sequence field to maintenance teams. Maintenance requests will follow +the sequence of its team. + +**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 +~~~~~~~ + +* Creu Blanca + +Contributors +~~~~~~~~~~~~ + +* Jaime Arroyo +* Christian Ramos + +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/maintenance `_ 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-maintenance-maintenance_request_sequence/maintenance_request_sequence/__init__.py b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/__manifest__.py new file mode 100644 index 0000000..ae89098 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Request Sequence", + "summary": """ + Adds sequence to maintenance requests""", + "version": "16.0.1.0.1", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance"], + "data": [ + "data/maintenance_request_data.xml", + "views/maintenance_team.xml", + "views/maintenance_request.xml", + ], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/data/maintenance_request_data.xml b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/data/maintenance_request_data.xml new file mode 100644 index 0000000..ea48314 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/data/maintenance_request_data.xml @@ -0,0 +1,9 @@ + + + + Maintenance Request Default + maintenance.request.default + + MR + + diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/bs.po new file mode 100644 index 0000000..db9ca82 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/bs.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_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: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_request__code +msgid "Code" +msgstr "Šifra" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_request +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Timovi za održavanje" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "Prefix for Team Reference" +msgstr "Prefiks za referencu tima" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,help:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "" +"Prefix used to generate the internal reference for re created with this " +"category. If blank the default sequence will be used." +msgstr "" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__sequence_id +msgid "Team Sequence" +msgstr "Sekvenca tima" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/es.po new file mode 100644 index 0000000..1a47ed5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/es.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-05-18 08:19+0000\n" +"Last-Translator: Enric Tobella \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.10\n" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_request__code +msgid "Code" +msgstr "Código" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_request +msgid "Maintenance Request" +msgstr "Peticiones de mantenimiento" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Equipos de Mantenimiento" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "Prefix for Team Reference" +msgstr "Prefijo por equipo" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,help:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "" +"Prefix used to generate the internal reference for re created with this " +"category. If blank the default sequence will be used." +msgstr "" +"El prefijo se usará para generar la referencia interna de las peticiones " +"creadas en esta categoría. Si esta en blanco, se usará la secuencia por " +"defecto." + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__sequence_id +msgid "Team Sequence" +msgstr "Secuencia del equipo" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/it.po new file mode 100644 index 0000000..dedebeb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/it.po @@ -0,0 +1,51 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-28 09:49+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.3.2\n" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_request__code +msgid "Code" +msgstr "Codice" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_request +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Squadra manutenzione" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "Prefix for Team Reference" +msgstr "Prefisso di riferimento squadra" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,help:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "" +"Prefix used to generate the internal reference for re created with this " +"category. If blank the default sequence will be used." +msgstr "" +"Prefisso utilizzato per generare la referenza interna per la rigenerazione " +"con questa categoria. Se vuoto verrà utilizzata la sequenza predefinita." + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__sequence_id +msgid "Team Sequence" +msgstr "Sequenza squadra" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/maintenance_request_sequence.pot b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/maintenance_request_sequence.pot new file mode 100644 index 0000000..c19ffd9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/maintenance_request_sequence.pot @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_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: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_request__code +msgid "Code" +msgstr "" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_team +msgid "Maintenance Teams" +msgstr "" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "Prefix for Team Reference" +msgstr "" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,help:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "" +"Prefix used to generate the internal reference for re created with this " +"category. If blank the default sequence will be used." +msgstr "" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__sequence_id +msgid "Team Sequence" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/pt_BR.po b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/pt_BR.po new file mode 100644 index 0000000..c0e925e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/i18n/pt_BR.po @@ -0,0 +1,51 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_sequence +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-06-23 22:10+0000\n" +"Last-Translator: Fernando Colus \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 3.10\n" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_request__code +msgid "Code" +msgstr "Código" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_request +msgid "Maintenance Request" +msgstr "Requisição de Manutenção" + +#. module: maintenance_request_sequence +#: model:ir.model,name:maintenance_request_sequence.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Equipes de Manutenção" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "Prefix for Team Reference" +msgstr "Prefixo para Referência da Equipe" + +#. module: maintenance_request_sequence +#: model:ir.model.fields,help:maintenance_request_sequence.field_maintenance_team__code_prefix +msgid "" +"Prefix used to generate the internal reference for re created with this " +"category. If blank the default sequence will be used." +msgstr "" +"Prefixo usado para gerar a referência interna para recriar com esta " +"categoria. Se estiver em branco, a sequência padrão será usada." + +#. module: maintenance_request_sequence +#: model:ir.model.fields,field_description:maintenance_request_sequence.field_maintenance_team__sequence_id +msgid "Team Sequence" +msgstr "Sequência da Equipe" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/models/__init__.py new file mode 100644 index 0000000..9c30184 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/models/__init__.py @@ -0,0 +1,2 @@ +from . import maintenance_request +from . import maintenance_team diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/models/maintenance_request.py b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/models/maintenance_request.py new file mode 100644 index 0000000..d69795d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/models/maintenance_request.py @@ -0,0 +1,25 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class MaintenanceRequest(models.Model): + + _inherit = "maintenance.request" + _rec_names_search = ["code"] + + code = fields.Char(readonly=True, copy=False, default="/") + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get("code", "/") == "/": + team_id = vals.get("maintenance_team_id") + sequence = self.env["maintenance.team"].browse( + team_id + ).sequence_id or self.env.ref( + "maintenance_request_sequence.seq_maintenance_request_auto" + ) + vals["code"] = sequence.next_by_id() + return super().create(vals_list) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/models/maintenance_team.py b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/models/maintenance_team.py new file mode 100644 index 0000000..3dff2aa --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/models/maintenance_team.py @@ -0,0 +1,58 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class MaintenanceTeam(models.Model): + + _inherit = "maintenance.team" + + code_prefix = fields.Char( + string="Prefix for Team Reference", + help="Prefix used to generate the internal reference for re " + "created with this category. If blank the " + "default sequence will be used.", + ) + sequence_id = fields.Many2one( + comodel_name="ir.sequence", + string="Team Sequence", + copy=False, + readonly=True, + ) + + @api.model + def _prepare_ir_sequence(self, prefix): + """Prepare the vals for creating the sequence + :param prefix: a string with the prefix of the sequence. + :return: a dict with the values. + """ + vals = { + "name": "Maintenance Request " + prefix, + "code": "maintenance.request - " + prefix, + "padding": 5, + "prefix": prefix, + "company_id": False, + } + return vals + + def write(self, vals): + prefix = vals.get("code_prefix") + if prefix: + for rec in self: + if rec.sequence_id: + rec.sudo().sequence_id.prefix = prefix + else: + seq_vals = self._prepare_ir_sequence(prefix) + rec.sequence_id = self.env["ir.sequence"].create(seq_vals) + return super().write(vals) + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + prefix = vals.get("code_prefix") + if prefix: + seq_vals = self._prepare_ir_sequence(prefix) + sequence = self.env["ir.sequence"].create(seq_vals) + vals["sequence_id"] = sequence.id + return super().create(vals_list) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..6b7b018 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Jaime Arroyo +* Christian Ramos diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/readme/DESCRIPTION.rst new file mode 100644 index 0000000..31ac741 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +Adds a sequence field to maintenance teams. Maintenance requests will follow +the sequence of its team. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/static/description/index.html new file mode 100644 index 0000000..cef57f6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/static/description/index.html @@ -0,0 +1,425 @@ + + + + + +Maintenance Request Sequence + + + +
+

Maintenance Request Sequence

+ + +

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

+

Adds a sequence field to maintenance teams. Maintenance requests will follow +the sequence of its team.

+

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

+
    +
  • Creu Blanca
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_request_sequence/maintenance_request_sequence/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/tests/__init__.py new file mode 100644 index 0000000..a7c5168 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_request_sequence diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/tests/test_maintenance_request_sequence.py b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/tests/test_maintenance_request_sequence.py new file mode 100644 index 0000000..6af4acc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/tests/test_maintenance_request_sequence.py @@ -0,0 +1,35 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestMaintenanceRequestSequence(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.team_id = cls.env["maintenance.team"].create( + {"name": "Maintenance Team", "code_prefix": "MT-TEST"} + ) + cls.team_id_2 = cls.env["maintenance.team"].create({"name": "Maintenance Team"}) + + def test_maintenance_request_sequence(self): + sequence = self.env["ir.sequence"].search([("prefix", "=", "MT-TEST")]) + self.assertTrue(sequence) + + self.assertFalse(self.team_id_2.sequence_id) + self.team_id_2.write({"code_prefix": "TEAM2-TEST"}) + self.assertTrue(self.team_id_2.sequence_id) + + request_1 = self.env["maintenance.request"].create( + {"name": "Req 1", "maintenance_team_id": self.team_id.id} + ) + self.assertIn("MT-TEST", request_1.code) + self.team_id.write({"code_prefix": "MT-TEST-2"}) + request_2 = self.env["maintenance.request"].create( + {"name": "Req 2", "maintenance_team_id": self.team_id.id} + ) + self.assertIn("MT-TEST-2", request_2.code) + + res = self.env["maintenance.request"].name_search(request_2.code) + self.assertTrue(res) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/views/maintenance_request.xml b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/views/maintenance_request.xml new file mode 100644 index 0000000..9c01361 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/views/maintenance_request.xml @@ -0,0 +1,61 @@ + + + + + maintenance.request.form (in maintenance_request_sequence) + maintenance.request + + + + + + + + + + + maintenance.request.search (in maintenance_request_sequence) + maintenance.request + + + + + + + + + maintenance.request.tree (in maintenance_request_sequence) + maintenance.request + + + + + + + + + maintenance.request.tree (in maintenance_request_sequence) + maintenance.request + + + + ( + + ) + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/views/maintenance_team.xml b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/views/maintenance_team.xml new file mode 100644 index 0000000..de59677 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/maintenance_request_sequence/views/maintenance_team.xml @@ -0,0 +1,41 @@ + + + + + maintenance.team.form (in maintenance_request_sequence) + maintenance.team + + + + + + + + + + + maintenance.team.tree (in maintenance_request_sequence) + maintenance.team + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_request_sequence/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_request_sequence/pyproject.toml new file mode 100644 index 0000000..e98802c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_sequence/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_request_sequence" +version = "16.0.0" +description = "Maintenance Request Sequence - + Adds sequence to maintenance requests" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_request_sequence"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/README.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/README.md new file mode 100644 index 0000000..3e99940 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/README.md @@ -0,0 +1,44 @@ +# Maintenance Request Stage transition + +Odoo addon: maintenance_request_stage_transition + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_request_stage_transition +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Request Stage transition +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_request_stage_transition`. + +## 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 +- 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-maintenance-maintenance_request_stage_transition/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/ARCHITECTURE.md new file mode 100644 index 0000000..cf0059b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/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 Maintenance_request_stage_transition Module - maintenance_request_stage_transition + 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-maintenance-maintenance_request_stage_transition/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/CONFIGURATION.md new file mode 100644 index 0000000..8fd24c5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_request_stage_transition. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/FAQ.md new file mode 100644 index 0000000..cf2d731 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/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 maintenance_request_stage_transition or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/INSTALL.md new file mode 100644 index 0000000..14f301a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_request_stage_transition" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_request_stage_transition" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/MODELS.md new file mode 100644 index 0000000..6c597f7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/MODELS.md @@ -0,0 +1,13 @@ +# Models + +Detected core models and extensions in maintenance_request_stage_transition. + +```mermaid +classDiagram + class maintenance_request + class maintenance_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-maintenance-maintenance_request_stage_transition/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/OVERVIEW.md new file mode 100644 index 0000000..907f134 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_request_stage_transition. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_request_stage_transition +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/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-maintenance-maintenance_request_stage_transition/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/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-maintenance-maintenance_request_stage_transition/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/USAGE.md new file mode 100644 index 0000000..24f406b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/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 maintenance_request_stage_transition +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/README.rst b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/README.rst new file mode 100644 index 0000000..6053854 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/README.rst @@ -0,0 +1,95 @@ +==================================== +Maintenance Request Stage transition +==================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5ab612a310033343be9b0e8e3f1454d7c497156c43216258be915c1c8349fcb1 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_request_stage_transition + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_request_stage_transition + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +It allows to define the next stages of a stage and shows them on the header buttons. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +* Access `Maintenance > Configuration > Maintenance Stages` +* Define the possible next stages of every stage +* You can specify the color of the button if needed +* Refresh the page in order to show the new possible stages +* The stage widget will be blocked and the expected button will appear on the header. + +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 +~~~~~~~ + +* Creu Blanca + +Contributors +~~~~~~~~~~~~ + +* Enric Tobella +* Jaime Arroyo +* David Alonso + +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-etobella| image:: https://github.com/etobella.png?size=40px + :target: https://github.com/etobella + :alt: etobella + +Current `maintainer `__: + +|maintainer-etobella| + +This module is part of the `OCA/maintenance `_ 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-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/__init__.py b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/__manifest__.py new file mode 100644 index 0000000..143c56a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Request Stage transition", + "summary": """ + Manage transition visibility and management between stages""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance"], + "data": ["views/maintenance_request.xml", "views/maintenance_stage.xml"], + "demo": ["data/demo_maintenance_request_stage_transition.xml"], + "maintainers": ["etobella"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/data/demo_maintenance_request_stage_transition.xml b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/data/demo_maintenance_request_stage_transition.xml new file mode 100644 index 0000000..756abfa --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/data/demo_maintenance_request_stage_transition.xml @@ -0,0 +1,19 @@ + + + info + + + + warning + + + + success + + + danger + + diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/bs.po new file mode 100644 index 0000000..22b52ab --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/bs.po @@ -0,0 +1,81 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_stage_transition +# +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: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__button_class +msgid "Button Class" +msgstr "Klasa dugmeta" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__danger +msgid "Danger" +msgstr "Opasnost" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,help:maintenance_request_stage_transition.field_maintenance_stage__button_class +msgid "For default, the system uses primary" +msgstr "Podrazumijevano, sistem koristi primarno" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__info +msgid "Info" +msgstr "Informacija" + +#. module: maintenance_request_stage_transition +#: model:ir.model,name:maintenance_request_stage_transition.model_maintenance_request +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: maintenance_request_stage_transition +#: model:ir.model,name:maintenance_request_stage_transition.model_maintenance_stage +msgid "Maintenance Stage" +msgstr "Faza održavanja" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__next_stage_ids +msgid "Next stages" +msgstr "Sljedeće faze" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__previous_stage_ids +msgid "Previous stages" +msgstr "Prethodne faze" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__primary +msgid "Primary" +msgstr "Primarno" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_request__stage_id +msgid "Stage" +msgstr "Faza" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__success +msgid "Success" +msgstr "Uspjeh" + +#. module: maintenance_request_stage_transition +#. odoo-python +#: code:addons/maintenance_request_stage_transition/models/maintenance_stage.py:0 +#, python-format +msgid "To %s" +msgstr "Za %s" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__warning +msgid "Warning" +msgstr "Upozorenje" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/es.po new file mode 100644 index 0000000..a5f8b22 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/es.po @@ -0,0 +1,84 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_stage_transition +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-22 23:09+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: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__button_class +msgid "Button Class" +msgstr "Clase del Botón" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__danger +msgid "Danger" +msgstr "Peligro" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,help:maintenance_request_stage_transition.field_maintenance_stage__button_class +msgid "For default, the system uses primary" +msgstr "Por defecto, el sistema usa Primario" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__info +msgid "Info" +msgstr "Info" + +#. module: maintenance_request_stage_transition +#: model:ir.model,name:maintenance_request_stage_transition.model_maintenance_request +msgid "Maintenance Request" +msgstr "Petición de mantenimiento" + +#. module: maintenance_request_stage_transition +#: model:ir.model,name:maintenance_request_stage_transition.model_maintenance_stage +msgid "Maintenance Stage" +msgstr "Estado" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__next_stage_ids +msgid "Next stages" +msgstr "Próximos estados" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__previous_stage_ids +msgid "Previous stages" +msgstr "Estados previos" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__primary +msgid "Primary" +msgstr "Primario" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_request__stage_id +msgid "Stage" +msgstr "Etapa/fase" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__success +msgid "Success" +msgstr "Éxito" + +#. module: maintenance_request_stage_transition +#. odoo-python +#: code:addons/maintenance_request_stage_transition/models/maintenance_stage.py:0 +#, python-format +msgid "To %s" +msgstr "A %s" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__warning +msgid "Warning" +msgstr "Advertencia" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/it.po new file mode 100644 index 0000000..a3d5953 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/it.po @@ -0,0 +1,84 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_stage_transition +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-07-28 09:49+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.3.2\n" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__button_class +msgid "Button Class" +msgstr "Classe pulsante" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__danger +msgid "Danger" +msgstr "Pericolo" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,help:maintenance_request_stage_transition.field_maintenance_stage__button_class +msgid "For default, the system uses primary" +msgstr "Il sistema usa come predefinito Primaria" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__info +msgid "Info" +msgstr "Informazioni" + +#. module: maintenance_request_stage_transition +#: model:ir.model,name:maintenance_request_stage_transition.model_maintenance_request +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: maintenance_request_stage_transition +#: model:ir.model,name:maintenance_request_stage_transition.model_maintenance_stage +msgid "Maintenance Stage" +msgstr "Fase manutenzione" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__next_stage_ids +msgid "Next stages" +msgstr "Fase successiva" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__previous_stage_ids +msgid "Previous stages" +msgstr "Fase precedente" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__primary +msgid "Primary" +msgstr "Primaria" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_request__stage_id +msgid "Stage" +msgstr "Fase" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__success +msgid "Success" +msgstr "Successo" + +#. module: maintenance_request_stage_transition +#. odoo-python +#: code:addons/maintenance_request_stage_transition/models/maintenance_stage.py:0 +#, python-format +msgid "To %s" +msgstr "A %s" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__warning +msgid "Warning" +msgstr "Attenzione" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/maintenance_request_stage_transition.pot b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/maintenance_request_stage_transition.pot new file mode 100644 index 0000000..bfd74fc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/i18n/maintenance_request_stage_transition.pot @@ -0,0 +1,81 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_request_stage_transition +# +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: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__button_class +msgid "Button Class" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__danger +msgid "Danger" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,help:maintenance_request_stage_transition.field_maintenance_stage__button_class +msgid "For default, the system uses primary" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__info +msgid "Info" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model,name:maintenance_request_stage_transition.model_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model,name:maintenance_request_stage_transition.model_maintenance_stage +msgid "Maintenance Stage" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__next_stage_ids +msgid "Next stages" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_stage__previous_stage_ids +msgid "Previous stages" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__primary +msgid "Primary" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields,field_description:maintenance_request_stage_transition.field_maintenance_request__stage_id +msgid "Stage" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__success +msgid "Success" +msgstr "" + +#. module: maintenance_request_stage_transition +#. odoo-python +#: code:addons/maintenance_request_stage_transition/models/maintenance_stage.py:0 +#, python-format +msgid "To %s" +msgstr "" + +#. module: maintenance_request_stage_transition +#: model:ir.model.fields.selection,name:maintenance_request_stage_transition.selection__maintenance_stage__button_class__warning +msgid "Warning" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/models/__init__.py new file mode 100644 index 0000000..ef1710d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/models/__init__.py @@ -0,0 +1,2 @@ +from . import maintenance_stage +from . import maintenance_request diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/models/maintenance_request.py b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/models/maintenance_request.py new file mode 100644 index 0000000..997d39c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/models/maintenance_request.py @@ -0,0 +1,43 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from lxml import etree + +from odoo import api, fields, models + +from odoo.addons.base.models import ir_ui_view + + +class MaintenanceRequest(models.Model): + + _inherit = "maintenance.request" + + stage_id = fields.Many2one("maintenance.stage", readonly=True) + + @api.model + def get_view(self, view_id=None, view_type="form", **options): + res = super().get_view(view_id=view_id, view_type=view_type, **options) + if view_type == "form": + doc = etree.XML(res["arch"]) + stages = self.env["maintenance.stage"].search([], order="sequence desc") + header = doc.xpath("//form/header")[0] + for stage in stages: + node = stage._get_stage_node() + self._setup_modifiers(node) + header.insert(0, node) + res["arch"] = etree.tostring(doc, encoding="unicode") + return res + + def set_maintenance_stage(self): + if not self.env.context.get("next_stage_id"): + return {} + return self._set_maintenance_stage(self.env.context.get("next_stage_id")) + + def _set_maintenance_stage(self, stage_id): + self.write({"stage_id": stage_id}) + + @api.model + def _setup_modifiers(self, node): + modifiers = {} + ir_ui_view.transfer_node_to_modifiers(node, modifiers) + ir_ui_view.transfer_modifiers_to_node(modifiers, node) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/models/maintenance_stage.py b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/models/maintenance_stage.py new file mode 100644 index 0000000..9d66ae6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/models/maintenance_stage.py @@ -0,0 +1,58 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import json + +from lxml import etree + +from odoo import _, fields, models + + +class MaintenanceStage(models.Model): + + _inherit = "maintenance.stage" + + next_stage_ids = fields.Many2many( + "maintenance.stage", + string="Next stages", + relation="maintenance_stage_next_stage", + column1="stage_id", + column2="next_stage_id", + ) + previous_stage_ids = fields.Many2many( + "maintenance.stage", + string="Previous stages", + relation="maintenance_stage_next_stage", + column1="next_stage_id", + column2="stage_id", + ) + button_class = fields.Selection( + [ + ("primary", "Primary"), + ("info", "Info"), + ("success", "Success"), + ("warning", "Warning"), + ("danger", "Danger"), + ], + help="For default, the system uses primary", + ) + + def _get_stage_node_attrs(self): + return {"invisible": [("stage_id", "not in", self.previous_stage_ids.ids)]} + + def _get_stage_node_name(self): + return _("To %s") % self.name + + def _get_stage_node(self): + return etree.Element( + "button", + attrib={ + "name": "set_maintenance_stage", + "id": str(self.id), + "type": "object", + "class": "btn-%s" % (self.button_class or "primary"), + "context": json.dumps({"next_stage_id": self.id}), + "attrs": json.dumps(self._get_stage_node_attrs()), + "string": self._get_stage_node_name(), + }, + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..73abe29 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Enric Tobella +* Jaime Arroyo +* David Alonso diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/readme/DESCRIPTION.rst new file mode 100644 index 0000000..8ee24d5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +It allows to define the next stages of a stage and shows them on the header buttons. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/readme/USAGE.rst b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/readme/USAGE.rst new file mode 100644 index 0000000..9345f50 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/readme/USAGE.rst @@ -0,0 +1,5 @@ +* Access `Maintenance > Configuration > Maintenance Stages` +* Define the possible next stages of every stage +* You can specify the color of the button if needed +* Refresh the page in order to show the new possible stages +* The stage widget will be blocked and the expected button will appear on the header. diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/static/description/index.html new file mode 100644 index 0000000..383ae7b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/static/description/index.html @@ -0,0 +1,436 @@ + + + + + + +Maintenance Request Stage transition + + + +
+

Maintenance Request Stage transition

+ + +

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

+

It allows to define the next stages of a stage and shows them on the header buttons.

+

Table of contents

+ +
+

Usage

+
    +
  • Access Maintenance > Configuration > Maintenance Stages
  • +
  • Define the possible next stages of every stage
  • +
  • You can specify the color of the button if needed
  • +
  • Refresh the page in order to show the new possible stages
  • +
  • The stage widget will be blocked and the expected button will appear on the header.
  • +
+
+
+

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

+
    +
  • Creu Blanca
  • +
+
+
+

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:

+

etobella

+

This module is part of the OCA/maintenance 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-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/tests/__init__.py new file mode 100644 index 0000000..de05063 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/tests/__init__.py @@ -0,0 +1 @@ +from . import test_flow diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/tests/test_flow.py b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/tests/test_flow.py new file mode 100644 index 0000000..c622803 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/tests/test_flow.py @@ -0,0 +1,61 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import json + +from lxml import etree + +from odoo.tests.common import TransactionCase + + +class TestFlow(TransactionCase): + def setUp(self): + super().setUp() + self.request = self.env["maintenance.request"].create({"name": "Request"}) + self.original_stage = self.request.stage_id + self.last_stage = self.env["maintenance.stage"].create({"name": "Last state"}) + self.stage = self.env["maintenance.stage"].create( + {"name": "New state", "next_stage_ids": [(4, self.last_stage.id)]} + ) + self.original_stage.write({"next_stage_ids": [(4, self.stage.id)]}) + + def test_inverse(self): + self.assertIn(self.original_stage, self.stage.previous_stage_ids) + + def get_button(self, stage): + data = self.request.get_view(view_type="form") + form = etree.XML(data["arch"]) + path = "//header/button[@name='set_maintenance_stage' and @id='%s']" + button = form.xpath(path % stage.id)[0] + self.assertTrue(etree.iselement(button)) + return button + + def test_nochange(self): + self.request.set_maintenance_stage() + self.assertEqual(self.original_stage, self.request.stage_id) + + def test_form(self): + button_stage = self.get_button(self.stage) + attr_stage = json.loads(button_stage.attrib["modifiers"]) + self.assertNotIn( + self.request, + self.env["maintenance.request"].search(attr_stage["invisible"]), + ) + button = self.get_button(self.last_stage) + attr = json.loads(button.attrib["modifiers"]) + self.assertIn( + self.request, self.env["maintenance.request"].search(attr["invisible"]) + ) + getattr( + self.request.with_context(**json.loads(button_stage.attrib["context"])), + button.attrib["name"], + )() + self.request.env.invalidate_all() + self.assertEqual(self.request.stage_id, self.stage) + self.assertIn( + self.request, + self.env["maintenance.request"].search(attr_stage["invisible"]), + ) + self.assertNotIn( + self.request, self.env["maintenance.request"].search(attr["invisible"]) + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/views/maintenance_request.xml b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/views/maintenance_request.xml new file mode 100644 index 0000000..4e764d0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/views/maintenance_request.xml @@ -0,0 +1,17 @@ + + + + + maintenance.request.tree (in maintenance_request_flow) + maintenance.request + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/views/maintenance_stage.xml b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/views/maintenance_stage.xml new file mode 100644 index 0000000..0502672 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/maintenance_request_stage_transition/views/maintenance_stage.xml @@ -0,0 +1,20 @@ + + + + + maintenance.stage.tree (in maintenance_request_flow) + maintenance.stage + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/pyproject.toml new file mode 100644 index 0000000..cb0fafd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_request_stage_transition/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_request_stage_transition" +version = "16.0.0" +description = "Maintenance Request Stage transition - + Manage transition visibility and management between stages" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_request_stage_transition"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_security/README.md b/odoo-bringout-oca-maintenance-maintenance_security/README.md new file mode 100644 index 0000000..d8c7d95 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/README.md @@ -0,0 +1,44 @@ +# Maintenance Security + +Odoo addon: maintenance_security + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_security +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Security +- **Version**: 16.0.2.0.0 +- **Category**: Tools +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_security`. + +## 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 +- 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-maintenance-maintenance_security/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/ARCHITECTURE.md new file mode 100644 index 0000000..7142910 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/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 Maintenance_security Module - maintenance_security + 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-maintenance-maintenance_security/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/CONFIGURATION.md new file mode 100644 index 0000000..b5c1766 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_security. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_security/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_security/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_security/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/FAQ.md new file mode 100644 index 0000000..4ab58cc --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/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 maintenance_security or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_security/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/INSTALL.md new file mode 100644 index 0000000..ab74919 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_security" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_security" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_security/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/MODELS.md new file mode 100644 index 0000000..04da338 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in maintenance_security. + +```mermaid +classDiagram + class mail_followers +``` + +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-maintenance-maintenance_security/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/OVERVIEW.md new file mode 100644 index 0000000..3718100 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_security. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_security +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_security/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_security/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/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-maintenance-maintenance_security/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/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-maintenance-maintenance_security/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/USAGE.md new file mode 100644 index 0000000..6df0b19 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/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 maintenance_security +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_security/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_security/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/README.rst b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/README.rst new file mode 100644 index 0000000..796dac8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/README.rst @@ -0,0 +1,97 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +==================== +Maintenance Security +==================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b105c5b92bfd0de1d123e30c541f9dec52d0e4f4af28d316f3242c7cf22a9e69 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_security + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_security + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module limits the Maintenance menu to users with any of the maintenance groups. + +It also removes the assignation mail when a user with no permission is assigned to an +equipment, as if not, the mail will contain a link to it. + +Additionally, it will remove the inheritance of equipment manager maintenance group by HR users (hr.group_hr_user) to further decouple the modules. The group can still be manually assigned to the user. + +**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 + * Víctor Martínez + * 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-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/maintenance `_ 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-maintenance-maintenance_security/maintenance_security/__init__.py b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/__manifest__.py new file mode 100644 index 0000000..14beeea --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2023 Tecnativa - Víctor Martínez +# Copyright 2023 Tecnativa - Pedro M. Baeza +# Copyright 2023 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + "name": "Maintenance Security", + "version": "16.0.2.0.0", + "category": "Tools", + "website": "https://github.com/OCA/maintenance", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["maintenance"], + "data": [ + "views/maintenance_views.xml", + ], + "installable": True, + "maintainers": ["victoralmau"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/bs.po new file mode 100644 index 0000000..9ccce97 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/bs.po @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_security +# +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: maintenance_security +#: model:ir.model,name:maintenance_security.model_mail_followers +msgid "Document Followers" +msgstr "Pratioci dokumenta" diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/es.po new file mode 100644 index 0000000..6a09419 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/es.po @@ -0,0 +1,23 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_security +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-12 12:25+0000\n" +"PO-Revision-Date: 2023-09-02 18:22+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: maintenance_security +#: model:ir.model,name:maintenance_security.model_mail_followers +msgid "Document Followers" +msgstr "Seguidores del documento" diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/it.po new file mode 100644 index 0000000..5ef2579 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/it.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_security +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-08-01 12:12+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: maintenance_security +#: model:ir.model,name:maintenance_security.model_mail_followers +msgid "Document Followers" +msgstr "Chi segue il documento" diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/maintenance_security.pot b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/maintenance_security.pot new file mode 100644 index 0000000..98e1b98 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/i18n/maintenance_security.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_security +# +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: maintenance_security +#: model:ir.model,name:maintenance_security.model_mail_followers +msgid "Document Followers" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/models/__init__.py new file mode 100644 index 0000000..6aa8c7d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/models/__init__.py @@ -0,0 +1 @@ +from . import mail_followers diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/models/mail_followers.py b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/models/mail_followers.py new file mode 100644 index 0000000..0aeceae --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/models/mail_followers.py @@ -0,0 +1,37 @@ +# Copyright 2023 Tecnativa - Víctor Martínez +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). +from odoo import fields, models + + +class Followers(models.Model): + _inherit = "mail.followers" + + def _add_followers( + self, + res_model, + res_ids, + partner_ids, + subtypes, + check_existing=False, + existing_policy="skip", + ): + """We need to prevent a partner without Maintenance permission from being + a follower of mt_mat_assign.""" + if res_model == "maintenance.equipment": + partner_model = self.env["res.partner"] + group = "maintenance.group_equipment_manager" + subtype = self.env.ref("maintenance.mt_mat_assign") + for partner_id in partner_ids: + if subtype.id in subtypes[partner_id]: + partner = partner_model.browse(partner_id) + user = fields.first(partner.user_ids) + if not user or (user and not user.has_group(group)): + subtypes[partner_id].remove(subtype.id) + return super()._add_followers( + res_model=res_model, + res_ids=res_ids, + partner_ids=partner_ids, + subtypes=subtypes, + check_existing=check_existing, + existing_policy=existing_policy, + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..713dfda --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/readme/CONTRIBUTORS.rst @@ -0,0 +1,5 @@ +* `Tecnativa `_ + + * Pedro M. Baeza + * Víctor Martínez + * Carolina Fernandez diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/readme/DESCRIPTION.rst new file mode 100644 index 0000000..8e2ba9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/readme/DESCRIPTION.rst @@ -0,0 +1,6 @@ +This module limits the Maintenance menu to users with any of the maintenance groups. + +It also removes the assignation mail when a user with no permission is assigned to an +equipment, as if not, the mail will contain a link to it. + +Additionally, it will remove the inheritance of equipment manager maintenance group by HR users (hr.group_hr_user) to further decouple the modules. The group can still be manually assigned to the user. \ No newline at end of file diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/static/description/index.html new file mode 100644 index 0000000..e39e250 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/static/description/index.html @@ -0,0 +1,439 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Maintenance Security

+ +

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

+

This module limits the Maintenance menu to users with any of the maintenance groups.

+

It also removes the assignation mail when a user with no permission is assigned to an +equipment, as if not, the mail will contain a link to it.

+

Additionally, it will remove the inheritance of equipment manager maintenance group by HR users (hr.group_hr_user) to further decouple the modules. The group can still be manually assigned to the user.

+

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
    • +
    • Víctor Martínez
    • +
    • Carolina Fernandez
    • +
    +
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_security/maintenance_security/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/tests/__init__.py new file mode 100644 index 0000000..4239747 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2023 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_maintenance_security diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/tests/test_maintenance_security.py b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/tests/test_maintenance_security.py new file mode 100644 index 0000000..1a2ea47 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/tests/test_maintenance_security.py @@ -0,0 +1,71 @@ +# Copyright 2023 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests import common, new_test_user +from odoo.tests.common import users + +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + + +class TestMaintenanceSecurity(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + cls.user = new_test_user( + cls.env, + login="test-basic-user", + ) + cls.manager = new_test_user( + cls.env, + login="test-maintenance-user", + groups="maintenance.group_equipment_manager", + ) + cls.category = cls.env["maintenance.equipment.category"].create( + {"name": "Test category"} + ) + cls.equipment = cls.env["maintenance.equipment"].create( + { + "name": "Test equipment", + "category_id": cls.category.id, + } + ) + cls.maintenance_menus = [ + cls.env.ref("maintenance.menu_maintenance_title"), + cls.env.ref("maintenance.menu_m_dashboard"), + cls.env.ref("maintenance.menu_m_request"), + cls.env.ref("maintenance.menu_m_request_form"), + cls.env.ref("maintenance.menu_m_request_calendar"), + cls.env.ref("maintenance.menu_equipment_form"), + ] + + def test_maintenance_equipment_full(self): + mt_mat_assign = self.env.ref("maintenance.mt_mat_assign") + # Change to manager (with mt_mat_assign subtype) + self.equipment.write({"owner_user_id": self.manager.id}) + self.assertNotIn( + self.user.partner_id, + self.equipment.message_follower_ids.mapped("partner_id"), + ) + follower = self.equipment.message_follower_ids.filtered( + lambda x: x.partner_id == self.manager.partner_id + ) + self.assertIn(mt_mat_assign, follower.subtype_ids) + # Change to user (without mt_mat_assign subtype) + self.equipment.write({"owner_user_id": self.user.id}) + follower = self.equipment.message_follower_ids.filtered( + lambda x: x.partner_id == self.user.partner_id + ) + self.assertNotIn(mt_mat_assign, follower.subtype_ids) + + @users("test-basic-user") + def test_ir_ui_menu_user(self): + items = self.env["ir.ui.menu"]._visible_menu_ids() + for maintenance_menu in self.maintenance_menus: + self.assertFalse(maintenance_menu.id in items) + + @users("test-maintenance-user") + def test_ir_ui_menu_manager(self): + items = self.env["ir.ui.menu"]._visible_menu_ids() + for maintenance_menu in self.maintenance_menus: + self.assertTrue(maintenance_menu.id in items) diff --git a/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/views/maintenance_views.xml b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/views/maintenance_views.xml new file mode 100644 index 0000000..be0126b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/maintenance_security/views/maintenance_views.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_security/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_security/pyproject.toml new file mode 100644 index 0000000..d3a9298 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_security/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_security" +version = "16.0.0" +description = "Maintenance Security - Odoo addon" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_security"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/README.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/README.md new file mode 100644 index 0000000..8ce76c8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/README.md @@ -0,0 +1,44 @@ +# Maintenance Team Hierarchy + +Odoo addon: maintenance_team_hierarchy + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_team_hierarchy +``` + +## Dependencies + +This addon depends on: +- maintenance + +## Manifest Information + +- **Name**: Maintenance Team Hierarchy +- **Version**: 16.0.1.0.0 +- **Category**: N/A +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_team_hierarchy`. + +## 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 +- 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-maintenance-maintenance_team_hierarchy/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/ARCHITECTURE.md new file mode 100644 index 0000000..c2de6f3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/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 Maintenance_team_hierarchy Module - maintenance_team_hierarchy + 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-maintenance-maintenance_team_hierarchy/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/CONFIGURATION.md new file mode 100644 index 0000000..e7b24de --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_team_hierarchy. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/DEPENDENCIES.md new file mode 100644 index 0000000..a7cb7c6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/DEPENDENCIES.md @@ -0,0 +1,5 @@ +# Dependencies + +This addon depends on: + +- [maintenance](https://github.com/bringout/oca-ocb-vertical-industry/tree/a60a29f57ff34f3c01d0521d0a6003956d80acd9/odoo-bringout-oca-ocb-maintenance) diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/FAQ.md new file mode 100644 index 0000000..c47b3d1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/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 maintenance_team_hierarchy or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/INSTALL.md new file mode 100644 index 0000000..c195f6b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_team_hierarchy" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_team_hierarchy" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/MODELS.md new file mode 100644 index 0000000..81abd8e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in maintenance_team_hierarchy. + +```mermaid +classDiagram + class maintenance_team +``` + +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-maintenance-maintenance_team_hierarchy/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/OVERVIEW.md new file mode 100644 index 0000000..4e07ea6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_team_hierarchy. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_team_hierarchy +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/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-maintenance-maintenance_team_hierarchy/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/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-maintenance-maintenance_team_hierarchy/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/USAGE.md new file mode 100644 index 0000000..b105ac6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/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 maintenance_team_hierarchy +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/README.rst b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/README.rst new file mode 100644 index 0000000..f8854e9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/README.rst @@ -0,0 +1,76 @@ +========================== +Maintenance Team Hierarchy +========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:1eeb9da0bf387754bd445e6a0a03b562eb84c930e82590c0c0ffb31c922cb3c5 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_team_hierarchy + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_team_hierarchy + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This addon allows to define a hierarchy of teams and teams show the related requests + +**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 +~~~~~~~ + +* Creu Blanca + +Contributors +~~~~~~~~~~~~ + +* Enric Tobella + +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/maintenance `_ 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-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/__init__.py b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/__manifest__.py new file mode 100644 index 0000000..345daab --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Team Hierarchy", + "summary": """ + Create hierarchies on teams""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance"], + "data": ["views/maintenance_team.xml"], + "demo": ["demo/maintenance_team_demo.xml", "demo/maintenance_request_demo.xml"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/demo/maintenance_request_demo.xml b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/demo/maintenance_request_demo.xml new file mode 100644 index 0000000..0139ec3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/demo/maintenance_request_demo.xml @@ -0,0 +1,21 @@ + + + + Very Serious Issue 1 + + + + + + Very Serious Issue 2 + + + + + + Very Serious Issue 3 + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/demo/maintenance_team_demo.xml b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/demo/maintenance_team_demo.xml new file mode 100644 index 0000000..32908f8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/demo/maintenance_team_demo.xml @@ -0,0 +1,14 @@ + + + + Parent Team + + + Child Team 1 + + + + Child Team 2 + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/bs.po new file mode 100644 index 0000000..c0d5dd8 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/bs.po @@ -0,0 +1,79 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_team_hierarchy +# +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: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_1 +msgid "Child Team 1" +msgstr "Podređeni tim 1" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_2 +msgid "Child Team 2" +msgstr "Podređeni tim 2" + +#. module: maintenance_team_hierarchy +#: model:ir.model,name:maintenance_team_hierarchy.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Timovi za održavanje" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count +msgid "Number of Requests" +msgstr "Broj zahtjeva" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_block +msgid "Number of Requests Blocked" +msgstr "Broj blokiranih zahtjeva" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_date +msgid "Number of Requests Scheduled" +msgstr "Broj zakazanih zahtjeva" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_unscheduled +msgid "Number of Requests Unscheduled" +msgstr "Broj otkazanih zahtjeva" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_high_priority +msgid "Number of Requests in High Priority" +msgstr "Broj zahtjeva u visokom prioritetu" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_id +msgid "Parent" +msgstr "Nasljeđeni" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_path +msgid "Parent Path" +msgstr "Putanja nadređenih" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_parent +msgid "Parent Team" +msgstr "Nadređeni tim" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__request_ids +msgid "Request" +msgstr "Zahtjev" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_ids +msgid "Requests" +msgstr "Zahtjevi" diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/es.po new file mode 100644 index 0000000..411c546 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/es.po @@ -0,0 +1,85 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_team_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-22 23:09+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: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_1 +msgid "Child Team 1" +msgstr "Equipo infantil 1" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_2 +msgid "Child Team 2" +msgstr "Equipo infantil 2" + +#. module: maintenance_team_hierarchy +#: model:ir.model,name:maintenance_team_hierarchy.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Equipos de Mantenimiento" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count +msgid "Number of Requests" +msgstr "Número de solicitudes" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_block +msgid "Number of Requests Blocked" +msgstr "Número de solicitudes bloqueadas" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_date +msgid "Number of Requests Scheduled" +msgstr "Número de solicitudes programadas" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_unscheduled +msgid "Number of Requests Unscheduled" +msgstr "Número de solicitudes no programadas" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_high_priority +msgid "Number of Requests in High Priority" +msgstr "Número de solicitudes de alta prioridad" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_id +msgid "Parent" +msgstr "Padre" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_path +msgid "Parent Path" +msgstr "ruta parental" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_parent +msgid "Parent Team" +msgstr "equipo parental" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__request_ids +msgid "Request" +msgstr "Petición" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_ids +msgid "Requests" +msgstr "peticiones" + +#~ msgid "Parent Right" +#~ msgstr "Padre derecho" diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/it.po new file mode 100644 index 0000000..3fdb422 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/it.po @@ -0,0 +1,82 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_team_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-09 13: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: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_1 +msgid "Child Team 1" +msgstr "Discendente di Team 1" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_2 +msgid "Child Team 2" +msgstr "Discendente di Team 2" + +#. module: maintenance_team_hierarchy +#: model:ir.model,name:maintenance_team_hierarchy.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Team manutenzione" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count +msgid "Number of Requests" +msgstr "Numero richieste" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_block +msgid "Number of Requests Blocked" +msgstr "Numero di richieste bloccate" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_date +msgid "Number of Requests Scheduled" +msgstr "Numero di richieste schedulate" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_unscheduled +msgid "Number of Requests Unscheduled" +msgstr "Numero di richieste da schedulare" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_high_priority +msgid "Number of Requests in High Priority" +msgstr "Numero di richieste con alta priorità" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_id +msgid "Parent" +msgstr "Padre" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_path +msgid "Parent Path" +msgstr "Percorso padre" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_parent +msgid "Parent Team" +msgstr "Team padre" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__request_ids +msgid "Request" +msgstr "Richiesta" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_ids +msgid "Requests" +msgstr "Richieste" diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot new file mode 100644 index 0000000..66a9ba3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot @@ -0,0 +1,79 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_team_hierarchy +# +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: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_1 +msgid "Child Team 1" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_2 +msgid "Child Team 2" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model,name:maintenance_team_hierarchy.model_maintenance_team +msgid "Maintenance Teams" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count +msgid "Number of Requests" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_block +msgid "Number of Requests Blocked" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_date +msgid "Number of Requests Scheduled" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_unscheduled +msgid "Number of Requests Unscheduled" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_high_priority +msgid "Number of Requests in High Priority" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_id +msgid "Parent" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_path +msgid "Parent Path" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_parent +msgid "Parent Team" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__request_ids +msgid "Request" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_ids +msgid "Requests" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/pt_BR.po b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/pt_BR.po new file mode 100644 index 0000000..8454b8a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/i18n/pt_BR.po @@ -0,0 +1,83 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_team_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-05-29 16:37+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: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_1 +msgid "Child Team 1" +msgstr "Equipe infantil 1" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_child_2 +msgid "Child Team 2" +msgstr "Equipe infantil 2" + +#. module: maintenance_team_hierarchy +#: model:ir.model,name:maintenance_team_hierarchy.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Equipes de Manutenção" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count +msgid "Number of Requests" +msgstr "Número de solicitações" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_block +msgid "Number of Requests Blocked" +msgstr "Número de solicitações bloqueadas" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_date +msgid "Number of Requests Scheduled" +msgstr "Número de solicitações agendadas" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_unscheduled +msgid "Number of Requests Unscheduled" +msgstr "Número de solicitações não-agendadas" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_count_high_priority +msgid "Number of Requests in High Priority" +msgstr "Número de solicitações em prioridade alta" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_id +msgid "Parent" +msgstr "Pais" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_path +msgid "Parent Path" +msgstr "Caminho Pai" + +#. module: maintenance_team_hierarchy +#: model:maintenance.team,name:maintenance_team_hierarchy.equipment_team_parent +msgid "Parent Team" +msgstr "Equipe Pai" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__request_ids +msgid "Request" +msgstr "Solicitação" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__todo_request_ids +msgid "Requests" +msgstr "Solicitações" diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/models/__init__.py new file mode 100644 index 0000000..e4c1bcb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/models/__init__.py @@ -0,0 +1 @@ +from . import maintenance_team diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/models/maintenance_team.py b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/models/maintenance_team.py new file mode 100644 index 0000000..338a85a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/models/maintenance_team.py @@ -0,0 +1,67 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class MaintenanceTeam(models.Model): + + _parent_name = "parent_id" + _parent_store = True + _parent_order = "name" + _inherit = "maintenance.team" + + parent_id = fields.Many2one("maintenance.team", ondelete="restrict") + parent_path = fields.Char(index=True, unaccent=False) + + request_ids = fields.Many2many( + "maintenance.request", + compute="_compute_request_ids", + ) + + todo_request_ids = fields.One2many(compute="_compute_new_todo_requests") + todo_request_count = fields.Integer(compute="_compute_new_todo_requests") + todo_request_count_date = fields.Integer(compute="_compute_new_todo_requests") + todo_request_count_high_priority = fields.Integer( + compute="_compute_new_todo_requests" + ) + todo_request_count_block = fields.Integer(compute="_compute_new_todo_requests") + todo_request_count_unscheduled = fields.Integer( + compute="_compute_new_todo_requests" + ) + + def _compute_request_ids(self): + for record in self: + record.request_ids = self.env["maintenance.request"].search( + record._get_request_domains() + ) + + def _get_request_domains(self): + return [("maintenance_team_id", "child_of", self.id)] + + @api.depends() + def _compute_new_todo_requests(self): + """This is the only way to remove the api depends fields. This is necessary + because request_ids is now a computed field + """ + self._compute_todo_requests() + + def _compute_todo_requests(self): + """This function improves the computation and simplifies the data""" + request_obj = self.env["maintenance.request"] + for record in self: + domain = record._get_request_domains() + [("stage_id.done", "=", False)] + record.todo_request_ids = request_obj.search(domain) + record.todo_request_count = request_obj.search_count(domain) + record.todo_request_count_date = request_obj.search_count( + domain + [("schedule_date", "!=", False)] + ) + record.todo_request_count_high_priority = request_obj.search_count( + domain + [("priority", "=", "3")] + ) + record.todo_request_count_block = request_obj.search_count( + domain + [("kanban_state", "=", "blocked")] + ) + record.todo_request_count_unscheduled = request_obj.search_count( + domain + [("schedule_date", "=", False)] + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..93ec993 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Enric Tobella diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/readme/DESCRIPTION.rst new file mode 100644 index 0000000..5b5b784 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This addon allows to define a hierarchy of teams and teams show the related requests diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/static/description/index.html new file mode 100644 index 0000000..b99e39e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/static/description/index.html @@ -0,0 +1,421 @@ + + + + + + +Maintenance Team Hierarchy + + + +
+

Maintenance Team Hierarchy

+ + +

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

+

This addon allows to define a hierarchy of teams and teams show the related requests

+

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

+
    +
  • Creu Blanca
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/tests/__init__.py new file mode 100644 index 0000000..b0a93c2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/tests/__init__.py @@ -0,0 +1 @@ +from . import test_team_hierarchy diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/tests/test_team_hierarchy.py b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/tests/test_team_hierarchy.py new file mode 100644 index 0000000..cf5497b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/tests/test_team_hierarchy.py @@ -0,0 +1,73 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase, tagged + + +# This test should only be executed after all modules have been installed. +@tagged("post_install", "-at_install") +class TestTeamHierarchy(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.team_obj = cls.env["maintenance.team"] + cls.request_obj = cls.env["maintenance.request"] + + def test_team_hierarchy(self): + team_01 = self.team_obj.create({"name": "01"}) + team_02 = self.team_obj.create({"name": "02"}) + team_03 = self.team_obj.create({"name": "02"}) + self.assertFalse(team_01.request_ids) + self.assertFalse(team_02.request_ids) + self.assertFalse(team_03.request_ids) + self.assertEqual(0, team_01.todo_request_count) + self.assertEqual(0, team_02.todo_request_count) + self.assertEqual(0, team_03.todo_request_count) + request_01 = self.request_obj.create( + {"name": "Request", "maintenance_team_id": team_03.id} + ) + team_01.env.invalidate_all() + team_02.env.invalidate_all() + team_03.env.invalidate_all() + self.assertFalse(team_01.request_ids) + self.assertFalse(team_02.request_ids) + self.assertTrue(team_03.request_ids) + self.assertEqual(0, team_01.todo_request_count) + self.assertEqual(0, team_02.todo_request_count) + self.assertEqual(1, team_03.todo_request_count) + self.assertEqual(request_01, team_03.request_ids) + team_03.write({"parent_id": team_02.id}) + team_01.env.invalidate_all() + team_02.env.invalidate_all() + team_03.env.invalidate_all() + self.assertFalse(team_01.request_ids) + self.assertTrue(team_02.request_ids) + self.assertEqual(team_02.request_ids, request_01) + self.assertEqual(0, team_01.todo_request_count) + self.assertEqual(1, team_02.todo_request_count) + self.assertEqual(1, team_03.todo_request_count) + request_02 = self.request_obj.create( + {"name": "Request", "maintenance_team_id": team_02.id} + ) + team_01.env.invalidate_all() + team_02.env.invalidate_all() + team_03.env.invalidate_all() + self.assertFalse(team_01.request_ids) + self.assertTrue(team_02.request_ids) + self.assertIn(request_01, team_02.request_ids) + self.assertIn(request_02, team_02.request_ids) + self.assertTrue(team_03.request_ids) + self.assertEqual(request_01, team_03.request_ids) + self.assertNotIn(request_02, team_03.request_ids) + self.assertEqual(0, team_01.todo_request_count) + self.assertEqual(2, team_02.todo_request_count) + self.assertEqual(1, team_03.todo_request_count) + team_02.write({"parent_id": team_01.id}) + team_01.env.invalidate_all() + team_02.env.invalidate_all() + team_03.env.invalidate_all() + self.assertIn(request_01, team_01.request_ids) + self.assertIn(request_02, team_01.request_ids) + self.assertEqual(2, team_01.todo_request_count) + self.assertEqual(2, team_02.todo_request_count) + self.assertEqual(1, team_03.todo_request_count) diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/views/maintenance_team.xml b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/views/maintenance_team.xml new file mode 100644 index 0000000..679186c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/maintenance_team_hierarchy/views/maintenance_team.xml @@ -0,0 +1,37 @@ + + + + + maintenance.team.form (in maintenance_team_hierarchy) + maintenance.team + + + + + + + + + maintenance.request.search (in maintenance_team_hierarchy) + maintenance.request + + + + [('maintenance_team_id', 'child_of', raw_value)] + + + + + [('maintenance_team_id', 'child_of', active_id), ('maintenance_type', 'in', context.get('maintenance_type', ['preventive', 'corrective']))] + + diff --git a/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/pyproject.toml new file mode 100644 index 0000000..fbc061e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_team_hierarchy/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_team_hierarchy" +version = "16.0.0" +description = "Maintenance Team Hierarchy - + Create hierarchies on teams" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-maintenance>=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 = ["maintenance_team_hierarchy"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/README.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/README.md new file mode 100644 index 0000000..73f4b8a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/README.md @@ -0,0 +1,46 @@ +# Maintenance Timesheets + +Odoo addon: maintenance_timesheet + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_timesheet +``` + +## Dependencies + +This addon depends on: +- base_maintenance +- maintenance_project +- hr_timesheet + +## Manifest Information + +- **Name**: Maintenance Timesheets +- **Version**: 16.0.2.1.0 +- **Category**: Human Resources +- **License**: AGPL-3 +- **Installable**: True + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_timesheet`. + +## 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 +- 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-maintenance-maintenance_timesheet/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/ARCHITECTURE.md new file mode 100644 index 0000000..b99d486 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/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 Maintenance_timesheet Module - maintenance_timesheet + 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-maintenance-maintenance_timesheet/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/CONFIGURATION.md new file mode 100644 index 0000000..a63c4f1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_timesheet. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/DEPENDENCIES.md new file mode 100644 index 0000000..5e0e6bd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/DEPENDENCIES.md @@ -0,0 +1,7 @@ +# Dependencies + +This addon depends on: + +- [base_maintenance](https://github.com/bringout/oca-technical) +- [maintenance_project](https://github.com/bringout/oca-technical) +- [hr_timesheet](https://github.com/bringout/oca-ocb-hr/tree/dc1405e12dbe76ffb119a0feb323b56ae2c58522/odoo-bringout-oca-ocb-hr_timesheet) diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/FAQ.md new file mode 100644 index 0000000..63e0572 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/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 maintenance_timesheet or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/INSTALL.md new file mode 100644 index 0000000..df67159 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_timesheet" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_timesheet" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/MODELS.md new file mode 100644 index 0000000..04ed800 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/MODELS.md @@ -0,0 +1,14 @@ +# Models + +Detected core models and extensions in maintenance_timesheet. + +```mermaid +classDiagram + class account_analytic_line + class maintenance_equipment + class maintenance_request +``` + +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-maintenance-maintenance_timesheet/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/OVERVIEW.md new file mode 100644 index 0000000..2999998 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_timesheet. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_timesheet +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/REPORTS.md new file mode 100644 index 0000000..94673a5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/REPORTS.md @@ -0,0 +1,22 @@ +# Reports + +Report definitions and templates in maintenance_timesheet. + +```mermaid +classDiagram +``` + +## Available Reports + +No named reports found in XML files. + + +## Report Files + +- **maintenance_request_report.xml** (XML template/definition) + +## Notes +- Named reports above are accessible through Odoo's reporting menu +- Python files define report logic and data processing +- XML files contain report templates, definitions, and formatting +- Reports are integrated with Odoo's printing and email systems diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/SECURITY.md new file mode 100644 index 0000000..d158155 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/SECURITY.md @@ -0,0 +1,65 @@ +# Security + +Access control and security definitions in maintenance_timesheet. + +## Access Control Lists (ACLs) + +Model access permissions defined in: +- **[bosnian_translations.json](../bosnian_translations.json)** + - 1767 model access rules +- **[bosnian_translations_output.json](../bosnian_translations_output.json)** + - 414 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)** +- **[PACKAGES.md](../PACKAGES.md)** + - 298 model access rules +- **[README.md](../README.md)** + - 338 model access rules +- **[scripts](../scripts)** +- **[temp](../temp)** +- **[TRANSLATION_BS_SUMMARY.md](../TRANSLATION_BS_SUMMARY.md)** + - 225 model access rules + +## Record Rules + +Row-level security rules defined in: + +## Security Groups & Configuration + +Security groups and permissions defined in: +- **[maintenance_timesheet_security.xml](../maintenance_timesheet/security/maintenance_timesheet_security.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: +- **[maintenance_timesheet_security.xml](../maintenance_timesheet/security/maintenance_timesheet_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-maintenance-maintenance_timesheet/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/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-maintenance-maintenance_timesheet/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/USAGE.md new file mode 100644 index 0000000..aee7e66 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/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 maintenance_timesheet +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/README.rst b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/README.rst new file mode 100644 index 0000000..d55ec34 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/README.rst @@ -0,0 +1,82 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +====================== +Maintenance Timesheets +====================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:6e3c051cdab2b2b121c7ede1bc83c4f83179f60e4506daf330a965ef56b938bc + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_timesheet + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_timesheet + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds timesheets to a request. + +**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 +~~~~~~~ + +* Solvos + +Contributors +~~~~~~~~~~~~ + +* David Alonso +* Luisa Miguéns +* Christian Ramos + +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/maintenance `_ 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-maintenance-maintenance_timesheet/maintenance_timesheet/__init__.py b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/__manifest__.py new file mode 100644 index 0000000..484aa04 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/__manifest__.py @@ -0,0 +1,20 @@ +# © 2020 Solvos Consultoría Informática () +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +{ + "name": "Maintenance Timesheets", + "summary": "Adds timesheets to maintenance requests", + "author": "Odoo Community Association (OCA), Solvos", + "license": "AGPL-3", + "version": "16.0.2.1.0", + "category": "Human Resources", + "website": "https://github.com/OCA/maintenance", + "depends": ["base_maintenance", "maintenance_project", "hr_timesheet"], + "data": [ + "security/maintenance_timesheet_security.xml", + "views/hr_timesheet_views.xml", + "views/maintenance_request_views.xml", + "report/maintenance_request_report.xml", + ], + "demo": ["data/demo_maintenance_timesheet.xml"], + "installable": True, +} diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/data/demo_maintenance_timesheet.xml b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/data/demo_maintenance_timesheet.xml new file mode 100644 index 0000000..3ba82b2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/data/demo_maintenance_timesheet.xml @@ -0,0 +1,45 @@ + + + + + + Corrective #1 for Generic Monitor + + + + + + corrective + + + + Request tasks done + + + + + + + + + + + + + Touchpad repaired + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/bs.po new file mode 100644 index 0000000..a01a4cd --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/bs.po @@ -0,0 +1,133 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_timesheet +# +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: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_equipment_request_view_kanban +msgid "Hours" +msgstr "Sati" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_equipment_request_view_form +msgid "" +"\n" +" Hours\n" +" " +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Timesheet Entries" +msgstr "Unosi radnih sati" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Timesheet Total Hours:" +msgstr "Ukupno sati radnog lista:" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Total" +msgstr "Ukupno" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_account_analytic_line +msgid "Analytic Line" +msgstr "Analitička stavka" + +#. module: maintenance_timesheet +#. odoo-python +#: code:addons/maintenance_timesheet/models/hr_timesheet.py:0 +#, python-format +msgid "" +"Cannot save or delete a timesheet for a maintenance request already done" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Date" +msgstr "Datum" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Description" +msgstr "Opis" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.equipment_request_view_form +msgid "Duration (Hour(s))" +msgstr "Trajanje (sati)" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Oprema za održavanje" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_maintenance_request +#: model:ir.model.fields,field_description:maintenance_timesheet.field_account_analytic_line__maintenance_request_id +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__planned_hours +msgid "Planned Hours" +msgstr "Planirani sati" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__progress +msgid "Progress" +msgstr "Napredak" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Project -" +msgstr "Projekat -" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__remaining_hours +msgid "Remaining Hours" +msgstr "Preostali sati" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_timesheet_line_search +msgid "Request" +msgstr "Zahtjev" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Responsible" +msgstr "Odgovoran" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Task" +msgstr "Zadatak" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Time" +msgstr "Vrijeme" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__timesheet_total_hours +msgid "Timesheet Total Hours" +msgstr "Ukupno sati radnog lista" + +#. module: maintenance_timesheet +#: model:ir.actions.act_window,name:maintenance_timesheet.timesheet_action_from_request +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__timesheet_ids +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.equipment_request_view_form +msgid "Timesheets" +msgstr "Šihtarice" diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/es.po new file mode 100644 index 0000000..4eea5e6 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/es.po @@ -0,0 +1,155 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_timesheet +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-04 08:28+0000\n" +"PO-Revision-Date: 2023-09-07 16:37+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: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_equipment_request_view_kanban +msgid "Hours" +msgstr "horas" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_equipment_request_view_form +msgid "" +"\n" +" Hours\n" +" " +msgstr "" +"\n" +" Horas\n" +" " + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Timesheet Entries" +msgstr "" +"Entradas en la hoja de horas" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Timesheet Total Hours:" +msgstr "Horas totales de la hoja de horas:" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Total" +msgstr "Total" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_account_analytic_line +msgid "Analytic Line" +msgstr "Cuenta analítica" + +#. module: maintenance_timesheet +#. odoo-python +#: code:addons/maintenance_timesheet/models/hr_timesheet.py:0 +#, python-format +msgid "" +"Cannot save or delete a timesheet for a maintenance request already done" +msgstr "" +"No se puede editar o borrar un parte de trabajo de una petición de " +"mantenimiento ya finalizada" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Date" +msgstr "fecha" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Description" +msgstr "descripción" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.equipment_request_view_form +msgid "Duration (Hour(s))" +msgstr "Duración (Hora(s))" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_maintenance_request +#: model:ir.model.fields,field_description:maintenance_timesheet.field_account_analytic_line__maintenance_request_id +msgid "Maintenance Request" +msgstr "Petición de mantenimiento" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__planned_hours +msgid "Planned Hours" +msgstr "Horas planificadas" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__progress +msgid "Progress" +msgstr "progreso" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Project -" +msgstr "proyecto-" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__remaining_hours +msgid "Remaining Hours" +msgstr "Horas restantes" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_timesheet_line_search +msgid "Request" +msgstr "Petición" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Responsible" +msgstr "Responsable" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Task" +msgstr "Tarea" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Time" +msgstr "Tiempo" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__timesheet_total_hours +msgid "Timesheet Total Hours" +msgstr "Horas totales en partes de trabajo" + +#. module: maintenance_timesheet +#: model:ir.actions.act_window,name:maintenance_timesheet.timesheet_action_from_request +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__timesheet_ids +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.equipment_request_view_form +msgid "Timesheets" +msgstr "Partes de trabajo" + +#~ msgid "Hours" +#~ msgstr "horas" + +#~ msgid "Display Name" +#~ msgstr "nombre para mostrar" + +#~ msgid "ID" +#~ msgstr "ID(identificador)" + +#~ msgid "Last Modified on" +#~ msgstr "modificado por última vez el" diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/it.po new file mode 100644 index 0000000..2bee9e5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/it.po @@ -0,0 +1,154 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_timesheet +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-03-14 15: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: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_equipment_request_view_kanban +msgid "Hours" +msgstr "Ore" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_equipment_request_view_form +msgid "" +"\n" +" Hours\n" +" " +msgstr "" +"\n" +" Ore\n" +" " + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Timesheet Entries" +msgstr "" +"Registrazioni foglio presenze" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Timesheet Total Hours:" +msgstr "Ore totali foglio presenze:" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Total" +msgstr "Totale" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_account_analytic_line +msgid "Analytic Line" +msgstr "Riga analitica" + +#. module: maintenance_timesheet +#. odoo-python +#: code:addons/maintenance_timesheet/models/hr_timesheet.py:0 +#, python-format +msgid "" +"Cannot save or delete a timesheet for a maintenance request already done" +msgstr "" +"Non si può salvare o cancellare un foglio presenze per una richiesta di " +"manutenzione già eseguita" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Date" +msgstr "Data" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Description" +msgstr "Descrizione" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.equipment_request_view_form +msgid "Duration (Hour(s))" +msgstr "Durata (ora(e))" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_maintenance_request +#: model:ir.model.fields,field_description:maintenance_timesheet.field_account_analytic_line__maintenance_request_id +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__planned_hours +msgid "Planned Hours" +msgstr "Ore pianificate" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__progress +msgid "Progress" +msgstr "Avanzamento" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Project -" +msgstr "Progetto -" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__remaining_hours +msgid "Remaining Hours" +msgstr "Ore residue" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_timesheet_line_search +msgid "Request" +msgstr "Richiesta" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Responsible" +msgstr "Responsabile" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Task" +msgstr "Lavoro" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Time" +msgstr "Orario" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__timesheet_total_hours +msgid "Timesheet Total Hours" +msgstr "Ore totali foglio presenze" + +#. module: maintenance_timesheet +#: model:ir.actions.act_window,name:maintenance_timesheet.timesheet_action_from_request +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__timesheet_ids +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.equipment_request_view_form +msgid "Timesheets" +msgstr "Fogli ore" + +#~ msgid "Hours" +#~ msgstr "Ore" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/maintenance_timesheet.pot b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/maintenance_timesheet.pot new file mode 100644 index 0000000..90e1f3f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/i18n/maintenance_timesheet.pot @@ -0,0 +1,133 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_timesheet +# +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: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_equipment_request_view_kanban +msgid "Hours" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_equipment_request_view_form +msgid "" +"\n" +" Hours\n" +" " +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Timesheet Entries" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Timesheet Total Hours:" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Total" +msgstr "" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: maintenance_timesheet +#. odoo-python +#: code:addons/maintenance_timesheet/models/hr_timesheet.py:0 +#, python-format +msgid "" +"Cannot save or delete a timesheet for a maintenance request already done" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Date" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Description" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.equipment_request_view_form +msgid "Duration (Hour(s))" +msgstr "" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_timesheet +#: model:ir.model,name:maintenance_timesheet.model_maintenance_request +#: model:ir.model.fields,field_description:maintenance_timesheet.field_account_analytic_line__maintenance_request_id +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__planned_hours +msgid "Planned Hours" +msgstr "" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__progress +msgid "Progress" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Project -" +msgstr "" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__remaining_hours +msgid "Remaining Hours" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.hr_timesheet_line_search +msgid "Request" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Responsible" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Task" +msgstr "" + +#. module: maintenance_timesheet +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.report_maintenance_request_document +msgid "Time" +msgstr "" + +#. module: maintenance_timesheet +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__timesheet_total_hours +msgid "Timesheet Total Hours" +msgstr "" + +#. module: maintenance_timesheet +#: model:ir.actions.act_window,name:maintenance_timesheet.timesheet_action_from_request +#: model:ir.model.fields,field_description:maintenance_timesheet.field_maintenance_request__timesheet_ids +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet.equipment_request_view_form +msgid "Timesheets" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/migrations/16.0.2.1.0/noupdate_changes.xml b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/migrations/16.0.2.1.0/noupdate_changes.xml new file mode 100644 index 0000000..2d4c986 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/migrations/16.0.2.1.0/noupdate_changes.xml @@ -0,0 +1,10 @@ + + + + [ + ('maintenance_request_id.message_partner_ids', 'in', [user.partner_id.id]), + ('maintenance_request_id.user_id.id', '=', user.id) + ] + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/migrations/16.0.2.1.0/post-migration.py b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/migrations/16.0.2.1.0/post-migration.py new file mode 100644 index 0000000..348ca86 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/migrations/16.0.2.1.0/post-migration.py @@ -0,0 +1,10 @@ +# Copyright 2025 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): + openupgrade.load_data( + env.cr, "maintenance_timesheet", "migrations/16.0.2.1.0/noupdate_changes.xml" + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/__init__.py new file mode 100644 index 0000000..b7f7bd1 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/__init__.py @@ -0,0 +1,3 @@ +from . import hr_timesheet +from . import maintenance_equipment +from . import maintenance_request diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/hr_timesheet.py b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/hr_timesheet.py new file mode 100644 index 0000000..491102e --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/hr_timesheet.py @@ -0,0 +1,57 @@ +# © 2019 Solvos Consultoría Informática () +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class AccountAnalyticLine(models.Model): + _inherit = "account.analytic.line" + + maintenance_request_id = fields.Many2one(comodel_name="maintenance.request") + + @api.onchange("maintenance_request_id") + def onchange_maintenance_request_id(self): + if self.maintenance_request_id and not self.project_id: + self.project_id = self.maintenance_request_id.project_id + self.task_id = self.maintenance_request_id.task_id + + @api.model_create_multi + def create(self, vals_list): + maintenance_request_ids = [ + vals.get("maintenance_request_id") + for vals in vals_list + if vals.get("maintenance_request_id") + ] + self._check_request_done(maintenance_request_ids) + return super().create(vals_list) + + def write(self, values): + current_request = self.maintenance_request_id + new_request_id = values.get("maintenance_request_id", False) + if current_request: + self._check_request_done(current_request.id) + if new_request_id: + self._check_request_done(new_request_id) + return super().write(values) + + def unlink(self): + self._check_request_done( + self.filtered(lambda x: x.maintenance_request_id).maintenance_request_id.ids + ) + return super().unlink() + + def _check_request_done(self, request_id: int | list[int]): + """ + Editing a timesheet related to a finished request is forbidden. + """ + request_ids = [request_id] if isinstance(request_id, int) else request_id + if any( + self.env["maintenance.request"].browse(request_ids).stage_id.mapped("done") + ): + raise ValidationError( + _( + "Cannot save or delete a timesheet for " + "a maintenance request already done" + ) + ) diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/maintenance_equipment.py b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/maintenance_equipment.py new file mode 100644 index 0000000..4b63546 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/maintenance_equipment.py @@ -0,0 +1,13 @@ +# Copyright 2019 Solvos Consultoría Informática () +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import models + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + def _prepare_project_from_equipment_values(self): + data = super()._prepare_project_from_equipment_values() + data["allow_timesheets"] = True + return data diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/maintenance_request.py b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/maintenance_request.py new file mode 100644 index 0000000..43b68a0 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/models/maintenance_request.py @@ -0,0 +1,82 @@ +# © 2019 Solvos Consultoría Informática () +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import api, fields, models + + +class MaintenanceRequest(models.Model): + _inherit = "maintenance.request" + + timesheet_ids = fields.One2many( + string="Timesheets", + comodel_name="account.analytic.line", + inverse_name="maintenance_request_id", + ) + timesheet_total_hours = fields.Float( + compute="_compute_timesheet_total_hours", readonly=True, store=True + ) + planned_hours = fields.Float(tracking=True) + progress = fields.Float( + compute="_compute_progress_hours", + group_operator="avg", + store=True, + ) + remaining_hours = fields.Float( + compute="_compute_progress_hours", + readonly=True, + store=True, + ) + + @api.depends("planned_hours", "timesheet_total_hours") + def _compute_progress_hours(self): + for item in self: + item.progress = 0.0 + if item.planned_hours > 0.0: + if item.timesheet_total_hours > item.planned_hours: + item.progress = 100 + else: + item.progress = round( + 100.0 * item.timesheet_total_hours / item.planned_hours, 2 + ) + item.remaining_hours = item.planned_hours - item.timesheet_total_hours + + def _add_followers(self): + """ + Members of maintenance team are included as followers to automatically + grant request visibility and timesheet permissions for this request + """ + res = super()._add_followers() + for request in self: + partner_ids = request.maintenance_team_id.member_ids.mapped( + "partner_id" + ).ids + request.message_subscribe(partner_ids=partner_ids) + return res + + @api.depends("timesheet_ids.unit_amount") + def _compute_timesheet_total_hours(self): + for request in self: + request.timesheet_total_hours = sum( + request.timesheet_ids.mapped("unit_amount") + ) + + def action_view_timesheet_ids(self): + """ + Access to the current timesheets for this maintenance request + The view will be restricted to the current request and only HR managers + could create timesheets for every employee + """ + self.ensure_one() + action = self.env["ir.actions.act_window"]._for_xml_id( + "maintenance_timesheet.timesheet_action_from_request" + ) + action["domain"] = [("maintenance_request_id", "=", self.id)] + action["context"] = { + "default_project_id": self.project_id.id, + "default_task_id": self.task_id.id, + "default_maintenance_request_id": self.id, + "readonly_employee_id": not self.env.user.has_group( + "hr_timesheet.group_timesheet_manager" + ), + } + return action diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..53baceb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* David Alonso +* Luisa Miguéns +* Christian Ramos diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/readme/DESCRIPTION.rst new file mode 100644 index 0000000..6bfcb8a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds timesheets to a request. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/report/maintenance_request_report.xml b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/report/maintenance_request_report.xml new file mode 100644 index 0000000..a9d079a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/report/maintenance_request_report.xml @@ -0,0 +1,97 @@ + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/security/maintenance_timesheet_security.xml b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/security/maintenance_timesheet_security.xml new file mode 100644 index 0000000..03cbeaa --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/security/maintenance_timesheet_security.xml @@ -0,0 +1,28 @@ + + + + Users are allowed to access timesheets related to a followed request + + [ + ('maintenance_request_id.message_partner_ids', 'in', [user.partner_id.id]), + ('maintenance_request_id.user_id.id', '=', user.id) + ] + + + + + Managers are allowed to access timesheets related to any request + + + [('maintenance_request_id', '!=', False)] + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/static/description/index.html new file mode 100644 index 0000000..ac4b1a2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/static/description/index.html @@ -0,0 +1,431 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Maintenance Timesheets

+ +

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

+

This module adds timesheets to a request.

+

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

+
    +
  • Solvos
  • +
+
+
+

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/maintenance 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-maintenance-maintenance_timesheet/maintenance_timesheet/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/tests/__init__.py new file mode 100644 index 0000000..2c3cdf5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/tests/__init__.py @@ -0,0 +1 @@ +from . import test_maintenance_timesheet diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/tests/test_maintenance_timesheet.py b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/tests/test_maintenance_timesheet.py new file mode 100644 index 0000000..a8a4c60 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/tests/test_maintenance_timesheet.py @@ -0,0 +1,107 @@ +# Copyright 2019 Solvos Consultoría Informática () +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import fields +from odoo.exceptions import ValidationError +from odoo.tests.common import TransactionCase + + +class TestMaintenanceTimesheet(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.stage_undone = cls.env.ref("maintenance.stage_0") + cls.stage_done = cls.env.ref("maintenance.stage_4") + + cls.request_demo1 = cls.env.ref("maintenance_timesheet.request_1") + cls.request2 = cls.env["maintenance.request"].create( + { + "name": "Corrective #2 for Generic Monitor", + "equipment_id": cls.env.ref("maintenance_project.equipment_1").id, + "user_id": cls.env.ref("base.user_admin").id, + "schedule_date": fields.Date.today(), + "stage_id": cls.stage_undone.id, + "maintenance_type": "corrective", + } + ) + cls.timesheet21_data = { + "name": "Some tasks done", + "project_id": cls.request2.project_id.id, + "user_id": cls.env.ref("base.user_admin").id, + "date": fields.Date.today(), + "unit_amount": 1.5, + } + cls.request2.timesheet_ids = [(0, 0, cls.timesheet21_data)] + + def test_request_timesheets(self): + self.assertEqual(self.request_demo1.timesheet_total_hours, 2) + self.assertEqual( + self.request2.timesheet_total_hours, self.timesheet21_data["unit_amount"] + ) + + def test_onchange_maintenance_request_id(self): + ts1 = self.env["account.analytic.line"].new( + { + "date": fields.Date.today(), + "name": "Timesheet without initial equipment", + "user_id": self.env.ref("base.user_admin").id, + } + ) + self.assertFalse(ts1.project_id) + ts1.maintenance_request_id = self.request2 + ts1.onchange_maintenance_request_id() + self.assertEqual(ts1.project_id, self.request2.project_id) + + def test_check_request_done(self): + self.request2.stage_id = self.stage_done + with self.assertRaises(ValidationError): + self.request2.timesheet_ids = [ + ( + 0, + 0, + { + "name": "Attempt to create a task for a done request", + "project_id": self.request2.project_id.id, + "user_id": self.env.ref("base.user_admin").id, + "date": fields.Date.today(), + "unit_amount": 2, + }, + ) + ] + with self.assertRaises(ValidationError): + self.env["account.analytic.line"].create( + { + "name": "Attepting to create a task 2", + "project_id": self.request2.project_id.id, + "user_id": self.env.ref("base.user_admin").id, + "maintenance_request_id": self.request2.id, + "date": fields.Date.today(), + "unit_amount": 1, + } + ) + with self.assertRaises(ValidationError): + # Attempt to modify a timesheet related a done request + for timesheet in self.request2.timesheet_ids: + timesheet.unit_amount += 1 + with self.assertRaises(ValidationError): + # Attempt to delete a timesheet related a done request + self.request2.timesheet_ids.unlink() + + self.request2.stage_id = self.stage_undone + # Deleting timesheets is enabled again + self.request2.timesheet_ids.unlink() + + def test_action_view_timesheet_ids(self): + act1 = self.request2.action_view_timesheet_ids() + self.assertEqual(act1["domain"][0][2], self.request2.id) + self.assertEqual( + act1["context"]["default_project_id"], self.request2.project_id.id + ) + self.assertFalse(act1["context"]["default_task_id"]) + self.assertFalse(act1["context"]["readonly_employee_id"]) + + def test_prepare_project_from_equipment_values(self): + equipment = self.env["maintenance.equipment"].create({"name": "Test equipment"}) + equipment.action_create_project() + self.assertTrue(equipment.project_id.allow_timesheets) diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/views/hr_timesheet_views.xml b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/views/hr_timesheet_views.xml new file mode 100644 index 0000000..9f69490 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/views/hr_timesheet_views.xml @@ -0,0 +1,52 @@ + + + + account.analytic.line + + + + + + + + + + + + account.analytic.line + + + + + + + + + account.analytic.line + + + + context.get('readonly_employee_id', False) + + + + + account.analytic.line + + + + + + + + diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/views/maintenance_request_views.xml b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/views/maintenance_request_views.xml new file mode 100644 index 0000000..e46cb60 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/maintenance_timesheet/views/maintenance_request_views.xml @@ -0,0 +1,159 @@ + + + + Timesheets + account.analytic.line + + [('project_id', '!=', False), ('maintenance_request_id', '!=', False)] + + + + tree + + + + + + form + + + + + + maintenance.request + + + + + + + + + maintenance.request + + + + + + + +
+ + + + + Hours +
+
+
+
+
+ + maintenance.request + + + + + + + + + maintenance.request + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+
+ + + + +
+
+
+
+
diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet/pyproject.toml b/odoo-bringout-oca-maintenance-maintenance_timesheet/pyproject.toml new file mode 100644 index 0000000..8a6728a --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet/pyproject.toml @@ -0,0 +1,44 @@ +[project] +name = "odoo-bringout-oca-maintenance-maintenance_timesheet" +version = "16.0.0" +description = "Maintenance Timesheets - Adds timesheets to maintenance requests" +authors = [ + { name = "Ernad Husremovic", email = "hernad@bring.out.ba" } +] +dependencies = [ + "odoo-bringout-oca-maintenance-base_maintenance>=16.0.0", + "odoo-bringout-oca-maintenance-maintenance_project>=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 = ["maintenance_timesheet"] + +[tool.rye] +managed = true +dev-dependencies = [ + "pytest>=8.4.1", +] diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/README.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/README.md new file mode 100644 index 0000000..d324a04 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/README.md @@ -0,0 +1,45 @@ +# Maintenance Timesheets Time Control + +Odoo addon: maintenance_timesheet_time_control + +## Installation + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_timesheet_time_control +``` + +## Dependencies + +This addon depends on: +- maintenance_timesheet +- project_timesheet_time_control + +## Manifest Information + +- **Name**: Maintenance Timesheets Time Control +- **Version**: 16.0.1.0.0 +- **Category**: Hidden +- **License**: AGPL-3 +- **Installable**: False + +## Source + +Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_timesheet_time_control`. + +## 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 +- 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-maintenance-maintenance_timesheet_time_control/doc/ARCHITECTURE.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/ARCHITECTURE.md new file mode 100644 index 0000000..e5268c3 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/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 Maintenance_timesheet_time_control Module - maintenance_timesheet_time_control + 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-maintenance-maintenance_timesheet_time_control/doc/CONFIGURATION.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/CONFIGURATION.md new file mode 100644 index 0000000..670e246 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/CONFIGURATION.md @@ -0,0 +1,3 @@ +# Configuration + +Refer to Odoo settings for maintenance_timesheet_time_control. Configure related models, access rights, and options as needed. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/CONTROLLERS.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/CONTROLLERS.md new file mode 100644 index 0000000..f628e77 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/CONTROLLERS.md @@ -0,0 +1,3 @@ +# Controllers + +This module does not define custom HTTP controllers. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/DEPENDENCIES.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/DEPENDENCIES.md new file mode 100644 index 0000000..9f2ffc9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/DEPENDENCIES.md @@ -0,0 +1,6 @@ +# Dependencies + +This addon depends on: + +- [maintenance_timesheet](https://github.com/bringout/oca-technical) +- [project_timesheet_time_control](https://github.com/bringout/oca-workflow-process) diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/FAQ.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/FAQ.md new file mode 100644 index 0000000..5dc6797 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/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 maintenance_timesheet_time_control or install in UI. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/INSTALL.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/INSTALL.md new file mode 100644 index 0000000..1466bbf --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/INSTALL.md @@ -0,0 +1,7 @@ +# Install + +```bash +pip install odoo-bringout-oca-maintenance-maintenance_timesheet_time_control" +# or +uv pip install odoo-bringout-oca-maintenance-maintenance_timesheet_time_control" +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/MODELS.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/MODELS.md new file mode 100644 index 0000000..3f12eb7 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/MODELS.md @@ -0,0 +1,12 @@ +# Models + +Detected core models and extensions in maintenance_timesheet_time_control. + +```mermaid +classDiagram + class maintenance_request +``` + +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-maintenance-maintenance_timesheet_time_control/doc/OVERVIEW.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/OVERVIEW.md new file mode 100644 index 0000000..a3133bf --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/OVERVIEW.md @@ -0,0 +1,6 @@ +# Overview + +Packaged Odoo addon: maintenance_timesheet_time_control. Provides features documented in upstream Odoo 16 under this addon. + +- Source: OCA/OCB 16.0, addon maintenance_timesheet_time_control +- License: LGPL-3 diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/REPORTS.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/REPORTS.md new file mode 100644 index 0000000..e0ea35f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/REPORTS.md @@ -0,0 +1,3 @@ +# Reports + +This module does not define custom reports. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/SECURITY.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/SECURITY.md new file mode 100644 index 0000000..e07da9d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/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-maintenance-maintenance_timesheet_time_control/doc/TROUBLESHOOTING.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/TROUBLESHOOTING.md new file mode 100644 index 0000000..56853cb --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/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-maintenance-maintenance_timesheet_time_control/doc/USAGE.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/USAGE.md new file mode 100644 index 0000000..7ff175c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/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 maintenance_timesheet_time_control +``` diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/WIZARDS.md b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/WIZARDS.md new file mode 100644 index 0000000..48e790d --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/doc/WIZARDS.md @@ -0,0 +1,3 @@ +# Wizards + +This module does not include UI wizards. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/README.rst b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/README.rst new file mode 100644 index 0000000..2de4bea --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/README.rst @@ -0,0 +1,126 @@ +=================================== +Maintenance Timesheets Time Control +=================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:999ce7cd27b56d7796c9594d15f4413473560b6e533bdd0fdcb842b877b2370d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_timesheet_time_control + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_timesheet_time_control + :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/maintenance&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +It allows to track the exact moment when a timesheet line is started (not only +the day, but also the minute and second) and let users start and stop timers +easily. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +This module is auto-installed when ``maintenance_timesheet`` and ``project_timesheet_time_control`` are +installed. + +This module depends on modules found in these repositories: + +* `OCA/timesheet `__ +* `OCA/web `__ +* `OCA/project `__ + +Configuration +============= + +Maintenance request must have a project defined for seeing the start/stop buttons. + +Usage +===== + +In general the usage instructions from ``project_timesheet_time_control`` apply with the following additions. + +Via maintenance requests: + +#. Go to *Maintenance > Maintenance > Maintenance Requests*. +#. If a request has a running timesheet line, it will display a *Stop* button. +#. Other requests that have enabled timesheets will display a *Start* button + that will open the same wizard as the timesheet lines, duplicating task's + last timesheet line. +#. You can see the same in list view. +#. Click on any existing request or create a new one. +#. You can see the same feature in the action buttons box. + +Note: All the *Start/Resume/Stop* features are disabled if you don't belong to +the *Timesheets/User* group or if you are viewing a timesheet that belongs +to another 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 `_: + + * 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/maintenance `_ 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-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/__init__.py b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/__init__.py new file mode 100644 index 0000000..aee8895 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizards diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/__manifest__.py b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/__manifest__.py new file mode 100644 index 0000000..a8d0195 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Timesheets Time Control", + "summary": "Maintenance Timesheets Timesheet Time Control", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "category": "Hidden", + "author": "Tecnativa,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance_timesheet", "project_timesheet_time_control"], + "data": ["views/maintenance_request_view.xml"], + "auto_install": True, + "maintainers": ["victoralmau"], +} diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/bs.po b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/bs.po new file mode 100644 index 0000000..b38289f --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/bs.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_timesheet_time_control +# +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: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +msgid "Date" +msgstr "Datum" + +#. module: maintenance_timesheet_time_control +#: model:ir.model,name:maintenance_timesheet_time_control.model_hr_timesheet_switch +msgid "Helper to quickly switch between timesheet lines" +msgstr "Pomoć za vrže prebacivanje između linija" + +#. module: maintenance_timesheet_time_control +#: model:ir.model.fields,help:maintenance_timesheet_time_control.field_maintenance_request__show_time_control +msgid "Indicate which time control button to show, if any." +msgstr "Kontoliraj koji gumb će se prikazati." + +#. module: maintenance_timesheet_time_control +#: model:ir.model,name:maintenance_timesheet_time_control.model_maintenance_request +msgid "Maintenance Request" +msgstr "Zahtjev za održavanje" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +msgid "Resume work" +msgstr "Nastavi rad" + +#. module: maintenance_timesheet_time_control +#: model:ir.model.fields,field_description:maintenance_timesheet_time_control.field_maintenance_request__show_time_control +msgid "Show Time Control" +msgstr "Prikaži kontrole vremena" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_tree +msgid "Start work" +msgstr "Pokreni rad" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_tree +msgid "Stop work" +msgstr "Zaustavi rad" diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/es.po b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/es.po new file mode 100644 index 0000000..bf4566c --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/es.po @@ -0,0 +1,63 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_timesheet_time_control +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-12-21 10:34+0000\n" +"PO-Revision-Date: 2023-07-06 20:08+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: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +msgid "Date" +msgstr "Fecha" + +#. module: maintenance_timesheet_time_control +#: model:ir.model,name:maintenance_timesheet_time_control.model_hr_timesheet_switch +msgid "Helper to quickly switch between timesheet lines" +msgstr "Ayudante para cambiar rápidamente de línea del parte de horas" + +#. module: maintenance_timesheet_time_control +#: model:ir.model.fields,help:maintenance_timesheet_time_control.field_maintenance_request__show_time_control +msgid "Indicate which time control button to show, if any." +msgstr "Indicar qué botón de control de tiempo se debe mostrar, si lo hay." + +#. module: maintenance_timesheet_time_control +#: model:ir.model,name:maintenance_timesheet_time_control.model_maintenance_request +msgid "Maintenance Request" +msgstr "Petición de mantenimiento" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +msgid "Resume work" +msgstr "Resumen del trabajo" + +#. module: maintenance_timesheet_time_control +#: model:ir.model.fields,field_description:maintenance_timesheet_time_control.field_maintenance_request__show_time_control +msgid "Show Time Control" +msgstr "Mostrar control de tiempo" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_tree +msgid "Start work" +msgstr "Iniciar trabajo" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_tree +msgid "Stop work" +msgstr "Detener trabajo" diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/it.po b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/it.po new file mode 100644 index 0000000..05afc15 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/it.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_timesheet_time_control +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-12-31 16: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: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +msgid "Date" +msgstr "Data" + +#. module: maintenance_timesheet_time_control +#: model:ir.model,name:maintenance_timesheet_time_control.model_hr_timesheet_switch +msgid "Helper to quickly switch between timesheet lines" +msgstr "Assistente per spostarsi velocemente tra righe del foglio ore" + +#. module: maintenance_timesheet_time_control +#: model:ir.model.fields,help:maintenance_timesheet_time_control.field_maintenance_request__show_time_control +msgid "Indicate which time control button to show, if any." +msgstr "Indica se e quale pulsante di controllo tempo visualizzare." + +#. module: maintenance_timesheet_time_control +#: model:ir.model,name:maintenance_timesheet_time_control.model_maintenance_request +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +msgid "Resume work" +msgstr "Riprendi lavoro" + +#. module: maintenance_timesheet_time_control +#: model:ir.model.fields,field_description:maintenance_timesheet_time_control.field_maintenance_request__show_time_control +msgid "Show Time Control" +msgstr "Visualizza controllo orario" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_tree +msgid "Start work" +msgstr "Avvia lavoro" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_tree +msgid "Stop work" +msgstr "Ferma lavoro" diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/maintenance_timesheet_time_control.pot b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/maintenance_timesheet_time_control.pot new file mode 100644 index 0000000..f83d1d5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/i18n/maintenance_timesheet_time_control.pot @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_timesheet_time_control +# +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: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +msgid "Date" +msgstr "" + +#. module: maintenance_timesheet_time_control +#: model:ir.model,name:maintenance_timesheet_time_control.model_hr_timesheet_switch +msgid "Helper to quickly switch between timesheet lines" +msgstr "" + +#. module: maintenance_timesheet_time_control +#: model:ir.model.fields,help:maintenance_timesheet_time_control.field_maintenance_request__show_time_control +msgid "Indicate which time control button to show, if any." +msgstr "" + +#. module: maintenance_timesheet_time_control +#: model:ir.model,name:maintenance_timesheet_time_control.model_maintenance_request +msgid "Maintenance Request" +msgstr "" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +msgid "Resume work" +msgstr "" + +#. module: maintenance_timesheet_time_control +#: model:ir.model.fields,field_description:maintenance_timesheet_time_control.field_maintenance_request__show_time_control +msgid "Show Time Control" +msgstr "" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_tree +msgid "Start work" +msgstr "" + +#. module: maintenance_timesheet_time_control +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_form +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_kanban +#: model_terms:ir.ui.view,arch_db:maintenance_timesheet_time_control.hr_equipment_request_view_tree +msgid "Stop work" +msgstr "" diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/models/__init__.py b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/models/__init__.py new file mode 100644 index 0000000..df8c9b5 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/models/__init__.py @@ -0,0 +1 @@ +from . import maintenance_request diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/models/maintenance_request.py b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/models/maintenance_request.py new file mode 100644 index 0000000..cf5e70b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/models/maintenance_request.py @@ -0,0 +1,34 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class MaintenanceRequest(models.Model): + _name = "maintenance.request" + _inherit = ["maintenance.request", "hr.timesheet.time_control.mixin"] + + @api.model + def _relation_with_timesheet_line(self): + return "maintenance_request_id" + + @api.depends( + "project_id.allow_timesheets", + "timesheet_ids.employee_id", + "timesheet_ids.unit_amount", + ) + def _compute_show_time_control(self): + result = super()._compute_show_time_control() + for item in self.filtered(lambda x: not x.project_id.allow_timesheets): + item.show_time_control = False + return result + + def button_start_work(self): + result = super().button_start_work() + result["context"].update( + { + "default_project_id": self.project_id.id, + "default_task_id": self.task_id.id, + } + ) + return result diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/CONFIGURE.rst b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/CONFIGURE.rst new file mode 100644 index 0000000..d3fda16 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/CONFIGURE.rst @@ -0,0 +1 @@ +Maintenance request must have a project defined for seeing the start/stop buttons. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/CONTRIBUTORS.rst b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..5fb7130 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/DESCRIPTION.rst b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/DESCRIPTION.rst new file mode 100644 index 0000000..ae06ae9 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +It allows to track the exact moment when a timesheet line is started (not only +the day, but also the minute and second) and let users start and stop timers +easily. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/INSTALL.rst b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/INSTALL.rst new file mode 100644 index 0000000..97dfcda --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/INSTALL.rst @@ -0,0 +1,8 @@ +This module is auto-installed when ``maintenance_timesheet`` and ``project_timesheet_time_control`` are +installed. + +This module depends on modules found in these repositories: + +* `OCA/timesheet `__ +* `OCA/web `__ +* `OCA/project `__ diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/USAGE.rst b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/USAGE.rst new file mode 100644 index 0000000..a8ba28b --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/readme/USAGE.rst @@ -0,0 +1,16 @@ +In general the usage instructions from ``project_timesheet_time_control`` apply with the following additions. + +Via maintenance requests: + +#. Go to *Maintenance > Maintenance > Maintenance Requests*. +#. If a request has a running timesheet line, it will display a *Stop* button. +#. Other requests that have enabled timesheets will display a *Start* button + that will open the same wizard as the timesheet lines, duplicating task's + last timesheet line. +#. You can see the same in list view. +#. Click on any existing request or create a new one. +#. You can see the same feature in the action buttons box. + +Note: All the *Start/Resume/Stop* features are disabled if you don't belong to +the *Timesheets/User* group or if you are viewing a timesheet that belongs +to another user. diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/static/description/icon.png b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/static/description/icon.png differ diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/static/description/index.html b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/static/description/index.html new file mode 100644 index 0000000..e8c0318 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/static/description/index.html @@ -0,0 +1,465 @@ + + + + + + +Maintenance Timesheets Time Control + + + +
+

Maintenance Timesheets Time Control

+ + +

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

+

It allows to track the exact moment when a timesheet line is started (not only +the day, but also the minute and second) and let users start and stop timers +easily.

+

Table of contents

+ +
+

Installation

+

This module is auto-installed when maintenance_timesheet and project_timesheet_time_control are +installed.

+

This module depends on modules found in these repositories:

+ +
+
+

Configuration

+

Maintenance request must have a project defined for seeing the start/stop buttons.

+
+
+

Usage

+

In general the usage instructions from project_timesheet_time_control apply with the following additions.

+

Via maintenance requests:

+
    +
  1. Go to Maintenance > Maintenance > Maintenance Requests.
  2. +
  3. If a request has a running timesheet line, it will display a Stop button.
  4. +
  5. Other requests that have enabled timesheets will display a Start button +that will open the same wizard as the timesheet lines, duplicating task’s +last timesheet line.
  6. +
  7. You can see the same in list view.
  8. +
  9. Click on any existing request or create a new one.
  10. +
  11. You can see the same feature in the action buttons box.
  12. +
+

Note: All the Start/Resume/Stop features are disabled if you don’t belong to +the Timesheets/User group or if you are viewing a timesheet that belongs +to another 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:
      +
    • 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/maintenance 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-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/tests/__init__.py b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/tests/__init__.py new file mode 100644 index 0000000..83469cf --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0 + +from . import test_maintenance_timesheet_time_control diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/tests/test_maintenance_timesheet_time_control.py b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/tests/test_maintenance_timesheet_time_control.py new file mode 100644 index 0000000..bae3263 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/tests/test_maintenance_timesheet_time_control.py @@ -0,0 +1,96 @@ +# Copyright 2022-2024 Tecnativa - Víctor Martínez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0 + +from datetime import datetime, timedelta + +from odoo import exceptions +from odoo.tests import new_test_user, users + +from odoo.addons.base.tests.common import BaseCommon + + +class TestMaintenanceTimesheetTimeControl(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.user = new_test_user( + cls.env, + login="test-maintenance-user", + groups="maintenance.group_equipment_manager," + "hr_timesheet.group_hr_timesheet_user", + ) + cls.user.action_create_employee() + cls.project = cls.env["project.project"].create( + {"name": "Test project", "allow_timesheets": True} + ) + cls.category = cls.env["maintenance.equipment.category"].create( + {"name": "Test category"} + ) + cls.team = cls.env["maintenance.team"].create({"name": "Test team"}) + cls.equipment = cls.env["maintenance.equipment"].create( + { + "name": "Test computer", + "category_id": cls.category.id, + "project_id": cls.project.id, + "maintenance_team_id": cls.team.id, + } + ) + + def _create_analytic_line(self, request): + return self.env["account.analytic.line"].create( + { + "date_time": datetime.now() - timedelta(hours=1), + "maintenance_request_id": request.id, + "project_id": request.project_id.id, + "account_id": request.project_id.analytic_account_id.id, + "name": "Test Maintenance Request Timesheet line", + "user_id": self.env.user.id, + } + ) + + def _create_wizard(self, action, active_record): + self.assertEqual(action["res_model"], "hr.timesheet.switch") + self.assertEqual(action["target"], "new") + self.assertEqual(action["type"], "ir.actions.act_window") + self.assertEqual(action["view_mode"], "form") + return ( + active_record.env[action["res_model"]] + .with_context( + active_id=active_record.id, + active_ids=active_record.ids, + active_model=active_record._name, + **action.get("context", {}), + ) + .create({}) + ) + + @users("test-maintenance-user") + def test_maintenance_request_time_control_flow(self): + request = self.env["maintenance.request"].create( + {"name": "Test computer request", "equipment_id": self.equipment.id} + ) + analytic_line = self._create_analytic_line(request) + # Running line found, stop the timer + self.assertEqual(request.show_time_control, "stop") + request.button_end_work() + # No more running lines, cannot stop again + with self.assertRaises(exceptions.UserError): + request.button_end_work() + # All lines stopped, start new one + self.assertEqual(request.show_time_control, "start") + start_action = request.button_start_work() + wizard = self._create_wizard(start_action, request) + self.assertLessEqual(wizard.date_time, datetime.now()) + self.assertEqual(wizard.name, analytic_line.name) + self.assertEqual(wizard.project_id, request.project_id) + self.assertEqual( + wizard.analytic_line_id.account_id, request.project_id.analytic_account_id + ) + self.assertEqual(wizard.analytic_line_id, analytic_line) + new_act = wizard.with_context(show_created_timer=True).action_switch() + new_line = self.env[new_act["res_model"]].browse(new_act["res_id"]) + self.assertEqual(new_line.employee_id, self.env.user.employee_id) + self.assertEqual(new_line.project_id, self.project) + self.assertEqual(new_line.maintenance_request_id, request) + self.assertEqual(new_line.unit_amount, 0) + self.assertTrue(analytic_line.unit_amount) diff --git a/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/views/maintenance_request_view.xml b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/views/maintenance_request_view.xml new file mode 100644 index 0000000..977e2a2 --- /dev/null +++ b/odoo-bringout-oca-maintenance-maintenance_timesheet_time_control/maintenance_timesheet_time_control/views/maintenance_request_view.xml @@ -0,0 +1,168 @@ + + + + hr.maintenance.request.form (in maintenance_timesheet_time_control) + maintenance.request + + +
+ +
+
+
+ + maintenance.request.form (in maintenance_timesheet_time_control) + maintenance.request + + + + + 1 + + + + + + +