|
@@ -11,6 +11,8 @@ from django.conf import settings
|
|
|
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 coin.offers.models import OfferSubscription
|
|
@@ -149,20 +151,13 @@ class Invoice(models.Model):
|
|
|
date_last_reminder_email = models.DateTimeField(null=True, blank=True,
|
|
|
verbose_name="Date du dernier email de relance envoyé")
|
|
|
|
|
|
-
|
|
|
def save(self, *args, **kwargs):
|
|
|
-
|
|
|
# First save to get a PK
|
|
|
super(Invoice, self).save(*args, **kwargs)
|
|
|
-
|
|
|
- if not self.validated:
|
|
|
- if self.number:
|
|
|
- accounting_log.info("Creating/updating draft invoice %s."
|
|
|
- % self.number)
|
|
|
- if not self.number and self.pk:
|
|
|
- # Use pk to build draft invoice number if needed
|
|
|
- self.number = 'DRAFT-{}'.format(self.pk)
|
|
|
- self.save()
|
|
|
+ # Then use that pk to build draft invoice number
|
|
|
+ if not self.validated and self.pk and not self.number:
|
|
|
+ self.number = 'DRAFT-{}'.format(self.pk)
|
|
|
+ self.save()
|
|
|
|
|
|
def amount(self):
|
|
|
"""
|
|
@@ -572,3 +567,35 @@ def test_accounting_update():
|
|
|
Member.objects.all().delete()
|
|
|
Payment.objects.all().delete()
|
|
|
Invoice.objects.all().delete()
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@receiver(post_save, sender=Payment)
|
|
|
+def payment_changed(sender, instance, created, **kwargs):
|
|
|
+ if created:
|
|
|
+ accounting_log.info("Adding payment %s (Date: %s, Member: %s, Amount: %s, Label: %s)."
|
|
|
+ % (instance.pk, instance.date, instance.member,
|
|
|
+ instance.amount, instance.label))
|
|
|
+ else:
|
|
|
+ accounting_log.info("Updating payment %s (Date: %s, Member: %s, Amount: %s, Label: %s, Allocated : )%s."
|
|
|
+ % (instance.pk, instance.date, instance.member,
|
|
|
+ instance.amount, instance.label,
|
|
|
+ instance.amount_already_allocated))
|
|
|
+
|
|
|
+
|
|
|
+@receiver(post_save, sender=Invoice)
|
|
|
+def invoice_changed(sender, instance, created, **kwargs):
|
|
|
+
|
|
|
+ if created:
|
|
|
+ accounting_log.info("Creating draft invoice %s (Member: %s)."
|
|
|
+ % ('DRAFT-{}'.format(instance.pk), instance.member))
|
|
|
+ else:
|
|
|
+ if not instance.validated:
|
|
|
+ accounting_log.info("Updating draft invoice %s (Member: %s)."
|
|
|
+ % (instance.number, instance.member))
|
|
|
+ else:
|
|
|
+ accounting_log.info("Updating invoice %s (Member: %s, Total amount: %s, Amount paid: %s)."
|
|
|
+ % (instance.number, instance.member, instance.amount(), instance.amount_paid ))
|
|
|
+
|