I'm working on Odoo 8. I have a view that contains a set of combo-box type fields and a selection field. I want to make a test on the combo-box fields and if there are all checked then the selection field value should change. Here is what i have so far:
def get_etat_dossier(self,cr,uid,ids,args,fields,context=None):
res = {}
for rec in self.browse(cr,uid,ids):
if rec.casier_judiciare==True: # test field if = true
res[rec.id]= 02 # field etat_dos type selection = Dossier Complet
else:
res[rec.id] = 01
return res
_columns= {
'casier_judiciare' : fields.boolean('Casier Judiciaire'), # field to test
'reference_pro' : fields.boolean('Réferences Professionnelles'),
'certificat_qual' : fields.boolean('Certificat de qualification'),
'extrait_role' : fields.boolean('Extrait de Role'),
'statut_entre' : fields.selection([('eurl','EURL'),('sarl','SARL')],'Statut Entreprise'),
'etat_dos': fields.selection([('complet','Dossier Complet'),('manquant','Dossier Manquant')],'Etat De Dossier'), # field ho change after test
}
Here is the code for my view
<group col='4' name="doss_grp" string="Dossier de Soumission" colspan="4" > <field name="casier_judiciare"/>
<field name="certificat_qual"/>
<field name="extrait_role"/>
<field name="reference_pro"/>
<field name="statut_entre" style="width:20%%"/>
<field name="etat_dos"/>
</group>
Add an
onchange
attribute to thecasier_judiciare
field and then pass all the other fields you want to check as arguments to the method like thisIn your model file define the method like this and use an if statement to check if they're all True (That means they have all been checked), if so then you can return a dictionary with any value you want for the selection field, in this case
etat_dos
will change toDossier Complet
Note that the
onchange
is only triggered on thecasier_judiciare
field but you can also setonchange
on other fields and it should work just fine