Enforce a sane last payment date (#412)

This commit is contained in:
Tobias Kunze
2017-02-15 16:37:10 +01:00
committed by Raphael Michel
parent 7b33fc6633
commit 9b7223c0e8
2 changed files with 26 additions and 0 deletions

View File

@@ -294,6 +294,17 @@ class PaymentSettingsForm(SettingsForm):
"(in percent)."),
)
def clean(self):
cleaned_data = super().clean()
payment_term_last = cleaned_data.get('payment_term_last')
if payment_term_last and self.obj.presale_end:
if payment_term_last < self.obj.presale_end.date():
self.add_error(
'payment_term_last',
_('The last payment date cannot be before the end of presale.'),
)
return cleaned_data
class ProviderForm(SettingsForm):
"""

View File

@@ -132,6 +132,21 @@ class EventsTest(SoupTest):
})
assert doc.select('.alert-danger')
def test_payment_settings_last_date_payment_after_presale_end(self):
self.event1.presale_end = datetime.datetime.now()
self.event1.save(update_fields=['presale_end'])
doc = self.post_doc('/control/event/%s/%s/settings/payment' % (self.orga1.slug, self.event1.slug), {
'payment_banktransfer__enabled': 'true',
'payment_banktransfer__fee_abs': '12.23',
'payment_banktransfer_bank_details_0': 'Test',
'settings-payment_term_days': '2',
'settings-payment_term_last': (self.event1.presale_end - datetime.timedelta(1)).strftime('%Y-%m-%d'),
'settings-tax_rate_default': '19.00',
})
assert doc.select('.alert-danger')
self.event1.presale_end = None
self.event1.save(update_fields=['presale_end'])
def test_invoice_settings(self):
doc = self.get_doc('/control/event/%s/%s/settings/invoice' % (self.orga1.slug, self.event1.slug))
data = extract_form_fields(doc.select("form")[0])