]> gitweb.pimeys.fr Git - scripts-20-100.git/blobdiff - sum_transacs_by_categorie.py
[compta/sum…] fonction main()
[scripts-20-100.git] / sum_transacs_by_categorie.py
index 5c2448cd2bf67828492ded57f20c09ff2c853309..d0c1e769ec3e9ac96f7de478fb679b8cf5e15873 100755 (executable)
@@ -2,7 +2,7 @@
 # -*- coding:utf8 -*-
 
 """
-Récupère les gains BDE par mois et par catégorie.
+Affiche les gains BDE par mois et par catégorie.
 
 Une catégorie est définie par une liste de descriptions.
 Le script mange donc une liste de fichiers contenant une description par ligne.
@@ -29,6 +29,7 @@ def get_sum(descriptions, debut, fin):
           AND date >= %(debut)s
           AND date < %(fin)s
           AND destinataire = 0
+          AND montant != 0
           AND description = ANY (%(descriptions)s);
     """
     con, cur = getcursor()
@@ -36,16 +37,23 @@ def get_sum(descriptions, debut, fin):
     s = cur.fetchone()["s"] or 0
     return s
 
-def get_dates(y, m, d):
+def get_dates(y, m, d, yf, mf, df):
     """
     Donne les dates de découpage de ``d``/``m``/``y`` à ``d-1``/``m``/``y+1``.
     """
-    dates = ["%s-%s-%s" % (y, m, d)]
-    for i in range(m + 1, 13):
-        dates.append("%s-%s-01" % (y, i))
-    for i in range(1, m):
-        dates.append("%s-%s-01" % (y + 1, i))
-    dates.append("%s-%s-%s" % (y + 1, m, d - 1))
+    dates = ["%d-%02d-%02d" % (y, m, d)]
+    m += 1
+    if m == 13:
+        m = 1
+        y += 1
+    while (y, m) <= (yf, mf):
+        dates.append("%d-%02d-01" % (y, m))
+        m += 1
+        if m == 13:
+            m = 1
+            y += 1
+    # On a atteint le dernier mois
+    dates.append("%d-%02d-%02d" % (yf, mf, df))
     return dates
 
 def get_year_sums(dates, filename):
@@ -53,18 +61,20 @@ def get_year_sums(dates, filename):
     Récupère les données sur l'année pour une catégorie.
     """
     descriptions = open(filename).readlines()
-    descriptions = [d.rstrip() for d in descriptions]
+    descriptions = [d.rstrip('\n') for d in descriptions]
     sums = []
     for id in range(len(dates) - 1):
         ddebut, dfin = dates[id], dates[id + 1]
         sums.append(get_sum(descriptions, ddebut, dfin))
     return sums
 
-if __name__ == "__main__":
-    filenames = sys.argv[1:]
+
+def main(filenames):
+    """Fait le boulot."""
     print filenames
     y, m, d = 2015, 2, 16
-    dates = get_dates(y, m, d)
+    yf, mf, df = 2016, 2, 19
+    dates = get_dates(y, m, d, yf, mf, df)
     ys = {}
     for fn in filenames:
         ys[fn] = get_year_sums(dates, fn)
@@ -78,7 +88,11 @@ if __name__ == "__main__":
         )
 
     print "totaux"
-    print "%s-%s-%s\t %s-%s-%s\t %s" % (y, m, d, y+1, m, d-1,
+    print "%s-%s-%s\t %s-%s-%s\t %s" % (y, m, d, yf, mf, df,
         "\t".join([str(sum(ys[fn])) for fn in filenames]),)
     print "total"
     print str(sum([sum(ys[fn]) for fn in filenames]))
+
+if __name__ == "__main__":
+    filenames = sys.argv[1:]
+    main(filenames)