Add new settings invoice_regenerate_allowed (#2071)

This commit is contained in:
Raphael Michel
2021-07-01 14:51:08 +02:00
committed by GitHub
parent 0c6971ff5f
commit 9089b630ed
9 changed files with 50 additions and 15 deletions

View File

@@ -286,6 +286,7 @@ class OrganizerSettingsForm(SettingsForm):
auto_fields = [
'customer_accounts',
'customer_accounts_link_by_email',
'invoice_regenerate_allowed',
'contact_mail',
'imprint_url',
'organizer_info_text',

View File

@@ -236,14 +236,16 @@
{% if i.is_cancellation %}{% trans "Cancellation" context "invoice" %}{% else %}{% trans "Invoice" %}{% endif %}
{{ i.number }}</a> ({{ i.date|date:"SHORT_DATE_FORMAT" }})
{% if not i.canceled %}
<form class="form-inline helper-display-inline" method="post"
action="{% url "control:event.order.regeninvoice" event=request.event.slug organizer=request.event.organizer.slug code=order.code id=i.pk %}">
{% csrf_token %}
<button class="btn btn-default btn-xs" data-toggle="tooltip"
title="{% trans 'Rebuild the invoice with updated data but the same invoice number.' %}">
{% trans "Regenerate" %}
</button>
</form>
{% if request.event.settings.invoice_regenerate_allowed %}
<form class="form-inline helper-display-inline" method="post"
action="{% url "control:event.order.regeninvoice" event=request.event.slug organizer=request.event.organizer.slug code=order.code id=i.pk %}">
{% csrf_token %}
<button class="btn btn-default btn-xs" data-toggle="tooltip"
title="{% trans 'Rebuild the invoice with updated data but the same invoice number.' %}">
{% trans "Regenerate" %}
</button>
</form>
{% endif %}
{% if not i.is_cancellation %}
<form class="form-inline helper-display-inline" method="post"
action="{% url "control:event.order.reissueinvoice" event=request.event.slug organizer=request.event.organizer.slug code=order.code id=i.pk %}">

View File

@@ -81,6 +81,10 @@
{% bootstrap_field sform.giftcard_expiry_years layout="control" %}
{% bootstrap_field sform.giftcard_length layout="control" %}
</fieldset>
<fieldset>
<legend>{% trans "Invoices" %}</legend>
{% bootstrap_field sform.invoice_regenerate_allowed layout="control" %}
</fieldset>
</div>
</div>
<div class="col-xs-12 col-lg-2">

View File

@@ -1330,8 +1330,14 @@ class OrderInvoiceRegenerate(OrderView):
except Invoice.DoesNotExist:
messages.error(self.request, _('Unknown invoice.'))
else:
if not inv.event.settings.invoice_regenerate_allowed:
messages.error(self.request, _('Invoices may not be changed after they are created.'))
if inv.canceled:
messages.error(self.request, _('The invoice has already been canceled.'))
elif inv.sent_to_organizer:
messages.error(self.request, _('The invoice file has already been exported.'))
elif now().astimezone(self.request.event.timezone).date() - inv.date > timedelta(days=1):
messages.error(self.request, _('The invoice file is too old to be regenerated.'))
elif inv.shredded:
messages.error(self.request, _('The invoice has been cleaned of personal data.'))
else: