From 4e515f65b93ef0c9f616d0b4e566a6b11f213c7b Mon Sep 17 00:00:00 2001 From: Unai Date: Thu, 19 Jun 2025 09:06:25 +0200 Subject: [PATCH] [ADD] project_task_res_partner_building: Add building Many2one in project.task --- project_task_res_partner_building/README.rst | 63 +++++++++++++++++++ project_task_res_partner_building/__init__.py | 1 + .../__manifest__.py | 12 ++++ .../models/__init__.py | 1 + .../models/project_task.py | 11 ++++ .../views/project_task_views.xml | 13 ++++ .../addons/project_task_res_partner_building | 1 + .../setup.py | 6 ++ 8 files changed, 108 insertions(+) create mode 100644 project_task_res_partner_building/README.rst create mode 100644 project_task_res_partner_building/__init__.py create mode 100644 project_task_res_partner_building/__manifest__.py create mode 100644 project_task_res_partner_building/models/__init__.py create mode 100644 project_task_res_partner_building/models/project_task.py create mode 100644 project_task_res_partner_building/views/project_task_views.xml create mode 120000 setup/project_task_res_partner_building/odoo/addons/project_task_res_partner_building create mode 100644 setup/project_task_res_partner_building/setup.py diff --git a/project_task_res_partner_building/README.rst b/project_task_res_partner_building/README.rst new file mode 100644 index 00000000..02468750 --- /dev/null +++ b/project_task_res_partner_building/README.rst @@ -0,0 +1,63 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg + :target: https://www.gnu.org/licenses/lgpl-3.0.html + :alt: License: LGPL-3 + +===================== +Project Task Building +===================== + +Overview +======== + +The **Project Task Building** module extends the standard Odoo **Project** application by adding a new field to associate tasks with specific buildings (represented by `res.partner` records). + +Features +======== + +- Adds a new field **"Building"** (`building_id`) to project tasks. +- The field is displayed in the task form view, just after the **Customer** (`partner_id`) field. +- The **Building** is a Many2one relation to `res.partner`, allowing reuse of existing partner records for building identification. + +Use Case +======== + +This is particularly useful for construction, property management, or maintenance companies where each task must be linked to a specific building. + +For example: +- A maintenance request can be assigned to a task and associated with the building it belongs to. +- Projects spanning multiple buildings can track individual tasks per location. + +Usage +===== + +1. Go to **Project > Tasks**. +2. Open any task form. +3. You will find a new field labeled **Building** after the **Customer** field. +4. Select a partner record that represents the building related to this task. + +Configuration +============= + +No additional configuration is required after installation. + +Bug Tracker +=========== + +If you find any issues or bugs, please report them at: +`https://github.com/avanzosc/project-addons/issues `_ + +Credits +======= + +Contributors +------------ + +* Ana Juaristi +* Unai Beristain + +License +======= + +This module is licensed under the LGPL-3 License. + +See: https://www.gnu.org/licenses/lgpl-3.0.html diff --git a/project_task_res_partner_building/__init__.py b/project_task_res_partner_building/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/project_task_res_partner_building/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/project_task_res_partner_building/__manifest__.py b/project_task_res_partner_building/__manifest__.py new file mode 100644 index 00000000..ccbb474f --- /dev/null +++ b/project_task_res_partner_building/__manifest__.py @@ -0,0 +1,12 @@ +{ + "name": "Project Task Building", + "version": "16.0.1.0.0", + "category": "Project", + "author": "Avanzosc", + "license": "LGPL-3", + "depends": ["project"], + "data": ["views/project_task_views.xml"], + "installable": True, + "application": False, + "website": "https://github.com/avanzosc/project-addons", +} diff --git a/project_task_res_partner_building/models/__init__.py b/project_task_res_partner_building/models/__init__.py new file mode 100644 index 00000000..edf2d36b --- /dev/null +++ b/project_task_res_partner_building/models/__init__.py @@ -0,0 +1 @@ +from . import project_task diff --git a/project_task_res_partner_building/models/project_task.py b/project_task_res_partner_building/models/project_task.py new file mode 100644 index 00000000..1cd925e6 --- /dev/null +++ b/project_task_res_partner_building/models/project_task.py @@ -0,0 +1,11 @@ +from odoo import fields, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + building_id = fields.Many2one( + "res.partner", + string="Building", + help="Select the building related to this task.", + ) diff --git a/project_task_res_partner_building/views/project_task_views.xml b/project_task_res_partner_building/views/project_task_views.xml new file mode 100644 index 00000000..944f6a2d --- /dev/null +++ b/project_task_res_partner_building/views/project_task_views.xml @@ -0,0 +1,13 @@ + + + + project.task.form.inherit.building + project.task + + + + + + + + diff --git a/setup/project_task_res_partner_building/odoo/addons/project_task_res_partner_building b/setup/project_task_res_partner_building/odoo/addons/project_task_res_partner_building new file mode 120000 index 00000000..9fa11556 --- /dev/null +++ b/setup/project_task_res_partner_building/odoo/addons/project_task_res_partner_building @@ -0,0 +1 @@ +../../../../project_task_res_partner_building \ No newline at end of file diff --git a/setup/project_task_res_partner_building/setup.py b/setup/project_task_res_partner_building/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/project_task_res_partner_building/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)