diff --git a/src/pretix/base/models/vouchers.py b/src/pretix/base/models/vouchers.py
index 042ba29501..3bc82abb1f 100644
--- a/src/pretix/base/models/vouchers.py
+++ b/src/pretix/base/models/vouchers.py
@@ -460,7 +460,7 @@ class Voucher(LoggedModel):
return Order.objects.filter(all_positions__voucher__in=[self]).distinct()
- def seating_available(self):
+ def seating_available(self, subevent):
kwargs = {}
if self.subevent:
kwargs['subevent'] = self.subevent
@@ -469,4 +469,4 @@ class Voucher(LoggedModel):
elif self.item_id:
return self.item.seat_category_mappings.filter(**kwargs).exists()
else:
- return False
+ return bool(subevent.seating_plan) if subevent else self.event.seating_plan
diff --git a/src/pretix/presale/templates/pretixpresale/event/voucher.html b/src/pretix/presale/templates/pretixpresale/event/voucher.html
index e1f6193bbf..6b8e7d0fa6 100644
--- a/src/pretix/presale/templates/pretixpresale/event/voucher.html
+++ b/src/pretix/presale/templates/pretixpresale/event/voucher.html
@@ -30,7 +30,7 @@
- {% if voucher.seating_available %}
+ {% if seating_available %}
{% if event.has_subevents %}
{% eventsignal event "pretix.presale.signals.render_seating_plan" request=request subevent=subevent voucher=voucher %}
{% else %}
diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py
index 330906f6de..0441762c66 100644
--- a/src/pretix/presale/views/cart.py
+++ b/src/pretix/presale/views/cart.py
@@ -435,6 +435,7 @@ class RedeemView(NoSearchIndexViewMixin, EventViewMixin, TemplateView):
context['items_by_category'] = item_group_by_category(items)
context['subevent'] = self.subevent
+ context['seating_available'] = self.voucher.seating_available(self.subevent)
context['new_tab'] = (
'require_cookie' in self.request.GET and