]> gitweb.pimeys.fr Git - scripts-20-100.git/blobdiff - bde/virements.py
[bde] Gros ménage : archivage de tous les scripts NK2012
[scripts-20-100.git] / bde / virements.py
diff --git a/bde/virements.py b/bde/virements.py
deleted file mode 100755 (executable)
index 030fca6..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/usr/bin/python
-# -*- encoding: utf-8 -*-
-
-
-""" Pour faciliter les remboursements note en cas de commande prima/pizzas/hanako/yang/…
-
- TO DO : Rajouter une option --same où on ne précise pas la part des participants,
-         tout le monde a la même (donc post-calculée)
-"""
-
-import psycopg2, psycopg2.extras
-
-def getcursor():
-    con = psycopg2.connect(database="bde")
-    cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor)
-    return con,cur
-
-def trouver(term):
-    term = str(term)
-    sterm = "%%%s%%" % term
-    req = "SELECT * FROM adherents WHERE pseudo ILIKE %s OR nom ILIKE %s OR prenom ILIKE %s OR CAST(numcbde AS varchar)=%s ORDER BY nom;"
-    con, cur = getcursor()
-    cur.execute(req, (sterm, sterm, sterm, term))
-    return cur.fetchall()
-
-def pprint(l):
-    keys = ["numcbde", "prenom", "nom", "pseudo", "solde"]
-    l = [{"numcbde" : str(i["numcbde"]),
-          "prenom" : i["prenom"],
-          "nom" : i["nom"],
-          "pseudo" : i["pseudo"],
-          "solde" : str(i["solde"])} for i in l]
-    maxs = [ max([len(i[key]) for i in [{key:key}]+l]) for key in keys ]
-    pattern = u"| %%%ss | %%-%ss | %%-%ss | %%-%ss | %%%ss |" % tuple(maxs)
-    sep = (pattern % tuple([u"-"*i for i in maxs])).replace(u"|", u"+").replace(u" ", u"-")
-    print sep
-    print pattern % tuple(keys)
-    print sep
-    for i in l:
-        print pattern % tuple([i[key] for key in keys])
-    print sep
-
-class EndLoop(Exception):
-    pass
-
-class PasLesMemesTotaux(Exception):
-    pass
-
-def ask_one():
-    term = raw_input("Search : ")
-    if term=="":
-        raise EndLoop
-    l = trouver(term)
-    if len(l) == 1:
-        return l[0]
-    elif len(l) > 1:
-        pprint(l)
-        print ""
-        ans = None
-        while ans!="0":
-            ans = raw_input("numcbde (ou 0)=")
-            res = [i for i in l if str(i["numcbde"]) == ans]
-            if len(res)==1:
-                return res[0]
-
-def get_montant(ask="montant=", total=None):
-    montant = None
-    while montant==None:
-        smontant = raw_input(ask)
-        if smontant.lower() in ["all", "tout"] and total!=None:
-            return total
-        if smontant == "" and total=="coeff":
-            return 1
-        try:
-            return float(smontant)
-        except:
-            pass
-
-def get_people(total=None):
-    liste = []
-    print "Ajoutez des notes : (vide pour finir)"
-    try:
-        while True:
-            res = ask_one()
-            if res:
-                montant = get_montant(total=total)
-                liste.append((montant, res))
-    except EndLoop:
-        return liste
-
-def execute_virement(emetteur, destinataire, montant, motif):
-    if emetteur["numcbde"] != destinataire["numcbde"]:
-        print "INSERT INTO transactions (conso, emetteur, destinataire, montant, quantite, valide, remarque)\
-               VALUES (1, %s, %s, %s, 1, true, '%s');" % (emetteur["numcbde"], destinataire["numcbde"], montant, motif)
-
-def execute_virements(emetteurs, destinataires, motif):
-    totalem = sum([i[0] for i in emetteurs])
-    totalde = sum([i[0] for i in destinataires])
-    if abs(totalem - totalde) >= 0.01:
-        raise PasLesMemesTotaux
-    if totalem == 0:
-        print "Je vais pas m'emmerder pour un montant nul."
-        exit(0)
-    # On commence par faire payer tous les participants au premier payeur
-    premier = destinataires[0][1]
-    for (montant, em) in emetteurs:
-        execute_virement(em, premier, montant, motif)
-    # Ensuite le premier payeur rembourse les autres
-    for (montant, de) in destinataires[1:]:
-        execute_virement(premier, de, montant, motif)
-    
-
-def virements():
-    motif = raw_input("Motif : ")
-    print "= Liste des participants ="
-    emetteurs = get_people()
-    total = sum([i[0] for i in emetteurs])
-    print "\nParticipants :\n" + "  ".join(["%s (%s)" % (i[1]["pseudo"], i[0]) for i in emetteurs])
-    print "Total : %s" % total + "\n"
-    coeff = get_montant(ask="coefficient (réduction,…) =", total="coeff")
-    # Si le coeff n'est pas 1, il faut changer les valeurs
-    if coeff!=1:
-        emetteurs = [(em[0]*coeff, em[1]) for em in emetteurs]
-    total = total*coeff
-    print "= Payeurs ="
-    destinataires = get_people(total=total)
-    total_pay = sum([i[0] for i in destinataires])
-    print "\nParticipants :\n" + "  ".join(["%s (%s)" % (i[1]["pseudo"], i[0]) for i in emetteurs])
-    print "Total : %s" % total
-    print "\nPayeurs :\n" + "  ".join(["%s (%s)" % (i[1]["pseudo"], i[0]) for i in destinataires])
-    print "Total : %s" % total_pay + "\n"
-    if abs(total-total_pay) >= 0.01:
-        print "Les totaux des participations et des paiements ne concordent pas !\nAbort."
-        exit(1)
-
-    print "Transactions à effectuer :"
-    execute_virements(emetteurs, destinataires, motif)
-
-if __name__ == "__main__":
-    virements()