|
@@ -211,7 +211,7 @@ class Invoice(models.Model):
|
|
|
self.validated = True
|
|
|
self.save()
|
|
|
self.generate_pdf()
|
|
|
-
|
|
|
+
|
|
|
assert self.pdf_exists()
|
|
|
|
|
|
def pdf_exists(self):
|
|
@@ -281,6 +281,11 @@ class Payment(models.Model):
|
|
|
('other', 'Autre')
|
|
|
)
|
|
|
|
|
|
+ member = models.ForeignKey(Member, null=True, blank=True, default=None,
|
|
|
+ related_name='payment',
|
|
|
+ verbose_name='membre',
|
|
|
+ on_delete=models.SET_NULL)
|
|
|
+
|
|
|
payment_mean = models.CharField(max_length=100, null=True,
|
|
|
default='transfer',
|
|
|
choices=PAYMENT_MEAN_CHOICES,
|
|
@@ -288,8 +293,8 @@ class Payment(models.Model):
|
|
|
amount = models.DecimalField(max_digits=5, decimal_places=2, null=True,
|
|
|
verbose_name='montant')
|
|
|
date = models.DateField(default=datetime.date.today)
|
|
|
- invoice = models.ForeignKey(Invoice, verbose_name='facture',
|
|
|
- related_name='payments')
|
|
|
+ invoice = models.ForeignKey(Invoice, verbose_name='facture', null=True,
|
|
|
+ blank=True, related_name='payments')
|
|
|
|
|
|
def __unicode__(self):
|
|
|
return 'Paiment de %0.2f€' % self.amount
|
|
@@ -305,6 +310,9 @@ def set_invoice_as_paid_if_needed(sender, instance, **kwargs):
|
|
|
Lorsqu'un paiement est enregistré, vérifie si la facture est alors
|
|
|
complétement payée. Dans ce cas elle passe en réglée
|
|
|
"""
|
|
|
+ if instance.invoice == None :
|
|
|
+ return
|
|
|
+
|
|
|
if (instance.invoice.amount_paid() >= instance.invoice.amount() and
|
|
|
instance.invoice.status == 'open'):
|
|
|
instance.invoice.status = 'closed'
|