diff --git a/RIGS/finance.py b/RIGS/finance.py index 72439d95..c8a3657d 100644 --- a/RIGS/finance.py +++ b/RIGS/finance.py @@ -3,6 +3,7 @@ from django.http import Http404, HttpResponseRedirect from django.views import generic from django.shortcuts import get_object_or_404 from django.contrib import messages +import datetime from RIGS import models @@ -25,7 +26,7 @@ class InvoiceDetail(generic.DetailView): class InvoiceVoid(generic.View): - def get(self, request, *args, **kwargs): + def get(self, *args, **kwargs): pk = kwargs.get('pk') object = get_object_or_404(models.Invoice, pk=pk) object.void = not object.void @@ -36,6 +37,35 @@ class InvoiceVoid(generic.View): return HttpResponseRedirect(reverse_lazy('invoice_detail', kwargs={'pk': object.pk})) +class InvoiceArchive(generic.ListView): + model = models.Invoice + paginate_by = 25 + + +class InvoiceWaiting(generic.ListView): + model = models.Event + paginate_by = 25 + template_name = 'RIGS/event_invoice.html' + + def get_queryset(self): + events = self.model.objects.filter(is_rig=True, end_date__lt=datetime.date.today(), + invoice__isnull=True).select_related('person', 'organisation', 'venue', + 'mic') # @todo find a way to select items + return events + + +class InvoiceEvent(generic.View): + def get(self, *args, **kwargs): + epk = kwargs.get('pk') + event = models.Event.objects.get(pk=epk) + invoice, created = models.Invoice.objects.get_or_create(event=event) + + if created: + invoice.invoice_date = datetime.date.today() + + return HttpResponseRedirect(reverse_lazy('invoice_detail', kwargs={'pk': invoice.pk})) + + class PaymentCreate(generic.CreateView): model = models.Payment diff --git a/RIGS/migrations/0018_auto_20150130_0016.py b/RIGS/migrations/0018_auto_20150130_0016.py new file mode 100644 index 00000000..67c3eb97 --- /dev/null +++ b/RIGS/migrations/0018_auto_20150130_0016.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + dependencies = [ + ('RIGS', '0017_auto_20150129_2041'), + ] + + operations = [ + migrations.AlterField( + model_name='invoice', + name='void', + field=models.BooleanField(default=False), + preserve_default=True, + ), + migrations.AlterField( + model_name='payment', + name='method', + field=models.CharField(max_length=2, choices=[(b'C', b'Cash'), (b'I', b'Internal'), (b'E', b'External'), + (b'SU', b'SU Core')]), + preserve_default=True, + ), + ] diff --git a/RIGS/templates/RIGS/event_detail.html b/RIGS/templates/RIGS/event_detail.html index eadeaab5..9d309703 100644 --- a/RIGS/templates/RIGS/event_detail.html +++ b/RIGS/templates/RIGS/event_detail.html @@ -15,6 +15,10 @@ class="glyphicon glyphicon-print"> + {% if perms.RIGS.add_invoice %} + + {% endif %} @@ -121,6 +125,10 @@ class="glyphicon glyphicon-print"> + {% if perms.RIGS.add_invoice %} + + {% endif %}
| # | +Date | +Event | +Client | +Cost | +MIC | ++ |
|---|---|---|---|---|---|---|
| N{{ object.pk|stringformat:"05d" }} | +{{ object.end_date }} | +{{ object.name }} | ++ {% if object.organisation %} + {{ object.organisation.name }} + {% else %} + {{ object.person.name }} + {% endif %} + | +{{ object.sum_total|floatformat:2 }} | +
+ {{ object.mic.initials }} + |
+ + + + + | +
| {{ object.pk }} | +|||
| {{ object.pk }} | {{ object.event }} | {{ object.invoice_date }} | {{ object.balance|floatformat:2 }} | @@ -31,5 +37,10 @@ {% endfor %}