diff --git a/lc_ldap.py b/lc_ldap.py index 6b133fe..7d0ea69 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -576,8 +576,22 @@ class proprio(CransLdapObject): return bool_carte return True - - + def update_solde(self, diff, comment=u""): + """Modifie le solde du proprio. diff peut être négatif ou positif.""" + assert isinstance(diff, int) or isinstance(diff, float) + assert isinstance(comment, unicode) + + solde = float(self["solde"][0].value) + new_solde = solde + diff + + # On vérifie qu'on ne dépasse par le découvert autorisé + if new_solde < config.impression.decouvert: + raise ValueError(u"Solde minimal atteint, opération non effectuée.") + + transaction = u"credit" if diff >=0 else u"debit" + new_solde = u"%.2f" % new_solde + self.history_add(current_user, u"%s %.2f Euros [%s]" % (transaction, abs(diff), comment)) + self["solde"] = new_solde def machines(self): """Renvoie la liste des machines"""