diff --git a/fieldservice_maintenance/README.rst b/fieldservice_maintenance/README.rst new file mode 100644 index 0000000000..a2f4be10a5 --- /dev/null +++ b/fieldservice_maintenance/README.rst @@ -0,0 +1,147 @@ +=========================== +Field Service - Maintenance +=========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:97071c6df4c5a8e5a686d02c2c2e436032d1400a891458cf9c5e532a9891802c + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Ffield--service-lightgray.png?logo=github + :target: https://github.com/OCA/field-service/tree/18.0/fieldservice_maintenance + :alt: OCA/field-service +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/field-service-18-0/field-service-18-0-fieldservice_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/field-service&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Odoo Maintenance App does not support Field Service operations for +equipments outside the company facilities. On the other hand, the Field +Service App does not support a maintenance schedule generating +preventive maintenance request. + +This module allows you to merge equipments from Field Service and +Maintenance and have a maintenance schedule for FSM equipments as well +as Field Service capabilities for maintenance equipments. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +To install Field Service and have the mapping features, you need to +install fieldservice_stock and maintenance + +Please refer to the installation instructions available at: +https://github.com/OCA/field-service/tree/14.0/fieldservice_maintenance + +Configuration +============= + +To use this module, you need to: + +- Go to Field Service > Master Data > Equipments or Maintenance > + Equipments +- Create or select an equipment +- Specify the maintenance schedule + +Usage +===== + +To use this module, you need to: + +- Maintenance requests related to a FSM equipment will create a FSM + order +- Go to Field Service +- Create or select a FSM order and select the type Maintenance. +- Select the maintenance team, the equipment and the location +- Upon saving, a maintenance request will be created with the + information from the FSM order. + +Known issues / Roadmap +====================== + +The roadmap of the Field Service application is documented on +`Github `__. + +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 +------- + +* Open Source Integrators + +Contributors +------------ + +- Sandip Mangukiya +- Serpent Consulting Services Pvt. Ltd. +- Bhavesh Odedra +- Marcel Savegnago - Escodoo +- Brian McMaster + +Other credits +------------- + +The development of this module has been financially supported by: + +- Open Source Integrators + <`https://opensourceintegrators.com\\> >`__ + +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-smangukiya| image:: https://github.com/smangukiya.png?size=40px + :target: https://github.com/smangukiya + :alt: smangukiya +.. |maintainer-max3903| image:: https://github.com/max3903.png?size=40px + :target: https://github.com/max3903 + :alt: max3903 +.. |maintainer-bodedra| image:: https://github.com/bodedra.png?size=40px + :target: https://github.com/bodedra + :alt: bodedra + +Current `maintainers `__: + +|maintainer-smangukiya| |maintainer-max3903| |maintainer-bodedra| + +This module is part of the `OCA/field-service `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fieldservice_maintenance/__init__.py b/fieldservice_maintenance/__init__.py new file mode 100644 index 0000000000..726bcc73ab --- /dev/null +++ b/fieldservice_maintenance/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2018 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import models +from .hooks import pre_init_hook diff --git a/fieldservice_maintenance/__manifest__.py b/fieldservice_maintenance/__manifest__.py new file mode 100644 index 0000000000..0672cf88a8 --- /dev/null +++ b/fieldservice_maintenance/__manifest__.py @@ -0,0 +1,31 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Field Service - Maintenance", + "summary": "Integrate Field Service orders with maintenance requests", + "version": "18.0.1.0.0", + "category": "Field Service", + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/field-service", + "depends": [ + "fieldservice", + "maintenance", + ], + "data": [ + "data/fsm_order_type.xml", + "views/maintenance_equipment_view.xml", + "views/maintenance_request_view.xml", + "views/fsm_equipment_view.xml", + "views/fsm_order_view.xml", + ], + "pre_init_hook": "pre_init_hook", + "license": "AGPL-3", + "development_status": "Beta", + "maintainers": [ + "smangukiya", + "max3903", + "bodedra", + ], + "installable": True, +} diff --git a/fieldservice_maintenance/data/fsm_order_type.xml b/fieldservice_maintenance/data/fsm_order_type.xml new file mode 100644 index 0000000000..9faa39564a --- /dev/null +++ b/fieldservice_maintenance/data/fsm_order_type.xml @@ -0,0 +1,7 @@ + + + + Maintenance + maintenance + + diff --git a/fieldservice_maintenance/hooks.py b/fieldservice_maintenance/hooks.py new file mode 100644 index 0000000000..ff834f876d --- /dev/null +++ b/fieldservice_maintenance/hooks.py @@ -0,0 +1,49 @@ +# Copyright (C) 2020 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +def pre_init_hook(env): + # Check for existing fsm equipments + env.cr.execute("SELECT * FROM fsm_equipment") + equipments = [] + equipments = env.cr.dictfetchall() + if equipments: + # Add new columns to hold values + env.cr.execute( + """ALTER TABLE fsm_equipment + ADD maintenance_equipment_id INT;""" + ) + env.cr.execute( + """ALTER TABLE maintenance_equipment + ADD is_fsm_equipment BOOLEAN;""" + ) + + # Create a new Maintenance equipment for each FSM equipment + for equipment in equipments: + env.cr.execute( + """INSERT INTO maintenance_equipment ( + name, + maintenance_team_id, + is_fsm_equipment, + effective_date, + active) + VALUES ( + %s, + 1, + True, + %s, + True);""", + (equipment.get("name"), equipment.get("create_date")), + ) + + # Set this new Maintenance equipment on the existing FSM equipment + env.cr.execute( + """UPDATE fsm_equipment + SET maintenance_equipment_id = ( + SELECT id + FROM maintenance_equipment + ORDER BY id desc + LIMIT 1) + WHERE id = %s;""", + (equipment.get("id"),), + ) diff --git a/fieldservice_maintenance/i18n/de.po b/fieldservice_maintenance/i18n/de.po new file mode 100644 index 0000000000..ada85a45a0 --- /dev/null +++ b/fieldservice_maintenance/i18n/de.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-11-26 17:58+0000\n" +"Last-Translator: Maria Sparenberg \n" +"Language-Team: none\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.8\n" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__display_name +msgid "Display Name" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_equipment +msgid "Field Service Equipment" +msgstr "Service-Equipment" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__fsm_order_id +msgid "Field Service Order" +msgstr "Field-Service-Auftrag" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order_type +#, fuzzy +msgid "Field Service Order Type" +msgstr "Field-Service-Auftrag" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__id +msgid "ID" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__internal_type +msgid "Internal Type" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__is_fsm_equipment +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__is_fsm_equipment +msgid "Is a FSM Equipment" +msgstr "Service-Equipment" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields.selection,name:fieldservice_maintenance.selection__fsm_order_type__internal_type__maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.fsm_equipment_form_view_maintenance +msgid "Maintenance" +msgstr "Wartung" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Wartungsequipment" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_request +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__request_id +msgid "Maintenance Request" +msgstr "Wartungsauftrag" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__display_name +msgid "Order" +msgstr "" + +#. module: fieldservice_maintenance +#: code:addons/fieldservice_maintenance/models/maintenance_request.py:0 +#, python-format +msgid "Order was not created because the equipment's location is not set" +msgstr "" + +#. module: fieldservice_maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.hr_equipment_view_form +msgid "Others" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_equipment_id +msgid "Related Maintenance Equipment" +msgstr "zugehöriges Wartungsequipment" diff --git a/fieldservice_maintenance/i18n/es.po b/fieldservice_maintenance/i18n/es.po new file mode 100644 index 0000000000..d940202d1f --- /dev/null +++ b/fieldservice_maintenance/i18n/es.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-02-23 18:36+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_equipment +msgid "Field Service Equipment" +msgstr "Equipo de Servicio de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__fsm_order_id +msgid "Field Service Order" +msgstr "Orden de Servicio de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order_type +msgid "Field Service Order Type" +msgstr "Tipo de Orden de Servicio de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__id +msgid "ID" +msgstr "ID" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__internal_type +msgid "Internal Type" +msgstr "Tipo Interno" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__is_fsm_equipment +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__is_fsm_equipment +msgid "Is a FSM Equipment" +msgstr "Es un Equipo FSM" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: fieldservice_maintenance +#: model:ir.model.fields.selection,name:fieldservice_maintenance.selection__fsm_order_type__internal_type__maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.fsm_equipment_form_view_maintenance +msgid "Maintenance" +msgstr "Mantenimiento" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Mantenimiento de Equipo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_request +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__request_id +msgid "Maintenance Request" +msgstr "Solicitud de Mantenimiento" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__display_name +msgid "Order" +msgstr "Pedido" + +#. module: fieldservice_maintenance +#: code:addons/fieldservice_maintenance/models/maintenance_request.py:0 +#, python-format +msgid "Order was not created because the equipment's location is not set" +msgstr "" +"El pedido no se ha creado porque no se ha establecido la ubicación del equipo" + +#. module: fieldservice_maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.hr_equipment_view_form +msgid "Others" +msgstr "Otros" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_equipment_id +msgid "Related Maintenance Equipment" +msgstr "Equipos de Mantenimiento Relacionados" diff --git a/fieldservice_maintenance/i18n/es_AR.po b/fieldservice_maintenance/i18n/es_AR.po new file mode 100644 index 0000000000..033eb79fd2 --- /dev/null +++ b/fieldservice_maintenance/i18n/es_AR.po @@ -0,0 +1,113 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-07 20:22+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_equipment +msgid "Field Service Equipment" +msgstr "Equipo de Servicio de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__fsm_order_id +msgid "Field Service Order" +msgstr "Pedido de Servicio de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order_type +msgid "Field Service Order Type" +msgstr "Tipo de Pedido de Servicio de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__id +msgid "ID" +msgstr "ID" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__internal_type +msgid "Internal Type" +msgstr "Tipo Interno" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__is_fsm_equipment +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__is_fsm_equipment +msgid "Is a FSM Equipment" +msgstr "Es un Equipo FSM" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: fieldservice_maintenance +#: model:ir.model.fields.selection,name:fieldservice_maintenance.selection__fsm_order_type__internal_type__maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.fsm_equipment_form_view_maintenance +msgid "Maintenance" +msgstr "Mantenimiento" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo de Mantenimiento" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_request +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__request_id +msgid "Maintenance Request" +msgstr "Solicitud de Mantenimiento" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__display_name +msgid "Order" +msgstr "Pedido" + +#. module: fieldservice_maintenance +#: code:addons/fieldservice_maintenance/models/maintenance_request.py:0 +#, python-format +msgid "Order was not created because the equipment's location is not set" +msgstr "" +"No se creó el pedido porque la ubicación del equipo no está configurada" + +#. module: fieldservice_maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.hr_equipment_view_form +msgid "Others" +msgstr "Otros" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_equipment_id +msgid "Related Maintenance Equipment" +msgstr "Equipo de Mantenimiento Relacionado" + +#, python-format +#~ msgid "Missing current location on FSM equipment %s" +#~ msgstr "Falta la ubicación actual en el Equipo FSM %s" diff --git a/fieldservice_maintenance/i18n/es_CL.po b/fieldservice_maintenance/i18n/es_CL.po new file mode 100644 index 0000000000..d6c15dc057 --- /dev/null +++ b/fieldservice_maintenance/i18n/es_CL.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-01-16 22:38+0000\n" +"Last-Translator: Nelson Ramírez Sánchez \n" +"Language-Team: none\n" +"Language: es_CL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__display_name +msgid "Display Name" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_equipment +msgid "Field Service Equipment" +msgstr "Equipo de Servicio de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__fsm_order_id +msgid "Field Service Order" +msgstr "Orden de servicio de campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order_type +#, fuzzy +msgid "Field Service Order Type" +msgstr "Orden de servicio de campo" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__id +msgid "ID" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__internal_type +msgid "Internal Type" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__is_fsm_equipment +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__is_fsm_equipment +msgid "Is a FSM Equipment" +msgstr "Es un equipo FSM" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields.selection,name:fieldservice_maintenance.selection__fsm_order_type__internal_type__maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.fsm_equipment_form_view_maintenance +msgid "Maintenance" +msgstr "Mantenimiento" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo de mantenimiento" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_request +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__request_id +msgid "Maintenance Request" +msgstr "Peticion de mantenimiento" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__display_name +msgid "Order" +msgstr "" + +#. module: fieldservice_maintenance +#: code:addons/fieldservice_maintenance/models/maintenance_request.py:0 +#, python-format +msgid "Order was not created because the equipment's location is not set" +msgstr "" + +#. module: fieldservice_maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.hr_equipment_view_form +msgid "Others" +msgstr "Otros" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_equipment_id +msgid "Related Maintenance Equipment" +msgstr "Equipos de mantenimiento relacionados" diff --git a/fieldservice_maintenance/i18n/fieldservice_maintenance.pot b/fieldservice_maintenance/i18n/fieldservice_maintenance.pot new file mode 100644 index 0000000000..983ccf83c5 --- /dev/null +++ b/fieldservice_maintenance/i18n/fieldservice_maintenance.pot @@ -0,0 +1,232 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.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: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__active +msgid "Active" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__assign_date +msgid "Assigned Date" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__department_id +msgid "Assigned Department" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__employee_id +msgid "Assigned Employee" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,help:fieldservice_maintenance.field_fsm_equipment__estimated_next_failure +msgid "Computed as Latest Failure Date + MTBF" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__cost +msgid "Cost" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_open_count +msgid "Current Maintenance" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__effective_date +msgid "Effective Date" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__category_id +msgid "Equipment Category" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__estimated_next_failure +msgid "Estimated time before next failure (in days)" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__expected_mtbf +msgid "Expected MTBF" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,help:fieldservice_maintenance.field_fsm_equipment__expected_mtbf +msgid "Expected Mean Time Between Failure" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_equipment +msgid "Field Service Equipment" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__fsm_order_id +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order_type +msgid "Field Service Order Type" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__internal_type +msgid "Internal Type" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__is_fsm_equipment +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__is_fsm_equipment +msgid "Is a FSM Equipment" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__latest_failure_date +msgid "Latest Failure Date" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__location +msgid "Location" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__mtbf +msgid "MTBF" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__mttr +msgid "MTTR" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_ids +#: model:ir.model.fields.selection,name:fieldservice_maintenance.selection__fsm_order_type__internal_type__maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.fsm_equipment_form_view_maintenance +msgid "Maintenance" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_count +msgid "Maintenance Count" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_request +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__request_id +msgid "Maintenance Request" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_team_id +msgid "Maintenance Team" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,help:fieldservice_maintenance.field_fsm_equipment__mtbf +msgid "" +"Mean Time Between Failure, computed based on done corrective maintenances." +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,help:fieldservice_maintenance.field_fsm_equipment__mttr +msgid "Mean Time To Repair" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__model +msgid "Model" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__note +msgid "Note" +msgstr "" + +#. module: fieldservice_maintenance +#. odoo-python +#: code:addons/fieldservice_maintenance/models/maintenance_request.py:0 +#, python-format +msgid "Order was not created because the equipment's location is not set" +msgstr "" + +#. module: fieldservice_maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.hr_equipment_view_form +msgid "Others" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__owner_user_id +msgid "Owner" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_equipment_id +msgid "Related Maintenance Equipment" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__scrap_date +msgid "Scrap Date" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__serial_no +msgid "Serial Number" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__technician_user_id +msgid "Technician" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,help:fieldservice_maintenance.field_fsm_equipment__effective_date +msgid "This date will be used to compute the Mean Time Between Failure." +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__equipment_assign_to +msgid "Used By" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__partner_id +msgid "Vendor" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__partner_ref +msgid "Vendor Reference" +msgstr "" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__warranty_date +msgid "Warranty Expiration Date" +msgstr "" diff --git a/fieldservice_maintenance/i18n/it.po b/fieldservice_maintenance/i18n/it.po new file mode 100644 index 0000000000..944a808eac --- /dev/null +++ b/fieldservice_maintenance/i18n/it.po @@ -0,0 +1,114 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-03-13 17:22+0000\n" +"Last-Translator: Sebastiano Picchi \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: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_equipment +msgid "Field Service Equipment" +msgstr "Attrezzatura assistenza sul campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__fsm_order_id +msgid "Field Service Order" +msgstr "Ordine assistenza sul campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order_type +msgid "Field Service Order Type" +msgstr "Tipo ordine assistenza sul campo" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__id +msgid "ID" +msgstr "ID" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__internal_type +msgid "Internal Type" +msgstr "Tipo interno" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__is_fsm_equipment +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__is_fsm_equipment +msgid "Is a FSM Equipment" +msgstr "È un'attrezzatura FSM" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: fieldservice_maintenance +#: model:ir.model.fields.selection,name:fieldservice_maintenance.selection__fsm_order_type__internal_type__maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.fsm_equipment_form_view_maintenance +msgid "Maintenance" +msgstr "Manutenzione" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_request +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__request_id +msgid "Maintenance Request" +msgstr "Richiesta manutenzione" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__display_name +msgid "Order" +msgstr "Ordine" + +#. module: fieldservice_maintenance +#: code:addons/fieldservice_maintenance/models/maintenance_request.py:0 +#, python-format +msgid "Order was not created because the equipment's location is not set" +msgstr "" +"L'Ordine non è stato creato perché la posizione dell'equipaggiamento non è " +"impostata" + +#. module: fieldservice_maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.hr_equipment_view_form +msgid "Others" +msgstr "Altre" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_equipment_id +msgid "Related Maintenance Equipment" +msgstr "Attrezzatura manutenzione collegata" + +#, python-format +#~ msgid "Missing current location on FSM equipment %s" +#~ msgstr "Località non trovata nell'attrezzatura FSM %s" diff --git a/fieldservice_maintenance/i18n/pt_BR.po b/fieldservice_maintenance/i18n/pt_BR.po new file mode 100644 index 0000000000..782dd8be27 --- /dev/null +++ b/fieldservice_maintenance/i18n/pt_BR.po @@ -0,0 +1,120 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_maintenance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-05-21 00:12+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: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__display_name +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__display_name +msgid "Display Name" +msgstr "Exibir Nome" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_equipment +msgid "Field Service Equipment" +msgstr "Equipamento de Serviço de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__fsm_order_id +msgid "Field Service Order" +msgstr "Ordem de Serviço de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_fsm_order_type +msgid "Field Service Order Type" +msgstr "Tipo de Ordem de Serviço de Campo" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__id +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request__id +msgid "ID" +msgstr "ID" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type__internal_type +msgid "Internal Type" +msgstr "Tipo Interno" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__is_fsm_equipment +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment__is_fsm_equipment +msgid "Is a FSM Equipment" +msgstr "É um equipamento FSM" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order_type____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_equipment____last_update +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_maintenance_request____last_update +msgid "Last Modified on" +msgstr "Última modificação em" + +#. module: fieldservice_maintenance +#: model:ir.model.fields.selection,name:fieldservice_maintenance.selection__fsm_order_type__internal_type__maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.fsm_equipment_form_view_maintenance +msgid "Maintenance" +msgstr "Manutenção" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipamento de Manutenção" + +#. module: fieldservice_maintenance +#: model:ir.model,name:fieldservice_maintenance.model_maintenance_request +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__request_id +msgid "Maintenance Request" +msgstr "Requisição de Manutenção" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_order__display_name +msgid "Order" +msgstr "Pedido" + +#. module: fieldservice_maintenance +#: code:addons/fieldservice_maintenance/models/maintenance_request.py:0 +#, python-format +msgid "Order was not created because the equipment's location is not set" +msgstr "" +"O pedido não foi criado porque a localização do equipamento não está definida" + +#. module: fieldservice_maintenance +#: model_terms:ir.ui.view,arch_db:fieldservice_maintenance.hr_equipment_view_form +msgid "Others" +msgstr "Outros" + +#. module: fieldservice_maintenance +#: model:ir.model.fields,field_description:fieldservice_maintenance.field_fsm_equipment__maintenance_equipment_id +msgid "Related Maintenance Equipment" +msgstr "Equipamento de Manutenção Relacionado" + +#~ msgid "FSM" +#~ msgstr "FSM" + +#, python-format +#~ msgid "Missing current location on FSM equipment %s" +#~ msgstr "Faltando localização atual de equipamento FSM%s" + +#~ msgid "Repair" +#~ msgstr "Reparo" diff --git a/fieldservice_maintenance/models/__init__.py b/fieldservice_maintenance/models/__init__.py new file mode 100644 index 0000000000..8d21a5e2bd --- /dev/null +++ b/fieldservice_maintenance/models/__init__.py @@ -0,0 +1,10 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import ( + fsm_order, + maintenance_equipment, + maintenance_request, + fsm_equipment, +) +from . import fsm_order_type diff --git a/fieldservice_maintenance/models/fsm_equipment.py b/fieldservice_maintenance/models/fsm_equipment.py new file mode 100644 index 0000000000..d865ef10d3 --- /dev/null +++ b/fieldservice_maintenance/models/fsm_equipment.py @@ -0,0 +1,45 @@ +# Copyright (C) 2018 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class FSMEquipment(models.Model): + _inherit = "fsm.equipment" + + maintenance_equipment_id = fields.Many2one( + "maintenance.equipment", + string="Related Maintenance Equipment", + required=True, + ondelete="restrict", + delegate=True, + auto_join=True, + index=True, + ) + + @api.model_create_multi + def create(self, vals_list): + MaintenanceEquipement = self.env["maintenance.equipment"] + for vals in vals_list: + maintenance_equipment_id = MaintenanceEquipement.create( + { + "name": vals.get("name", False), + "is_fsm_equipment": True, + "note": vals.get("notes", False), + "maintenance_team_id": vals.get("maintenance_team_id", False), + } + ) + if maintenance_equipment_id: + vals.update({"maintenance_equipment_id": maintenance_equipment_id.id}) + return super().create(vals_list) + + def unlink(self): + equipments = self.mapped("maintenance_equipment_id") + res = super().unlink() + for equipment in equipments: + other = self.env["fsm.equipment"].search( + [("maintenance_equipment_id", "=", equipment.id)] + ) + if not other: + equipment.is_fsm_equipment = False + return res diff --git a/fieldservice_maintenance/models/fsm_order.py b/fieldservice_maintenance/models/fsm_order.py new file mode 100644 index 0000000000..7367f091d7 --- /dev/null +++ b/fieldservice_maintenance/models/fsm_order.py @@ -0,0 +1,40 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class FSMOrder(models.Model): + _inherit = "fsm.order" + + request_ids = fields.One2many( + "maintenance.request", "fsm_order_id", string="Maintenance Request" + ) + + @api.model_create_multi + def create(self, vals_list): + orders = super().create(vals_list) + for order in orders: + # if FSM order with type maintenance is created then + # create maintenance requests for every equipment in the order + if order.type.internal_type == "maintenance": + for equipment in order.equipment_ids: + maint_equip = equipment.maintenance_equipment_id + if maint_equip: + team_id = maint_equip.maintenance_team_id.id + self.env["maintenance.request"].with_context( + fsm_order=True + ).create( + { + "name": f"{order.name} - {maint_equip.name}", + "equipment_id": maint_equip.id, + "category_id": maint_equip.category_id.id, + "request_date": fields.Date.context_today(order), + "maintenance_type": "corrective", + "maintenance_team_id": team_id, + "schedule_date": order.request_early, + "description": order.description, + "fsm_order_id": order.id, + } + ) + return orders diff --git a/fieldservice_maintenance/models/fsm_order_type.py b/fieldservice_maintenance/models/fsm_order_type.py new file mode 100644 index 0000000000..17a7e1760b --- /dev/null +++ b/fieldservice_maintenance/models/fsm_order_type.py @@ -0,0 +1,13 @@ +# Copyright 2020 - TODAY Marcel Savegnago - Escodoo +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FsmOrderType(models.Model): + _inherit = "fsm.order.type" + + internal_type = fields.Selection( + selection_add=[("maintenance", "Maintenance")], + ondelete={"maintenance": "cascade"}, + ) diff --git a/fieldservice_maintenance/models/maintenance_equipment.py b/fieldservice_maintenance/models/maintenance_equipment.py new file mode 100644 index 0000000000..45ad80b669 --- /dev/null +++ b/fieldservice_maintenance/models/maintenance_equipment.py @@ -0,0 +1,10 @@ +# Copyright (C) 2018 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + is_fsm_equipment = fields.Boolean(string="Is a FSM Equipment") diff --git a/fieldservice_maintenance/models/maintenance_request.py b/fieldservice_maintenance/models/maintenance_request.py new file mode 100644 index 0000000000..a23eeb40b5 --- /dev/null +++ b/fieldservice_maintenance/models/maintenance_request.py @@ -0,0 +1,58 @@ +# Copyright (C) 2018 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import Command, _, api, fields, models + + +class MaintenanceRequest(models.Model): + _inherit = "maintenance.request" + + fsm_order_id = fields.Many2one("fsm.order", "Field Service Order") + + @api.model_create_multi + def create(self, vals_list): + # create FSM order with type maintenance if selected equipment is + # enabled with boolean is_fsm_equipment + requests = super().create(vals_list) + for request in requests: + if request.equipment_id.is_fsm_equipment and not self._context.get( + "fsm_order" + ): + # Get the fsm equipment + fsm_equipment = self.env["fsm.equipment"].search( + [("maintenance_equipment_id", "=", request.equipment_id.id)], + limit=1, + ) + fsm_order_type = self.env["fsm.order.type"].search( + [("internal_type", "=", "maintenance")], order="id desc", limit=1 + ) + if not fsm_equipment.current_location_id.id: + odoobot = self.env.ref("base.partner_root") + request._message_log( + subject=_("Missing location"), + body=_( + "Order was not created because the " + "equipment's location is not set" + ), + message_type="notification", + author_id=odoobot.id, + ) + else: + fsm_order_id = ( + self.env["fsm.order"] + .with_context(fsm_order=True) + .create( + { + "type": fsm_order_type.id, + "equipment_ids": [Command.set([fsm_equipment.id])], + "location_id": fsm_equipment.current_location_id.id, + "request_ids": [Command.set([request.id])], + "description": request.description, + "request_early": request.schedule_date, + "scheduled_date_start": request.schedule_date, + "priority": request.priority, + } + ) + ) + request.fsm_order_id = fsm_order_id + return requests diff --git a/fieldservice_maintenance/pyproject.toml b/fieldservice_maintenance/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/fieldservice_maintenance/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/fieldservice_maintenance/readme/CONFIGURE.md b/fieldservice_maintenance/readme/CONFIGURE.md new file mode 100644 index 0000000000..68426ff53e --- /dev/null +++ b/fieldservice_maintenance/readme/CONFIGURE.md @@ -0,0 +1,6 @@ +To use this module, you need to: + +- Go to Field Service \> Master Data \> Equipments or Maintenance \> + Equipments +- Create or select an equipment +- Specify the maintenance schedule diff --git a/fieldservice_maintenance/readme/CONTRIBUTORS.md b/fieldservice_maintenance/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..f218000a94 --- /dev/null +++ b/fieldservice_maintenance/readme/CONTRIBUTORS.md @@ -0,0 +1,5 @@ +- Sandip Mangukiya \ +- Serpent Consulting Services Pvt. Ltd. \ +- Bhavesh Odedra \ +- Marcel Savegnago - Escodoo \ +- Brian McMaster \ diff --git a/fieldservice_maintenance/readme/CREDITS.md b/fieldservice_maintenance/readme/CREDITS.md new file mode 100644 index 0000000000..7e8deceaa7 --- /dev/null +++ b/fieldservice_maintenance/readme/CREDITS.md @@ -0,0 +1,3 @@ +The development of this module has been financially supported by: + +- Open Source Integrators \ diff --git a/fieldservice_maintenance/readme/DESCRIPTION.md b/fieldservice_maintenance/readme/DESCRIPTION.md new file mode 100644 index 0000000000..e50ff8cfaf --- /dev/null +++ b/fieldservice_maintenance/readme/DESCRIPTION.md @@ -0,0 +1,8 @@ +Odoo Maintenance App does not support Field Service operations for +equipments outside the company facilities. On the other hand, the Field +Service App does not support a maintenance schedule generating +preventive maintenance request. + +This module allows you to merge equipments from Field Service and +Maintenance and have a maintenance schedule for FSM equipments as well +as Field Service capabilities for maintenance equipments. diff --git a/fieldservice_maintenance/readme/INSTALL.md b/fieldservice_maintenance/readme/INSTALL.md new file mode 100644 index 0000000000..64f1e7418d --- /dev/null +++ b/fieldservice_maintenance/readme/INSTALL.md @@ -0,0 +1,5 @@ +To install Field Service and have the mapping features, you need to +install fieldservice_stock and maintenance + +Please refer to the installation instructions available at: + diff --git a/fieldservice_maintenance/readme/ROADMAP.md b/fieldservice_maintenance/readme/ROADMAP.md new file mode 100644 index 0000000000..08ded8d0ec --- /dev/null +++ b/fieldservice_maintenance/readme/ROADMAP.md @@ -0,0 +1,2 @@ +The roadmap of the Field Service application is documented on +[Github](https://github.com/OCA/field-service/issues/66). diff --git a/fieldservice_maintenance/readme/USAGE.md b/fieldservice_maintenance/readme/USAGE.md new file mode 100644 index 0000000000..af8c1a3843 --- /dev/null +++ b/fieldservice_maintenance/readme/USAGE.md @@ -0,0 +1,9 @@ +To use this module, you need to: + +- Maintenance requests related to a FSM equipment will create a FSM + order +- Go to Field Service +- Create or select a FSM order and select the type Maintenance. +- Select the maintenance team, the equipment and the location +- Upon saving, a maintenance request will be created with the + information from the FSM order. diff --git a/fieldservice_maintenance/static/description/icon.png b/fieldservice_maintenance/static/description/icon.png new file mode 100644 index 0000000000..955674d8f0 Binary files /dev/null and b/fieldservice_maintenance/static/description/icon.png differ diff --git a/fieldservice_maintenance/static/description/index.html b/fieldservice_maintenance/static/description/index.html new file mode 100644 index 0000000000..30d0364901 --- /dev/null +++ b/fieldservice_maintenance/static/description/index.html @@ -0,0 +1,483 @@ + + + + + +Field Service - Maintenance + + + +
+

Field Service - Maintenance

+ + +

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

+

Odoo Maintenance App does not support Field Service operations for +equipments outside the company facilities. On the other hand, the Field +Service App does not support a maintenance schedule generating +preventive maintenance request.

+

This module allows you to merge equipments from Field Service and +Maintenance and have a maintenance schedule for FSM equipments as well +as Field Service capabilities for maintenance equipments.

+

Table of contents

+ +
+

Installation

+

To install Field Service and have the mapping features, you need to +install fieldservice_stock and maintenance

+

Please refer to the installation instructions available at: +https://github.com/OCA/field-service/tree/14.0/fieldservice_maintenance

+
+
+

Configuration

+

To use this module, you need to:

+
    +
  • Go to Field Service > Master Data > Equipments or Maintenance > +Equipments
  • +
  • Create or select an equipment
  • +
  • Specify the maintenance schedule
  • +
+
+
+

Usage

+

To use this module, you need to:

+
    +
  • Maintenance requests related to a FSM equipment will create a FSM +order
  • +
  • Go to Field Service
  • +
  • Create or select a FSM order and select the type Maintenance.
  • +
  • Select the maintenance team, the equipment and the location
  • +
  • Upon saving, a maintenance request will be created with the +information from the FSM order.
  • +
+
+
+

Known issues / Roadmap

+

The roadmap of the Field Service application is documented on +Github.

+
+
+

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

+
    +
  • Open Source Integrators
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

The development of this module has been financially supported by:

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

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

+

Current maintainers:

+

smangukiya max3903 bodedra

+

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

+

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

+
+
+
+ + diff --git a/fieldservice_maintenance/tests/__init__.py b/fieldservice_maintenance/tests/__init__.py new file mode 100644 index 0000000000..016a00f007 --- /dev/null +++ b/fieldservice_maintenance/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2020, Brian McMaster +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_fsm_maintenance diff --git a/fieldservice_maintenance/tests/test_fsm_maintenance.py b/fieldservice_maintenance/tests/test_fsm_maintenance.py new file mode 100644 index 0000000000..0f51310675 --- /dev/null +++ b/fieldservice_maintenance/tests/test_fsm_maintenance.py @@ -0,0 +1,98 @@ +# Copyright (C) 2020, Brian McMaster +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import Command +from odoo.tests.common import TransactionCase + + +class TestFSMMaintenance(TransactionCase): + def test_fsm_maintenance(self): + # Create FSM Location to use in test cases + partner = self.env["res.partner"].create( + { + "name": "Partner", + } + ) + fsm_loc = self.env["fsm.location"].create( + {"name": "Test Maintenance Location", "owner_id": partner.id} + ) + maintenance_team_id = self.env["maintenance.team"].create( + {"name": "Test Maintenance Team", "company_id": self.env.user.company_id.id} + ) + # Create FSM equipment + fsm_equip_01 = self.env["fsm.equipment"].create( + { + "name": "Test FSM Equipment 01", + "current_location_id": fsm_loc.id, + "maintenance_team_id": maintenance_team_id.id, + } + ) + maint_equip_01 = fsm_equip_01.maintenance_equipment_id + self.assertTrue(maint_equip_01) + # Create FSM Order of type maintenance and an equipment. This should + # create a maintenance request based on the FSM order + fsm_order_01 = self.env["fsm.order"].create( + { + "location_id": fsm_loc.id, + "type": self.env.ref( + "fieldservice_maintenance.fsm_order_type_maintenance" + ).id, + "equipment_ids": [Command.set([fsm_equip_01.id])], + } + ) + # Verify Maintenance order was created for that equipment + maint_req_01 = self.env["maintenance.request"].search( + [("fsm_order_id", "=", fsm_order_01.id)] + ) + self.assertEqual( + maint_req_01.name, f"{fsm_order_01.name} - {fsm_equip_01.name}" + ) + self.assertEqual( + maint_req_01.equipment_id, + fsm_order_01.equipment_ids.maintenance_equipment_id, + ) + self.assertEqual(fsm_order_01.request_ids, maint_req_01) + + # Create a maintenance request for an FSM equipment. This should + # create FSM order for that equipment. + maint_req_02 = self.env["maintenance.request"].create( + { + "name": "Equip 01 Request for FSM", + "equipment_id": maint_equip_01.id, + } + ) + # Test order was created for the request + fsm_order_02 = self.env["fsm.order"].search( + [("request_ids", "in", maint_req_02.ids)] + ) + self.assertEqual(fsm_order_02.description, maint_req_02.description) + self.assertEqual( + fsm_order_02.equipment_ids.maintenance_equipment_id, + maint_req_02.equipment_id, + ) + self.assertEqual(maint_req_02.fsm_order_id, fsm_order_02) + + # Create a maintenance request when fsm_equipment's location is not set + fsm_equip_01.current_location_id = False + request = self.env["maintenance.request"].create( + [ + { + "name": "Equip 01 Request", + "equipment_id": maint_equip_01.id, + } + ] + ) + # and check that a notification regarding its missing value + # is shown to the user + msg_notification = self.env["mail.message"].search( + [("res_id", "=", request.id)], order="id desc", limit=1 + ) + self.assertRegex( + msg_notification.body, + r".*Order was not created because the equipment's location is not set.*", + ) + + # Deleting the FSM Equipment + fsm_equip_01.unlink() + # Verfiy the maintenance equipment is no longer a FSM equipment + self.assertFalse(maint_equip_01.is_fsm_equipment) diff --git a/fieldservice_maintenance/views/fsm_equipment_view.xml b/fieldservice_maintenance/views/fsm_equipment_view.xml new file mode 100644 index 0000000000..2fab40ec17 --- /dev/null +++ b/fieldservice_maintenance/views/fsm_equipment_view.xml @@ -0,0 +1,29 @@ + + + + + fsm.equipment.form.maintenance + fsm.equipment + + + + + + + + + + + + + + fsm.equipment.model + fsm.equipment + + + + + + + + diff --git a/fieldservice_maintenance/views/fsm_order_view.xml b/fieldservice_maintenance/views/fsm_order_view.xml new file mode 100644 index 0000000000..c216a7c4bc --- /dev/null +++ b/fieldservice_maintenance/views/fsm_order_view.xml @@ -0,0 +1,22 @@ + + + + + + + fsm.order.maintenance.form + fsm.order + + + + + + + + diff --git a/fieldservice_maintenance/views/maintenance_equipment_view.xml b/fieldservice_maintenance/views/maintenance_equipment_view.xml new file mode 100644 index 0000000000..820aaf2494 --- /dev/null +++ b/fieldservice_maintenance/views/maintenance_equipment_view.xml @@ -0,0 +1,23 @@ + + + + + equipment.form.fsm + maintenance.equipment + + + + True + + + + + + + + + + + + + diff --git a/fieldservice_maintenance/views/maintenance_request_view.xml b/fieldservice_maintenance/views/maintenance_request_view.xml new file mode 100644 index 0000000000..85a25e3fa8 --- /dev/null +++ b/fieldservice_maintenance/views/maintenance_request_view.xml @@ -0,0 +1,14 @@ + + + + + equipment.request.form.fsm + maintenance.request + + + + + + + +