From dba8761bc53168b79c90a58319d8f1a66723c91e Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 15 May 2019 15:56:54 +0200 Subject: [PATCH] Fix a bug around bundles and carts --- src/pretix/base/services/orders.py | 2 -- src/tests/presale/test_checkout.py | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index 313ec42fd..946265e0d 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -534,7 +534,6 @@ def _check_positions(event: Event, now_dt: datetime, positions: List[CartPositio continue if price.gross != cp.price and not (cp.item.free_price and cp.price > price.gross): - positions[i] = cp cp.price = price.gross cp.includes_tax = bool(price.rate) cp.save() @@ -558,7 +557,6 @@ def _check_positions(event: Event, now_dt: datetime, positions: List[CartPositio break if quota_ok: - positions[i] = cp cp.expires = now_dt + timedelta( minutes=event.settings.get('reservation_time', as_type=int)) cp.save() diff --git a/src/tests/presale/test_checkout.py b/src/tests/presale/test_checkout.py index 38db6613e..1c818861a 100644 --- a/src/tests/presale/test_checkout.py +++ b/src/tests/presale/test_checkout.py @@ -2206,6 +2206,21 @@ class CheckoutBundleTest(BaseCheckoutTestCase, TestCase): assert a.tax_rate == Decimal('7.00') assert a.tax_value == Decimal('0.10') + def test_simple_bundle_with_voucher(self): + v = Voucher.objects.create(item=self.ticket, value=Decimal('12.00'), event=self.event, price_mode='none', + valid_until=now() + timedelta(days=2)) + self.cp1.voucher = v + self.cp1.save() + oid = _perform_order(self.event.pk, 'manual', [self.cp1.pk, self.bundled1.pk], 'admin@example.org', 'en', None, {}, 'web') + o = Order.objects.get(pk=oid) + cp = o.positions.get(addon_to__isnull=True) + assert cp.item == self.ticket + assert cp.price == 23 - 1.5 + assert cp.addons.count() == 1 + a = cp.addons.get() + assert a.item == self.trans + assert a.price == 1.5 + def test_expired_keep_price(self): self.cp1.expires = now() - timedelta(minutes=10) self.cp1.save()