diff --git a/pms/models/pms_folio.py b/pms/models/pms_folio.py index a4b78572b..329cb66b2 100644 --- a/pms/models/pms_folio.py +++ b/pms/models/pms_folio.py @@ -1810,7 +1810,7 @@ class PmsFolio(models.Model): } def _message_post_after_hook(self, message, msg_vals): - res = super(PmsFolio, self).sudo()._message_post_after_hook(message, msg_vals) + res = super(PmsFolio, self)._message_post_after_hook(message, msg_vals) for folio in self: for follower in folio.message_follower_ids: follower.sudo().unlink() diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index c05b180d3..cb9d1f1e4 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -1011,14 +1011,14 @@ class PmsReservation(models.Model): if (reservation.adults and line.adults) or ( reservation.children and line.children ): - res = { + data = { "product_id": line.product_id.id, "is_board_service": True, "folio_id": reservation.folio_id.id, "reservation_id": reservation.id, "board_service_line_id": line.id, } - board_services.append((0, False, res)) + board_services.append((0, False, data)) reservation.service_ids -= old_board_lines reservation.service_ids = board_services elif old_board_lines: @@ -2153,7 +2153,29 @@ class PmsReservation(models.Model): vals.get("reservation_line_ids") and any( [ - ("date" in line[2] or "price" in line[2]) + ( + "date" in line[2] + and ( + datetime.datetime.strptime( + line[2]["date"], "%Y-%m-%d" + ).date() + != self.env["pms.reservation.line"] + .browse(line[1]) + .date + ) + ) + or ( + "price" in line[2] + and ( + round(line[2]["price"], 2) + != round( + self.env["pms.reservation.line"] + .browse(line[1]) + .price, + 2, + ) + ) + ) for line in vals.get("reservation_line_ids") if line[0] == 1 ] diff --git a/pms/models/pms_reservation_line.py b/pms/models/pms_reservation_line.py index 986f41837..64eab7bc0 100644 --- a/pms/models/pms_reservation_line.py +++ b/pms/models/pms_reservation_line.py @@ -440,7 +440,10 @@ class PmsReservationLine(models.Model): ).ids if ( record.occupies_availability - and not self.env.context.get("avoid_availability_check", False) + and not ( + self.env.context.get("avoid_availability_check", False) + or self.env.context.get("force_overbooking", False) + ) and record.room_id.id in avail.get_rooms_not_avail( checkin=record.date, @@ -475,10 +478,10 @@ class PmsReservationLine(models.Model): discount = first_discount + cancel_discount line.price_day_total = line.price - discount - @api.depends("room_id", "avail_id", "avail_id.real_avail", "occupies_availability") + @api.depends("room_id", "state", "is_reselling") def _compute_overbooking(self): for record in self.filtered("room_id"): - if record.occupies_availability: + if record.state != "cancel" and not record.is_reselling: record_id = ( record.id if isinstance(record, int) @@ -495,8 +498,8 @@ class PmsReservationLine(models.Model): ] ): record.overbooking = True - else: - record.overbooking = False + else: + record.overbooking = False @api.model_create_multi def create(self, vals_list): diff --git a/pms/views/pms_reservation_views.xml b/pms/views/pms_reservation_views.xml index fd5e8f561..9e7a05419 100644 --- a/pms/views/pms_reservation_views.xml +++ b/pms/views/pms_reservation_views.xml @@ -587,6 +587,10 @@ widget="many2many_tags" optional="show" /> +