diff --git a/hotel/data/hotel_demo.xml b/hotel/data/hotel_demo.xml
index 8a178cb52..ee34db3c8 100644
--- a/hotel/data/hotel_demo.xml
+++ b/hotel/data/hotel_demo.xml
@@ -152,6 +152,7 @@
2
+ 1
Double-202
@@ -188,9 +189,10 @@
15.0
service
False
- False
- True
+ True
+ False
1
+ True
diff --git a/hotel/models/hotel_reservation.py b/hotel/models/hotel_reservation.py
index 8406eee33..8d7b3e7b6 100644
--- a/hotel/models/hotel_reservation.py
+++ b/hotel/models/hotel_reservation.py
@@ -353,8 +353,8 @@ class HotelReservation(models.Model):
service.update(service.prepare_service_lines(
dfrom=checkin,
days=days_diff,
- per_person=product.per_person,
- persons=reservation.adults,
+ per_person=service.product_id.per_person,
+ persons=service.ser_room_line.adults,
old_line_days=service.service_line_ids
))
if ('checkin' in vals and record.checkin != vals['checkin']) or \
@@ -485,7 +485,9 @@ class HotelReservation(models.Model):
@api.constrains('adults')
def _check_adults(self):
for record in self:
- if record.adults > record.room_id.capacity:
+ extra_bed = record.service_ids.filtered(
+ lambda r: r.product_id.is_extra_bed == True)
+ if record.adults > record.room_id.get_capacity(len(extra_bed)):
raise ValidationError(
_("Reservation persons can't be higher than room capacity"))
if record.adults == 0:
@@ -499,7 +501,9 @@ class HotelReservation(models.Model):
def onchange_room_id(self):
if self.room_id:
write_vals = {}
- if self.room_id.capacity < self.adults:
+ extra_bed = self.service_ids.filtered(
+ lambda r: r.product_id.is_extra_bed == True)
+ if self.room_id.get_capacity(len(extra_bed)) < self.adults:
raise UserError(
_('%s people do not fit in this room! ;)') % (self.adults))
if self.adults == 0:
diff --git a/hotel/models/hotel_room.py b/hotel/models/hotel_room.py
index a71d5c71c..fcbf4224e 100644
--- a/hotel/models/hotel_room.py
+++ b/hotel/models/hotel_room.py
@@ -32,8 +32,15 @@ class HotelRoom(models.Model):
help="A description of the Product that you want to communicate to "
" your customers. This description will be copied to every Sales "
" Order, Delivery Order and Customer Invoice/Credit Note")
+ extra_beds_allowed = fields.Integer('Extra beds allowed',
+ default='0',
+ required=True)
@api.constrains('capacity')
def _check_capacity(self):
if self.capacity < 1:
raise ValidationError(_("Room capacity can't be less than one"))
+
+ @api.multi
+ def get_capacity(self, extra_bed=0):
+ return self.capacity + extra_bed
diff --git a/hotel/models/hotel_service.py b/hotel/models/hotel_service.py
index 26c52c7b6..c19aaddbc 100644
--- a/hotel/models/hotel_service.py
+++ b/hotel/models/hotel_service.py
@@ -145,6 +145,9 @@ class HotelService(models.Model):
per_person=product.per_person,
persons=reservation.adults,
old_line_days=self.service_line_ids))
+ if record.product_id.daily_limit > 0:
+ for day in record.service_line_ids:
+ day.no_free_resources()
@api.model
def prepare_service_lines(self, **kwargs):
diff --git a/hotel/models/hotel_service_line.py b/hotel/models/hotel_service_line.py
index 94956c6e2..2afcf7673 100644
--- a/hotel/models/hotel_service_line.py
+++ b/hotel/models/hotel_service_line.py
@@ -20,12 +20,15 @@ class HotelServiceLine(models.Model):
for record in self:
limit = record.product_id.daily_limit
if limit > 0:
- out_qty = sum(self.env['hotel.service.line'].search([(
- 'product_id', '=', record.product_id,
- 'date', '=', record.date)]).mapped('day_qty'))
+ out_qty = sum(self.env['hotel.service.line'].search([
+ ('product_id', '=', record.product_id.id),
+ ('date', '=', record.date),
+ ('service_id', '!=', record.service_id.id)
+ ]).mapped('day_qty'))
if limit < out_qty + record.day_qty:
raise ValidationError(
- _("Limit exceeded for %s")% record.date)
+ _("%s limit exceeded for %s")% (record.service_id.product_id.name,
+ record.date))
diff --git a/hotel/models/inherited_product_template.py b/hotel/models/inherited_product_template.py
index 2ae139ff0..5a1409757 100644
--- a/hotel/models/inherited_product_template.py
+++ b/hotel/models/inherited_product_template.py
@@ -6,7 +6,7 @@ from openerp import models, fields
class ProductTemplate(models.Model):
_inherit = "product.template"
- is_hotel_service = fields.Boolean('Is a Hotel Service', default=False)
per_day = fields.Boolean('Unit increment per day')
per_person = fields.Boolean('Unit increment per person')
daily_limit = fields.Integer('Daily limit')
+ is_extra_bed = fields.Boolean('Is extra bed', default=False)
diff --git a/hotel/views/hotel_room_views.xml b/hotel/views/hotel_room_views.xml
index 137ca6579..e99531004 100644
--- a/hotel/views/hotel_room_views.xml
+++ b/hotel/views/hotel_room_views.xml
@@ -34,6 +34,7 @@
+
diff --git a/hotel/views/inherited_product_template_views.xml b/hotel/views/inherited_product_template_views.xml
index ba3dd61e3..1f99d3e0a 100644
--- a/hotel/views/inherited_product_template_views.xml
+++ b/hotel/views/inherited_product_template_views.xml
@@ -10,7 +10,7 @@
-
+