diff --git a/fieldservice_purchase/README.rst b/fieldservice_purchase/README.rst new file mode 100644 index 0000000000..f1d9b4ca5d --- /dev/null +++ b/fieldservice_purchase/README.rst @@ -0,0 +1,110 @@ +======================== +Field Service - Purchase +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b820e3c69c8899ce1eaf41875cdcb6ab19396a4479edd2f45b1c30010a0f33b2 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/15.0/fieldservice_purchase + :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-15-0/field-service-15-0-fieldservice_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/field-service&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows you to link the Field Service App to the Purchases App. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +* Go to Purchases > Purchase > Vendor Pricelist +* Select or create a Vendor Pricelist and set the Vendor to an FSM Worker +* Go to Field Service > Master Data > Workers +* Open the Worker that was selected on your Vendor Pricelist +* Click on the smart button "Pricelists" to see the list of related Vendor Pricelists + +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 +~~~~~~~~~~~~ + +* Maxime Chambreuil +* Steve Campbell +* Mohammad Khalid + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* Open Source Integrators + +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-osi-scampbell| image:: https://github.com/osi-scampbell.png?size=40px + :target: https://github.com/osi-scampbell + :alt: osi-scampbell + +Current `maintainer `__: + +|maintainer-osi-scampbell| + +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_purchase/__init__.py b/fieldservice_purchase/__init__.py new file mode 100644 index 0000000000..1ae95437af --- /dev/null +++ b/fieldservice_purchase/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2021 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/fieldservice_purchase/__manifest__.py b/fieldservice_purchase/__manifest__.py new file mode 100644 index 0000000000..b05deea757 --- /dev/null +++ b/fieldservice_purchase/__manifest__.py @@ -0,0 +1,26 @@ +# Copyright (C) 2021 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Field Service - Purchase", + "summary": "Manage FSM Purchases", + "author": "Open Source Integrators, " "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/field-service", + "category": "Field Service", + "license": "AGPL-3", + "version": "18.0.1.0.0", + "depends": [ + "fieldservice", + "purchase", + ], + "data": [ + "security/ir.model.access.csv", + "views/fsm_person.xml", + "views/fsm_order.xml", + "views/purchase_order.xml", + ], + "development_status": "Beta", + "maintainers": [ + "osi-scampbell", + ], +} diff --git a/fieldservice_purchase/i18n/de.po b/fieldservice_purchase/i18n/de.po new file mode 100644 index 0000000000..9649f35606 --- /dev/null +++ b/fieldservice_purchase/i18n/de.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-11-26 14:27+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_purchase +#: model:ir.model.fields,field_description:fieldservice_purchase.field_fsm_person__pricelist_count +msgid "# Pricelists" +msgstr "# Preislisten" + +#. module: fieldservice_purchase +#: model:ir.model,name:fieldservice_purchase.model_fsm_person +msgid "Field Service Worker" +msgstr "Service-Mitarbeiter" + +#. module: fieldservice_purchase +#: model_terms:ir.ui.view,arch_db:fieldservice_purchase.fsm_person_form_view_pricelists +msgid "Pricelists" +msgstr "Preislisten" diff --git a/fieldservice_purchase/i18n/es.po b/fieldservice_purchase/i18n/es.po new file mode 100644 index 0000000000..cf66258701 --- /dev/null +++ b/fieldservice_purchase/i18n/es.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-09 07: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: fieldservice_purchase +#: model:ir.model.fields,field_description:fieldservice_purchase.field_fsm_person__pricelist_count +msgid "# Pricelists" +msgstr "# Precios" + +#. module: fieldservice_purchase +#: model:ir.model,name:fieldservice_purchase.model_fsm_person +msgid "Field Service Worker" +msgstr "Trabajador de servicio de campo" + +#. module: fieldservice_purchase +#: model_terms:ir.ui.view,arch_db:fieldservice_purchase.fsm_person_form_view_pricelists +msgid "Pricelists" +msgstr "Listas de precios" diff --git a/fieldservice_purchase/i18n/es_AR.po b/fieldservice_purchase/i18n/es_AR.po new file mode 100644 index 0000000000..6632f64367 --- /dev/null +++ b/fieldservice_purchase/i18n/es_AR.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-10-03 21:34+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: fieldservice_purchase +#: model:ir.model.fields,field_description:fieldservice_purchase.field_fsm_person__pricelist_count +msgid "# Pricelists" +msgstr "# Listas de Precio" + +#. module: fieldservice_purchase +#: model:ir.model,name:fieldservice_purchase.model_fsm_person +msgid "Field Service Worker" +msgstr "Trabajador de Servicio de Campo" + +#. module: fieldservice_purchase +#: model_terms:ir.ui.view,arch_db:fieldservice_purchase.fsm_person_form_view_pricelists +msgid "Pricelists" +msgstr "Listas de Precio" + +#~ msgid "Display Name" +#~ msgstr "Mostrar Nombre" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última Modificación el" diff --git a/fieldservice_purchase/i18n/es_CL.po b/fieldservice_purchase/i18n/es_CL.po new file mode 100644 index 0000000000..4394a70ca4 --- /dev/null +++ b/fieldservice_purchase/i18n/es_CL.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_purchase +# +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_purchase +#: model:ir.model.fields,field_description:fieldservice_purchase.field_fsm_person__pricelist_count +msgid "# Pricelists" +msgstr "# Lista de Precios" + +#. module: fieldservice_purchase +#: model:ir.model,name:fieldservice_purchase.model_fsm_person +msgid "Field Service Worker" +msgstr "Trabajador de Servicio de Campo" + +#. module: fieldservice_purchase +#: model_terms:ir.ui.view,arch_db:fieldservice_purchase.fsm_person_form_view_pricelists +msgid "Pricelists" +msgstr "Lista de Precios" diff --git a/fieldservice_purchase/i18n/fieldservice_purchase.pot b/fieldservice_purchase/i18n/fieldservice_purchase.pot new file mode 100644 index 0000000000..639f7dae70 --- /dev/null +++ b/fieldservice_purchase/i18n/fieldservice_purchase.pot @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: fieldservice_purchase +#: model:ir.model.fields,field_description:fieldservice_purchase.field_fsm_person__pricelist_count +msgid "# Pricelists" +msgstr "" + +#. module: fieldservice_purchase +#: model:ir.model,name:fieldservice_purchase.model_fsm_person +msgid "Field Service Worker" +msgstr "" + +#. module: fieldservice_purchase +#: model_terms:ir.ui.view,arch_db:fieldservice_purchase.fsm_person_form_view_pricelists +msgid "Pricelists" +msgstr "" diff --git a/fieldservice_purchase/i18n/gl.po b/fieldservice_purchase/i18n/gl.po new file mode 100644 index 0000000000..bb2e2d55f9 --- /dev/null +++ b/fieldservice_purchase/i18n/gl.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2026-05-23 09:47+0000\n" +"Last-Translator: Pablo Castelo \n" +"Language-Team: none\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.15.2\n" + +#. module: fieldservice_purchase +#: model:ir.model.fields,field_description:fieldservice_purchase.field_fsm_person__pricelist_count +msgid "# Pricelists" +msgstr "# Prezos" + +#. module: fieldservice_purchase +#: model:ir.model,name:fieldservice_purchase.model_fsm_person +msgid "Field Service Worker" +msgstr "Traballador de servizo de campo" + +#. module: fieldservice_purchase +#: model_terms:ir.ui.view,arch_db:fieldservice_purchase.fsm_person_form_view_pricelists +msgid "Pricelists" +msgstr "Listas de prezos" diff --git a/fieldservice_purchase/i18n/it.po b/fieldservice_purchase/i18n/it.po new file mode 100644 index 0000000000..666836d620 --- /dev/null +++ b/fieldservice_purchase/i18n/it.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-09-29 10:34+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: fieldservice_purchase +#: model:ir.model.fields,field_description:fieldservice_purchase.field_fsm_person__pricelist_count +msgid "# Pricelists" +msgstr "N° listini" + +#. module: fieldservice_purchase +#: model:ir.model,name:fieldservice_purchase.model_fsm_person +msgid "Field Service Worker" +msgstr "Lavoratore assistenza sul campo" + +#. module: fieldservice_purchase +#: model_terms:ir.ui.view,arch_db:fieldservice_purchase.fsm_person_form_view_pricelists +msgid "Pricelists" +msgstr "Listini" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/fieldservice_purchase/i18n/pt_BR.po b/fieldservice_purchase/i18n/pt_BR.po new file mode 100644 index 0000000000..ed8673d6d8 --- /dev/null +++ b/fieldservice_purchase/i18n/pt_BR.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-02-05 11:13+0000\n" +"Last-Translator: Marcel Savegnago \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: fieldservice_purchase +#: model:ir.model.fields,field_description:fieldservice_purchase.field_fsm_person__pricelist_count +msgid "# Pricelists" +msgstr "# Listas de Preço" + +#. module: fieldservice_purchase +#: model:ir.model,name:fieldservice_purchase.model_fsm_person +msgid "Field Service Worker" +msgstr "Trabalhador de Serviço de Campo" + +#. module: fieldservice_purchase +#: model_terms:ir.ui.view,arch_db:fieldservice_purchase.fsm_person_form_view_pricelists +msgid "Pricelists" +msgstr "Listas de Preço" diff --git a/fieldservice_purchase/i18n/zh_CN.po b/fieldservice_purchase/i18n/zh_CN.po new file mode 100644 index 0000000000..43d7dfba9f --- /dev/null +++ b/fieldservice_purchase/i18n/zh_CN.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_purchase +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2026-06-05 12:51+0000\n" +"Last-Translator: bigfoot88 \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" +"X-Generator: Weblate 5.15.2\n" + +#. module: fieldservice_purchase +#: model:ir.model.fields,field_description:fieldservice_purchase.field_fsm_person__pricelist_count +msgid "# Pricelists" +msgstr "# 价格表" + +#. module: fieldservice_purchase +#: model:ir.model,name:fieldservice_purchase.model_fsm_person +msgid "Field Service Worker" +msgstr "" + +#. module: fieldservice_purchase +#: model_terms:ir.ui.view,arch_db:fieldservice_purchase.fsm_person_form_view_pricelists +msgid "Pricelists" +msgstr "" diff --git a/fieldservice_purchase/models/__init__.py b/fieldservice_purchase/models/__init__.py new file mode 100644 index 0000000000..f2584b9525 --- /dev/null +++ b/fieldservice_purchase/models/__init__.py @@ -0,0 +1,6 @@ +# Copyright (C) 2021 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import fsm_person +from . import fsm_order +from . import purchase_order diff --git a/fieldservice_purchase/models/fsm_order.py b/fieldservice_purchase/models/fsm_order.py new file mode 100644 index 0000000000..c3ce879505 --- /dev/null +++ b/fieldservice_purchase/models/fsm_order.py @@ -0,0 +1,25 @@ +# Copyright (C) 2026 - Gray Matter Logic +# 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" + + purchase_ids = fields.Many2many("purchase.order") + purchase_count = fields.Integer( + compute="_compute_purchase_count", string="# Purchases" + ) + + @api.depends("purchase_ids") + def _compute_purchase_count(self): + for fsm_order in self: + fsm_order.purchase_count = len(fsm_order.purchase_ids.ids) + + def action_view_purchases(self): + action = self.env["ir.actions.act_window"]._for_xml_id( + "purchase.purchase_form_action" + ) + action["domain"] = [("id", "in", self.purchase_ids.ids)] + return action diff --git a/fieldservice_purchase/models/fsm_person.py b/fieldservice_purchase/models/fsm_person.py new file mode 100644 index 0000000000..7a9a14dafd --- /dev/null +++ b/fieldservice_purchase/models/fsm_person.py @@ -0,0 +1,35 @@ +# Copyright (C) 2021 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FSMPerson(models.Model): + _inherit = "fsm.person" + + pricelist_count = fields.Integer( + compute="_compute_pricelist_count", string="# Pricelists" + ) + + def _compute_pricelist_count(self): + for worker in self: + worker.pricelist_count = self.env["product.supplierinfo"].search_count( + [("partner_id", "=", worker.partner_id.id)] + ) + + def action_view_pricelists(self): + for worker in self: + pricelist = self.env["product.supplierinfo"].search( + [("partner_id", "=", worker.partner_id.id)] + ) + action = self.env["ir.actions.act_window"]._for_xml_id( + "product.product_supplierinfo_type_action" + ) + if len(pricelist) == 1: + action["views"] = [ + (self.env.ref("product.product_supplierinfo_form_view").id, "form") + ] + action["res_id"] = pricelist.ids[0] + else: + action["domain"] = [("id", "in", pricelist.ids)] + return action diff --git a/fieldservice_purchase/models/purchase_order.py b/fieldservice_purchase/models/purchase_order.py new file mode 100644 index 0000000000..a9efb49113 --- /dev/null +++ b/fieldservice_purchase/models/purchase_order.py @@ -0,0 +1,25 @@ +# Copyright (C) 2026 - Gray Matter Logic +# 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" + + fsm_order_ids = fields.Many2many("fsm.order") + fsm_order_count = fields.Integer( + compute="_compute_fsm_order_count", string="# FSM Orders" + ) + + @api.depends("fsm_order_ids") + def _compute_fsm_order_count(self): + for purchase in self: + purchase.fsm_order_count = len(purchase.fsm_order_ids.ids) + + def action_view_fsm_orders(self): + action = self.env["ir.actions.act_window"]._for_xml_id( + "fieldservice.action_fsm_dash_order" + ) + action["domain"] = [("id", "in", self.fsm_order_ids.ids)] + return action diff --git a/fieldservice_purchase/pyproject.toml b/fieldservice_purchase/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/fieldservice_purchase/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/fieldservice_purchase/readme/CONTRIBUTORS.rst b/fieldservice_purchase/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..93b23b9aec --- /dev/null +++ b/fieldservice_purchase/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Maxime Chambreuil +* Steve Campbell +* Mohammad Khalid diff --git a/fieldservice_purchase/readme/CREDITS.rst b/fieldservice_purchase/readme/CREDITS.rst new file mode 100644 index 0000000000..0eff0acf4e --- /dev/null +++ b/fieldservice_purchase/readme/CREDITS.rst @@ -0,0 +1,3 @@ +The development of this module has been financially supported by: + +* Open Source Integrators diff --git a/fieldservice_purchase/readme/DESCRIPTION.rst b/fieldservice_purchase/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..4a2f1da511 --- /dev/null +++ b/fieldservice_purchase/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows you to link the Field Service App to the Purchases App. diff --git a/fieldservice_purchase/readme/ROADMAP.rst b/fieldservice_purchase/readme/ROADMAP.rst new file mode 100644 index 0000000000..f607015959 --- /dev/null +++ b/fieldservice_purchase/readme/ROADMAP.rst @@ -0,0 +1,2 @@ +The roadmap of the Field Service application is documented on +`Github `_. diff --git a/fieldservice_purchase/readme/USAGE.rst b/fieldservice_purchase/readme/USAGE.rst new file mode 100644 index 0000000000..7a0e8fcb94 --- /dev/null +++ b/fieldservice_purchase/readme/USAGE.rst @@ -0,0 +1,7 @@ +To use this module, you need to: + +* Go to Purchases > Purchase > Vendor Pricelist +* Select or create a Vendor Pricelist and set the Vendor to an FSM Worker +* Go to Field Service > Master Data > Workers +* Open the Worker that was selected on your Vendor Pricelist +* Click on the smart button "Pricelists" to see the list of related Vendor Pricelists diff --git a/fieldservice_purchase/security/ir.model.access.csv b/fieldservice_purchase/security/ir.model.access.csv new file mode 100644 index 0000000000..65d99aac9e --- /dev/null +++ b/fieldservice_purchase/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_purchase_order_fsm_user,purchase.order.fsm.user,purchase.model_purchase_order,fieldservice.group_fsm_user,1,0,0,0 diff --git a/fieldservice_purchase/static/description/icon.png b/fieldservice_purchase/static/description/icon.png new file mode 100644 index 0000000000..955674d8f0 Binary files /dev/null and b/fieldservice_purchase/static/description/icon.png differ diff --git a/fieldservice_purchase/static/description/index.html b/fieldservice_purchase/static/description/index.html new file mode 100644 index 0000000000..f1755d96df --- /dev/null +++ b/fieldservice_purchase/static/description/index.html @@ -0,0 +1,451 @@ + + + + + + +Field Service - Purchase + + + +
+

Field Service - Purchase

+ + +

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

+

This module allows you to link the Field Service App to the Purchases App.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  • Go to Purchases > Purchase > Vendor Pricelist
  • +
  • Select or create a Vendor Pricelist and set the Vendor to an FSM Worker
  • +
  • Go to Field Service > Master Data > Workers
  • +
  • Open the Worker that was selected on your Vendor Pricelist
  • +
  • Click on the smart button “Pricelists” to see the list of related Vendor Pricelists
  • +
+
+
+

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

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

+

osi-scampbell

+

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_purchase/tests/__init__.py b/fieldservice_purchase/tests/__init__.py new file mode 100644 index 0000000000..2062b9e29d --- /dev/null +++ b/fieldservice_purchase/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2021 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_fieldservice_purchase diff --git a/fieldservice_purchase/tests/test_fieldservice_purchase.py b/fieldservice_purchase/tests/test_fieldservice_purchase.py new file mode 100644 index 0000000000..42f4b2baa7 --- /dev/null +++ b/fieldservice_purchase/tests/test_fieldservice_purchase.py @@ -0,0 +1,42 @@ +# Copyright (C) 2021 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import odoo.tests.common as common + + +class TestFieldServicePurchase(common.TransactionCase): + def setUp(self): + super().setUp() + + self.product_supplierinfo_obj = self.env["product.supplierinfo"] + self.fsm_person_obj = self.env["fsm.person"] + + def test_fieldservice_purchase(self): + fsm_person = self.fsm_person_obj.create({"name": "Test FSM Person"}) + + # Test with 1 records Vendor Pricelist + product_supplierinfo_vals = { + "partner_id": fsm_person.partner_id.id, + "min_qty": 1.0, + "price": 100, + } + self.product_supplierinfo_obj.create(product_supplierinfo_vals) + + fsm_person._compute_pricelist_count() + self.assertEqual( + fsm_person.pricelist_count, 1, "Wrong no of vendors pricelist!" + ) + fsm_person.action_view_pricelists() + + # Test with 2 records Vendor Pricelist + product_supplierinfo_vals = { + "name": fsm_person.partner_id.id, + "min_qty": 2.0, + "price": 200, + } + self.product_supplierinfo_obj.create(product_supplierinfo_vals) + fsm_person._compute_pricelist_count() + self.assertEqual( + fsm_person.pricelist_count, 2, "Wrong no of vendors pricelist!" + ) + fsm_person.action_view_pricelists() diff --git a/fieldservice_purchase/views/fsm_order.xml b/fieldservice_purchase/views/fsm_order.xml new file mode 100644 index 0000000000..784c40152e --- /dev/null +++ b/fieldservice_purchase/views/fsm_order.xml @@ -0,0 +1,21 @@ + + + + fsm.order.form.view.purchase + fsm.order + + +
+ +
+
+
+
diff --git a/fieldservice_purchase/views/fsm_person.xml b/fieldservice_purchase/views/fsm_person.xml new file mode 100644 index 0000000000..263bfff04f --- /dev/null +++ b/fieldservice_purchase/views/fsm_person.xml @@ -0,0 +1,26 @@ + + + + + fsm.person.form.view.pricelists + fsm.person + + +
+ +
+
+
+
diff --git a/fieldservice_purchase/views/purchase_order.xml b/fieldservice_purchase/views/purchase_order.xml new file mode 100644 index 0000000000..1ba9d60cfc --- /dev/null +++ b/fieldservice_purchase/views/purchase_order.xml @@ -0,0 +1,24 @@ + + + purchase.order.form.fieldservice + purchase.order + + +
+ +
+
+
+