]> gitweb.pimeys.fr Git - scripts-20-100.git/blob - bde/combiennegs.py
c6f43fbf51d2e9ab511959571d32b06cd192b624
[scripts-20-100.git] / bde / combiennegs.py
1 #!/usr/bin/env python
2 # -*- encoding: utf-8 -*-
3
4 """ Pour savoir combien de fois les gens sont passés en négatif """
5
6 import psyopg2
7 import psyopg2.extras
8
9 year = 2014
10
11 def get_data(con, year):
12 cur = con.getcursor(cursor_factory = psycopg2.DictCursor)
13 cur.execute("SELECT * FROM transactions ORDER BY date ASC;")
14 transactions = cur.fetchall()
15 cur.execute("SELECT adherent FROM inscriptions WHERE annee = %s;", (year,))
16 numcbdes = cur.fetchall()
17 return (numcbdes, transactions)
18
19 def combienneg(numcbdes, alltrans):
20 soldes = {n : 0 for n in numcbdes}
21 nbnegs = {n : 0 for n in numcbdes}
22 for trans in [t for t in alltrans if t["valide"]]:
23 for (num, signe) in [(t["emetteur"], -1), (t["destinataire"], 1)]:
24 newsolde = soldes[num] + t["montant"] * t["quantite"] * signe
25 if soldes[num] >= 0 and newsolde < 0:
26 nbnegs[num] += 1
27 soldes[num] += newsolde
28 return nbnegs
29
30 if __name__ == "__main__":
31 con = psycopg2.connect("bde")
32 numcbdes, transactions = get_data(con, year)
33 nbnegs = combienneg(numcbdes, transactions)