diff --git a/pms/models/pms_amenity.py b/pms/models/pms_amenity.py index 026f09d71..b0224e74c 100644 --- a/pms/models/pms_amenity.py +++ b/pms/models/pms_amenity.py @@ -40,3 +40,7 @@ class PmsRoomAmenity(models.Model): default_code = fields.Char( string="Internal Reference", help="Internal unique identifier of the amenity" ) + is_add_code_room_name = fields.Boolean( + string="Add in room name", + help="True if the Internal Reference should appear in the display name of the rooms", + ) diff --git a/pms/models/pms_room.py b/pms/models/pms_room.py index dcb6869a0..4c64cc214 100644 --- a/pms/models/pms_room.py +++ b/pms/models/pms_room.py @@ -103,6 +103,10 @@ class PmsRoom(models.Model): name = room.name if room.room_type_id: name += " [%s]" % room.room_type_id.default_code + if room.room_amenity_ids: + for amenity in room.room_amenity_ids: + if amenity.is_add_code_room_name: + name += " %s" % amenity.default_code result.append((room.id, name)) return result diff --git a/pms/tests/test_pms_room.py b/pms/tests/test_pms_room.py index 6f1fd5226..6d0fd4369 100644 --- a/pms/tests/test_pms_room.py +++ b/pms/tests/test_pms_room.py @@ -93,3 +93,128 @@ class TestPmsRoom(TestPms): "The room should be created even if its name is equal " "to another room, but that room not belongs to the same property." ) + + def test_display_name_room(self): + """ + Check that the display_name field of a room is as expected. + ------------ + A room is created and then it is checked that the display name + field of this is composed of: + room.name [room_type.default_code] + """ + self.room1 = self.env["pms.room"].create( + { + "name": "Room 101", + "pms_property_id": self.pms_property1.id, + "room_type_id": self.room_type1.id, + } + ) + expected_display_name = "%s [%s]" % ( + self.room1.name, + self.room_type1.default_code, + ) + self.assertEqual( + self.room1.display_name, + expected_display_name, + "The display name of the room is not as expected", + ) + + def test_display_name_room_with_amenity(self): + """ + Check that the display_name field of a room with one amenity + is as expected. + ------------ + A amenity is created with default code and with is_add_code_room_name + field as True. A room is created in which the amenity created before + is added in the room_amenity_ids field and then it is verified that + the display name field of this is composed of: + room.name [room_type.default_code] amenity.default_code + """ + self.amenity_type1 = self.env["pms.amenity.type"].create( + { + "name": "Amenity Type 1", + "pms_property_ids": [(6, 0, [self.pms_property1.id])], + } + ) + self.amenity1 = self.env["pms.amenity"].create( + { + "name": "Amenity 1", + "pms_amenity_type_id": self.amenity_type1.id, + "default_code": "A1", + "pms_property_ids": [(6, 0, [self.pms_property1.id])], + "is_add_code_room_name": True, + } + ) + self.room1 = self.env["pms.room"].create( + { + "name": "Room 101", + "pms_property_id": self.pms_property1.id, + "room_type_id": self.room_type1.id, + "room_amenity_ids": [(6, 0, [self.amenity1.id])], + } + ) + expected_display_name = "%s [%s] %s" % ( + self.room1.name, + self.room_type1.default_code, + self.amenity1.default_code, + ) + self.assertEqual( + self.room1.display_name, + expected_display_name, + "The display name of the room is not as expected", + ) + + def test_display_name_room_with_several_amenities(self): + """ + Check that the display_name field of a room with several amenities + is as expected. + ------------ + Two amenities are created with diferent default code and with is_add_code_room_name + field as True. A room is created in which the amenities created before are added in + the room_amenity_ids field and then it is verified that the display name field of this + is composed of: + room.name [room_type.default_code] amenity1.default_code amenity2.default_code + """ + self.amenity_type1 = self.env["pms.amenity.type"].create( + { + "name": "Amenity Type 1", + "pms_property_ids": [(6, 0, [self.pms_property1.id])], + } + ) + self.amenity1 = self.env["pms.amenity"].create( + { + "name": "Amenity 1", + "pms_amenity_type_id": self.amenity_type1.id, + "default_code": "A1", + "pms_property_ids": [(6, 0, [self.pms_property1.id])], + "is_add_code_room_name": True, + } + ) + self.amenity2 = self.env["pms.amenity"].create( + { + "name": "Amenity 2", + "pms_amenity_type_id": self.amenity_type1.id, + "default_code": "B1", + "pms_property_ids": [(6, 0, [self.pms_property1.id])], + "is_add_code_room_name": True, + } + ) + self.room1 = self.env["pms.room"].create( + { + "name": "Room 101", + "pms_property_id": self.pms_property1.id, + "room_type_id": self.room_type1.id, + "room_amenity_ids": [(6, 0, [self.amenity1.id, self.amenity2.id])], + } + ) + expected_display_name = "%s [%s] %s %s" % ( + self.room1.name, + self.room_type1.default_code, + self.amenity1.default_code, + self.amenity2.default_code, + ) + self.assertEqual( + self.room1.display_name, + expected_display_name, + "The display name of the room is not as expected", + ) diff --git a/pms/views/pms_amenity_views.xml b/pms/views/pms_amenity_views.xml index a3f30ca9b..a75aeb46c 100644 --- a/pms/views/pms_amenity_views.xml +++ b/pms/views/pms_amenity_views.xml @@ -27,6 +27,7 @@ string="Amenity Type" domain="['|', ('pms_property_ids', '=', False), ('pms_property_ids', 'in', pms_property_ids)]" /> + @@ -92,6 +93,8 @@ + + diff --git a/pms/views/pms_room_views.xml b/pms/views/pms_room_views.xml index b8a2d40d9..40094bdf7 100644 --- a/pms/views/pms_room_views.xml +++ b/pms/views/pms_room_views.xml @@ -85,6 +85,9 @@ + + +