diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py
index 10b8dc92e..df687a661 100644
--- a/pms/models/pms_reservation.py
+++ b/pms/models/pms_reservation.py
@@ -228,6 +228,10 @@ class PmsReservation(models.Model):
store=True,
readonly=False,
)
+ children_occupying = fields.Integer(
+ string="Children occupying",
+ )
+
children = fields.Integer(
"Children",
readonly=False,
diff --git a/pms/models/pms_reservation_line.py b/pms/models/pms_reservation_line.py
index a844d9f25..a8a9f140f 100644
--- a/pms/models/pms_reservation_line.py
+++ b/pms/models/pms_reservation_line.py
@@ -309,8 +309,9 @@ class PmsReservationLine(models.Model):
extra_bed = record.reservation_id.service_ids.filtered(
lambda r: r.product_id.is_extra_bed is True
)
- if record.reservation_id.adults > record.room_id.get_capacity(
- len(extra_bed)
+ if (
+ record.reservation_id.adults + record.reservation_id.children_occupying
+ > record.room_id.get_capacity(len(extra_bed))
):
raise ValidationError(_("Persons can't be higher than room capacity"))
# if record.reservation_id.adults == 0:
diff --git a/pms/tests/test_pms_reservation.py b/pms/tests/test_pms_reservation.py
index 0e568ff83..3fc967ce9 100644
--- a/pms/tests/test_pms_reservation.py
+++ b/pms/tests/test_pms_reservation.py
@@ -1,15 +1,19 @@
-from datetime import timedelta
+import datetime
+
+from freezegun import freeze_time
from odoo import fields
+from odoo.exceptions import ValidationError
from .common import TestHotel
+@freeze_time("2012-01-14")
class TestPmsReservations(TestHotel):
def test_create_reservation(self):
today = fields.date.today()
- checkin = today + timedelta(days=8)
- checkout = checkin + timedelta(days=11)
+ checkin = today + datetime.timedelta(days=8)
+ checkout = checkin + datetime.timedelta(days=11)
demo_user = self.env.ref("base.user_demo")
customer = self.env.ref("base.res_partner_12")
reservation_vals = {
@@ -30,6 +34,24 @@ class TestPmsReservations(TestHotel):
)
self.assertEqual(
reservation.reservation_line_ids[-1].date,
- checkout - timedelta(1),
+ checkout - datetime.timedelta(1),
"Reservation lines don't end in the correct date",
)
+
+ def test_manage_children_raise(self):
+
+ # ARRANGE
+ PmsReservation = self.env["pms.reservation"]
+
+ # ACT & ASSERT
+ with self.assertRaises(ValidationError), self.cr.savepoint():
+
+ PmsReservation.create(
+ {
+ "adults": 2,
+ "children_occupying": 1,
+ "checkin": datetime.datetime.now(),
+ "checkout": datetime.datetime.now() + datetime.timedelta(days=1),
+ "room_type_id": self.browse_ref("pms.pms_room_type_0").id,
+ }
+ )
diff --git a/pms/views/pms_reservation_views.xml b/pms/views/pms_reservation_views.xml
index 6cfd976e7..ce6b98f0f 100644
--- a/pms/views/pms_reservation_views.xml
+++ b/pms/views/pms_reservation_views.xml
@@ -301,6 +301,10 @@
name="children"
attrs="{'invisible': [('reservation_type','in',('out'))]}"
/>
+