]> gitweb.pimeys.fr Git - scripts-20-100.git/blobdiff - sum_transacs_by_categorie.py
[bde/compta] scripts pour faciliter la vérification de répartition par catégories
[scripts-20-100.git] / sum_transacs_by_categorie.py
index 900ed808b989030c3a0e730e8f02aeb1085f2a3e..5359a62e1d659ce1bda77a87318e31e8f18f3571 100755 (executable)
@@ -2,20 +2,15 @@
 # -*- 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.
 """
 
 import sys
-import psycopg2
-import psycopg2.extras
 
-def getcursor():
-    con = psycopg2.connect(database='note')
-    cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor)
-    return con, cur
+import base
 
 def get_sum(descriptions, debut, fin):
     """
@@ -32,21 +27,28 @@ def get_sum(descriptions, debut, fin):
           AND montant != 0
           AND description = ANY (%(descriptions)s);
     """
-    con, cur = getcursor()
+    con, cur = base.getcursor()
     cur.execute(req, {"debut" : debut + ' 00:00:00', "fin" : fin + ' 00:00:00', "descriptions" : descriptions})
     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):
@@ -61,11 +63,13 @@ def get_year_sums(dates, filename):
         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)
@@ -79,7 +83,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)