]> gitweb.pimeys.fr Git - scripts-20-100.git/blobdiff - bde/old/combiennegs.py
[bde] Gros ménage : archivage de tous les scripts NK2012
[scripts-20-100.git] / bde / old / combiennegs.py
diff --git a/bde/old/combiennegs.py b/bde/old/combiennegs.py
new file mode 100755 (executable)
index 0000000..1e62cd1
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+""" Pour savoir combien de fois les gens sont passés en négatif """
+
+import psycopg2
+import psycopg2.extras
+
+def get_data(con):
+    cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
+    cur.execute("SELECT * FROM transactions ORDER BY date ASC;")
+    transactions = cur.fetchall()
+    return transactions
+
+def combienneg(alltrans):
+    nums = list(set([t["emetteur"] for t in alltrans] + [t["destinataire"] for t in alltrans]))
+    soldes = dict([(n, 0) for n in nums])
+    negs = dict([(n, []) for n in nums])
+    for trans in [t for t in alltrans if t["valide"]]:
+        for (num, signe) in [(trans["emetteur"], -1), (trans["destinataire"], 1)]:
+            newsolde = soldes[num] + trans["montant"] * trans["quantite"] * signe
+            if soldes[num] >= 0 and newsolde < 0:
+                negs[num].append(t["date"])
+            soldes[num] = newsolde
+    return (negs, soldes)
+
+if __name__ == "__main__":
+    con = psycopg2.connect(database="bde")
+    transactions = get_data(con)
+    (negs, soldes) = combienneg(transactions)