Browse Source

Moar specific logs when creating/updating payments/invoices

Alexandre Aubin 7 years ago
parent
commit
401d017d1a
1 changed files with 38 additions and 11 deletions
  1. 38 11
      coin/billing/models.py

+ 38 - 11
coin/billing/models.py

@@ -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 ))
+