[ADD]pms: add filtering by pricelist in board service room type

This commit is contained in:
Darío Lodeiros
2025-01-11 09:55:49 +01:00
parent d93665a5e9
commit dea31e194c
4 changed files with 29 additions and 4 deletions

View File

@@ -60,6 +60,11 @@ class PmsBoardServiceRoomType(models.Model):
string="Apply by Default",
help="Indicates if this board service is applied by default in the room type",
)
pricelist_ids = fields.Many2many(
string="Pricelists",
help="Pricelists where this Board Service is available",
comodel_name="product.pricelist",
)
@api.depends("board_service_line_ids.amount")
def _compute_board_amount(self):
@@ -86,11 +91,11 @@ class PmsBoardServiceRoomType(models.Model):
"by_default"
)
)
# TODO Check properties (with different propertys is allowed)
if any(
default_boards.filtered(
lambda l: l.id != record.id
and l.pms_property_id == record.pms_property_id
lambda board: board.id != record.id
and board.pms_property_id == record.pms_property_id
and board.pricelist_ids == record.pricelist_ids
)
):
raise UserError(_("""Only can set one default board service"""))

View File

@@ -770,13 +770,25 @@ class PmsReservation(models.Model):
def _compute_board_service_room_id(self):
for reservation in self:
if reservation.pricelist_id and reservation.room_type_id:
board_service_default = self.env["pms.board.service.room.type"].search(
board_services_candidates = self.env[
"pms.board.service.room.type"
].search(
[
("pms_room_type_id", "=", reservation.room_type_id.id),
("by_default", "=", True),
("pms_property_id", "=", reservation.pms_property_id.id),
]
)
board_service_default = (
board_services_candidates.filtered(
lambda service: reservation.pricelist_id
in service.pricelist_ids
)
or board_services_candidates.filtered(
lambda service: not service.pricelist_ids
)
or False
)
if (
not reservation.board_service_room_id
or not reservation.board_service_room_id.pms_room_type_id

View File

@@ -75,6 +75,10 @@
icon="fa-2x fa-bars"
name="open_board_lines_form"
/>
<field
name="pricelist_ids"
widget="many2many_tags"
/>
</tree>
</field>
</page>

View File

@@ -390,6 +390,10 @@ class WizardFolioChanges(models.TransientModel):
reservation.folio_id.pms_property_id.id
== x.pms_property_id.ids
)
and (
not x.pricelist_ids
or reservation.pricelist_id.id in x.pricelist_ids.ids
)
)
)