[IMP]pms: add avoid_availbility_check context to swap operations

This commit is contained in:
Darío Lodeiros
2023-04-06 09:41:03 +02:00
parent 0afe67982a
commit ff93534112
2 changed files with 16 additions and 15 deletions

View File

@@ -425,6 +425,7 @@ class PmsReservationLine(models.Model):
).ids ).ids
if ( if (
record.occupies_availability record.occupies_availability
and not self.env.context.get("avoid_availability_check", False)
and record.room_id.id and record.room_id.id
in avail.get_rooms_not_avail( in avail.get_rooms_not_avail(
checkin=record.date, checkin=record.date,

View File

@@ -110,7 +110,14 @@ class ReservationSplitJoinSwapWizard(models.TransientModel):
record.checkin + datetime.timedelta(days=x) record.checkin + datetime.timedelta(days=x)
for x in range(0, (record.checkout - record.checkin).days) for x in range(0, (record.checkout - record.checkin).days)
]: ]:
domain_lines = [] domain_lines = [
("occupies_availability", "=", True),
(
"pms_property_id",
"=",
record.reservation_id.pms_property_id.id,
),
]
if record.room_source and record.room_target: if record.room_source and record.room_target:
domain_lines.extend( domain_lines.extend(
[ [
@@ -129,7 +136,7 @@ class ReservationSplitJoinSwapWizard(models.TransientModel):
[ [
("id", "in", reservation_ids), ("id", "in", reservation_ids),
("rooms", "!=", False), ("rooms", "!=", False),
] ],
) )
.sorted("rooms") .sorted("rooms")
) )
@@ -279,19 +286,12 @@ class ReservationSplitJoinSwapWizard(models.TransientModel):
[("date", "=", date_iterator), ("room_id", "=", target)] [("date", "=", date_iterator), ("room_id", "=", target)]
) )
if line_room_source and line_room_target: if line_room_source and line_room_target:
line_room_target.with_context(
# this causes an unique error constraint avoid_availability_check=True
line_room_target.occupies_availability = False ).room_id = source
line_room_source.occupies_availability = False line_room_source.with_context(
avoid_availability_check=True
line_room_target.room_id = source ).room_id = target
line_room_source.room_id = target
self.flush()
line_room_target._compute_occupies_availability()
line_room_source._compute_occupies_availability()
elif line_room_source: elif line_room_source:
line_room_source.room_id = target line_room_source.room_id = target
elif line_room_target: elif line_room_target: