diff --git a/pms/models/pms_service.py b/pms/models/pms_service.py index 548f0b03d..8d94ec0e0 100644 --- a/pms/models/pms_service.py +++ b/pms/models/pms_service.py @@ -346,7 +346,7 @@ class PmsService(models.Model): continue product = service.product_id consumed_on = product.consumed_on - if product.per_day: + if product.per_day and consumed_on in ("before", "after"): lines = [] day_qty = service._service_day_qty() days_diff = (reservation.checkout - reservation.checkin).days @@ -406,13 +406,18 @@ class PmsService(models.Model): service.service_line_ids = lines else: if not service.service_line_ids: + target_date = ( + reservation.checkin + if consumed_on == "checkin" + else reservation.checkout + ) price_unit = service._get_price_unit_line() service.service_line_ids = [ ( 0, False, { - "date": fields.Date.today(), + "date": target_date, "day_qty": day_qty, "price_unit": price_unit, }, diff --git a/pms/models/product_template.py b/pms/models/product_template.py index 6af72dcc3..3b1b69733 100644 --- a/pms/models/product_template.py +++ b/pms/models/product_template.py @@ -31,7 +31,12 @@ class ProductTemplate(models.Model): consumed_on = fields.Selection( string="Consumed", help="Indicates when the product is consumed", - selection=[("before", "Before night"), ("after", "After night")], + selection=[ + ("before", "All before night"), + ("after", "All after night"), + ("checkin", "Only first day"), + ("checkout", "Only last day"), + ], default="before", ) daily_limit = fields.Integer( diff --git a/pms/wizards/pms_booking_duplicate.py b/pms/wizards/pms_booking_duplicate.py index 1d98403db..3406c0fe1 100644 --- a/pms/wizards/pms_booking_duplicate.py +++ b/pms/wizards/pms_booking_duplicate.py @@ -343,9 +343,7 @@ class BookingDuplicate(models.TransientModel): "price_unit": ser_line.price_unit, "discount": ser_line.discount, "date": ser_line.date - + datetime.timedelta(days=displacement_days) - if service.per_day - else fields.Date.today(), + + datetime.timedelta(days=displacement_days), }, ) )