From 21864885cb3c8c7dee55fa700d68a534c854a236 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Thu, 24 Aug 2023 16:15:47 +0200 Subject: [PATCH] Checkout: improve heuristic to open invoice-panel (#3545) --- src/pretix/presale/checkoutflow.py | 19 +++++++++++++++++++ .../pretixpresale/event/checkout_confirm.html | 2 +- .../event/checkout_questions.html | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/pretix/presale/checkoutflow.py b/src/pretix/presale/checkoutflow.py index 1ba322f8d8..7c53bbbb4d 100644 --- a/src/pretix/presale/checkoutflow.py +++ b/src/pretix/presale/checkoutflow.py @@ -1026,6 +1026,25 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep): ctx['cart_session'] = self.cart_session ctx['invoice_address_asked'] = self.address_asked + def reduce_initial(v): + if isinstance(v, dict): + # try to flatten objects such as name_parts to a single string to determine whether they have any value set + return ''.join([v for k, v in v.items() if not k.startswith('_')]) + else: + return v + + def is_form_filled(form, ignore_keys=()): + return any([reduce_initial(v) for k, v in form.initial.items() if k not in ignore_keys]) + + ctx['invoice_address_open'] = ( + self.request.event.settings.invoice_address_required or + self.request.event.settings.invoice_name_required or + 'invoice' in self.request.GET or + # Checking for self.invoice_address.pk is not enough as when an invoice_address has been added and later edited to be empty, it’s not None. + # So check initial values as invoice_form can receive pre-filled values from invoice_address, widget-data or overwrites from plug-ins. + is_form_filled(self.invoice_form, ignore_keys=('is_business', 'country')) + ) + if self.cart_customer: if self.address_asked: addresses = self.cart_customer.stored_addresses.all() diff --git a/src/pretix/presale/templates/pretixpresale/event/checkout_confirm.html b/src/pretix/presale/templates/pretixpresale/event/checkout_confirm.html index ba28273713..f82c2f88b1 100644 --- a/src/pretix/presale/templates/pretixpresale/event/checkout_confirm.html +++ b/src/pretix/presale/templates/pretixpresale/event/checkout_confirm.html @@ -76,7 +76,7 @@

{% trans "Invoice information" %} - + {% trans "Modify" %}

diff --git a/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html b/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html index e72883bad0..a0655cc134 100644 --- a/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html +++ b/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html @@ -34,7 +34,7 @@
{% if invoice_address_asked %} -
+

{% trans "Invoice information" %}{% if not event.settings.invoice_address_required and not event.settings.invoice_name_required %}