Browse Source

Fix donation/membershipfee validation + generate pdf when they are created

Alexandre Aubin 6 years ago
parent
commit
05031f3732
1 changed files with 16 additions and 6 deletions
  1. 16 6
      coin/billing/models.py

+ 16 - 6
coin/billing/models.py

@@ -34,7 +34,7 @@ def bill_pdf_filename(instance, filename):
     """Nom et chemin du fichier pdf à stocker"""
     member_id = instance.member.id if instance.member else 0
     number = instance.number if hasattr(instance, "number") else instance.pk
-    bill_type = self.__class__.__name__.lower()
+    bill_type = instance.type.lower()
     return '%ss/%d_%s_%s.pdf' % (bill_type, member_id, number, uuid.uuid4())
 
 class Bill(models.Model):
@@ -463,11 +463,17 @@ class Donation(Bill):
 
     def save(self, *args, **kwargs):
 
+        super(Donation, self).save(*args, **kwargs)
+
+        if not self.pdf_exists():
+            self.generate_pdf()
+
+    def clean(self):
+
         # Only if no amount already allocated...
         if self.pk is None and (not self.member or self.member.balance < self.amount):
             raise ValidationError("Le solde n'est pas suffisant pour payer ce don. \
                         Merci de commencer par enregistrer un paiement pour ce membre.")
-        super(Donation, self).save(*args, **kwargs)
 
     class Meta:
         verbose_name = 'don'
@@ -495,15 +501,19 @@ class MembershipFee(Bill):
         return True
 
     def save(self, *args, **kwargs):
-        # Only if no amount already allocated...
-        if self.pk is None and (not self.member or self.member.balance < self.amount):
-            raise ValidationError("Le solde n'est pas suffisant pour payer cette cotisation. \
-                        Merci de commencer par enregistrer un paiement pour ce membre.")
 
         super(MembershipFee, self).save(*args, **kwargs)
 
+        if not self.pdf_exists():
+            self.generate_pdf()
 
     def clean(self):
+
+        # Only if no amount already allocated...
+        if self.pk is None and (not self.member or self.member.balance < self.amount):
+            raise ValidationError("Le solde n'est pas suffisant pour payer cette cotisation. \
+                        Merci de commencer par enregistrer un paiement pour ce membre.")
+
         if self.start_date is not None and self.end_date is None:
             self.end_date = self.start_date + datetime.timedelta(364)