-cur.execute("SELECT sum(montant*quantite) FROM transactions WHERE valide AND destinataire = %s AND date < CAST(%s AS timestamp)"
- ,(idbde,date))
-received = cur.fetchone()[0]
-cur.execute("SELECT sum(montant*quantite) FROM transactions WHERE valide AND emetteur = %s AND date < CAST(%s AS timestamp)"
- ,(idbde,date))
-given = cur.fetchone()[0]
+def get_solde_date(idbde, date="now"):
+ """Calcule le solde du compte ``idbde`` à la ``date`` donnée."""
+ con, cur = getcursor()
+ cur.execute(
+ """
+ SELECT COALESCE(sum(montant*quantite), 0)
+ FROM transactions
+ WHERE valide
+ AND destinataire = %s
+ AND date <= CAST(%s AS timestamp)
+ """,
+ (idbde, date))
+ received = cur.fetchone()[0]
+ cur.execute(
+ """
+ SELECT COALESCE(sum(montant*quantite), 0)
+ FROM transactions
+ WHERE valide
+ AND emetteur = %s
+ AND date <= CAST(%s AS timestamp)
+ """,
+ (idbde, date))
+ given = cur.fetchone()[0]
+ return received - given