Gestion des factures dans gest_crans.
* Attention, c'est à utiliser avec précaution.
This commit is contained in:
parent
04a129f879
commit
ad5e4e9d09
3 changed files with 226 additions and 17 deletions
|
@ -1503,7 +1503,7 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
|
||||
# On récupère sur les factures l'ensemble de celles comportant une adhésion.
|
||||
adh_factures = self.factures_adh()
|
||||
finAdh = max([0.0] + [fromGeneralizedTimeFormat(facture._data.get('finAdhesion', ["19700101000000Z"])[0]) for facture in adh_factures if facture.controle() != "FALSE"])
|
||||
finAdh = max([0.0] + [fromGeneralizedTimeFormat(facture._data.get('finAdhesion', ["19700101000000Z"])[0]) for facture in adh_factures if facture.controle() != "FALSE" and facture.recuPaiement() is not None])
|
||||
|
||||
if update == False:
|
||||
return finAdh
|
||||
|
@ -1530,6 +1530,19 @@ class BaseProprietaire(BaseClasseCrans):
|
|||
self._set("debutAdhesion", self._data.get("debutAdhesion", []) + [generalizedTimeFormat(thetime)])
|
||||
return f
|
||||
|
||||
def update_adhesion(self):
|
||||
"""Récupère les dates de début et fin d'adhésion dans les factures
|
||||
de l'adhérent, et met à jour ses données."""
|
||||
|
||||
debutAdh = []
|
||||
finAdh = []
|
||||
for facture in self.factures_adh():
|
||||
debutAdh.append(generalizedTimeFormat(facture._data['debutAdhesion'][0]))
|
||||
finAdh.append(generalizedTimeFormat(facture._data['finAdhesion'][0]))
|
||||
self._set('debutAdhesion', debutAdh)
|
||||
self._set('finAdhesion', finAdh)
|
||||
self._save()
|
||||
|
||||
def droits(self, droits=None, light=False):
|
||||
""" Renvoie les droits courants. Non modifiable (sauf si surchargée dans classe enfant)"""
|
||||
if droits <> None:
|
||||
|
@ -2378,7 +2391,7 @@ class Adherent(BaseProprietaire):
|
|||
|
||||
# On récupère sur les factures l'ensemble de celles comportant une connexion.
|
||||
conn_factures = self.factures_conn()
|
||||
finConn = max([0.0] + [fromGeneralizedTimeFormat(facture._data.get('finConnexion', ["19700101000000Z"])[0]) for facture in conn_factures if facture.controle() != "FALSE"])
|
||||
finConn = max([0.0] + [fromGeneralizedTimeFormat(facture._data.get('finConnexion', ["19700101000000Z"])[0]) for facture in conn_factures if facture.controle() != "FALSE" and facture.recuPaiement() is not None])
|
||||
|
||||
if mois is None:
|
||||
return finConn
|
||||
|
@ -2408,6 +2421,19 @@ class Adherent(BaseProprietaire):
|
|||
self._set("debutConnexion", self._data.get("debutConnexion", []) + [generalizedTimeFormat(thetime)])
|
||||
return f
|
||||
|
||||
def update_connexion(self):
|
||||
"""Récupère les dates de début et fin de connexion dans les factures
|
||||
de l'adhérent, et met à jour ses données."""
|
||||
|
||||
debutConn = []
|
||||
finConn = []
|
||||
for facture in self.factures_adh():
|
||||
debutConn.append(generalizedTimeFormat(facture._data['debutConnexion'][0]))
|
||||
finConn.append(generalizedTimeFormat(facture._data['finConnexion'][0]))
|
||||
self._set('debutConnexion', debutConn)
|
||||
self._set('finConnexion', finConn)
|
||||
self._save()
|
||||
|
||||
def adherentPayant(self, valeur = None):
|
||||
"""
|
||||
L'adhérent paie sa cotisation (a droit au WiFi, à un compte Crans, ... True par défaut
|
||||
|
@ -3946,7 +3972,7 @@ class Facture(BaseClasseCrans):
|
|||
raise ValueError, u'Facture déja payée'
|
||||
|
||||
# modification de la valeur
|
||||
if new != None:
|
||||
if new is not None and new != False:
|
||||
# on vérifie que la facture est modifiable
|
||||
if not self._modifiable and new:
|
||||
raise NotImplementedError, "La facture n'est pas modifiable"
|
||||
|
@ -3960,6 +3986,17 @@ class Facture(BaseClasseCrans):
|
|||
|
||||
# modifie la base ldap
|
||||
self._set("recuPaiement", [new])
|
||||
elif new == False:
|
||||
# on vérifie que la facture est modifiable
|
||||
if not self._modifiable and new:
|
||||
raise NotImplementedError, "La facture n'est pas modifiable"
|
||||
|
||||
# on crédite les articles, si c'est pas possible, la metode
|
||||
# levera une exeption
|
||||
self._vider()
|
||||
|
||||
# modifie la base ldap
|
||||
self._set("recuPaiement", [])
|
||||
|
||||
# renvoie la valeur trouvée dans la base
|
||||
return self._data.get("recuPaiement", [None])[0]
|
||||
|
@ -3997,14 +4034,37 @@ class Facture(BaseClasseCrans):
|
|||
# on crédite les articles
|
||||
for art in self._articles():
|
||||
# solde impression (on débite d'abord si jamais quelqu'un s'amuse à recharger son solde avec son solde)
|
||||
if self.modePaiement() == 'solde':
|
||||
proprio = self.proprietaire()
|
||||
proprio.solde(operation=0.0 - self.total(), comment="Facture n°%s" % self.numero())
|
||||
proprio.save()
|
||||
if art["code"] == "SOLDE":
|
||||
proprio = self.proprietaire()
|
||||
proprio.solde(operation=art['nombre']*art["pu"], comment="Facture n°%s : %s" % (self.numero(), art['designation']))
|
||||
proprio.save()
|
||||
if self.modePaiement() == 'solde':
|
||||
proprio = self.proprietaire()
|
||||
proprio.solde(operation=0.0 - self.total(), comment="Facture n°%s" % self.numero())
|
||||
proprio.save()
|
||||
|
||||
def _vider(self):
|
||||
"""
|
||||
Retire les articles à son propriétaire
|
||||
"""
|
||||
|
||||
# on vérifie que le propriétaire est modifiable
|
||||
if not self.proprietaire()._modifiable:
|
||||
raise SystemError, u"Impossible de créditer les articles, le proprietaire n'est pas modifiable"
|
||||
|
||||
# on crédite les articles
|
||||
for art in self._articles():
|
||||
# solde impression (on débite d'abord si jamais quelqu'un s'amuse à recharger son solde avec son solde)
|
||||
if art["code"] == "SOLDE":
|
||||
proprio = self.proprietaire()
|
||||
proprio.solde(operation=-art['nombre']*art["pu"], comment="Revert facture n°%s : %s" % (self.numero(), art['designation']))
|
||||
proprio.save()
|
||||
if art["code"] == "FRAIS":
|
||||
self.supprime(art)
|
||||
if self.modePaiement() == 'solde':
|
||||
proprio = self.proprietaire()
|
||||
proprio.solde(operation=0.0 + self.total(), comment="Revert facture n°%s" % self.numero())
|
||||
proprio.save()
|
||||
|
||||
def _frais(self):
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue