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