Compare commits

...

2 Commits

Author SHA1 Message Date
Raphael Michel
1e919c7454 Update src/tests/base/test_orders.py
Co-authored-by: luelista <weller@rami.io>
2025-05-22 14:53:38 +02:00
Raphael Michel
b092d5f31b OrderChangeManager: Respect addons on cancellation check (Z#23193427) 2025-05-21 11:21:43 +02:00
2 changed files with 14 additions and 2 deletions

View File

@@ -2768,7 +2768,11 @@ class OrderChangeManager:
def _check_complete_cancel(self):
current = self.order.positions.count()
cancels = len([o for o in self._operations if isinstance(o, (self.CancelOperation, self.SplitOperation))])
cancels = sum([
1 + o.position.addons.count() for o in self._operations if isinstance(o, self.CancelOperation)
]) + len([
o for o in self._operations if isinstance(o, self.SplitOperation)
])
adds = len([o for o in self._operations if isinstance(o, self.AddOperation)])
if current > 0 and current - cancels + adds < 1:
raise OrderError(self.error_messages['complete_cancel'])

View File

@@ -1759,11 +1759,19 @@ class OrderChangeManagerTests(TestCase):
@classscope(attr='o')
def test_cancel_all_in_order(self):
self.shirt.category = self.event.categories.create(name='Add-ons', is_addon=True)
self.ticket.addons.create(addon_category=self.shirt.category)
self.ocm.add_position(self.shirt, None, Decimal('13.00'), addon_to=self.op1)
self.ocm.commit()
self.order.refresh_from_db()
self.ocm = OrderChangeManager(self.order, None)
assert self.order.positions.count() == 3
self.ocm.cancel(self.op1)
self.ocm.cancel(self.op2)
with self.assertRaises(OrderError):
self.ocm.commit()
assert self.order.positions.count() == 2
assert self.order.positions.count() == 3
@classscope(attr='o')
def test_empty(self):