From 923798ea5f0508e1e2e95bde0146cf0931f97272 Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Thu, 18 Jul 2024 20:49:58 +0200 Subject: [PATCH] fix cross-selling recommendation logic bug --- src/pretix/base/models/discount.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/pretix/base/models/discount.py b/src/pretix/base/models/discount.py index 7e59784697..6c28489844 100644 --- a/src/pretix/base/models/discount.py +++ b/src/pretix/base/models/discount.py @@ -303,17 +303,15 @@ class Discount(LoggedModel): if possible_applications_cond * self.benefit_only_apply_to_cheapest_n_matches > len(benefit_idx_group): # unused discount ("for each 1 ticket you buy, get 50% on 2 t-shirts", cart content: 1 ticket # but 0 t-shirts) -> 2 shirt maybe potential discount (if the 1 ticket is not consumed by a later discount) - - # - # TODO BUG: - # cross-selling schlägt zu viele potential discounts vor ("consume" side of rule: sobald mindestens - # ein voller block übrig ist zählt auch ein letzter, angebrochener block als voll mit) - # - - for i, idx in enumerate(condition_idx_group[n_groups * self.condition_min_count:]): + for i, idx in enumerate(condition_idx_group[ + n_groups * self.condition_min_count: + possible_applications_cond * self.condition_min_count + ]): + print(i, idx) collect_potential_discounts[idx] += [ (self, self.benefit_only_apply_to_cheapest_n_matches, i // self.condition_min_count) ] + print(collect_potential_discounts) else: consume_idx = condition_idx_group