]> gitweb.pimeys.fr Git - scripts-20-100.git/blob - bde/solde_date.py
[solde_date] proprification, importable
[scripts-20-100.git] / bde / solde_date.py
1 #!/usr/bin/python
2 # -*- coding:utf8 -*-
3
4 """
5 Codé par 20-100 le 21/04/12
6
7 Sert à connaître le solde d'un compte à une date t donnée.
8
9 Usage : solde_date.py idbde date
10 """
11
12 import sys
13 import psycopg2,psycopg2.extras
14
15 def getcursor():
16 """Obtenir une connexion à la base de données."""
17 con = psycopg2.connect(database='note')
18 cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor)
19 return con, cur
20
21 def get_solde_date(idbde, date="now"):
22 """Calcule le solde du compte ``idbde`` à la ``date`` donnée."""
23 con, cur = getcursor()
24 cur.execute(
25 """
26 SELECT COALESCE(sum(montant*quantite), 0)
27 FROM transactions
28 WHERE valide
29 AND destinataire = %s
30 AND date <= CAST(%s AS timestamp)
31 """,
32 (idbde, date))
33 received = cur.fetchone()[0]
34 cur.execute(
35 """
36 SELECT COALESCE(sum(montant*quantite), 0)
37 FROM transactions
38 WHERE valide
39 AND emetteur = %s
40 AND date <= CAST(%s AS timestamp)
41 """,
42 (idbde, date))
43 given = cur.fetchone()[0]
44 return received - given
45
46 if __name__ == "__main__":
47 idbde = int(sys.argv[1])
48 date = " ".join(sys.argv[2:])
49 solde = get_solde_date(idbde, date)
50 print solde/100.