[#3399] Indiquer les soldes de cotisations négatifs
authorEric Mc Sween <eric.mcsween@auf.org>
Wed, 4 Jul 2012 19:34:43 +0000 (15:34 -0400)
committerEric Mc Sween <eric.mcsween@auf.org>
Wed, 4 Jul 2012 19:34:43 +0000 (15:34 -0400)
auf/django/coda/models.py

index 5a98263..9badbeb 100644 (file)
@@ -55,7 +55,7 @@ class TiersOperation(Element):
             .filter(montant_eur__gt=0)
             .values('ecriture__annee')
             .annotate(Sum('montant_eur'))
-            .order_by('-ecriture__annee')
+            .order_by('ecriture__annee')
         )
         paiements = (
             cotisations_impayees
@@ -63,15 +63,20 @@ class TiersOperation(Element):
             .aggregate(Sum('montant_eur'))
         )['montant_eur__sum'] or 0
 
-        while paiements < 0 and len(factures_par_annee) > 0:
-            paiements += factures_par_annee[-1]['montant_eur__sum']
-            if paiements <= 0:
-                factures_par_annee.pop()
-        if paiements > 0 and len(factures_par_annee) > 0:
-            # Ajuster le solde à payer sur la dernière facture
-            factures_par_annee[-1]['montant_eur__sum'] = paiements
-        return [(x['ecriture__annee'], x['montant_eur__sum'])
-                for x in factures_par_annee]
+        result = []
+        for facture in factures_par_annee:
+            montant = facture['montant_eur__sum']
+            annee = facture['ecriture__annee']
+            if paiements < 0:
+                paiements += montant
+                if paiements > 0:
+                    result.append((annee, paiements))
+                    paiements = 0
+            else:
+                result.append((annee, montant))
+        if paiements < 0:
+            result.append((date.today().year, paiements))
+        return result
 
     def delinquant(self):
         """