|
@@ -1,8 +1,13 @@
|
|
|
|
|
|
from django import forms
|
|
|
from django.contrib import admin
|
|
|
+from django.contrib import messages
|
|
|
+from django.http import HttpResponseRedirect
|
|
|
+from django.conf.urls import url
|
|
|
+
|
|
|
from coin.filtering_queryset import LimitedAdminInlineMixin
|
|
|
from coin.billing.models import Invoice, InvoiceDetail, Payment
|
|
|
+from coin.billing.utils import get_invoice_from_id_or_number
|
|
|
from coin.offers.models import OfferSubscription
|
|
|
import autocomplete_light
|
|
|
|
|
@@ -37,14 +42,15 @@ class PaymentInline(admin.StackedInline):
|
|
|
|
|
|
|
|
|
class InvoiceAdmin(admin.ModelAdmin):
|
|
|
- list_display = ('number', 'date', 'status', 'amount', 'member')
|
|
|
+ list_display = ('number', 'date', 'status', 'amount', 'member', 'validated')
|
|
|
list_display_links = ('number', 'date')
|
|
|
inlines = [InvoiceDetailInline, PaymentInline]
|
|
|
fields = (('number', 'date', 'status'),
|
|
|
('date_due'),
|
|
|
('member'),
|
|
|
- ('amount','amount_paid'))
|
|
|
- readonly_fields = ('amount','amount_paid')
|
|
|
+ ('amount','amount_paid'),
|
|
|
+ ('validated', 'pdf'))
|
|
|
+ readonly_fields = ('amount','amount_paid','validated','pdf')
|
|
|
form = autocomplete_light.modelform_factory(Invoice)
|
|
|
|
|
|
def get_formsets(self, request, obj=None):
|
|
@@ -62,4 +68,21 @@ class InvoiceAdmin(admin.ModelAdmin):
|
|
|
else:
|
|
|
pass
|
|
|
|
|
|
+ def get_urls(self):
|
|
|
+ urls = super(InvoiceAdmin, self).get_urls()
|
|
|
+ my_urls = [
|
|
|
+ url(r'^validate/(?P<id>.+)$', self.admin_site.admin_view(self.validate_view), name='invoice_validate'),
|
|
|
+ ]
|
|
|
+ return my_urls + urls
|
|
|
+
|
|
|
+ def validate_view(self, request, id):
|
|
|
+ if request.user.is_superuser:
|
|
|
+ invoice = get_invoice_from_id_or_number(id)
|
|
|
+ invoice.validate()
|
|
|
+ messages.success(request, 'La facture a été validée.')
|
|
|
+ else:
|
|
|
+ messages.error(request, 'Vous n\'avez pas l\'autorisation de valider une facture.')
|
|
|
+
|
|
|
+ return HttpResponseRedirect(request.META["HTTP_REFERER"])
|
|
|
+
|
|
|
admin.site.register(Invoice, InvoiceAdmin)
|