2016-05-07 4 views
0

Я работаю над Odoo 8. У меня есть представление, которое содержит набор полей типа combo-box и поле выбора. Я хочу сделать тест в полях со списком, и если все они отмечены, значение поля выбора должно измениться. Вот то, что я до сих пор:Как изменить поле выбора автоматически в odoo

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 
} 

enter image description here

Вот код для моего зрения

<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> 
+0

вы должны показать нам код для вас ... если я правильно понимаю, что вы хотите изменить значения поля выбора, если поле со списком (check-box) или нет – danidee

+0

Привет @danidee это то, что я хочу, чтобы мое представление было следующим: ' <имя поля = "casier_judiciare" /> <имя поля = "certificat_qual" /> <имя поля = "extrait_role" /> <имя поля = "reference_pro" /> <имя поля = "statut_entre" стиль = "width: 20 %%" /> ' – Smith

+0

- это все поля флажка, которые вы хотите проверить или только один? ... также в следующий раз вставьте свой код в вопросе не как комментарий очень трудно читать так – danidee

ответ

0

Добавить атрибут onchange в casier_judiciare поле, а затем передать все остальные поля, которые вы хочу проверить как аргументы метода, подобного этому

<group col='4' name="doss_grp" string="Dossier de Soumission" colspan="4" > 
    <field name="casier_judiciare" on_change="onchange_casier_judiciare(casier_judiciare, certificat_qual, extrait_role, reference_pro)"/> 
    <field name="certificat_qual"/> 
    <field name="extrait_role"/> 
    <field name="reference_pro"/> 
    <field name="statut_entre" style="width:20%%"/> 
    <field name="etat_dos"/> 
</group> 

В вашем файле модели определите метод, подобный этому, и используйте оператор if, чтобы проверить, все ли они True (означает, что все они были проверены), если это так, вы можете вернуть словарь с любым значением, которое вы хотите для выбора поле, в этом случае etat_dos изменится Dossier Complet

def onchange_casier_judiciare(self, cr, uid, ids, casier_judiciare, certificat_qual, extrait_role, reference_pro, context=None): 
    if casier_judiciare and certificat_qual and extrait_role and reference_pro: # if they're all True (that means they're all checked): 
     values = {'value': {'etat_dos': 'complet'}} #set the value of etat_dos field 

     return values 

Обратите внимание, что onchange включается только на casier_judiciare поле, но вы также можете установить onchange на других областях, и он должен работать нормально

Смежные вопросы