Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
5937 Lượt xem

Hi Guys

I Got Error (TypeError: 'int' object is not iterable)

My Code : (python :) def on_change_emp(self,cr,uid,ids,emp_id,context=None): vs = cr.execute('SELECT wage FROM hr_contract WHERE (id=%s)',(tuple(emp_id))).fetchone() if vs is not None: raise osv.except_osv((vs[0]),('Employee Wage')) else: pass

(XML :) <field name="emp_id" attrs="{'invisible':[('item_emp','!=',True)]}" on_change="on_change_emp(emp_id)"/>

Ảnh đại diện
Huỷ bỏ

Hello Ali, you also have passed wrong "id" value in query. You are passing employee id in query and matching with contract "id". It will give wrong wage value too.

Câu trả lời hay nhất

Use below code to get wage: In PYTHON file:

_columns = {
    'name': fields.many2one('hr.employee', "Employee", required=True),
    'wage_amt': fields.float('Wage', digits=(16,2), required=True, help="Basic Salary of the employee"),
}

def onchange_employee_id(self, cr, uid, ids, employee_id, context=None):
    v = {}
    if employee_id:
        contract_sr = self.pool.get('hr.contract').search(cr, uid, [('employee_id','=',employee_id)], context=context)
        if contract_sr:
                contract_br = self.pool.get('hr.contract').browse(cr, uid, contract_sr, context=context)[0]
                v['wage_amt'] = contract_br.wage

    return {'value': v}

In XML file:

<field name="name" on_change="onchange_employee_id(name)"/>
<field name="wage_amt"/>
Ảnh đại diện
Huỷ bỏ
Tác giả

Thanks a Lot It's Working My Friend

Câu trả lời hay nhất

Hello Ali,

I guess problem is in your query.

Try this:

cr.execute('SELECT wage FROM hr_contract WHERE id in %s', (tuple(emp_id),))
cr.fetchone()

Thanks,

Serpent Consulting Services.

Ảnh đại diện
Huỷ bỏ
Tác giả

thanks for answer my friend but still give me that (TypeError: 'int' object is not iterable )

Did you try it after restart the server?

Bài viết liên quan Trả lời Lượt xem Hoạt động
2
thg 5 24
1660
0
thg 8 24
1974
1
thg 3 23
2480
0
thg 3 15
5248
0
thg 3 25
1501