odoo-addon-openupgrade-scripts 18.0.1.0.0.274__py3-none-any.whl → 18.0.1.0.0.303__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. odoo/addons/openupgrade_scripts/scripts/base/18.0.1.3/upgrade_general_log.txt +2 -1
  2. odoo/addons/openupgrade_scripts/scripts/hr_attendance/18.0.2.0/pre-migration.py +40 -0
  3. odoo/addons/openupgrade_scripts/scripts/hr_attendance/18.0.2.0/upgrade_analysis_work.txt +37 -0
  4. odoo/addons/openupgrade_scripts/scripts/hr_holidays/18.0.1.6/post-migration.py +12 -0
  5. odoo/addons/openupgrade_scripts/scripts/hr_holidays/18.0.1.6/pre-migration.py +185 -0
  6. odoo/addons/openupgrade_scripts/scripts/hr_holidays/18.0.1.6/upgrade_analysis_work.txt +114 -0
  7. odoo/addons/openupgrade_scripts/scripts/hr_holidays_attendance/18.0.1.0/post-migration.py +8 -0
  8. odoo/addons/openupgrade_scripts/scripts/hr_holidays_attendance/18.0.1.0/upgrade_analysis_work.txt +5 -0
  9. odoo/addons/openupgrade_scripts/scripts/hr_timesheet/18.0.1.0/post-migration.py +8 -0
  10. odoo/addons/openupgrade_scripts/scripts/hr_timesheet/18.0.1.0/upgrade_analysis_work.txt +33 -0
  11. odoo/addons/openupgrade_scripts/scripts/hr_timesheet_attendance/18.0.1.1/upgrade_analysis_work.txt +5 -0
  12. odoo/addons/openupgrade_scripts/scripts/l10n_br/18.0.1.0/upgrade_analysis.txt +1 -0
  13. odoo/addons/openupgrade_scripts/scripts/l10n_es_edi_verifactu/18.0.1.0/upgrade_analysis.txt +44 -0
  14. odoo/addons/openupgrade_scripts/scripts/l10n_es_edi_verifactu_pos/18.0.1.0/upgrade_analysis.txt +11 -0
  15. odoo/addons/openupgrade_scripts/scripts/l10n_kh/18.0.1.0/upgrade_analysis.txt +152 -0
  16. odoo/addons/openupgrade_scripts/scripts/l10n_sg/18.0.2.2/upgrade_analysis.txt +1 -1
  17. odoo/addons/openupgrade_scripts/scripts/l10n_th/18.0.2.0/upgrade_analysis.txt +1 -1
  18. odoo/addons/openupgrade_scripts/scripts/l10n_vn/18.0.2.0.3/upgrade_analysis.txt +1 -0
  19. odoo/addons/openupgrade_scripts/scripts/loyalty/18.0.1.0/end-migration.py +9 -0
  20. odoo/addons/openupgrade_scripts/scripts/loyalty/18.0.1.0/upgrade_analysis_work.txt +36 -0
  21. odoo/addons/openupgrade_scripts/scripts/product_expiry/18.0.1.0/upgrade_analysis_work.txt +5 -0
  22. odoo/addons/openupgrade_scripts/scripts/product_margin/18.0.1.0/upgrade_analysis_work.txt +5 -0
  23. odoo/addons/openupgrade_scripts/scripts/project_mrp/18.0.1.0/upgrade_analysis_work.txt +19 -0
  24. odoo/addons/openupgrade_scripts/scripts/project_mrp_account/18.0.1.0/upgrade_analysis_work.txt +5 -0
  25. odoo/addons/openupgrade_scripts/scripts/project_purchase/18.0.1.0/upgrade_analysis_work.txt +9 -0
  26. odoo/addons/openupgrade_scripts/scripts/project_sms/18.0.1.0/upgrade_analysis_work.txt +5 -0
  27. odoo/addons/openupgrade_scripts/scripts/project_stock_account/18.0.1.0/upgrade_analysis_work.txt +12 -0
  28. odoo/addons/openupgrade_scripts/scripts/sale_project/18.0.1.0/pre-migration.py +0 -1
  29. odoo/addons/openupgrade_scripts/scripts/sale_timesheet/18.0.1.0/upgrade_analysis_work.txt +34 -0
  30. odoo/addons/openupgrade_scripts/scripts/stock_landed_costs/18.0.1.1/pre-migration.py +27 -0
  31. odoo/addons/openupgrade_scripts/scripts/stock_landed_costs/18.0.1.1/upgrade_analysis_work.txt +11 -0
  32. odoo/addons/openupgrade_scripts/scripts/website_blog/18.0.1.1/upgrade_analysis_work.txt +12 -0
  33. odoo/addons/openupgrade_scripts/scripts/website_project/18.0.1.0/pre-migration.py +33 -0
  34. odoo/addons/openupgrade_scripts/scripts/website_project/18.0.1.0/upgrade_analysis_work.txt +22 -0
  35. {odoo_addon_openupgrade_scripts-18.0.1.0.0.274.dist-info → odoo_addon_openupgrade_scripts-18.0.1.0.0.303.dist-info}/METADATA +1 -1
  36. {odoo_addon_openupgrade_scripts-18.0.1.0.0.274.dist-info → odoo_addon_openupgrade_scripts-18.0.1.0.0.303.dist-info}/RECORD +38 -10
  37. {odoo_addon_openupgrade_scripts-18.0.1.0.0.274.dist-info → odoo_addon_openupgrade_scripts-18.0.1.0.0.303.dist-info}/WHEEL +1 -1
  38. {odoo_addon_openupgrade_scripts-18.0.1.0.0.274.dist-info → odoo_addon_openupgrade_scripts-18.0.1.0.0.303.dist-info}/top_level.txt +0 -0
@@ -70,6 +70,7 @@ new model l10n_ar.partner.tax [module l10n_ar_withholding]
70
70
  new model l10n_br.zip.range [module l10n_br]
71
71
  new model l10n_es_edi_facturae.ac_role_type (renamed from l10n_es_edi_facturae_adm_centers.ac_role_type) [module l10n_es_edi_facturae]
72
72
  new model l10n_es_edi_tbai.document [module l10n_es_edi_tbai]
73
+ new model l10n_es_edi_verifactu.document [module l10n_es_edi_verifactu]
73
74
  new model l10n_fr.fec.export.wizard [module l10n_fr_account]
74
75
  new model l10n_gr_edi.document [module l10n_gr_edi]
75
76
  new model l10n_gr_edi.preferred_classification [module l10n_gr_edi]
@@ -125,7 +126,7 @@ new model website.page.properties.base [module website]
125
126
  # Found in other module: 92
126
127
  # Found with different type: 8
127
128
  # In obsolete models: 34
128
- # New columns: 1646
129
+ # New columns: 1702
129
130
  # Not matched: 825
130
131
  ---XML records in module 'general'---
131
132
  ERROR: module not in list of installed modules:
@@ -0,0 +1,40 @@
1
+ # Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com)
2
+ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3
+ from openupgradelib import openupgrade
4
+
5
+ _new_columns = [
6
+ ("hr.attendance", "expected_hours", "float"),
7
+ ("hr.attendance", "overtime_status", "selection", "approved"),
8
+ ("hr.attendance", "validated_overtime_hours", "float"),
9
+ ("res.company", "absence_management", "boolean", False),
10
+ ("res.company", "attendance_overtime_validation", "selection", "no_validation"),
11
+ ("res.company", "auto_check_out", "boolean", False),
12
+ ("res.company", "auto_check_out_tolerance", "float", 2),
13
+ ]
14
+
15
+
16
+ def fill_hr_attendance_expected_hours(env):
17
+ openupgrade.logged_query(
18
+ env.cr,
19
+ """
20
+ UPDATE hr_attendance
21
+ SET expected_hours = COALESCE(worked_hours, 0) - COALESCE(overtime_hours, 0)
22
+ """,
23
+ )
24
+
25
+
26
+ def fill_hr_attendance_validated_overtime_hours(env):
27
+ openupgrade.logged_query(
28
+ env.cr,
29
+ """
30
+ UPDATE hr_attendance
31
+ SET validated_overtime_hours = COALESCE(overtime_hours, 0)
32
+ """,
33
+ )
34
+
35
+
36
+ @openupgrade.migrate()
37
+ def migrate(env, version=None):
38
+ openupgrade.add_columns(env, _new_columns)
39
+ fill_hr_attendance_expected_hours(env)
40
+ fill_hr_attendance_validated_overtime_hours(env)
@@ -0,0 +1,37 @@
1
+ ---Models in module 'hr_attendance'---
2
+ ---Fields in module 'hr_attendance'---
3
+ hr_attendance / hr.attendance / expected_hours (float) : NEW isfunction: function, stored
4
+ # DONE: pre-migration: pre-created and filled
5
+
6
+ hr_attendance / hr.attendance / in_mode (selection) : selection_keys is now '['kiosk', 'manual', 'systray', 'technical']' ('['kiosk', 'manual', 'systray']')
7
+ hr_attendance / hr.attendance / out_mode (selection) : selection_keys is now '['auto_check_out', 'kiosk', 'manual', 'systray', 'technical']' ('['kiosk', 'manual', 'systray']')
8
+ hr_attendance / hr.attendance / overtime_status (selection) : NEW selection_keys: ['approved', 'refused', 'to_approve'], isfunction: function, stored
9
+ hr_attendance / hr.attendance / validated_overtime_hours (float): NEW hasdefault: compute
10
+ # DONE: pre-migration: pre-created and filled
11
+
12
+ hr_attendance / res.company / absence_management (boolean) : NEW hasdefault: default
13
+ hr_attendance / res.company / attendance_overtime_validation (selection): NEW selection_keys: ['by_manager', 'no_validation'], hasdefault: default
14
+ hr_attendance / res.company / auto_check_out (boolean) : NEW hasdefault: default
15
+ hr_attendance / res.company / auto_check_out_tolerance (float): NEW hasdefault: default
16
+ # DONE: pre-migration: pre-created and filled
17
+
18
+ hr_attendance / res.company / hr_attendance_overtime (boolean): DEL
19
+ hr_attendance / res.company / overtime_start_date (date) : DEL
20
+ # NOTHING TO DO: deprecated fields (https://github.com/odoo/odoo/commit/cac96f5d3c391ea0d52da2e3433e7eabe07e8fb0)
21
+
22
+ ---XML records in module 'hr_attendance'---
23
+ NEW ir.actions.act_window: hr_attendance.hr_attendance_management_action
24
+ NEW ir.actions.client: hr_attendance.hr_attendance_action_install_kiosk_pwa
25
+ NEW ir.actions.server: hr_attendance.action_load_demo_data
26
+ NEW ir.actions.server: hr_attendance.action_try_kiosk
27
+ NEW ir.cron: hr_attendance.hr_attendance_absence_cron
28
+ NEW ir.cron: hr_attendance.hr_attendance_check_out_cron
29
+ NEW ir.ui.menu: hr_attendance.menu_action_open_form
30
+ NEW ir.ui.menu: hr_attendance.menu_hr_attendance_view_attendances_management
31
+ DEL ir.ui.menu: hr_attendance.menu_hr_attendance_kiosk_no_user_mode
32
+ NEW ir.ui.view: hr_attendance.hr_attendance_management_view_filter
33
+ NEW ir.ui.view: hr_attendance.hr_attendance_overtime_view_pivot
34
+ NEW ir.ui.view: hr_attendance.hr_attendance_validated_hours_employee_simple_tree_view
35
+ NEW ir.ui.view: hr_attendance.view_attendance_overtime_graph
36
+ NEW ir.ui.view: hr_attendance.view_attendance_tree_management
37
+ # NOTHING TO DO
@@ -0,0 +1,12 @@
1
+ from openupgradelib import openupgrade
2
+
3
+
4
+ @openupgrade.migrate()
5
+ def migrate(env, version):
6
+ openupgrade.load_data(env, "hr_holidays", "18.0.1.6/noupdate_changes.xml")
7
+ openupgrade.delete_record_translations(
8
+ env.cr, "hr_holidays", ["mt_leave_allocation"], ["name"]
9
+ )
10
+ openupgrade.delete_records_safely_by_xml_id(
11
+ env, ["hr_holidays.mt_leave_home_working"]
12
+ )
@@ -0,0 +1,185 @@
1
+ from openupgradelib import openupgrade
2
+
3
+ _column_renames = {
4
+ "hr_leave": [("request_hour_from", None), ("request_hour_to", None)],
5
+ "hr_leave_allocation": [("private_name", "name")],
6
+ }
7
+
8
+ _column_adds = [
9
+ ("hr.leave", "request_hour_from", "float"),
10
+ ("hr.leave", "request_hour_to", "float"),
11
+ ]
12
+
13
+
14
+ def refill_hr_leave_request_hours(env):
15
+ old_request_hour_from = openupgrade.get_legacy_name("request_hour_from")
16
+ openupgrade.logged_query(
17
+ env.cr,
18
+ f"""
19
+ UPDATE hr_leave SET request_hour_from = {old_request_hour_from}::float
20
+ WHERE {old_request_hour_from} IS NOT NULL;
21
+ """,
22
+ )
23
+ old_request_hour_to = openupgrade.get_legacy_name("request_hour_to")
24
+ openupgrade.logged_query(
25
+ env.cr,
26
+ f"""
27
+ UPDATE hr_leave SET request_hour_to = {old_request_hour_to}::float
28
+ WHERE {old_request_hour_to} IS NOT NULL;
29
+ """,
30
+ )
31
+
32
+
33
+ def update_states(env):
34
+ openupgrade.logged_query(
35
+ env.cr,
36
+ """
37
+ UPDATE hr_leave
38
+ SET state = 'confirm'
39
+ WHERE state = 'draft'
40
+ """,
41
+ )
42
+ openupgrade.logged_query(
43
+ env.cr,
44
+ """
45
+ UPDATE hr_leave
46
+ SET state = 'cancel'
47
+ WHERE active IS DISTINCT FROM TRUE
48
+ """,
49
+ )
50
+ openupgrade.logged_query(
51
+ env.cr,
52
+ """
53
+ UPDATE hr_leave_allocation
54
+ SET state = 'cancel'
55
+ WHERE active IS DISTINCT FROM TRUE
56
+ """,
57
+ )
58
+
59
+
60
+ def update_allocation_validation_type(env):
61
+ openupgrade.logged_query(
62
+ env.cr,
63
+ """
64
+ UPDATE hr_leave_type
65
+ SET allocation_validation_type = 'hr'
66
+ WHERE allocation_validation_type = 'officer'
67
+ """,
68
+ )
69
+ openupgrade.logged_query(
70
+ env.cr,
71
+ """
72
+ UPDATE hr_leave_type
73
+ SET allocation_validation_type = 'no_validation'
74
+ WHERE allocation_validation_type = 'no'
75
+ """,
76
+ )
77
+
78
+
79
+ def split_employee_leaves(env):
80
+ for table in ["hr_leave", "hr_leave_allocation"]:
81
+ env.cr.execute(
82
+ f"""
83
+ SELECT column_name
84
+ FROM information_schema.columns
85
+ WHERE table_name = '{table}'
86
+ """
87
+ )
88
+ columns = ", ".join(
89
+ [x[0] for x in env.cr.fetchall() if x[0] not in ("id", "employee_id")]
90
+ )
91
+ leave_employees = []
92
+ # case multi_employee
93
+ env.cr.execute(
94
+ f"""
95
+ SELECT leave.id, 'employee', array_agg(rel.hr_employee_id) as employee_ids
96
+ FROM {table} AS leave
97
+ JOIN hr_employee_{table}_rel rel ON rel.{table}_id = leave.id
98
+ WHERE leave.holiday_type = 'employee' AND leave.multi_employee
99
+ GROUP BY leave.id
100
+ """
101
+ )
102
+ leave_employees.extend(env.cr.fetchall())
103
+ # case company
104
+ env.cr.execute(
105
+ f"""
106
+ SELECT leave.id, 'company', array_agg(he.id) as employee_ids
107
+ FROM {table} AS leave
108
+ JOIN hr_employee he ON he.company_id = leave.mode_company_id
109
+ WHERE leave.holiday_type = 'company'
110
+ GROUP BY leave.id
111
+ """
112
+ )
113
+ leave_employees.extend(env.cr.fetchall())
114
+ # case category
115
+ env.cr.execute(
116
+ f"""
117
+ SELECT leave.id, 'category', array_agg(rel.employee_id) as employee_ids
118
+ FROM {table} AS leave
119
+ JOIN employee_category_rel rel ON rel.category_id = leave.category_id
120
+ WHERE leave.holiday_type = 'category'
121
+ GROUP BY leave.id
122
+ """
123
+ )
124
+ leave_employees.extend(env.cr.fetchall())
125
+ # case department
126
+ env.cr.execute(
127
+ f"""
128
+ SELECT leave.id, 'department', array_agg(he.id) as employee_ids
129
+ FROM {table} AS leave
130
+ JOIN hr_employee he ON he.department_id = leave.department_id
131
+ WHERE leave.holiday_type = 'department'
132
+ GROUP BY leave.id
133
+ """
134
+ )
135
+ leave_employees.extend(env.cr.fetchall())
136
+ for table_id, holiday_type, employee_ids in leave_employees:
137
+ employees = env["hr.employee"].browse(employee_ids)
138
+ if employee_ids:
139
+ openupgrade.logged_query(
140
+ env.cr,
141
+ f"""
142
+ UPDATE {table}
143
+ SET employee_id = {employees[0].id}
144
+ WHERE id = {table_id}
145
+ """,
146
+ )
147
+ if holiday_type != "employee":
148
+ openupgrade.logged_query(
149
+ env.cr,
150
+ f"""
151
+ UPDATE {table}
152
+ SET holiday_type = 'employee'
153
+ WHERE id = {table_id}
154
+ """,
155
+ )
156
+ for employee in employees[1:]:
157
+ openupgrade.logged_query(
158
+ env.cr,
159
+ f"""
160
+ INSERT INTO {table} (employee_id, {columns})
161
+ SELECT {employee.id}, {columns}
162
+ FROM {table}
163
+ WHERE id = {table_id}
164
+ """,
165
+ )
166
+ else:
167
+ openupgrade.logged_query(
168
+ env.cr,
169
+ f"""
170
+ DELETE FROM {table} WHERE id = {table_id}
171
+ """,
172
+ )
173
+
174
+
175
+ @openupgrade.migrate()
176
+ def migrate(env, version):
177
+ openupgrade.rename_columns(env.cr, _column_renames)
178
+ openupgrade.add_columns(env, _column_adds)
179
+ refill_hr_leave_request_hours(env)
180
+ update_states(env)
181
+ update_allocation_validation_type(env)
182
+ openupgrade.remove_tables_fks(
183
+ env.cr, ["hr_employee_hr_leave_rel", "hr_employee_hr_leave_allocation_rel"]
184
+ )
185
+ split_employee_leaves(env)
@@ -0,0 +1,114 @@
1
+ ---Models in module 'hr_holidays'---
2
+ new model hr.leave.allocation.generate.multi.wizard [transient]
3
+ new model hr.leave.generate.multi.wizard [transient]
4
+ ---Fields in module 'hr_holidays'---
5
+ hr_holidays / hr.employee / current_leave_state (selection): selection_keys removed: [draft]
6
+ hr_holidays / hr.employee / hr_icon_display (False) : selection_keys added: [presence_archive, presence_out_of_working_hour], removed: [presence_absent_active, presence_to_define]
7
+ # NOTHING TO DO: non stored
8
+
9
+ hr_holidays / hr.leave / employee_ids (many2many) : DEL relation: hr.employee
10
+ hr_holidays / hr.leave.allocation / employee_ids (many2many) : DEL relation: hr.employee
11
+ # DONE: pre-migration: remove many2many table fks
12
+
13
+ hr_holidays / hr.leave / category_id (many2one) : DEL relation: hr.employee.category
14
+ hr_holidays / hr.leave.allocation / category_id (many2one) : DEL relation: hr.employee.category
15
+ hr_holidays / hr.leave / holiday_type (selection) : DEL required, selection_keys: ['category', 'company', 'department', 'employee']
16
+ hr_holidays / hr.leave.allocation / holiday_type (selection) : DEL required, selection_keys: ['category', 'company', 'department', 'employee']
17
+ hr_holidays / hr.leave / linked_request_ids (one2many) : DEL relation: hr.leave
18
+ hr_holidays / hr.leave.allocation / linked_request_ids (one2many) : DEL relation: hr.leave.allocation
19
+ hr_holidays / hr.leave / mode_company_id (many2one) : DEL relation: res.company
20
+ hr_holidays / hr.leave.allocation / mode_company_id (many2one) : DEL relation: res.company
21
+ hr_holidays / hr.leave / multi_employee (boolean) : DEL
22
+ hr_holidays / hr.leave.allocation / multi_employee (boolean) : DEL
23
+ hr_holidays / hr.leave / parent_id (many2one) : DEL relation: hr.leave
24
+ hr_holidays / hr.leave.allocation / parent_id (many2one) : DEL relation: hr.leave.allocation
25
+ hr_holidays / hr.leave / employee_id (many2one) : now required
26
+ hr_holidays / hr.leave.allocation / employee_id (many2one) : now required
27
+ # DONE: pre-migration: split leaves, one for each employee
28
+
29
+ hr_holidays / hr.leave / report_note (text) : DEL
30
+ # NOTHING TO DO: deprecated (https://github.com/odoo/odoo/commit/ca34732081b1ce6c339dd941abb9696861d95878)
31
+
32
+ hr_holidays / hr.leave / request_hour_from (selection) : selection_keys is now 'False' ('['0', '0.5', '1', '1.5', '10', '10.5', '11', '11.5', '12', '12.5', '13', '13.5', '14', '14.5', '15', '15.5', '16', '16.5', '17', '17.5', '18', '18.5', '19', '19.5', '2', '2.5', '20', '20.5', '21', '21.5', '22', '22.5', '23', '23.5', '3', '3.5', '4', '4.5', '5', '5.5', '6', '6.5', '7', '7.5', '8', '8.5', '9', '9.5']')
33
+ hr_holidays / hr.leave / request_hour_from (selection) : type is now 'float' ('selection')
34
+ hr_holidays / hr.leave / request_hour_to (selection) : selection_keys is now 'False' ('['0', '0.5', '1', '1.5', '10', '10.5', '11', '11.5', '12', '12.5', '13', '13.5', '14', '14.5', '15', '15.5', '16', '16.5', '17', '17.5', '18', '18.5', '19', '19.5', '2', '2.5', '20', '20.5', '21', '21.5', '22', '22.5', '23', '23.5', '3', '3.5', '4', '4.5', '5', '5.5', '6', '6.5', '7', '7.5', '8', '8.5', '9', '9.5']')
35
+ hr_holidays / hr.leave / request_hour_to (selection) : type is now 'float' ('selection')
36
+ # DONE: pre-migration: transform to float
37
+
38
+ hr_holidays / hr.leave / active (boolean) : DEL
39
+ hr_holidays / hr.leave.allocation / active (boolean) : DEL
40
+ hr_holidays / hr.leave / state (selection) : selection_keys added: [cancel], removed: [draft]
41
+ hr_holidays / hr.leave.allocation / state (selection) : selection_keys added: [validate1] (most likely nothing to do)
42
+ # DONE: pre-migration: set state = 'cancel' if archived. Also, 'draft' set to 'confirm' for leaves
43
+
44
+ hr_holidays / hr.leave.accrual.level / accrual_validity (boolean) : NEW
45
+ hr_holidays / hr.leave.accrual.level / accrual_validity_count (integer): NEW hasdefault: default
46
+ hr_holidays / hr.leave.accrual.level / accrual_validity_type (selection): NEW required, selection_keys: ['day', 'month'], hasdefault: default
47
+ # NOTHING TO DO: new functionality
48
+
49
+ hr_holidays / hr.leave.accrual.level / cap_accrued_time_yearly (boolean): NEW
50
+ hr_holidays / hr.leave.accrual.level / maximum_leave_yearly (float) : NEW
51
+ # NOTHING TO DO: new feature
52
+
53
+ hr_holidays / hr.leave.allocation / accrual_plan_id (many2one) : now a function
54
+ # NOTHING TO DO
55
+
56
+ hr_holidays / hr.leave.allocation / actual_lastcall (date) : NEW
57
+ hr_holidays / hr.leave.allocation / last_executed_carryover_date (date): NEW
58
+ # NOTHING TO DO
59
+
60
+ hr_holidays / hr.leave.allocation / carried_over_days_expiration_date (date): NEW
61
+ hr_holidays / hr.leave.allocation / expiring_carryover_days (float): NEW
62
+ # NOTHING TO DO: new functionality
63
+
64
+ hr_holidays / hr.leave.allocation / is_name_custom (boolean) : NEW
65
+ hr_holidays / hr.leave.allocation / name (char) : is now stored
66
+ hr_holidays / hr.leave.allocation / name (char) : not a function anymore
67
+ hr_holidays / hr.leave.allocation / private_name (char) : DEL
68
+ # DONE: pre-migration: renamed private_name to name
69
+
70
+ hr_holidays / hr.leave.allocation / number_of_hours_display (float): is now stored
71
+ # NOTHING TO DO: let odoo compute it
72
+
73
+ hr_holidays / hr.leave.allocation / second_approver_id (many2one) : NEW relation: hr.employee
74
+ # NOTHING TO DO: new functionality
75
+
76
+ hr_holidays / hr.leave.allocation / yearly_accrued_amount (float) : NEW
77
+ # NOTHING TO DO
78
+
79
+ hr_holidays / hr.leave.type / allocation_validation_type (selection): selection_keys added: [both, hr, manager, no_validation], removed: [no, officer]
80
+ # DONE: pre-migration: officer -> hr, no -> no_validation
81
+
82
+ hr_holidays / hr.leave.type / include_public_holidays_in_duration (boolean): NEW hasdefault: default
83
+ # NOTHING TO DO: new feature
84
+
85
+ hr_holidays / hr.leave.type / show_on_dashboard (boolean) : NEW hasdefault: default
86
+ # NOTHING TO DO: new feature
87
+
88
+ ---XML records in module 'hr_holidays'---
89
+ NEW ir.actions.act_window: hr_holidays.action_hr_leave_allocation_generate_multi_wizard
90
+ NEW ir.actions.act_window: hr_holidays.action_hr_leave_generate_multi_wizard
91
+ NEW ir.actions.act_window: hr_holidays.action_hr_leave_report
92
+ NEW ir.actions.act_window: hr_holidays.hr_leave_report_action
93
+ DEL ir.actions.act_window: hr_holidays.act_hr_employee_holiday_type
94
+ DEL ir.actions.act_window: hr_holidays.hr_leave_action_action_department
95
+ NEW ir.model.access: hr_holidays.access_hr_leave_allocation_generate_multi_wizard
96
+ NEW ir.model.access: hr_holidays.access_hr_leave_employee_type_report_manager
97
+ NEW ir.model.access: hr_holidays.access_hr_leave_generate_multi_wizard
98
+ DEL ir.model.access: hr_holidays.access_hr_leave_employee_type_report
99
+ NEW ir.model.constraint: hr_holidays.constraint_hr_leave_accrual_level_valid_yearly_cap_value
100
+ DEL ir.model.constraint: hr_holidays.constraint_hr_leave_allocation_type_value
101
+ DEL ir.model.constraint: hr_holidays.constraint_hr_leave_type_value
102
+ NEW ir.ui.menu: hr_holidays.menu_hr_holidays_balance
103
+ NEW ir.ui.view: hr_holidays.hr_leave_allocation_generate_multi_wizard_view_form
104
+ NEW ir.ui.view: hr_holidays.hr_leave_generate_multi_wizard_view_form
105
+ NEW ir.ui.view: hr_holidays.hr_leave_view_search_report
106
+ NEW ir.ui.view: hr_holidays.view_calendar_event_form_inherit
107
+ DEL ir.ui.view: hr_holidays.hr_departure_wizard_view_form
108
+ DEL ir.ui.view: hr_holidays.hr_leave_report_search_view
109
+ NEW mail.activity.type: hr_holidays.mail_act_leave_allocation_second_approval (noupdate)
110
+ NEW web_tour.tour: hr_holidays.hr_holidays_tour
111
+ # NOTHING TO DO
112
+
113
+ DEL mail.message.subtype: hr_holidays.mt_leave_home_working (noupdate)
114
+ # DONE: post-migration: safely delete
@@ -0,0 +1,8 @@
1
+ from openupgradelib import openupgrade
2
+
3
+
4
+ @openupgrade.migrate()
5
+ def migrate(env, version):
6
+ openupgrade.load_data(
7
+ env, "hr_holidays_attendance", "18.0.1.0/noupdate_changes.xml"
8
+ )
@@ -0,0 +1,5 @@
1
+ ---Models in module 'hr_holidays_attendance'---
2
+ ---Fields in module 'hr_holidays_attendance'---
3
+ ---XML records in module 'hr_holidays_attendance'---
4
+ ---nothing has changed in this module--
5
+ # NOTHING TO DO
@@ -0,0 +1,8 @@
1
+ # Copyright 2025 Le Filament (https://le-filament.com)
2
+ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3
+ from openupgradelib import openupgrade
4
+
5
+
6
+ @openupgrade.migrate()
7
+ def migrate(env, version):
8
+ openupgrade.load_data(env, "hr_timesheet", "18.0.1.0/noupdate_changes.xml")
@@ -0,0 +1,33 @@
1
+ ---Models in module 'hr_timesheet'---
2
+ ---Fields in module 'hr_timesheet'---
3
+ hr_timesheet / account.analytic.applicability / business_domain (False) : NEW selection_keys: ['bill', 'expense', 'general', 'invoice', 'purchase_order', 'timesheet'], mode: modify
4
+ # NOTHING TO DO: new selection added for new functionality
5
+
6
+ hr_timesheet / project.task / analytic_account_active (boolean): not a function anymore
7
+ hr_timesheet / project.task / analytic_account_active (boolean): now related
8
+ # NOTHING TO DO: handled by ORM to get analytic_account from parent project_id
9
+
10
+ ---XML records in module 'hr_timesheet'---
11
+ NEW ir.actions.act_window.view: hr_timesheet.timesheet_action_view_report_by_employee_list
12
+ NEW ir.actions.act_window.view: hr_timesheet.timesheet_action_view_report_by_project_list
13
+ NEW ir.actions.act_window.view: hr_timesheet.timesheet_action_view_report_by_task_list
14
+ NEW ir.embedded.actions: hr_timesheet.project_embedded_action_timesheets
15
+ NEW ir.embedded.actions: hr_timesheet.project_embedded_action_timesheets_dashboard
16
+ NEW ir.exports: hr_timesheet.account_analytic_line_export_template
17
+ NEW ir.exports.line: hr_timesheet.account_analytic_line_export_template_line_date
18
+ NEW ir.exports.line: hr_timesheet.account_analytic_line_export_template_line_employee_id
19
+ NEW ir.exports.line: hr_timesheet.account_analytic_line_export_template_line_id
20
+ NEW ir.exports.line: hr_timesheet.account_analytic_line_export_template_line_name
21
+ NEW ir.exports.line: hr_timesheet.account_analytic_line_export_template_line_project_id
22
+ NEW ir.exports.line: hr_timesheet.account_analytic_line_export_template_line_task_id
23
+ NEW ir.exports.line: hr_timesheet.account_analytic_line_export_template_line_unit_amount
24
+ NEW ir.exports.line: hr_timesheet.project_task_export_template_line_allocated_hours
25
+ NEW ir.model.access: hr_timesheet.access_timesheets_analysis_report
26
+ DEL ir.model.access: hr_timesheet.access_timesheets_analysis_report_manager
27
+ DEL ir.model.access: hr_timesheet.access_timesheets_analysis_report_user
28
+ NEW ir.rule: hr_timesheet.timesheet_analysis_report_department_manager (noupdate)
29
+ NEW ir.ui.view: hr_timesheet.timesheet_report_subtask
30
+ NEW ir.ui.view: hr_timesheet.timesheets_analysis_report_form
31
+ NEW ir.ui.view: hr_timesheet.timesheets_analysis_report_list
32
+ NEW ir.ui.view: hr_timesheet.view_hr_timesheet_line_by_project
33
+ # NOTHING TO DO: handled by ORM
@@ -0,0 +1,5 @@
1
+ ---Models in module 'hr_timesheet_attendance'---
2
+ ---Fields in module 'hr_timesheet_attendance'---
3
+ ---XML records in module 'hr_timesheet_attendance'---
4
+ ---nothing has changed in this module--
5
+ # NOTHING TO DO
@@ -5,6 +5,7 @@ l10n_br / l10n_br.zip.range / city_id (many2one) : NEW re
5
5
  l10n_br / l10n_br.zip.range / end (char) : NEW required
6
6
  l10n_br / l10n_br.zip.range / start (char) : NEW required
7
7
  l10n_br / res.city / l10n_br_zip_range_ids (one2many): NEW relation: l10n_br.zip.range
8
+ l10n_br_pix / res.partner.bank / proxy_type (False) : selection_keys added: [bakong_id_merchant, bakong_id_solo] (most likely nothing to do)
8
9
  ---XML records in module 'l10n_br'---
9
10
  NEW ir.model.access: l10n_br.access_l10n_br_zip_range_group_manager
10
11
  NEW ir.model.access: l10n_br.access_l10n_br_zip_range_group_user
@@ -0,0 +1,44 @@
1
+ ---Models in module 'l10n_es_edi_verifactu'---
2
+ new model l10n_es_edi_verifactu.document
3
+ ---Fields in module 'l10n_es_edi_verifactu'---
4
+ l10n_es_edi_verifactu / account.move / l10n_es_edi_verifactu_clave_regimen (selection): NEW selection_keys: function, hasdefault: compute
5
+ l10n_es_edi_verifactu / account.move / l10n_es_edi_verifactu_document_ids (one2many): NEW relation: l10n_es_edi_verifactu.document
6
+ l10n_es_edi_verifactu / account.move / l10n_es_edi_verifactu_refund_reason (selection): NEW selection_keys: ['R1', 'R2', 'R3', 'R4', 'R5']
7
+ l10n_es_edi_verifactu / account.move / l10n_es_edi_verifactu_state (selection): NEW selection_keys: ['accepted', 'cancelled', 'registered_with_errors', 'rejected'], isfunction: function, stored
8
+ l10n_es_edi_verifactu / account.move / l10n_es_edi_verifactu_substituted_entry_id (many2one): NEW relation: account.move
9
+ l10n_es_edi_verifactu / account.move / l10n_es_edi_verifactu_substitution_move_ids (one2many): NEW relation: account.move
10
+ l10n_es_edi_verifactu / account.tax / l10n_es_applicability (selection): NEW selection_keys: ['01', '02', '03']
11
+ l10n_es_edi_verifactu / certificate.certificate / scope (False) : NEW selection_keys: ['facturae', 'general', 'sii', 'tbai', 'verifactu'], mode: modify
12
+ l10n_es_edi_verifactu / l10n_es_edi_verifactu.document / chain_index (integer) : NEW
13
+ l10n_es_edi_verifactu / l10n_es_edi_verifactu.document / company_id (many2one) : NEW relation: res.company, required
14
+ l10n_es_edi_verifactu / l10n_es_edi_verifactu.document / document_type (selection) : NEW required, selection_keys: ['cancellation', 'submission']
15
+ l10n_es_edi_verifactu / l10n_es_edi_verifactu.document / errors (html) : NEW
16
+ l10n_es_edi_verifactu / l10n_es_edi_verifactu.document / json_attachment_id (many2one) : NEW relation: ir.attachment
17
+ l10n_es_edi_verifactu / l10n_es_edi_verifactu.document / move_id (many2one) : NEW relation: account.move
18
+ l10n_es_edi_verifactu / l10n_es_edi_verifactu.document / response_csv (char) : NEW
19
+ l10n_es_edi_verifactu / l10n_es_edi_verifactu.document / state (selection) : NEW selection_keys: ['accepted', 'registered_with_errors', 'rejected']
20
+ l10n_es_edi_verifactu / res.company / l10n_es_edi_verifactu_certificate_ids (one2many): NEW relation: certificate.certificate
21
+ l10n_es_edi_verifactu / res.company / l10n_es_edi_verifactu_chain_sequence_id (many2one): NEW relation: ir.sequence
22
+ l10n_es_edi_verifactu / res.company / l10n_es_edi_verifactu_next_batch_time (datetime): NEW
23
+ l10n_es_edi_verifactu / res.company / l10n_es_edi_verifactu_required (boolean): NEW
24
+ l10n_es_edi_verifactu / res.company / l10n_es_edi_verifactu_special_vat_regime (selection): NEW selection_keys: ['reagyp', 'recargo', 'simplified']
25
+ l10n_es_edi_verifactu / res.company / l10n_es_edi_verifactu_test_environment (boolean): NEW hasdefault: default
26
+ ---XML records in module 'l10n_es_edi_verifactu'---
27
+ NEW ir.actions.act_window: l10n_es_edi_verifactu.l10n_es_edi_verifactu_certificate_action
28
+ NEW ir.cron: l10n_es_edi_verifactu.cron_verifactu_batch (noupdate)
29
+ NEW ir.model.access: l10n_es_edi_verifactu.access_l10n_es_edi_verifactu_document_readonly
30
+ NEW ir.ui.menu: l10n_es_edi_verifactu.menu_l10n_es_edi_verifactu_certificates
31
+ NEW ir.ui.menu: l10n_es_edi_verifactu.menu_l10n_es_edi_verifactu_root
32
+ NEW ir.ui.view: l10n_es_edi_verifactu.certificate_certificate_view_form
33
+ NEW ir.ui.view: l10n_es_edi_verifactu.certificate_certificate_view_search
34
+ NEW ir.ui.view: l10n_es_edi_verifactu.report_invoice_document
35
+ NEW ir.ui.view: l10n_es_edi_verifactu.res_config_settings_view_form
36
+ NEW ir.ui.view: l10n_es_edi_verifactu.view_account_invoice_filter
37
+ NEW ir.ui.view: l10n_es_edi_verifactu.view_account_move_filter
38
+ NEW ir.ui.view: l10n_es_edi_verifactu.view_account_move_reversal_inherit_l10n_es_edi_verifactu
39
+ NEW ir.ui.view: l10n_es_edi_verifactu.view_company_form
40
+ NEW ir.ui.view: l10n_es_edi_verifactu.view_invoice_tree
41
+ NEW ir.ui.view: l10n_es_edi_verifactu.view_l10n_es_edi_verifactu_document_form
42
+ NEW ir.ui.view: l10n_es_edi_verifactu.view_move_form_inherit_l10n_es_edi_verifactu
43
+ NEW ir.ui.view: l10n_es_edi_verifactu.view_move_tree
44
+ NEW ir.ui.view: l10n_es_edi_verifactu.view_tax_form_inherit_l10n_es_edi_verifactu
@@ -0,0 +1,11 @@
1
+ ---Models in module 'l10n_es_edi_verifactu_pos'---
2
+ ---Fields in module 'l10n_es_edi_verifactu_pos'---
3
+ l10n_es_edi_verifactu_pos / l10n_es_edi_verifactu.document / pos_order_id (many2one) : NEW relation: pos.order
4
+ l10n_es_edi_verifactu_pos / pos.order / l10n_es_edi_verifactu_document_ids (one2many): NEW relation: l10n_es_edi_verifactu.document
5
+ l10n_es_edi_verifactu_pos / pos.order / l10n_es_edi_verifactu_refund_reason (selection): NEW selection_keys: ['R1', 'R2', 'R3', 'R4', 'R5']
6
+ l10n_es_edi_verifactu_pos / pos.order / l10n_es_edi_verifactu_state (selection): NEW selection_keys: ['accepted', 'cancelled', 'registered_with_errors', 'rejected'], isfunction: function, stored
7
+ ---XML records in module 'l10n_es_edi_verifactu_pos'---
8
+ NEW ir.model.access: l10n_es_edi_verifactu_pos.access_l10n_es_edi_verifactu_document
9
+ NEW ir.ui.view: l10n_es_edi_verifactu_pos.view_pos_order_filter
10
+ NEW ir.ui.view: l10n_es_edi_verifactu_pos.view_pos_order_form_inherit_l10n_es_pos_verifactu
11
+ NEW ir.ui.view: l10n_es_edi_verifactu_pos.view_pos_order_tree