ではありません私はodooのメソッドをのonchange使用してフィールドを更新しようとしている(CR、UID、frozendict(コンテキスト)はTypeError: 'フロート' オブジェクトが反復可能
私の.pyコードは
class hr_contract(osv.osv):
_name = 'hr.contract'
_description = 'Contract'
def _wage(self, cr, uid, ids,context=None):
res = {}
pay_slip = 0
pay_slip1 = 0
for obj in self.browse(cr, uid, ids, context=context):
s1 = ("""select schedule_pay from hr_contract where employee_id=%s""" % (obj.employee_id.id))
cr.execute(s1)
l1 = cr.fetchone()
value10 = l1[0]
if value10 == 'bi-weekly':
s4 = (
"""select salary from hr_contract where employee_id=%s """ % (
obj.employee_id.id))
cr.execute(s4)
l4 = cr.fetchone()
salary = l4[0]
# **************************************************************#
######### Week1 #############
s5 = ("""select week1 from hr_contract where employee_id=%s """ % (
obj.employee_id.id))
cr.execute(s5)
l5 = cr.fetchone()
week1 = l5[0]
print "week1", week1
if week1 != None:
if week1 > 48.00:
weeked1 = week1 - 48.00
total_amt = salary * (weeked1 * 1.5)
total_pay = 48.00 * salary
pay_slip = total_amt + total_pay
pay_slip1 += pay_slip
print "payslip..", pay_slip
cr.execute(""" update hr_contract set week1=%s where employee_id=%s""" % (
week1, obj.employee_id.id))
else:
pay_slip = week1 * salary
pay_slip1 += pay_slip
print "payslip..", pay_slip1
です。
私は、フィールドを変更して保存している間は、私は、forループからコンテキストを削除した場合
File "/home/rck/Desktop/odoo/openerp/api.py", line 769, in __new__
self.cr, self.uid, self.context = self.args = (cr, uid, frozendict(context))
TypeError: 'float' object is not iterable
としてエラーが、それは計算のため前の値をとる示しています。
どうすればこの問題を解決できますか?
は、私はフィールドがPYにfloatとして設定されている
<field name="week1" on_change="_wage(week1)"/>
XMLでのonchangeを使用して関数を呼び出す
'wage': fields.float('Per Hour Wages'),
'week1': fields.float('Week 1'),
200行のコードを転記する前に問題を特定できますか? – polku
self.browse(cr、uid、ids、context = context)内のobjのforループ**でエラーが発生しています。** – Uppili
次に、関係のないものはすべて削除してください。あなたは*問題を明確にしたいが、それを希釈しない。 – deceze