当调用代码中定义的函数时,从ODOO 11 Payslip调用函数时出现错误。该错误说:“为工资规则加班费(OT)定义了错误的python代码。”
我写的代码如下-
class SalaryRuleFunctions(models.Model):
_inherit = 'hr.payslip'
@api.multi
def get_overtime_salary(self):
emp_id = self.employee_id
dt_from = self.date_from
dt_to = self.date_to
emp_rec = self.env['x_attendance_summary'].search([('employee_id', '=', emp_id), ('start_date', '=', dt_from), ('end_date', '=', dt_to)])[0]
g_sal = (self.contract_id.x_ctc_gross / emp_rec.max_days)
o_day = emp_rec.x_overtime_days_normal
result = g_sal * o_day
return result
加班工资的工资规则内的代码如下-
result = payslip.env['hr.payslip'].get_overtime_salary()
我不确定该函数是否曾经被调用过。我尝试在函数中也添加一些消息,以了解函数代码是否存在错误。但是,这些消息都没有出现,表明该函数从未被调用过,并且工资规则本身引发了错误。
在Odoo 11中是否没有env变量?还是其他?
预先感谢所有帮助。
答案 0 :(得分:0)
解决方案是使用可变合同而不是薪水单。
result = contract.env['hr.payslip'].get_overtime_salary()