guyguy a écrit :
Bonsoir
je veux recuperer la valeur d'un champ pour poser une condition if
Voici le code
def create(self,cr,uid,vals,context={}):
Gotcha : les valeurs par défaut des arguments ne sont évaluées qu'une seule et unique fois. Tu veux:
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
vals['txtp'] = vals['tx_part']
# compare la somme des taux existant à 100
crt_obj =
self.pool.get('production.contrat').browse(cr,uid,vals['numcontrat'])
id_contrat = (str(crt_obj)[-2:-1])
coa = crt_obj.numcontrat
sit = crt_obj.situation
type_sous = crt_obj.type_souscri
cr.execute("SELECT txtp FROM production_coassurance WHERE
numcontrat=%s AND situation=%s AND type_souscri=%s" ,[id_contrat, sit,
type_sous])
res = []
for val in cr.fetchall():
res.append(val)
vals['txtp'] = res[0][0] + vals['txtp']
(-------------jusqu'ici il marche--------------)
*Non*. cf réponse dans un thread précédent.
cr.execute("select txtp from production_coassurance where
numcontrat=%s",[id_contrat])
rs = []
for k in cr.fetchall():
rs.append(k)
*pourquoi* ??? Pourquoi cette boucle *inutile* qui reconstruit à l'identique la liste retournée par cr.fetchall() ? Est-ce que tu comprends le code que tu écris ??? Ou est-ce que tu essayes n'importe quoi au hasard - en évitant soigneusement de lire la doc - jusqu'à ce que *par accident*, ça *semble* donner le résultat ? Désolé d'être désagréable, mais là, vraiment, il y a de quoi se poser des questions.
je veux txtp qui est un champ de la base qui est de integer
je veux poser une condition s'il est superieur à 100 par exemple
Clause WHERE de ta requete SQL.