Skip to Content
Menu
This question has been flagged
7254 Views

i'm using odoo 11 and i received this error RecursionError: maximum recursion depth exceeded in comparison when i added the two fields no_overtime_final and tot_overtime_final .I don't know where is the problem in my method. I notice if i comment these two fields every thing works fine. Any idea for help please ?

class attendance_sheet(models.Model):
_name = 'attendance.sheet'
employee_id = fields.Many2one(comodel_name='hr.employee', string='Employee', required=True)
date_from = fields.Date(string="From", required=True, default=time.strftime('%Y-%m-01'))
date_to = fields.Date(string="To", required=True,
                      default=str(datetime.now() + relativedelta(months=+1, day=1, days=-1))[:10])
att_sheet_line_ids = fields.One2many(comodel_name='attendance.sheet.line', string='Attendances',readonly=True,
                                     inverse_name='att_sheet_id')
state = fields.Selection([
    ('draft', 'Draft'),
    ('confirm', 'Confirmed'),
    ('done', 'Approved')], default='draft', track_visibility='onchange',
    string='Status', required=True, readonly=True, index=True,
    help=' * The \'Draft\' status is used when a HR user is creating a new  attendance sheet. '
         '\n* The \'Confirmed\' status is used when  attendance sheet is confirmed by HR user.'
         '\n* The \'Approved\' status is used when  attendance sheet is accepted by the HR Manager.')
no_overtime = fields.Integer(compute="calculate_att_data", string="No of After work time", readonly=True, store=True)
tot_overtime = fields.Float(compute="calculate_att_data", string="Total After work time", readonly=True, store=True)
no_overtime_final = fields.Integer(compute="calculate_att_data", string="No of Overtime", readonly=True, store=True)
tot_overtime_final = fields.Float(compute="calculate_att_data", string="Total Overtime", readonly=True, store=True)
tot_difftime = fields.Float(compute="calculate_att_data", string="Total Diff time Hours", readonly=True, store=True)
no_difftime = fields.Integer(compute="calculate_att_data", string="No of Diff Times", readonly=True, store=True)
tot_late = fields.Float(compute="calculate_att_data", string="Total Late In", readonly=True, store=True)
no_late = fields.Integer(compute="calculate_att_data", string="No of Lates", readonly=True, store=True)
no_absence = fields.Integer(compute="calculate_att_data", string="No of Absence Days", readonly=True, store=True)
tot_absence = fields.Float(compute="calculate_att_data", string="Total absence Hours", readonly=True, store=True)
att_policy_id = fields.Many2one(comodel_name='hr.attendance.policy', string="Attendance Policy ", required=True)
payslip_id=fields.Many2one(comodel_name='hr.payslip',string='PaySlip')
@api.multi
def calculate_att_data(self):
    overtime = 0
    no_overtime = 0
    overtime_final = 0
    no_overtime_final = 0
    late = 0
    no_late = 0
    diff = 0
    no_diff = 0
    absence_hours = 0
    no_absence = 0
    for att_sheet in self:

        for line in att_sheet.att_sheet_line_ids:
            # print line.date
            if line.overtime > 0:
                overtime += line.overtime
                no_overtime = no_overtime + 1
            if line.overtime_final > 0:
                overtime_final += line.overtime_final
                no_overtime_final = no_overtime_final + 1
            if line.diff_time > 0:
                if line.status == "ab":
                    no_absence += 1
                    absence_hours += line.diff_time
                else:
                    diff += line.diff_time
                    no_diff += 1
            if line.late_in > 0:
                late += line.late_in
                no_late += 1
        values = {
            'tot_overtime': overtime,
            'no_overtime': no_overtime,
            'tot_overtime_final': overtime_final,
            'no_overtime_final': no_overtime_final,
            'tot_difftime': diff,
            'no_difftime': no_diff,
            'no_absence': no_absence,
            'tot_absence': absence_hours,
            'tot_late': late,
            'no_late': no_late

        }
        att_sheet.write(values)


Avatar
Discard
Related Posts Replies Views Activity
2
Feb 24
13203
1
Dec 22
3863
2
Dec 22
12726
2
Jun 22
4689
2
Jun 22
3508