This question has been flagged
1 Reply
2431 Views

how can i define the funtion _get_som_coef please need help

class gestion_classe(osv.osv):

_name = "gestion.classe"

_rec_name = "nomc"

_description = "Table des classes"

_columns = {

'nomc': fields.char('Nom de la classe',required=True),

'numg_ids': fields.one2many('gestion.groupe','classe_id','Groupes'),

'numm_ids': fields.one2many('gestion.matiere','classe1_id','Matieres'),

'somme_coef':fields.function(_get_sum_coef, string='Sum of Coef', type='integer'),

}

class gestion_matiere(osv.osv):

_name = "gestion.matiere"

_rec_name= "libelle"

_description = "Table des matieres"

_order = "numm asc"

_columns = {

'numm': fields.integer('Code matiére',required=True),

'libelle': fields.char('Libelle'),

'classe1_id': fields.many2one('gestion.classe','Classe',ondelete='cascade'),

'coef' : fields.integer('Coefficient matière'),

'prof_ids': fields.one2many('gestion.prof','matiere_id','Enseignants'),

'eleve_ids' :fields.one2many('gestion.note.matiere','asso1_id','Matiere'),

}

Avatar
Discard
Best Answer

Hi,

Hope you are working with openerp 7, since its old api. Then you may try like this:

class gestion_classe(osv.osv):

_name = "gestion.classe"

_rec_name = "nomc"

_description = "Table des classes"

def _get_sum_coef(self, cr, uid, ids, name, args, context=None):

res = {}

for classe in self.browse(cr, uid, ids, context=context):

total_sum = 0

for matiere in classe.numm_ids:

total_sum += matiere.coef

res[classe.id] = {

'somme_coef': total_sum,

}

return res

_columns = {

'nomc': fields.char('Nom de la classe',required=True),

'numg_ids': fields.one2many('gestion.groupe','classe_id','Groupes'),

'numm_ids': fields.one2many('gestion.matiere','classe1_id','Matieres'),

'somme_coef':fields.function(_get_sum_coef, string='Sum of Coef', type='integer'),

}

Hope this helps

Avatar
Discard