]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - depenses.py
9246e1724259641c76ba850ce77ef18766716e72
2 # -*- coding: utf-8 -*-
4 """Affiche les dépenses totales d'un compte par année + total"""
12 create_temp_table
= """
13 SELECT extract(year FROM date) AS annee,
16 CASE WHEN emetteur = %%(idbde)s THEN montant * quantite
19 )/100.0 AS numeric(10,2)) AS depenses,
21 CASE WHEN destinataire = %%(idbde)s THEN montant * quantite
24 )/100.0 AS numeric(10,2)) AS gains
27 WHERE valide AND %%(idbde)s in (emetteur, destinataire)
28 GROUP BY annee%(groupby_month)s
32 select_month
= """extract(month FROM date) AS mois,"""
34 groupby_month
= """, month"""
36 display_all
= """ SELECT * FROM past
41 display_sum
= """ SELECT sum(gains) AS gains, sum(depenses) AS depenses
47 """Ouvre une connexion à la bdd."""
48 con
= psycopg2
.connect(database
="note")
49 con
.set_client_encoding("utf-8")
50 cur
= con
.cursor(cursor_factory
= psycopg2
.extras
.DictCursor
)
53 def get_depenses(idbde
, bymonth
=False):
54 """Récupère toutes les dépenses/gains du compte ``idbde``"""
55 con
, cur
= get_cursor()
56 modifiers
= {"select_month" : "", "groupby_month" : ""}
57 params
= {"idbde" : idbde
}
59 params
["select_month"] = select_month
60 params
["groupby_month"] = groupby_month
61 cur
.execute(create_temp_table
% modifiers
, params
)
62 cur
.execute(display_all
)
64 cur
.execute(display_sum
)
65 tot
= cur
.fetchall()[0]
68 def display_depenses(idbde
, all
, tot
):
69 """Pretty-printing des résultats."""
70 print "Compte %s:\nannee\tdepenses\tgains" % (idbde
,)
72 li
= [int(li
[0]), li
[1], li
[2]]
73 print "%s\t%s\t\t%s" % tuple(li
)
74 print "\nTotal :\n\tdepenses\tgains"
75 print "\t%s\t\t%s\n" % tuple(tot
)
77 if __name__
== "__main__":
78 parser
= argparse
.ArgumentParser(description
=__doc__
)
79 parser
.add_argument("-m", "--months", help="Faire le calcul par mois", action
="store_true")
80 parser
.add_argument('idbdes', type=int, nargs
=argparse
.ONE_OR_MORE
, help="Les idbde dont on veut connaître les dépenses.")
82 args
= parser
.parse_args()
83 for idbde
in args
.idbdes
:
84 all
, tot
= get_depenses(idbde
)
85 display_depenses(idbde
, all
, tot
)