[FIX]:hr_pms_property: remove class method, DB structure and updated test module

This commit is contained in:
irlui
2024-10-15 17:02:23 +02:00
parent 7f3d7e0555
commit 86141ba903
4 changed files with 61 additions and 88 deletions

View File

@@ -5,7 +5,7 @@
"name": "PMS Hr Property", "name": "PMS Hr Property",
"summary": """ "summary": """
Adds to the employee the property on which he works.""", Adds to the employee the property on which he works.""",
"version": "14.0.2.0.0", "version": "14.0.1.0.0",
"license": "AGPL-3", "license": "AGPL-3",
"author": "OsoTranquilo,Odoo Community Association (OCA)", "author": "OsoTranquilo,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/pms", "website": "https://github.com/OCA/pms",

View File

@@ -1,24 +0,0 @@
from openupgradelib import openupgrade
@openupgrade.migrate()
def migrate(env, version):
openupgrade.logged_query(
env.cr,
"""
UPDATE pms_ rl
SET sale_channel_id = r.sale_channel_origin_id
FROM pms_reservation r
WHERE r.id = rl.reservation_id
""",
)
openupgrade.logged_query(
env.cr,
"""
UPDATE pms_service ser
SET sale_channel_origin_id = fol.sale_channel_origin_id
FROM pms_folio fol
WHERE fol.id = ser.folio_id
""",
)

View File

@@ -1,7 +1,7 @@
# Copyright 2023 OsoTranquilo # 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). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models from odoo import fields, models

View File

@@ -4,7 +4,6 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.tests.common import TransactionCase from odoo.tests.common import TransactionCase
class TestPmsHrProperty(TransactionCase): class TestPmsHrProperty(TransactionCase):
def setUp(self): def setUp(self):
super(TestPmsHrProperty, self).setUp() super(TestPmsHrProperty, self).setUp()
@@ -12,98 +11,96 @@ class TestPmsHrProperty(TransactionCase):
self.HrEmployee = self.env["hr.employee"] self.HrEmployee = self.env["hr.employee"]
self.Company = self.env["res.company"] self.Company = self.env["res.company"]
# Company creation
self.company1 = self.Company.create( self.company1 = self.Company.create(
{ {"name": "Company 1"}
"name": "Company 1",
}
) )
# Property creation
self.property1 = self.PmsProperty.create( self.property1 = self.PmsProperty.create(
{ {
"name": "Property 1", "name": "Property 1",
"company_id": self.company1.id, "company_id": self.company1.id
} }
) )
# User creation
user_dict = { user_dict = {
"name": "User 1", "name": "User 1",
"login": "tua@example.com", "login": "tua@example.com",
"password": "base-test-passwd", "password": "base-test-passwd"
} }
self.user_test = self.env["res.users"].create(user_dict) self.user_test = self.env["res.users"].create(user_dict)
user_dict2 = { user_dict2 = {
"name": "User 2", "name": "User 2",
"login": "user2@example.com", "login": "user2@example.com",
"password": "base-test-passwd", "password": "base-test-passwd"
} }
self.user_test2 = self.env["res.users"].create(user_dict2) self.user_test2 = self.env["res.users"].create(user_dict2)
# Employee creation
employee_dict = { employee_dict = {
"name": "Employee 1", "name": "Employee 1",
"user_id": self.user_test.id, "user_id": self.user_test.id,
"address_id": self.user_test.partner_id.id, "address_id": self.user_test.partner_id.id
} }
self.employee = self.env["hr.employee"].create(employee_dict) self.employee = self.env["hr.employee"].create(employee_dict)
employee_dict2 = { employee_dict2 = {
"name": "Employee 2", "name": "Employee 2",
"user_id": self.user_test2.id, "user_id": self.user_test2.id,
"address_id": self.user_test2.partner_id.id, "address_id": self.user_test2.partner_id.id
} }
self.employee2 = self.env["hr.employee"].create(employee_dict2) self.employee2 = self.env["hr.employee"].create(employee_dict2)
self.employee.write({"property_ids": [(4, self.property1.id)]})
def test_compute_employee_ids(self): def test_employee_assignment(self):
"""Verifica que el método _compute_employee_ids """Check if employees are correctly assigned to properties"""
calcule correctamente el campo employee_ids""" self.employee.write(
{"property_ids": [(4, self.property1.id)]}
self.property1._compute_employee_ids() )
assigned_employees = self.property1.employee_ids assigned_employees = self.property1.employee_ids
self.assertIn(
expected_employees = self.HrEmployee.search( self.employee,
[("property_ids", "in", self.property1.id)] assigned_employees,
"The employee is not correctly assigned to the property."
) )
self.assertEqual( def test_employee_removal(self):
sorted(assigned_employees.ids), """Check if employees can be unassigned from properties correctly"""
sorted(expected_employees.ids), self.employee.write(
"Property 1 no coincide con los empleados esperados.", {"property_ids": [(4, self.property1.id)]}
) )
def test_no_employees_assigned(self): self.employee.write(
"""Verifica el comportamiento si no hay empleados asignados a una propiedad""" {"property_ids": [(3, self.property1.id)]}
)
self.employee.write({"property_ids": [(5, self.property1.id)]})
self.property1._compute_employee_ids()
assigned_employees = self.property1.employee_ids assigned_employees = self.property1.employee_ids
self.assertNotIn(
self.assertEqual( self.employee,
len(assigned_employees), assigned_employees,
0, "The employee is still assigned to the property after removal."
"Se esperaba que no hubiera empleados asignados a la propiedad 1.",
) )
def test_multiple_properties(self): def test_multiple_employees_assignment(self):
"""Verifica que los empleados se asignen correctamente a múltiples propiedades""" """Check if multiple employees can be assigned to a single property"""
self.property2 = self.PmsProperty.create( self.employee.write(
{ {"property_ids": [(4, self.property1.id)]}
"name": "Property 2", )
"company_id": self.company1.id, self.employee2.write(
} {"property_ids": [(4, self.property1.id)]}
) )
self.employee2.write({"property_ids": [(4, self.property2.id)]}) assigned_employees = self.property1.employee_ids
self.assertIn(
self.property2._compute_employee_ids() self.employee,
assigned_employees,
assigned_employees = self.property2.employee_ids "Employee 1 is not correctly assigned."
expected_employees = self.HrEmployee.search(
[("property_ids", "in", self.property2.id)]
) )
self.assertIn(
self.assertEqual( self.employee2,
sorted(assigned_employees.ids), assigned_employees,
sorted(expected_employees.ids), "Employee 2 is not correctly assigned."
"employee_ids calculado para la propiedad 2 no coincide con los empleados.",
) )