diff --git a/pms/demo/pms_reservation.xml b/pms/demo/pms_reservation.xml
index 8f201a7d7..57c858299 100644
--- a/pms/demo/pms_reservation.xml
+++ b/pms/demo/pms_reservation.xml
@@ -244,7 +244,7 @@
2
1
- onboard
+ confirm
diff --git a/pms/models/pms_checkin_partner.py b/pms/models/pms_checkin_partner.py
index 4e411646b..def65db15 100644
--- a/pms/models/pms_checkin_partner.py
+++ b/pms/models/pms_checkin_partner.py
@@ -129,7 +129,7 @@ class PmsCheckinPartner(models.Model):
if reservation_id:
reservation = self.env["pms.reservation"].browse(reservation_id)
draft_checkins = reservation.checkin_partner_ids.filtered(
- lambda c: c.state in ("draft")
+ lambda c: c.state == "draft"
)
if len(draft_checkins) > 0 and vals.get("partner_id"):
draft_checkins[0].sudo().unlink()
diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py
index c5ec14cea..c07fae506 100644
--- a/pms/models/pms_reservation.py
+++ b/pms/models/pms_reservation.py
@@ -572,7 +572,7 @@ class PmsReservation(models.Model):
lambda c: c.state in ("precheckin", "onboard", "done")
)
unassigned_checkins = reservation.checkin_partner_ids.filtered(
- lambda c: c.state in ("draft")
+ lambda c: c.state == "draft"
)
leftover_unassigneds_count = (
len(assigned_checkins) + len(unassigned_checkins) - reservation.adults
@@ -626,7 +626,7 @@ class PmsReservation(models.Model):
def _compute_pending_checkin_data(self):
for reservation in self:
reservation.pending_checkin_data = len(
- reservation.checkin_partner_ids.filtered(lambda c: c.state in ("draft"))
+ reservation.checkin_partner_ids.filtered(lambda c: c.state == "draft")
)
@api.depends("pending_checkin_data")
@@ -718,7 +718,7 @@ class PmsReservation(models.Model):
"Product Unit of Measure"
)
for line in self:
- if line.state in ("draft"):
+ if line.state == "draft":
line.invoice_status = "no"
elif not float_is_zero(line.qty_to_invoice, precision_digits=precision):
line.invoice_status = "to invoice"
@@ -857,7 +857,9 @@ class PmsReservation(models.Model):
def _max_checkin_partner_ids(self):
for record in self:
if len(record.checkin_partner_ids) > record.adults:
- raise models.ValidationError(_("The room already is completed"))
+ raise models.ValidationError(
+ _("The room already is completed (%s)", record.name)
+ )
@api.constrains("adults")
def _check_adults(self):
@@ -870,9 +872,23 @@ class PmsReservation(models.Model):
len(extra_bed)
):
raise ValidationError(
- _("Persons can't be higher than room capacity")
+ _(
+ "Persons can't be higher than room capacity (%s)",
+ record.name,
+ )
)
+ @api.constrains("state")
+ def _check_onboard_reservation(self):
+ for record in self:
+ if (
+ not record.checkin_partner_ids.filtered(lambda c: c.state == "onboard")
+ and record.state == "onboard"
+ ):
+ raise ValidationError(
+ _("No person from reserve %s has arrived", record.name)
+ )
+
# @api.constrains("reservation_type", "partner_id")
# def _check_partner_reservation(self):
# for reservation in self:
@@ -1050,7 +1066,7 @@ class PmsReservation(models.Model):
def autocheckout(self):
reservations = self.env["pms.reservation"].search(
[
- ("state", "not in", ("done", "cancelled")),
+ ("state", "not in", ["done", "cancelled"]),
("checkout", "<", fields.Date.today()),
]
)
@@ -1089,7 +1105,7 @@ class PmsReservation(models.Model):
def confirm(self):
for record in self:
vals = {}
- if record.checkin_partner_ids:
+ if record.checkin_partner_ids.filtered(lambda c: c.state == "onboard"):
vals.update({"state": "onboard"})
else:
vals.update({"state": "confirm"})
diff --git a/pms/models/pms_service.py b/pms/models/pms_service.py
index 5a36ecc30..6ff3facee 100644
--- a/pms/models/pms_service.py
+++ b/pms/models/pms_service.py
@@ -459,7 +459,7 @@ class PmsService(models.Model):
)
for line in self:
state = line.folio_id.state or "draft"
- if state in ("draft"):
+ if state == "draft":
line.invoice_status = "no"
elif not float_is_zero(line.qty_to_invoice, precision_digits=precision):
line.invoice_status = "to invoice"
diff --git a/pms/tests/test_pms_checkin_partner.py b/pms/tests/test_pms_checkin_partner.py
index 7b53f97c2..9485e6dd1 100644
--- a/pms/tests/test_pms_checkin_partner.py
+++ b/pms/tests/test_pms_checkin_partner.py
@@ -91,15 +91,9 @@ class TestPmsCheckinPartner(TestHotel):
# ARRANGE
self.arrange_single_checkin()
- # ACT
- self.checkin1.action_on_board()
-
- # ASSERT
- self.assertEqual(
- self.checkin1.state,
- "onboard",
- "the partner checkin was not successful",
- )
+ # ACT & ASSERT
+ with self.assertRaises(ValidationError), self.cr.savepoint():
+ self.reservation_1.state = "onboard"
def test_onboard_reservation(self):