Do not show a price if there are mandatory non-free addons

This commit is contained in:
Raphael Michel
2022-08-15 14:54:51 +02:00
parent 2d584d115d
commit b9feceba49
2 changed files with 16 additions and 5 deletions

View File

@@ -58,9 +58,9 @@
{% endblocktrans %}
</span>
<span aria-hidden="true">{{ item.min_price|money:event.currency }} {{ item.max_price|money:event.currency }}</span>
{% elif not item.min_price and not item.max_price %}
{% elif not item.min_price and not item.max_price and not item.mandatory_priced_addons %}
<span class="text-uppercase">{% trans "free" context "price" %}</span>
{% else %}
{% elif not item.mandatory_priced_addons %}
{{ item.min_price|money:event.currency }}
{% endif %}
</div>
@@ -144,7 +144,9 @@
</div>
<p>
{% elif not var.display_price.gross %}
<span class="text-uppercase">{% trans "free" context "price" %}</span>
{% if not item.mandatory_priced_addons %}
<span class="text-uppercase">{% trans "free" context "price" %}</span>
{% endif %}
{% elif event.settings.display_net_prices %}
{{ var.display_price.net|money:event.currency }}
{% else %}
@@ -276,7 +278,9 @@
</div>
<p>
{% elif not item.display_price.gross %}
<span class="text-uppercase">{% trans "free" context "price" %}</span>
{% if not item.mandatory_priced_addons %}
<span class="text-uppercase">{% trans "free" context "price" %}</span>
{% endif %}
{% elif event.settings.display_net_prices %}
{{ item.display_price.net|money:event.currency }}
{% else %}

View File

@@ -65,7 +65,7 @@ from pretix.base.models import (
)
from pretix.base.models.event import SubEvent
from pretix.base.models.items import (
ItemBundle, SubEventItem, SubEventItemVariation,
ItemAddOn, ItemBundle, SubEventItem, SubEventItemVariation,
)
from pretix.base.services.quotas import QuotaAvailability
from pretix.helpers.compat import date_fromisocalendar
@@ -183,6 +183,13 @@ def get_grouped_items(event, subevent=None, voucher=None, channel='web', require
subevent=subevent,
)
),
mandatory_priced_addons=Exists(
ItemAddOn.objects.filter(
base_item_id=OuterRef('pk'),
min_count__gte=1,
price_included=False
)
),
requires_seat=requires_seat,
).filter(
quotac__gt=0, subevent_disabled=False,