From 0365f6d9fc973048e070e6145b14bfb50db17a98 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 7 Aug 2023 14:13:44 +0200 Subject: [PATCH] Order change manager: Set new expiry date if splitted order is pending (#3509) --- src/pretix/base/services/orders.py | 5 +++++ src/tests/base/test_orders.py | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index 5f1efcc984..a1829c63ee 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -2476,6 +2476,11 @@ class OrderChangeManager: split_order.status = Order.STATUS_PAID else: split_order.status = Order.STATUS_PENDING + if self.order.status == Order.STATUS_PAID: + split_order.set_expires( + now(), + list(set(p.subevent_id for p in split_positions)) + ) split_order.save() if offset_amount > Decimal('0.00'): diff --git a/src/tests/base/test_orders.py b/src/tests/base/test_orders.py index 7edc74ab6f..4c2b5c9210 100644 --- a/src/tests/base/test_orders.py +++ b/src/tests/base/test_orders.py @@ -2228,6 +2228,7 @@ class OrderChangeManagerTests(TestCase): @classscope(attr='o') def test_split_and_change_higher(self): self.order.status = Order.STATUS_PAID + self.order.expires = now() - timedelta(days=1) self.order.save() self.order.payments.create( provider='manual', @@ -2247,6 +2248,7 @@ class OrderChangeManagerTests(TestCase): assert not self.order.fees.exists() assert self.order.status == Order.STATUS_PAID assert self.order.pending_sum == Decimal('0.00') + assert self.order.expires < now() r = self.order.refunds.last() assert r.provider == 'offsetting' assert r.amount == Decimal('23.00') @@ -2255,6 +2257,7 @@ class OrderChangeManagerTests(TestCase): # New order assert self.op2.order != self.order o2 = self.op2.order + assert o2.expires > now() assert o2.total == Decimal('42.00') assert o2.status == Order.STATUS_PENDING assert o2.positions.count() == 1