|
@@ -13,7 +13,7 @@ from django.db import models, transaction
|
|
|
from django.utils import timezone
|
|
|
from django.utils.encoding import python_2_unicode_compatible
|
|
|
from django.dispatch import receiver
|
|
|
-from django.db.models.signals import post_save
|
|
|
+from django.db.models.signals import post_save, post_delete
|
|
|
from django.core.exceptions import ValidationError
|
|
|
from django.core.urlresolvers import reverse
|
|
|
|
|
@@ -600,6 +600,23 @@ def invoice_changed(sender, instance, created, **kwargs):
|
|
|
% (instance.number, instance.member, instance.amount(), instance.amount_paid() ))
|
|
|
|
|
|
|
|
|
+@receiver(post_delete, sender=Payment)
|
|
|
+def payment_deleted(sender, instance, **kwargs):
|
|
|
+
|
|
|
+ accounting_log.info("Deleted payment %s (Date: %s, Member: %s, Amount: %s, Label: %s)."
|
|
|
+ % (instance.pk, instance.date, instance.member,
|
|
|
+ instance.amount, instance.label.encode('utf-8')))
|
|
|
+
|
|
|
+ member = instance.member
|
|
|
+
|
|
|
+ this_member_invoices = [i for i in member.invoices.filter(validated=True).order_by("date")]
|
|
|
+ this_member_payments = [p for p in member.payments.order_by("date")]
|
|
|
+
|
|
|
+ member.balance = compute_balance(this_member_invoices,
|
|
|
+ this_member_payments)
|
|
|
+ member.save()
|
|
|
+
|
|
|
+
|
|
|
def test_accounting_update():
|
|
|
|
|
|
Member.objects.all().delete()
|