Release 4.10.0 of pretix
Today, we are releasing pretix 4.10.0. This release contains a feature we are really excited about: automated discounts based on cart content! Of course, there are lots of bug fixes and improvements on smaller features throughout the system as well.
Big thanks go to Edd28, Emanuele Signoretta, Henryk Plötz, Helias Mackay, Iryna Loik, Iryna N, Jonathan Berger, Maico Timmerman, Ola, Olha Dolinska, Viktoriia, Yuliya Palmova, and Олександра Сергіївна Миргородська who contributed to this release. ❤️
pretix 4.10.0 is now available for installation via pip
. The new Docker images will appear on Docker over the
next few hours. All customers of pretix Hosted are already using the new version and do not need to take any action.
Automated discounts
This release introduces a new feature into our range of pricing options: Automated discounts. With this powerful new part of pretix, you can create rules that automatically grant a discount when a cart fulfills a certain condition. Typical examples include:
-
a group discount that automatically grants 20 % off if someone buys at least 5 tickets.
-
a 3-for-2 discount that reduces the price of one ticket to zero if at least three are in the cart.
-
a volume discount that automatically grants 10 % off if someone spends at least €500.
-
a loyality discount that automatically grants 10 % off if someone buys tickets to at least 3 different dates of the same event series.
All of these can of course be limited to specific products, sales channels, or time frames. And in contrast to vouchers, your customers do not need to do a single thing to profit from the discount, as soon as they add the products to the cart, the discount will automatically be applied.
You can find the new options in the main menu at "Products" > "Discounts".
Change to voucher budgets
(If you use pretix Hosted and have NOT received an email from us about this earlier this month, you can very likely ignore this section.)
As a side effect of the new discount feature, our pricing logic has changed with an impact on the "maximum budget" feature for vouchers. Currently, if a voucher with a fixed budget is redeemed, the amount subtracted from the budget is calculated by subtracting the actual gross price of the item from the gross price it would have had without the voucher. This has a few disadvantages, such as when dealing with country-specific tax rates, or with other factors affecting the price such as a customer-determined price.
For all vouchers redeemed after the upgrade to 4.10, voucher budgets will be handled differently and only respect the discount given directly by the voucher. Additionally, if the product's tax rule is set to not include taxes in the configured price, only the net difference will be subtracted from the budget.
Voucher redemptions created before that date will be unaffected.
-
Example 1: If you have a product that costs €119.00 incl. 19% VAT for some countries and €100.00 incl. 0% VAT for other countries, a voucher that reduces the price by 10% will now always use €11.90 of the budget, instead of sometimes €11.90 and sometimes €10.00 like before.
-
Example 2: If you have a product that costs €100 and that allows customers to voluntarily increase the price, a voucher that reduces the price by 50% will now always use €50 of the budget, instad of sometimes €50 and sometimes less, depending on the customer's input.
-
Example 3: If you have a product configured with a price of €100.00 plus 19% VAT, a voucher that reduced the price by 10% will now only use €10.00 of the budget instead of €11.90.
We believe that new method is both clearer to understand and closer to what most of you are trying to achieve with voucher budgets.
Smaller changes and bugfixes
Ticket shop and widget
-
The Ukrainian language is now generally available.
-
The organizer overview page now correctly respects the allowed languages.
-
A localization issue with names in PDF files has been resolved.
-
Invoices now show a tax rate column with an explicit 0 % when reverse charge is active.
-
If the setting "Hide 'payment pending' state on customer-facing pages" is set, the order confirmation page no longer states that the order is only completed after payment has been received.
-
A bug in handling invalid input in the add-on selection step has been fixed.
-
A better error message is now shown if a customer tries to apply a gift card in place of a voucher.
-
A crash was fixed that occured when users tried to change the add-ons of an order that was attached to a customer account while not being logged in.
-
A crash was fixed that occurred when users tried to remove an uploaded and cropped picture.
-
Widget: The
trigger_close_callback
API introduced in the last release now actually works. -
Widget: A display bug was fixed when presenting a week calendar in a pretix button.
Ticketing backend and configuration
-
You can now take notes or add an external identifier to customer accounts.
-
Customer account identifiers no longer need to be unique accross organizer accounts.
-
The order list export now includes canceled order positions.
-
A bug was fixed that caused incorrect cloning of variations when copying a product.
-
The check-in log now shows which check-ins were made in offline mode.
-
PDF Editor: You can now use the "name for salutation" variable already known from our email templates.
-
PDF Editor: Various small bugs were fixed, including a bug that prevented saving custom QR-codes with multi-lingual content.
-
A bug was fixed that caused all scans made offline by our apps with pretix 4.2.0+ to be marked as "scans that should not have been possible".
-
When generating multiple badges on one page, the "trim box" of the background PDF is now ignored.
Runtime and server environment
- A compatibility issue with new
django-mysql
versions has been fixed.
Warning: Upcoming changes to the PayPal plugin
In anticipation of some big changes to the PayPal plugin coming with the next pretix release, we will be deprecating event-level PayPal webhooks. If you are using PayPal, please read the following section to see if this change affects you. If you have been using the "Connect with PayPal" feature, you can skip this section.
If you have manually set up a webhook in the PayPal Developer Center pointing to a event-level URL (such as
https://pretix.eu/demo/museum/paypal/webhook/
), you will need to change your webhook to point to the global
PayPal webhook URL which is posted on the PayPal settings page of your event.
The new webhook-URL can be identified easily, as it ends in /_paypal/webhook/
.
We do not expect many to be impacted by this since we have been recommending the global URL for over 4 years now.
In addition, there are also big changes coming to the simplified "Connect with PayPal"-flow for users of pretix Community and Enterprise. With the upcoming pretix release, you will need to use specially crafted platform-level API-keys in order to offer this feature to your users. If you are using platform-level API-keys for PayPal on your self-hosted pretix system, please reach out to your PayPal Account Manager to be onboarded for ISU.
Updates to official plugins and tools
-
The Certificates of attendance plugin has been released in version 1.6.1 to fix a bug when cloning events.
-
The Passbook plugin has been released in version 1.10.0 to fix passes being marked as expired too early.
-
The pretixPOS backend plugin has been released in version 3.1.0 to prepare for the next pretixPOS version and fix a minor bug in the data sheet generator.
-
The Reports plugin has been released in version 1.12.0 to fix an issue with very long URLs, add support for internal product names and additional check-in filters.
-
The Seating plugin has been released in version 1.6.10 to fix incorrect vouchers being shown in the backend.
-
The Shared report plugin has been released in version 1.5.0 to add new filter options in event series.
-
The Shipping plugin has been released in version 1.13.3 to fix a bug in cover layout selection.
Plugin API changes
No changes to the official API, but some internals changed quite a bit. If you ever work with the Cart
model, please
read up on our new documentation about pricing logic.
REST API changes
-
The discounts resource has been added.
-
The cart position creation API now supports passing voucher codes.
-
The ticket download endpoints no longer yield an error if the ticket has not yet been paid but tickets for unpaid orders are allowed in the event's settings.