Adds manual payment functionality

This commit is contained in:
Christopher Neugebauer 2016-04-07 19:19:19 +10:00
parent 2fbe789090
commit 94a42c100b
3 changed files with 37 additions and 9 deletions

View file

@ -3,6 +3,13 @@ import models as rego
from django import forms from django import forms
class ManualPaymentForm(forms.ModelForm):
class Meta:
model = rego.ManualPayment
fields = ["reference", "amount"]
# Products forms -- none of these have any fields: they are to be subclassed # Products forms -- none of these have any fields: they are to be subclassed
# and the fields added as needs be. # and the fields added as needs be.

View file

@ -1,3 +1,5 @@
import views
from django.conf.urls import url, patterns from django.conf.urls import url, patterns
urlpatterns = patterns( urlpatterns = patterns(
@ -5,7 +7,8 @@ urlpatterns = patterns(
url(r"^category/([0-9]+)$", "product_category", name="product_category"), url(r"^category/([0-9]+)$", "product_category", name="product_category"),
url(r"^checkout$", "checkout", name="checkout"), url(r"^checkout$", "checkout", name="checkout"),
url(r"^invoice/([0-9]+)$", "invoice", name="invoice"), url(r"^invoice/([0-9]+)$", "invoice", name="invoice"),
url(r"^invoice/([0-9]+)/pay$", "pay_invoice", name="pay_invoice"), url(r"^invoice/([0-9]+)/manual_payment$",
views.manual_payment, name="manual_payment"),
url(r"^profile$", "edit_profile", name="attendee_edit"), url(r"^profile$", "edit_profile", name="attendee_edit"),
url(r"^register$", "guided_registration", name="guided_registration"), url(r"^register$", "guided_registration", name="guided_registration"),
url(r"^register/([0-9]+)$", "guided_registration", url(r"^register/([0-9]+)$", "guided_registration",

View file

@ -16,6 +16,7 @@ from django.contrib import messages
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.http import Http404 from django.http import Http404
from django.shortcuts import get_object_or_404
from django.shortcuts import redirect from django.shortcuts import redirect
from django.shortcuts import render from django.shortcuts import render
@ -443,15 +444,32 @@ def invoice(request, invoice_id):
@login_required @login_required
def pay_invoice(request, invoice_id): def manual_payment(request, invoice_id):
''' Marks the invoice with the given invoice id as paid. ''' Allows staff to make manual payments or refunds on an invoice.'''
WORK IN PROGRESS FUNCTION. Must be replaced with real payment workflow.
FORM_PREFIX = "manual_payment"
if not request.user.is_staff:
raise Http404()
'''
invoice_id = int(invoice_id) invoice_id = int(invoice_id)
inv = rego.Invoice.objects.get(pk=invoice_id) inv = get_object_or_404(rego.Invoice, pk=invoice_id)
current_invoice = InvoiceController(inv) current_invoice = InvoiceController(inv)
if not current_invoice.invoice.paid and not current_invoice.invoice.void:
current_invoice.pay("Demo invoice payment", inv.value)
return redirect("invoice", current_invoice.invoice.id) form = forms.ManualPaymentForm(
request.POST or None,
prefix=FORM_PREFIX,
)
if request.POST and form.is_valid():
form.instance.invoice = inv
form.save()
current_invoice.update_status()
form = forms.ManualPaymentForm(prefix=FORM_PREFIX)
data = {
"invoice": inv,
"form": form,
}
return render(request, "registrasion/manual_payment.html", data)