mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
@@ -14,8 +14,6 @@
|
||||
"hr",
|
||||
"pms",
|
||||
],
|
||||
"data": [
|
||||
"views/hr_employee_view.xml",
|
||||
],
|
||||
"data": ["views/hr_employee_view.xml", "views/pms_hr_property_view.xml"],
|
||||
"installable": True,
|
||||
}
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
from . import hr_employee
|
||||
from . import pms_property
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Copyright 2023 OsoTranquilo
|
||||
# Copyright 2024 Irlui Ramírez
|
||||
# From Consultores Hoteleros Integrales (ALDA Hotels) - 2024
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
@@ -9,4 +9,10 @@ class HrEmployeeBase(models.AbstractModel):
|
||||
|
||||
_inherit = "hr.employee.base"
|
||||
|
||||
property_ids = fields.Many2many("pms.property", string="Workplaces asigned")
|
||||
property_ids = fields.Many2many(
|
||||
comodel_name="pms.property",
|
||||
string="Workplaces asigned",
|
||||
relation="hr_employee_pms_property_rel",
|
||||
column1="hr_employee_id",
|
||||
column2="pms_property_id",
|
||||
)
|
||||
|
||||
17
pms_hr_property/models/pms_property.py
Normal file
17
pms_hr_property/models/pms_property.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Copyright 2024 OsoTranquilo - José Luis Algara
|
||||
# Copyright 2024 Irlui Ramírez
|
||||
# From Consultores Hoteleros Integrales (ALDA Hotels) - 2024
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class PmsHrProperty(models.Model):
|
||||
_inherit = "pms.property"
|
||||
|
||||
employee_ids = fields.Many2many(
|
||||
comodel_name="hr.employee",
|
||||
string="Assigned Employees",
|
||||
relation="hr_employee_pms_property_rel",
|
||||
column1="pms_property_id",
|
||||
column2="hr_employee_id",
|
||||
)
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
|
||||
1
pms_hr_property/tests/__init__.py
Normal file
1
pms_hr_property/tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import test_pms_hr_property
|
||||
84
pms_hr_property/tests/test_pms_hr_property.py
Normal file
84
pms_hr_property/tests/test_pms_hr_property.py
Normal file
@@ -0,0 +1,84 @@
|
||||
# Copyright 2024 OsoTranquilo - José Luis Algara
|
||||
# Copyright 2024 Irlui Ramírez
|
||||
# From Consultores Hoteleros Integrales (ALDA Hotels) - 2024
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
|
||||
class TestPmsHrProperty(TransactionCase):
|
||||
def setUp(self):
|
||||
super(TestPmsHrProperty, self).setUp()
|
||||
self.PmsProperty = self.env["pms.property"]
|
||||
self.HrEmployee = self.env["hr.employee"]
|
||||
self.Company = self.env["res.company"]
|
||||
|
||||
self.company1 = self.Company.create({"name": "Company 1"})
|
||||
|
||||
self.property1 = self.PmsProperty.create(
|
||||
{"name": "Property 1", "company_id": self.company1.id}
|
||||
)
|
||||
|
||||
user_dict = {
|
||||
"name": "User 1",
|
||||
"login": "tua@example.com",
|
||||
"password": "base-test-passwd",
|
||||
}
|
||||
self.user_test = self.env["res.users"].create(user_dict)
|
||||
|
||||
user_dict2 = {
|
||||
"name": "User 2",
|
||||
"login": "user2@example.com",
|
||||
"password": "base-test-passwd",
|
||||
}
|
||||
self.user_test2 = self.env["res.users"].create(user_dict2)
|
||||
|
||||
employee_dict = {
|
||||
"name": "Employee 1",
|
||||
"user_id": self.user_test.id,
|
||||
"address_id": self.user_test.partner_id.id,
|
||||
}
|
||||
self.employee = self.env["hr.employee"].create(employee_dict)
|
||||
|
||||
employee_dict2 = {
|
||||
"name": "Employee 2",
|
||||
"user_id": self.user_test2.id,
|
||||
"address_id": self.user_test2.partner_id.id,
|
||||
}
|
||||
self.employee2 = self.env["hr.employee"].create(employee_dict2)
|
||||
|
||||
def test_employee_assignment(self):
|
||||
"""Check if employees are correctly assigned to properties"""
|
||||
self.employee.write({"property_ids": [(4, self.property1.id)]})
|
||||
|
||||
assigned_employees = self.property1.employee_ids
|
||||
self.assertIn(
|
||||
self.employee,
|
||||
assigned_employees,
|
||||
"The employee is not correctly assigned to the property.",
|
||||
)
|
||||
|
||||
def test_employee_removal(self):
|
||||
"""Check if employees can be unassigned from properties correctly"""
|
||||
self.employee.write({"property_ids": [(4, self.property1.id)]})
|
||||
|
||||
self.employee.write({"property_ids": [(3, self.property1.id)]})
|
||||
|
||||
assigned_employees = self.property1.employee_ids
|
||||
self.assertNotIn(
|
||||
self.employee,
|
||||
assigned_employees,
|
||||
"The employee is still assigned to the property after removal.",
|
||||
)
|
||||
|
||||
def test_multiple_employees_assignment(self):
|
||||
"""Check if multiple employees can be assigned to a single property"""
|
||||
self.employee.write({"property_ids": [(4, self.property1.id)]})
|
||||
self.employee2.write({"property_ids": [(4, self.property1.id)]})
|
||||
|
||||
assigned_employees = self.property1.employee_ids
|
||||
self.assertIn(
|
||||
self.employee, assigned_employees, "Employee 1 is not correctly assigned."
|
||||
)
|
||||
self.assertIn(
|
||||
self.employee2, assigned_employees, "Employee 2 is not correctly assigned."
|
||||
)
|
||||
22
pms_hr_property/views/pms_hr_property_view.xml
Normal file
22
pms_hr_property/views/pms_hr_property_view.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<record id="pms_hr_property_form" model="ir.ui.view">
|
||||
<field name="name">pms.hr.property.form</field>
|
||||
<field name="model">pms.property</field>
|
||||
<field name="inherit_id" ref="pms.pms_property_views_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//notebook" position="inside">
|
||||
<page name="staff_property" string="Property Staff">
|
||||
<field name="employee_ids">
|
||||
<tree string="Employees">
|
||||
<field name="job_id" />
|
||||
<field name="name" />
|
||||
<field name="work_email" />
|
||||
<field name="work_phone" />
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user