मेरे पास कर्मचारी और विभाग के रूप में दो चयन बॉक्स हैं। जब मैं कर्मचारी के विभाग_आईडी के अनुसार कर्मचारी चुनता हूं तो मैं स्वचालित रूप से विभाग चुनना चाहता हूं।

यहाँ मेरा .py कोड है (Odoo 11)

class HrExpenseExpense(models.Model):
_inherit = "hr.expense"

department_expense_group = fields.Selection(
    string='Department Expense Group',
    related='department_id.expense_group',
    readonly=True,
)
department_id = fields.Many2one('hr.department', string='Department',
                                states={'post': [('readonly', True)], 'done': [('readonly', True)]})

@api.onchange('employee_id')
def onchange_employee_id(self):
    department_id = [x.id for x in self.employee_id.department_id]
    return {'domain': {'department_id': [('id', 'in', department_id)]}}

और एक्सएमएल फ़ाइल देखें:

 <xpath expr="//field[@name='employee_id']" position="after">
   <field name="department_expense_group" invisible="1" />
   <field name="department_id" invisible="0"/>
 </xpath>

यह काम कर रहा है लेकिन समस्या यह है; जब मैं किसी कर्मचारी को चुनता हूं, तो विभाग चयन बॉक्स स्वचालित रूप से अपडेट हो रहा है, यह ट्रिगर हो रहा है लेकिन स्वचालित रूप से चयन नहीं कर रहा है। चयन बॉक्स की सूची भरने के बाद मैं उस पर क्लिक करता हूं। इसे कर्मचारी की पसंद के अनुसार स्वचालित रूप से चुना जाना चाहिए।

1
Ümit Öztürk 26 नवम्बर 2018, 12:11

1 उत्तर

सबसे बढ़िया उत्तर

आप केवल department_id फ़ील्ड का फ़िल्टर बदल रहे हैं और अपनी आवश्यकता को पूरा करने के लिए इसे स्वयं पर सेट करना होगा। और आप एक एकल रिकॉर्ड फ़ील्ड (employee_id.department_id) पर लूपिंग कर रहे हैं जो यहाँ थोड़ा अधिक है।

@api.onchange('employee_id')
def onchange_employee_id(self):
    if self.employee_id:
        department = self.employee_id.department_id
        # set department
        self.department_id = department
        # don't allow other departments
        return {'domain': {'department_id': [('id', '=', department.id)]}}
    else:
        # empty department
        self.department_id = False
        # allow other departments
        return {'domain': {'department_id': [('id', '!=', False)]}}
1
CZoellner 26 नवम्बर 2018, 14:18