[19.0][MIG] hr_attendance#5705
Conversation
|
/ocabot migration hr_attendance Depends on :
|
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
|
@legalsylvain done in #5745, now setting our whole discussion as off-topic |
thanks a lot for this Job. I manually run the script a last time for the V19. new 19 PR should be handled by your script. |
| ---Models in module 'hr_attendance'--- | ||
| obsolete model hr.attendance.overtime (renamed to hr.attendance.overtime.line) | ||
| new model hr.attendance.overtime.line (renamed from hr.attendance.overtime) | ||
|
|
There was a problem hiding this comment.
Why adding these empty lines that makes the reading harder? I think the comment should be together with the analysis lines block.
There was a problem hiding this comment.
well I think the empty lines improve readability. If that's so important to you, add it to https://oca.github.io/OpenUpgrade/090_contribute.html#how-to-contribute-new-migration-scripts and I'll bulk update the whole branch, as I've been doing this for a long time
|
|
||
| # NOTHING TO DO | ||
|
|
||
| hr_attendance / hr.attendance / in_location (char) : NEW |
There was a problem hiding this comment.
Reorganize this line into in_city DEL comment for seeing both together and to understand the change.
There was a problem hiding this comment.
hard disagree about reordering lines in the work file. I want to be able to say diff upgrade_analysis* to easily verify all lines from the generated file are in the work file (=only whitespace or comments in the diff)
| # date is required in v19, fill with create_date if empty, possibly wrong | ||
| env.cr.execute( | ||
| f""" | ||
| UPDATE hr_attendance_overtime_line SET date=( |
There was a problem hiding this comment.
Why not get it the same from the nearest attendance record?
There was a problem hiding this comment.
how do you propose to find the nearest record? create_date? that's just as prone to filling in a wrong date here.
I consider overtime lines without date garbage data which people should clean up, and do the update only to satisfy the non-null constraint
| SQL_EMPLOYEE2TZ = """ | ||
| ( | ||
| SELECT | ||
| hr_employee.id employee_id, |
There was a problem hiding this comment.
I find you new SQL style a bit difficult to read, and very vertical scroll intensive. Either indent the lines after the command (SELECT, FROM, etc), or put them in the same line as always.
There was a problem hiding this comment.
It's not so new, but indeed was lacking indentation
There was a problem hiding this comment.
Based on the link, this formatting does not follow the recommended style https://docs.telemetry.mozilla.org/concepts/sql_style.html#join-conditions

| hr_employee.id employee_id, | |
| FROM | |
| hr_employee | |
| JOIN | |
| resource_resource | |
| ON hr_employee.resource_id=resource_resource.id | |
| LEFT JOIN | |
| resource_calendar | |
| ON resource_resource.calendar_id=resource_calendar.id | |
| JOIN | |
| res_company | |
| ON hr_employee.company_id=res_company.id | |
| LEFT JOIN | |
| resource_calendar company_resource_calendar | |
| ON res_company.resource_calendar_id=company_resource_calendar.id |
| WHERE | ||
| hr_attendance.employee_id=hr_attendance_overtime_line.employee_id | ||
| AND | ||
| hr_attendance.date=hr_attendance_overtime_line.date |
There was a problem hiding this comment.
This part may not fit according current code, and even more, we may have more than one record for the same date.
There was a problem hiding this comment.
which code do you mean? and indeed this can lead to updating the same record multiple times, but how does this matter?
| """ | ||
| Pre-fill hr.attendance#date | ||
| """ | ||
| openupgrade.add_fields( |
There was a problem hiding this comment.
Why using add_fields instead of add_columns or a simply ALTER TABLE?
There was a problem hiding this comment.
good question, changed to add_columns
| SQL_EMPLOYEE2TZ = """ | ||
| ( | ||
| SELECT | ||
| hr_employee.id employee_id, |
There was a problem hiding this comment.
Based on the link, this formatting does not follow the recommended style https://docs.telemetry.mozilla.org/concepts/sql_style.html#join-conditions

| hr_employee.id employee_id, | |
| FROM | |
| hr_employee | |
| JOIN | |
| resource_resource | |
| ON hr_employee.resource_id=resource_resource.id | |
| LEFT JOIN | |
| resource_calendar | |
| ON resource_resource.calendar_id=resource_calendar.id | |
| JOIN | |
| res_company | |
| ON hr_employee.company_id=res_company.id | |
| LEFT JOIN | |
| resource_calendar company_resource_calendar | |
| ON res_company.resource_calendar_id=company_resource_calendar.id |
| openupgrade.add_columns( | ||
| env, | ||
| [ | ||
| ( | ||
| "hr.attendance", | ||
| "validated_overtime_hours", | ||
| "float", | ||
| None, | ||
| "hr_attendance", | ||
| ) | ||
| ], | ||
| ) |
There was a problem hiding this comment.
This field already exists in v18 and is computed and stored, so why is it necessary to add the column?
The logic used to compute the field has changed slightly, but I understand that adding the column should not be necessary.
| NEW hr.attendance.overtime.rule: hr_attendance.hr_attendance_overtime_employee_schedule_rule (noupdate) | ||
| NEW hr.attendance.overtime.rule: hr_attendance.hr_attendance_overtime_non_working_days_rule (noupdate) |
There was a problem hiding this comment.
I think we should force the creation of these records to preserve the behavior from v18
In v18, there are two company-level fields used to configure tolerance for both the employee and the company. Odoo did not remove these fields(see), but the implementation is now handled by the new hr.attendance.overtime.ruleset model.
If these fields are set in my database, attendance records are taken into account when computing extra hours. However, in v19, if the corresponding rules are missing and the ruleset_id field is not set on hr.version, extra hours are not computed correctly.
These records are not created because they are inside a noupdate block with forcecreate="0" see this file. In addition, we need to transfer the values from the company fields to the corresponding rule.
No description provided.