Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions pms/models/pms_reservation.py
Original file line number Diff line number Diff line change
Expand Up @@ -2311,6 +2311,26 @@
for record in self:
record.to_assign = False

def _get_board_services_penalty_amount(self, record, dates, penalty_percent):
# Check if there are board services to add to the penalty
# Only services with 'consumed_on' set to 'before' or
# 'after' are considered.
# Services consumed only on the first or last day are excluded.
amount_board_service = 0
board_services = record.service_ids.filtered("is_board_service")

Check warning on line 2320 in pms/models/pms_reservation.py

View check run for this annotation

Codecov / codecov/patch

pms/models/pms_reservation.py#L2319-L2320

Added lines #L2319 - L2320 were not covered by tests
for board_service in board_services:
consumed_on = board_service.product_id.consumed_on

Check warning on line 2322 in pms/models/pms_reservation.py

View check run for this annotation

Codecov / codecov/patch

pms/models/pms_reservation.py#L2322

Added line #L2322 was not covered by tests
for service_line in board_service.service_line_ids:
service_date = fields.Date.from_string(service_line.date)

Check warning on line 2324 in pms/models/pms_reservation.py

View check run for this annotation

Codecov / codecov/patch

pms/models/pms_reservation.py#L2324

Added line #L2324 was not covered by tests
if (consumed_on == "before" and service_date in dates) or (
consumed_on == "after"
and service_date in [d + datetime.timedelta(days=1) for d in dates]
):
amount_board_service += (

Check warning on line 2329 in pms/models/pms_reservation.py

View check run for this annotation

Codecov / codecov/patch

pms/models/pms_reservation.py#L2329

Added line #L2329 was not covered by tests
service_line.price_unit * service_line.day_qty
)
return amount_board_service * penalty_percent / 100

Check warning on line 2332 in pms/models/pms_reservation.py

View check run for this annotation

Codecov / codecov/patch

pms/models/pms_reservation.py#L2332

Added line #L2332 was not covered by tests

def _check_cancel_penalty(self):
for record in self:
# self.ensure_one()
Expand Down Expand Up @@ -2368,6 +2388,10 @@
* penalty_percent
/ 100
)
if record.service_ids:
amount_penalty += self._get_board_services_penalty_amount(

Check warning on line 2392 in pms/models/pms_reservation.py

View check run for this annotation

Codecov / codecov/patch

pms/models/pms_reservation.py#L2392

Added line #L2392 was not covered by tests
record, dates, penalty_percent
)
if not amount_penalty:
return
if not record.company_id.cancel_penalty_product_id:
Expand Down