Bug signalé par Hamza : soucis d'encodage dans le commentaire de modif solde

This commit is contained in:
Pierre-Elliott Bécue 2015-09-07 23:49:45 +02:00
parent 1c675f251c
commit 4ee1ea55d1

View file

@ -1227,7 +1227,7 @@ class BaseClasseCrans(CransLdap):
# Cas spécial # Cas spécial
if "solde" in self.modifs: if "solde" in self.modifs:
diff = float(self._init_data.get('solde', [0])[0]) - float(self._data.get('solde', [0])[0]) diff = round(float(self._init_data.get('solde', [0])[0]) - float(self._data.get('solde', [0])[0]), 2)
if diff > 0: if diff > 0:
modif['solde'] = "debit %s Euros" % str(diff) modif['solde'] = "debit %s Euros" % str(diff)
else: else:
@ -4042,7 +4042,7 @@ class Facture(BaseClasseCrans):
proprio.solde(operation=art['nombre']*art["pu"], proprio.solde(operation=art['nombre']*art["pu"],
comment="Facture n°%s : %s" % comment="Facture n°%s : %s" %
(self.numero(), (self.numero(),
art['designation'].encode('utf-8', errors='ignore'))) art['designation'].encode(config.ldap_encoding, errors='ignore')))
proprio.save() proprio.save()
if self.modePaiement() == 'solde': if self.modePaiement() == 'solde':
proprio = self.proprietaire() proprio = self.proprietaire()
@ -4089,17 +4089,17 @@ class Facture(BaseClasseCrans):
self._set('article', self._set('article',
['%s~~%s~~%s~~%s' % ( ['%s~~%s~~%s~~%s' % (
art['code'], art['code'],
art['designation'].encode('utf-8', errors='replace'), art['designation'].decode(config.in_encoding, errors='replace'),
str(art['nombre']), str(art['nombre']),
str(art['pu'])) str(art['pu']))
for art in arts]) for art in arts])
# charge la liste des articles # charge la liste des articles
arts = [] arts = []
for art in self._data.get("article", []): for art in self._data.get("article", []):
art = art.split('~~') art = art.split('~~')
art = { 'code' : art[0], art = { 'code' : art[0],
'designation' : art[1].decode('utf-8', errors='replace'), 'designation' : art[1].decode(config.ldap_encoding, errors='replace'),
'nombre' : int(art[2]), 'nombre' : int(art[2]),
'pu' : float(art[3]) } 'pu' : float(art[3]) }
arts.append(art) arts.append(art)
@ -4133,6 +4133,7 @@ class Facture(BaseClasseCrans):
# ajoute les articles # ajoute les articles
if type(ajoute)==dict: if type(ajoute)==dict:
ajoute = [ajoute] ajoute = [ajoute]
if type(ajoute)==list: if type(ajoute)==list:
for art in ajoute: for art in ajoute:
if int(art['nombre']) != float(art['nombre']): if int(art['nombre']) != float(art['nombre']):
@ -4140,7 +4141,7 @@ class Facture(BaseClasseCrans):
if round(art['pu'], 2) != art['pu']: if round(art['pu'], 2) != art['pu']:
raise ValueError, u'pu ne doit pas avoir plus de 2 chiffres apres la virgule' raise ValueError, u'pu ne doit pas avoir plus de 2 chiffres apres la virgule'
art['nombre'] = int(art['nombre']) art['nombre'] = int(art['nombre'])
if '~~' in ' '.join([unicode(x) for x in art.values()]): if '~~' in art['designation'].decode(config.in_encoding):
raise ValueError, u'Ne pas mettre de ~~ dans les champs' raise ValueError, u'Ne pas mettre de ~~ dans les champs'
arts.append(art) arts.append(art)