errors.append('Total amount has changed, likely due to a registration being concurrently changed. Please try again.')
if form.is_valid() and not errors:
- bp = _create_and_assign_bulk_payment(request.user,
- conference,
- pendingregs,
- invoicerows,
- form.data['recipient'],
- form.data['address'],
- False)
+ if totalwithvat == 0:
+ # Free! This is either a multireg for example for speakers, or it could be
+ # a registration made entirely out of vouchers. So just mark the payments
+ # as completed (the invoicerows_for_registration step has already marked any
+ # vouchers or discount codes as used)
+ for r in pendingregs:
+ r.payconfirmedat = datetime.now()
+ r.payconfirmedby = "Multireg/nopay"
+ r.save()
+ notify_reg_confirmed(r)
+ return HttpResponseRedirect("../z/")
+ else:
+ # Else generate a bulk payment and invoice for it
+ bp = _create_and_assign_bulk_payment(request.user,
+ conference,
+ pendingregs,
+ invoicerows,
+ form.data['recipient'],
+ form.data['address'],
+ False)
- return HttpResponseRedirect("../b{0}/".format(bp.id))
+ return HttpResponseRedirect("../b{0}/".format(bp.id))
# Add the errors to the form, so they're actually visible.
for e in errors:
'totalwithvat': totalwithvat,
})
+@login_required
+def multireg_zeropay(request, confname):
+ conference = get_object_or_404(Conference, urlname=confname)
+ return render_conference_response(request, conference, 'reg', 'confreg/regmulti_zeropay.html', {
+ })
+
@login_required
@transaction.atomic
def multireg_bulkview(request, confname, bulkid):
(r'^events/(?P<confname>[^/]+)/register/other/(?P<regid>(\d+)/)?$', postgresqleu.confreg.views.multireg),
(r'^events/(?P<confname>[^/]+)/register/other/newinvoice/$', postgresqleu.confreg.views.multireg_newinvoice),
(r'^events/(?P<confname>[^/]+)/register/other/b(?P<bulkid>(\d+))/$', postgresqleu.confreg.views.multireg_bulkview),
+ (r'^events/(?P<confname>[^/]+)/register/other/z/$', postgresqleu.confreg.views.multireg_zeropay),
(r'^events/register/attach/([a-z0-9]{64})/$', postgresqleu.confreg.views.multireg_attach),
(r'^events/([^/]+)/bulkpay/$', postgresqleu.confreg.views.bulkpay),
(r'^events/([^/]+)/bulkpay/(\d+)/$', postgresqleu.confreg.views.bulkpay_view),
--- /dev/null
+{%extends "base.html" %}
+{%block title%}Conference registration payment{%endblock%}
+{%block content%}
+<h1>Conference registration payment</h1>
+<p>
+ The registrations you were making do not require a payment, thanks
+ to registration types and/or discount vouchers used. As such, they
+ have flagged as completed automatically.
+</p>
+<p>
+ <a href="../">Return</a> to the registration overview.
+</p>
+{%endblock%}