verdigado / odoo-customize

GNU Affero General Public License v3.0
0 stars 1 forks source link

create_missing_attendances scheitert bei Anwesenheiten über Mitternacht #88

Closed albig closed 8 months ago

albig commented 9 months ago

Wenn eine Anwesenheiten über Mitternacht geht, scheitert der Cronjob create_missing_attendances mit dem Hinweis, dass der Mitarbeitende bereits eingecheckt ist. Alle weiteren Einträge werden nicht mehr bearbeitet.

2023-12-22_16-41 2023-12-22_16-41_1

2023-12-22 02:00:45,175 514625 ERROR lv-bb odoo.addons.base.models.ir_cron: Call from cron Missing Attendance for server action #302 failed in Job #18
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_cron.py", line 372, in _callback
self.env['ir.actions.server'].browse(server_action_id).run()
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_actions.py", line 643, in run
res = runner(run_self, eval_context=eval_context)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_actions.py", line 512, in _run_action_code_multi
safe_eval(self.code.strip(), eval_context, mode="exec", nocopy=True)  # nocopy allows to return 'action'
File "/usr/lib/python3/dist-packages/odoo/tools/safe_eval.py", line 332, in safe_eval
return unsafe_eval(c, globals_dict, locals_dict)
File "", line 1, in <module>
File "/srv/odoo/extra-addons/hr_attendance_missing_days/models/hr_employee.py", line 38, in create_missing_attendances
emp._create_missing_attendances(date_from, date_to)
File "/srv/odoo/extra-addons/hr_attendance_missing_days/models/hr_employee.py", line 90, in _create_missing_attendances
self.env["hr.attendance"].create(vals)
File "<decorator-gen-159>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 418, in _model_create_multi
return create(self, arg)
File "/usr/lib/python3/dist-packages/odoo/addons/hr_attendance/models/hr_attendance.py", line 281, in create
res = super().create(vals_list)
File "<decorator-gen-69>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 418, in _model_create_multi
return create(self, arg)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_fields.py", line 613, in create
recs = super().create(vals_list)
File "<decorator-gen-15>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 418, in _model_create_multi
return create(self, arg)
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4088, in create
records = self._create(data_list)
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4253, in _create
records._validate_fields(name for data in data_list for name in data['stored'])
File "/usr/lib/python3/dist-packages/odoo/models.py", line 1371, in _validate_fields
check(self)
File "/srv/odoo/extra-addons/hr_attendance_autoclose/models/hr_attendance.py", line 57, in _check_validity
return super()._check_validity()
File "/usr/lib/python3/dist-packages/odoo/addons/hr_attendance/models/hr_attendance.py", line 78, in _check_validity
raise exceptions.ValidationError(_("Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s") % {
odoo.exceptions.ValidationError: Cannot create new attendance record for XXXXXXXX, the employee was already checked in on 25.11.2023 00:00

@hbrunn bitte analysieren und ggf. als PR an https://github.com/OCA/hr-attendance/pull/140 stellen.

hbrunn commented 9 months ago

ist erledigt in https://github.com/initOS/hr-attendance/pull/1

und hier dann benutzt: https://github.com/verdigado/odoo-customize/pull/89

albig commented 8 months ago

Ich hab jetzt noch mal eine Weile getestet. Dein Fix löst das konkrete Problem.

Was ich leider nicht verstehe: Lege ich einen Attendance-Record manuell an, der über Mitternacht geht, stört das hr_attendance_missing_days. Ich seh hier keinen Unterschied :-(

hbrunn commented 8 months ago

das Problem das Du beschreibst bekomme ich nicht reproduziert, kannst Du hier noch etwas mehr schreiben?