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"
/>
+