#!/usr/bin/env python
# -*- encoding: utf-8 -*-
-""" Pour trouver les chèque dupliqués sur la note. """
+""" Pour trouver les chèques dupliqués sur la note. """
import psycopg2
import psycopg2.extras
import subprocess
import argparse
+import base
import pretty_print
-def getcursor():
- con = psycopg2.connect(database="note")
- con.set_client_encoding("utf-8")
- return (con, con.cursor(cursor_factory = psycopg2.extras.DictCursor))
def get_data(cur, delai='1 minute', date='1970-01-01'):
"""
c.pseudo AS destp,
t1.description AS desc1,
t2.description AS desc2
- FROM credits t1,credits t2, comptes c
+ FROM credits t1, credits t2, comptes c
WHERE t1.destinataire = c.idbde
AND t1.date >= %(date)s AND t2.date >= %(date)s
AND t1.type='crédit'
l.sort()
result = [", ".join([str(i) for i in l]) for l in result]
result = list(set(result))
+ result.sort(key=lambda x : int(x.split(",")[0]))
return result
def get_transactions(cur, ids):
ou d'afficher une liste de toutes celles à dévalider.
"""
ids_to_devalidate = []
+ total = 0
for b in blocks:
lb = [int(i) for i in b.split(",")]
l = get_transactions(cur, b)
if not args.noless:
p = subprocess.Popen(["less"], stdin=subprocess.PIPE)
p.communicate(formatted.encode("utf-8"))
- print formatted
+ print formatted.encode("utf-8")
print "IDs : %s" % b
idkeep = lb[0]
question = "Ne garder que %s (= dévalider les autres) ? [o/N/s]" % idkeep
elif ans.lower() in ["s"]:
lb.remove(idkeep)
ids_to_devalidate.extend(lb)
+ total += l[0]["montant"] * (len(l) - 1)
if ids_to_devalidate:
- print "\nIDs de transactions à dévalider :\n" + ",".join([str(i) for i in ids_to_devalidate])
+ print "\nIDs de transactions à dévalider (%s) :" % len(ids_to_devalidate)
+ print ",".join([str(i) for i in ids_to_devalidate])
+ print "Montant total : %s" % (total,)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Liste les crédits semblables trop proches dans le temps et propose de les dévalider tous sauf 1.")
args = parser.parse_args()
- con, cur = getcursor()
+ con, cur = base.getcursor()
data = get_data(cur, delai=args.deltat, date=args.date)
blocks = sort_by_blocks(data)
interactive(blocks, cur, args)