diff --git a/hotel/models/hotel_reservation.py b/hotel/models/hotel_reservation.py
index f9fcd328c..68c3a10f1 100644
--- a/hotel/models/hotel_reservation.py
+++ b/hotel/models/hotel_reservation.py
@@ -446,7 +446,8 @@ class HotelReservation(models.Model):
days=days_diff,
per_person=service.product_id.per_person,
persons=service.ser_room_line.adults,
- old_line_days=service.service_line_ids
+ old_line_days=service.service_line_ids,
+ consumed_on=service.product_id.consumed_on,
))
if ('checkin' in vals and record.checkin != vals['checkin']) or\
('checkout' in vals and record.checkout != vals['checkout']) or\
@@ -787,7 +788,8 @@ class HotelReservation(models.Model):
days=self.nights,
per_person=product.per_person,
persons=self.adults,
- old_line_days=False))
+ old_line_days=False,
+ consumed_on=product.consumed_on,))
board_services.append((0, False, res))
other_services = self.service_ids.filtered(lambda r: not r.is_board_service)
self.update({'service_ids': board_services})
diff --git a/hotel/models/hotel_service.py b/hotel/models/hotel_service.py
index 572043481..03bf5831b 100644
--- a/hotel/models/hotel_service.py
+++ b/hotel/models/hotel_service.py
@@ -187,6 +187,7 @@ class HotelService(models.Model):
per_person=product.per_person,
persons=reservation.adults,
old_day_lines=False,
+ consumed_on=product.consumed_on,
))
record = super(HotelService, self).create(vals)
return record
@@ -220,7 +221,8 @@ class HotelService(models.Model):
days=nights,
per_person=product.per_person,
persons=reservation.adults,
- old_line_days=self.service_line_ids
+ old_line_days=self.service_line_ids,
+ consumed_on=product.consumed_on,
))
res = super(HotelService, self).write(vals)
return res
@@ -306,7 +308,9 @@ class HotelService(models.Model):
days=nights,
per_person=product.per_person,
persons=reservation.adults,
- old_line_days=record.service_line_ids))
+ old_line_days=record.service_line_ids,
+ consumed_on=product.consumed_on,
+ ))
if record.product_id.daily_limit > 0:
for i in range(0, nights):
idate = (fields.Date.from_string(checkin) + timedelta(days=i)).strftime(
@@ -385,11 +389,14 @@ class HotelService(models.Model):
"""
cmds = [(5, 0, 0)]
old_line_days = kwargs.get('old_line_days')
+ consumed_on = kwargs.get('consumed_on') if kwargs.get('consumed_on') else 'before'
total_qty = 0
day_qty = 1
if kwargs.get('per_person'): #WARNING: Change adults in reservation NOT update qty service!!
day_qty = kwargs.get('persons')
for i in range(0, kwargs.get('days')):
+ if consumed_on == 'after':
+ i += 1
idate = (fields.Date.from_string(kwargs.get('dfrom')) + timedelta(days=i)).strftime(
DEFAULT_SERVER_DATE_FORMAT)
if not old_line_days or idate not in old_line_days.mapped('date'):
diff --git a/hotel/models/inherited_product_template.py b/hotel/models/inherited_product_template.py
index ce70952a1..a47c546e6 100644
--- a/hotel/models/inherited_product_template.py
+++ b/hotel/models/inherited_product_template.py
@@ -9,7 +9,10 @@ class ProductTemplate(models.Model):
per_day = fields.Boolean('Unit increment per day')
per_person = fields.Boolean('Unit increment per person')
+ consumed_on = fields.Selection([
+ ('before', 'Before night'),
+ ('after', 'After night')], 'Consumed', default='before')
daily_limit = fields.Integer('Daily limit')
is_extra_bed = fields.Boolean('Is extra bed', default=False)
show_in_calendar = fields.Boolean('Show in Calendar', default=False,
- help='Specifies if the product is shown in the calendar information.')
+ help='Specifies if the product is shown in the calendar information.')
diff --git a/hotel/views/inherited_product_template_views.xml b/hotel/views/inherited_product_template_views.xml
index 2b3a54f1f..a64bf1524 100644
--- a/hotel/views/inherited_product_template_views.xml
+++ b/hotel/views/inherited_product_template_views.xml
@@ -17,6 +17,8 @@
+
diff --git a/hotel/wizard/wizard_reservation.py b/hotel/wizard/wizard_reservation.py
index b9e24c67a..921635f1c 100644
--- a/hotel/wizard/wizard_reservation.py
+++ b/hotel/wizard/wizard_reservation.py
@@ -542,7 +542,8 @@ class ReservationWizard(models.TransientModel):
days=nights,
per_person=product.per_person,
persons=line.adults,
- old_line_days=False))
+ old_line_days=False,
+ consumed_on=product.consumed_on,))
service_line.update(vals)
price_product = service_line.price_unit * (1 - (line.discount or 0.0) * 0.01)
pricelist = line.folio_wizard_id.pricelist_id
diff --git a/hotel_l10n_es/views/inherit_hotel_checkin_partner_views.xml b/hotel_l10n_es/views/inherit_hotel_checkin_partner_views.xml
index ef515eb66..b263b170b 100755
--- a/hotel_l10n_es/views/inherit_hotel_checkin_partner_views.xml
+++ b/hotel_l10n_es/views/inherit_hotel_checkin_partner_views.xml
@@ -109,7 +109,7 @@
{"no_create": True}
False
- 'Search'
+ Search