odoo-addon-openupgrade-scripts 16.0.1.0.3.143__py3-none-any.whl → 16.0.1.0.3.162__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.
- odoo/addons/openupgrade_scripts/scripts/hr_attendance/16.0.2.0/post-migration.py +6 -0
- odoo/addons/openupgrade_scripts/scripts/hr_attendance/16.0.2.0/upgrade_analysis_work.txt +16 -0
- odoo/addons/openupgrade_scripts/scripts/hr_contract/16.0.1.0/noupdate_changes.xml +1 -1
- odoo/addons/openupgrade_scripts/scripts/hr_contract/16.0.1.0/post-migration.py +9 -0
- odoo/addons/openupgrade_scripts/scripts/hr_contract/16.0.1.0/upgrade_analysis_work.txt +23 -0
- odoo/addons/openupgrade_scripts/scripts/hr_expense/16.0.2.0/post-migration.py +73 -0
- odoo/addons/openupgrade_scripts/scripts/hr_expense/16.0.2.0/pre-migration.py +108 -0
- odoo/addons/openupgrade_scripts/scripts/hr_expense/16.0.2.0/upgrade_analysis_work.txt +71 -0
- odoo/addons/openupgrade_scripts/scripts/hr_holidays/16.0.1.5/post-migration.py +25 -0
- odoo/addons/openupgrade_scripts/scripts/hr_holidays/16.0.1.5/upgrade_analysis_work.txt +44 -0
- odoo/addons/openupgrade_scripts/scripts/hr_hourly_cost/16.0.1.0/upgrade_analysis_work.txt +15 -0
- odoo/addons/openupgrade_scripts/scripts/hr_recruitment_survey/16.0.1.0/upgrade_analysis_work.txt +6 -0
- odoo/addons/openupgrade_scripts/scripts/hr_timesheet/16.0.1.0/pre-migration.py +76 -0
- odoo/addons/openupgrade_scripts/scripts/hr_timesheet/16.0.1.0/upgrade_analysis_work.txt +76 -0
- odoo/addons/openupgrade_scripts/scripts/hr_timesheet_attendance/{16.0.1.0/upgrade_analysis.txt → 16.0.1.1/upgrade_analysis_work.txt} +1 -0
- odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/post-migration.py +18 -0
- odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/pre-migration.py +170 -0
- odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/tests/__init__.py +1 -0
- odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/tests/test_project_migration.py +13 -0
- odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/upgrade_analysis_work.txt +101 -0
- odoo/addons/openupgrade_scripts/scripts/sale_project/16.0.1.0/upgrade_analysis_work.txt +22 -0
- odoo/addons/openupgrade_scripts/scripts/sale_timesheet/16.0.1.0/pre-migration.py +36 -0
- odoo/addons/openupgrade_scripts/scripts/sale_timesheet/16.0.1.0/upgrade_analysis_work.txt +58 -0
- odoo/addons/openupgrade_scripts/scripts/survey/16.0.3.5/post-migration.py +24 -0
- odoo/addons/openupgrade_scripts/scripts/survey/16.0.3.5/pre-migration.py +14 -0
- odoo/addons/openupgrade_scripts/scripts/survey/16.0.3.5/upgrade_analysis_work.txt +48 -0
- {odoo_addon_openupgrade_scripts-16.0.1.0.3.143.dist-info → odoo_addon_openupgrade_scripts-16.0.1.0.3.162.dist-info}/METADATA +1 -1
- {odoo_addon_openupgrade_scripts-16.0.1.0.3.143.dist-info → odoo_addon_openupgrade_scripts-16.0.1.0.3.162.dist-info}/RECORD +30 -6
- {odoo_addon_openupgrade_scripts-16.0.1.0.3.143.dist-info → odoo_addon_openupgrade_scripts-16.0.1.0.3.162.dist-info}/WHEEL +0 -0
- {odoo_addon_openupgrade_scripts-16.0.1.0.3.143.dist-info → odoo_addon_openupgrade_scripts-16.0.1.0.3.162.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
---Models in module 'hr_attendance'---
|
2
|
+
---Fields in module 'hr_attendance'---
|
3
|
+
hr_attendance / res.company / attendance_barcode_source (selection): NEW selection_keys: ['back', 'front', 'scanner'], hasdefault: default
|
4
|
+
# NOTHING TO DO: Value only used in enterprise
|
5
|
+
|
6
|
+
hr_attendance / res.company / attendance_kiosk_delay (integer): NEW hasdefault: default
|
7
|
+
# NOTHING TO DO: In v15, this parameter was fixed to 5 seconds. Now it's configurable and set by default in 10. It's reasonable to let the new default as a better default value.
|
8
|
+
|
9
|
+
hr_attendance / res.company / attendance_kiosk_mode (selection): NEW selection_keys: ['barcode', 'barcode_manual', 'manual'], hasdefault: default
|
10
|
+
# NOTHING TO DO: With the default value `barcode_manual`, we get the same behavior as v15
|
11
|
+
|
12
|
+
---XML records in module 'hr_attendance'---
|
13
|
+
NEW ir.model.access: hr_attendance.access_hr_attendance_officer
|
14
|
+
DEL ir.ui.view: hr_attendance.hr_attendance_view_form_inherit
|
15
|
+
DEL ir.ui.view: hr_attendance.view_attendance_tree_inherit
|
16
|
+
# NOTHING TO DO: noupdate=0 records handled by ORM.
|
@@ -4,6 +4,6 @@
|
|
4
4
|
<field name="description">Enable the user to see and manage the contracts from Employee application.</field>
|
5
5
|
</record>
|
6
6
|
<record id="group_hr_contract_manager" model="res.groups">
|
7
|
-
<field name="implied_ids" eval="[(4, ref('hr_contract.group_hr_contract_employee_manager'))]"/>
|
7
|
+
<field name="implied_ids" eval="[(5, ), (4, ref('hr_contract.group_hr_contract_employee_manager'))]"/>
|
8
8
|
</record>
|
9
9
|
</odoo>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# Copyright 2023 Coop IT Easy (https://coopiteasy.be)
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
|
4
|
+
from openupgradelib import openupgrade
|
5
|
+
|
6
|
+
|
7
|
+
@openupgrade.migrate()
|
8
|
+
def migrate(env, version):
|
9
|
+
openupgrade.load_data(env.cr, "hr_contract", "16.0.1.0/noupdate_changes.xml")
|
@@ -0,0 +1,23 @@
|
|
1
|
+
---Models in module 'hr_contract'---
|
2
|
+
model hr.contract.type (moved to hr)
|
3
|
+
# DONE: in migration script of module hr
|
4
|
+
|
5
|
+
---Fields in module 'hr_contract'---
|
6
|
+
hr_contract / hr.contract.type / __last_update (datetime) : module is now 'hr' ('hr_contract')
|
7
|
+
hr_contract / hr.contract.type / _order : _order is now 'sequence' ('id')
|
8
|
+
hr_contract / hr.contract.type / _order : module is now 'hr' ('hr_contract')
|
9
|
+
hr_contract / hr.contract.type / display_name (char) : module is now 'hr' ('hr_contract')
|
10
|
+
hr_contract / hr.contract.type / name (char) : module is now 'hr' ('hr_contract')
|
11
|
+
# DONE: in migration script of module hr
|
12
|
+
|
13
|
+
---XML records in module 'hr_contract'---
|
14
|
+
NEW ir.model.access: hr_contract.access_hr_contract_hr_employee_manager
|
15
|
+
# NOTHING TO DO: New role with less privilege. No need to move user to this group in migration script. See: https://github.com/odoo/odoo/commit/9e14c112eef3b4098c0756b8da17a7253ea0c4d3
|
16
|
+
|
17
|
+
DEL ir.model.access: hr_contract.access_hr_contract_type_manager [renamed to hr module]
|
18
|
+
# DONE: in migration script of module hr
|
19
|
+
|
20
|
+
NEW ir.rule: hr_contract.ir_rule_hr_contract_employee_manager (noupdate)
|
21
|
+
NEW ir.rule: hr_contract.ir_rule_hr_contract_manager (noupdate)
|
22
|
+
NEW res.groups: hr_contract.group_hr_contract_employee_manager (noupdate)
|
23
|
+
# NOTHING TO DO
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Copyright 2023 Tecnativa - Víctor Martínez
|
2
|
+
# Copyright 2024 Tecnativa - Pedro M. Baeza
|
3
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
4
|
+
from openupgradelib import openupgrade
|
5
|
+
|
6
|
+
|
7
|
+
def _hr_expense_process(env):
|
8
|
+
"""Set amount_tax_company by ORM only when different currency."""
|
9
|
+
env.cr.execute(
|
10
|
+
"""
|
11
|
+
SELECT he.id
|
12
|
+
FROM hr_expense he
|
13
|
+
JOIN res_company rc ON rc.id = he.company_id
|
14
|
+
WHERE rc.currency_id = he.currency_id
|
15
|
+
"""
|
16
|
+
)
|
17
|
+
env["hr.expense"].browse([x[0] for x in env.cr.fetchall()])._compute_amount_tax()
|
18
|
+
|
19
|
+
|
20
|
+
def _hr_expense_sheet_process(env):
|
21
|
+
"""With the hr.expense values already defined, we can now set the missing data."""
|
22
|
+
openupgrade.logged_query(
|
23
|
+
env.cr,
|
24
|
+
"""
|
25
|
+
UPDATE hr_expense_sheet SET total_amount_taxes = (
|
26
|
+
SELECT SUM(amount_tax_company)
|
27
|
+
FROM hr_expense
|
28
|
+
WHERE sheet_id = hr_expense_sheet.id
|
29
|
+
)
|
30
|
+
""",
|
31
|
+
)
|
32
|
+
openupgrade.logged_query(
|
33
|
+
env.cr,
|
34
|
+
"""
|
35
|
+
UPDATE hr_expense_sheet
|
36
|
+
SET untaxed_amount = (total_amount - total_amount_taxes)
|
37
|
+
""",
|
38
|
+
)
|
39
|
+
|
40
|
+
|
41
|
+
def _hr_expense_analytic_tag(env):
|
42
|
+
"""If table exists and there are any record with no distribution (used just as tag),
|
43
|
+
we set the module hr_expense_analytic_tag to be installed.
|
44
|
+
"""
|
45
|
+
if openupgrade.table_exists(env.cr, "account_analytic_tag_hr_expense_rel"):
|
46
|
+
env.cr.execute(
|
47
|
+
"""SELECT COUNT(*)
|
48
|
+
FROM account_analytic_tag_hr_expense_rel rel
|
49
|
+
JOIN account_analytic_tag aat ON rel.account_analytic_tag_id = aat.id
|
50
|
+
WHERE NOT aat.active_analytic_distribution
|
51
|
+
""",
|
52
|
+
)
|
53
|
+
if env.cr.fetchone()[0]:
|
54
|
+
openupgrade.logged_query(
|
55
|
+
env.cr,
|
56
|
+
"""UPDATE ir_module_module
|
57
|
+
SET state = 'to install'
|
58
|
+
WHERE name = 'hr_expense_analytic_tag'""",
|
59
|
+
)
|
60
|
+
|
61
|
+
|
62
|
+
@openupgrade.migrate()
|
63
|
+
def migrate(env, version):
|
64
|
+
openupgrade.load_data(env.cr, "hr_expense", "16.0.2.0/noupdate_changes.xml")
|
65
|
+
_hr_expense_process(env)
|
66
|
+
_hr_expense_sheet_process(env)
|
67
|
+
_hr_expense_analytic_tag(env)
|
68
|
+
openupgrade.set_xml_ids_noupdate_value(
|
69
|
+
env,
|
70
|
+
"hr_expense",
|
71
|
+
["product_product_no_cost"],
|
72
|
+
True,
|
73
|
+
)
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# Copyright 2023 Tecnativa - Víctor Martínez
|
2
|
+
# Copyright 2024 Tecnativa - Pedro M. Baeza
|
3
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
4
|
+
from openupgradelib import openupgrade, openupgrade_160
|
5
|
+
|
6
|
+
|
7
|
+
def _hr_expense_table_new_columns(env):
|
8
|
+
"""Custom process to create new columns:
|
9
|
+
- amount_tax: (total_amount - untaxed_amount). It will be similar enough.
|
10
|
+
- amount_tax_company: the same value as amount_tax if same currency, and let
|
11
|
+
for post-migration for different currency.
|
12
|
+
"""
|
13
|
+
if not openupgrade.column_exists(env.cr, "hr_expense", "amount_tax"):
|
14
|
+
openupgrade.logged_query(
|
15
|
+
env.cr,
|
16
|
+
"ALTER TABLE hr_expense ADD COLUMN amount_tax numeric",
|
17
|
+
)
|
18
|
+
openupgrade.logged_query(
|
19
|
+
env.cr, "UPDATE hr_expense SET amount_tax = (total_amount - untaxed_amount)"
|
20
|
+
)
|
21
|
+
if not openupgrade.column_exists(env.cr, "hr_expense", "amount_tax_company"):
|
22
|
+
openupgrade.logged_query(
|
23
|
+
env.cr,
|
24
|
+
"ALTER TABLE hr_expense ADD COLUMN amount_tax_company numeric",
|
25
|
+
)
|
26
|
+
openupgrade.logged_query(
|
27
|
+
env.cr,
|
28
|
+
"""UPDATE hr_expense he
|
29
|
+
SET amount_tax_company = amount_tax
|
30
|
+
FROM res_company rc
|
31
|
+
WHERE rc.id = he.company_id AND rc.currency_id = he.currency_id
|
32
|
+
""",
|
33
|
+
)
|
34
|
+
|
35
|
+
|
36
|
+
def _hr_expense_sheet_table_new_columns(env):
|
37
|
+
"""Pre-create columns to be processed on post-migration."""
|
38
|
+
openupgrade.logged_query(
|
39
|
+
env.cr,
|
40
|
+
"""ALTER TABLE hr_expense_sheet
|
41
|
+
ADD COLUMN IF NOT EXISTS total_amount_taxes numeric""",
|
42
|
+
)
|
43
|
+
openupgrade.logged_query(
|
44
|
+
env.cr,
|
45
|
+
"""ALTER TABLE hr_expense_sheet
|
46
|
+
ADD COLUMN IF NOT EXISTS untaxed_amount numeric""",
|
47
|
+
)
|
48
|
+
|
49
|
+
|
50
|
+
def _fast_fill_analytic_distribution_on_hr_expense(env):
|
51
|
+
if not openupgrade.column_exists(env.cr, "hr_expense", "analytic_distribution"):
|
52
|
+
openupgrade.logged_query(
|
53
|
+
env.cr,
|
54
|
+
"""
|
55
|
+
ALTER TABLE hr_expense
|
56
|
+
ADD COLUMN IF NOT EXISTS analytic_distribution jsonb;
|
57
|
+
""",
|
58
|
+
)
|
59
|
+
openupgrade_160.fill_analytic_distribution(
|
60
|
+
env,
|
61
|
+
table="hr_expense",
|
62
|
+
m2m_rel="account_analytic_tag_hr_expense_rel",
|
63
|
+
m2m_column1="hr_expense_id",
|
64
|
+
)
|
65
|
+
|
66
|
+
|
67
|
+
def _convert_expense_sheet_entries_to_invoices(env):
|
68
|
+
"""From v16 onwards, account_move related to hr_expense_sheet are created with
|
69
|
+
move_type = "in_invoice" as per
|
70
|
+
https://github.com/odoo/odoo/blob/87f4667d81f7d8a40dcf225f3daf1a9e2795680d/
|
71
|
+
addons/hr_expense/models/hr_expense.py#L1297
|
72
|
+
on contrary than on v15, which was "entry".
|
73
|
+
|
74
|
+
Then, in _compute_payment_state from account.move it will check if the move_type is
|
75
|
+
"entry", putting payment_state = "not_paid" for that cases, no matter the
|
76
|
+
reconcilation:
|
77
|
+
https://github.com/odoo/odoo/blob/87f4667d81f7d8a40dcf225f3daf1a9e2795680d/
|
78
|
+
addons/account/models/account_move.py#L926
|
79
|
+
|
80
|
+
As the sheet payment state is taken from the move's payment_state, we need to
|
81
|
+
switch all the existing expenses entries to "in_invoice".
|
82
|
+
"""
|
83
|
+
openupgrade.logged_query(
|
84
|
+
env.cr,
|
85
|
+
"""
|
86
|
+
UPDATE account_move am
|
87
|
+
SET move_type = 'in_invoice'
|
88
|
+
FROM hr_expense_sheet hes
|
89
|
+
WHERE hes.account_move_id = am.id AND am.move_type <> 'in_invoice'
|
90
|
+
""",
|
91
|
+
)
|
92
|
+
|
93
|
+
|
94
|
+
_xmlid_renames = [
|
95
|
+
(
|
96
|
+
"hr_expense.product_product_zero_cost",
|
97
|
+
"hr_expense.product_product_no_cost",
|
98
|
+
),
|
99
|
+
]
|
100
|
+
|
101
|
+
|
102
|
+
@openupgrade.migrate()
|
103
|
+
def migrate(env, version):
|
104
|
+
_hr_expense_table_new_columns(env)
|
105
|
+
_hr_expense_sheet_table_new_columns(env)
|
106
|
+
_fast_fill_analytic_distribution_on_hr_expense(env)
|
107
|
+
_convert_expense_sheet_entries_to_invoices(env)
|
108
|
+
openupgrade.rename_xmlids(env.cr, _xmlid_renames)
|
@@ -0,0 +1,71 @@
|
|
1
|
+
---Models in module 'hr_expense'---
|
2
|
+
new model hr.expense.split [transient]
|
3
|
+
new model hr.expense.split.wizard [transient]
|
4
|
+
# NOTHING TO DO
|
5
|
+
|
6
|
+
---Fields in module 'hr_expense'---
|
7
|
+
|
8
|
+
hr_expense / hr.expense / amount_tax (float) : NEW isfunction: function, stored
|
9
|
+
# DONE: pre-migration: set value
|
10
|
+
|
11
|
+
hr_expense / hr.expense / amount_tax_company (float) : NEW isfunction: function, stored
|
12
|
+
# DONE: pre-migration: pre-create column for same currency
|
13
|
+
# DONE: post-migration: set value by ORM for different currency
|
14
|
+
|
15
|
+
hr_expense / hr.expense / analytic_account_id (many2one): DEL relation: account.analytic.account
|
16
|
+
hr_expense / hr.expense / analytic_distribution_stored_char (char): NEW isfunction: function, stored
|
17
|
+
# DONE: pre-migration: fast fill analytic_distribution
|
18
|
+
|
19
|
+
hr_expense / hr.expense / analytic_tag_ids (many2many) : DEL relation: account.analytic.tag
|
20
|
+
# DONE: post-migration: if there are tags with no distribution, we plan OCA module hr_expense_analytic_tag to be installed
|
21
|
+
|
22
|
+
hr_expense / hr.expense.sheet / total_amount_taxes (float) : NEW isfunction: function, stored
|
23
|
+
hr_expense / hr.expense.sheet / untaxed_amount (float) : NEW isfunction: function, stored
|
24
|
+
# DONE: pre-migration: pre-create columns
|
25
|
+
# DONE: post-migration: set values by SQL
|
26
|
+
|
27
|
+
hr_expense / account.analytic.applicability / business_domain (False) : NEW selection_keys: ['bill', 'expense', 'general', 'invoice'], mode: modify
|
28
|
+
hr_expense / account.move / expense_sheet_id (one2many) : NEW relation: hr.expense.sheet
|
29
|
+
hr_expense / hr.expense / name (char) : not a function anymore
|
30
|
+
hr_expense / hr.expense / unit_amount (float) : not a function anymore
|
31
|
+
hr_expense / hr.expense.sheet / payment_state (selection) : selection_keys is now 'function' ('['in_payment', 'invoicing_legacy', 'not_paid', 'paid', 'partial', 'reversed']')
|
32
|
+
# NOTHING TO DO
|
33
|
+
|
34
|
+
hr_expense / res.company / company_expense_journal_id (many2one): NEW relation: account.journal
|
35
|
+
hr_expense / res.company / expense_journal_id (many2one) : NEW relation: account.journal
|
36
|
+
# NOTHING TO DO: Preference values for being set by company, but if none selected, the previous default ones are used.
|
37
|
+
|
38
|
+
---XML records in module 'hr_expense'---
|
39
|
+
DEL ir.actions.act_window: hr_expense.action_hr_expense_sheet_all_to_approve
|
40
|
+
DEL ir.actions.act_window: hr_expense.action_hr_expense_sheet_all_to_pay
|
41
|
+
DEL ir.actions.act_window: hr_expense.action_hr_expense_sheet_all_to_post
|
42
|
+
DEL ir.actions.act_window: hr_expense.hr_expense_actions_my_unsubmitted
|
43
|
+
DEL ir.actions.act_window.view: hr_expense.hr_expense_actions_all_kanban
|
44
|
+
DEL ir.actions.act_window.view: hr_expense.hr_expense_actions_my_unsubmitted_kanban
|
45
|
+
DEL ir.actions.act_window.view: hr_expense.hr_expense_actions_my_unsubmitted_tree
|
46
|
+
NEW ir.model.access: hr_expense.access_hr_expense_split_manager
|
47
|
+
NEW ir.model.access: hr_expense.access_hr_expense_split_wizard_manager
|
48
|
+
NEW ir.rule: hr_expense.ir_rule_hr_expense_sheet_employee_not_draft (noupdate)
|
49
|
+
DEL ir.ui.menu: hr_expense.menu_hr_expense_my_expenses_to_submit
|
50
|
+
DEL ir.ui.menu: hr_expense.menu_hr_expense_sheet_all
|
51
|
+
DEL ir.ui.menu: hr_expense.menu_hr_expense_sheet_all_to_approve
|
52
|
+
DEL ir.ui.menu: hr_expense.menu_hr_expense_sheet_all_to_pay
|
53
|
+
DEL ir.ui.menu: hr_expense.menu_hr_expense_sheet_all_to_post
|
54
|
+
NEW ir.ui.view: hr_expense.hr_expense_sheet_view_search_with_panel
|
55
|
+
NEW ir.ui.view: hr_expense.hr_expense_split
|
56
|
+
NEW ir.ui.view: hr_expense.product_product_expense_categories_tree_view
|
57
|
+
NEW ir.ui.view: hr_expense.view_move_form_inherit_expense
|
58
|
+
NEW ir.ui.view: hr_expense.view_product_hr_expense_form
|
59
|
+
DEL ir.ui.view: hr_expense.view_hr_expense_sheet_dashboard_tree
|
60
|
+
NEW product.product: hr_expense.expense_product_communication (noupdate)
|
61
|
+
NEW product.product: hr_expense.expense_product_gift (noupdate)
|
62
|
+
NEW product.product: hr_expense.expense_product_meal (noupdate)
|
63
|
+
NEW product.product: hr_expense.expense_product_mileage (noupdate)
|
64
|
+
NEW product.product: hr_expense.expense_product_travel_accommodation (noupdate)
|
65
|
+
DEL product.product: hr_expense.product_product_fixed_cost (noupdate)
|
66
|
+
# NOTHING TO DO
|
67
|
+
|
68
|
+
DEL product.product: hr_expense.product_product_zero_cost
|
69
|
+
NEW product.product: hr_expense.product_product_no_cost (noupdate)
|
70
|
+
# DONE: pre-migration: renamed product_product_zero_cost -> product_product_no_cost
|
71
|
+
# DONE: post-migration: switch noupdate after updating new data
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Copyright 2023 Coop IT Easy (https://coopiteasy.be)
|
2
|
+
# Copyright 2024 Tecnativa - Pedro M. Baeza
|
3
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
4
|
+
|
5
|
+
from openupgradelib import openupgrade
|
6
|
+
|
7
|
+
|
8
|
+
def _set_allocation_validation_type(env):
|
9
|
+
"""Convert the previous `set` value to `officer` as it's mostly the same. The only
|
10
|
+
difference is that previously if set is selected, the responsible could be empty,
|
11
|
+
and thus the own user was selected as approver - which was incorrect -.
|
12
|
+
"""
|
13
|
+
openupgrade.logged_query(
|
14
|
+
env.cr,
|
15
|
+
"""UPDATE hr_leave_type
|
16
|
+
SET allocation_validation_type = 'officer'
|
17
|
+
WHERE allocation_validation_type = 'set'
|
18
|
+
""",
|
19
|
+
)
|
20
|
+
|
21
|
+
|
22
|
+
@openupgrade.migrate()
|
23
|
+
def migrate(env, version):
|
24
|
+
_set_allocation_validation_type(env)
|
25
|
+
openupgrade.load_data(env.cr, "hr_holidays", "16.0.1.5/noupdate_changes.xml")
|
@@ -0,0 +1,44 @@
|
|
1
|
+
---Models in module 'hr_holidays'---
|
2
|
+
new model hr.holidays.cancel.leave [transient]
|
3
|
+
# NOTHING TO DO: transient model
|
4
|
+
|
5
|
+
new model hr.leave.stress.day
|
6
|
+
# NOTHING TO DO: new feature
|
7
|
+
|
8
|
+
---Fields in module 'hr_holidays'---
|
9
|
+
hr_holidays / hr.leave / active (boolean) : NEW
|
10
|
+
# NOTHING TO DO: default value is True.
|
11
|
+
|
12
|
+
hr_holidays / hr.leave / request_unit_custom (boolean) : DEL
|
13
|
+
# NOTHING TO DO: not needed anymore. See : https://github.com/odoo/odoo/commit/81c8a0564d54c981e65a6ed3b2c70dd792d59a46
|
14
|
+
|
15
|
+
hr_holidays / hr.leave.accrual.level / postpone_max_days (integer) : NEW
|
16
|
+
hr_holidays / hr.leave.stress.day / color (integer) : NEW hasdefault: default
|
17
|
+
hr_holidays / hr.leave.stress.day / company_id (many2one) : NEW relation: res.company, required, hasdefault: default
|
18
|
+
hr_holidays / hr.leave.stress.day / department_ids (many2many) : NEW relation: hr.department
|
19
|
+
hr_holidays / hr.leave.stress.day / end_date (date) : NEW required
|
20
|
+
hr_holidays / hr.leave.stress.day / name (char) : NEW required
|
21
|
+
hr_holidays / hr.leave.stress.day / resource_calendar_id (many2one): NEW relation: resource.calendar
|
22
|
+
hr_holidays / hr.leave.stress.day / start_date (date) : NEW required
|
23
|
+
# NOTHING TO DO: new feature
|
24
|
+
|
25
|
+
hr_holidays / hr.leave.type / allocation_validation_type (selection): selection_keys is now '['no', 'officer']' ('['no', 'officer', 'set']')
|
26
|
+
# DONE: post-migration: convert previous `set` values to `officer`. They acted the same except the responsible_id is not set. In that case, the user was selected as approver, which was incorrect.
|
27
|
+
|
28
|
+
---XML records in module 'hr_holidays'---
|
29
|
+
NEW ir.actions.act_window: hr_holidays.hr_leave_stress_day_action
|
30
|
+
DEL ir.actions.act_window.view: hr_holidays.hr_leave_action_my_view_form
|
31
|
+
DEL ir.actions.act_window.view: hr_holidays.hr_leave_action_my_view_tree
|
32
|
+
NEW ir.model.access: hr_holidays.access_hr_holidays_cancel_leave
|
33
|
+
NEW ir.model.access: hr_holidays.access_hr_leave_stress_day_manager
|
34
|
+
NEW ir.model.access: hr_holidays.access_hr_leave_stress_day_user
|
35
|
+
NEW ir.model.constraint: hr_holidays.constraint_hr_leave_stress_day_date_from_after_day_to
|
36
|
+
NEW ir.rule: hr_holidays.hr_leave_stress_day_rule_multi_company (noupdate)
|
37
|
+
NEW ir.ui.menu: hr_holidays.hr_holidays_stress_day_menu_configuration
|
38
|
+
NEW ir.ui.view: hr_holidays.hr_holidays_cancel_leave_form
|
39
|
+
NEW ir.ui.view: hr_holidays.hr_leave_report_view_form
|
40
|
+
NEW ir.ui.view: hr_holidays.hr_leave_stress_day_view_form
|
41
|
+
NEW ir.ui.view: hr_holidays.hr_leave_stress_day_view_list
|
42
|
+
NEW ir.ui.view: hr_holidays.hr_leave_stress_day_view_search
|
43
|
+
NEW ir.ui.view: hr_holidays.hr_leave_view_kanban_approve_department
|
44
|
+
# NOTHING TO DO: managed by the ORM
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---Models in module 'hr_hourly_cost'---
|
2
|
+
---Fields in module 'hr_hourly_cost'---
|
3
|
+
hr_hourly_cost / hr.employee / currency_id (many2one) : previously in module hr_timesheet
|
4
|
+
|
5
|
+
# NOTHING TO DO
|
6
|
+
|
7
|
+
hr_hourly_cost / hr.employee / hourly_cost (float) : NEW hasdefault: default
|
8
|
+
|
9
|
+
# NOTHING TO DO: This field renamed from timesheet_cost and it handled in hr_timsheet (because this module is split from hr_timsheet
|
10
|
+
to a new module so that can't put migration script in itself).
|
11
|
+
|
12
|
+
---XML records in module 'hr_hourly_cost'---
|
13
|
+
NEW ir.ui.view: hr_hourly_cost.view_employee_form
|
14
|
+
|
15
|
+
#NOTHING TO DO
|
@@ -0,0 +1,76 @@
|
|
1
|
+
from openupgradelib import openupgrade
|
2
|
+
|
3
|
+
|
4
|
+
def update_rename_field(env):
|
5
|
+
openupgrade.logged_query(
|
6
|
+
env.cr,
|
7
|
+
"""
|
8
|
+
ALTER TABLE hr_employee
|
9
|
+
ADD COLUMN IF NOT EXISTS hourly_cost numeric
|
10
|
+
""",
|
11
|
+
)
|
12
|
+
|
13
|
+
openupgrade.logged_query(
|
14
|
+
env.cr,
|
15
|
+
"""
|
16
|
+
UPDATE hr_employee
|
17
|
+
SET hourly_cost = timesheet_cost
|
18
|
+
""",
|
19
|
+
)
|
20
|
+
|
21
|
+
|
22
|
+
def create_ancestor_task_id(env):
|
23
|
+
openupgrade.logged_query(
|
24
|
+
env.cr,
|
25
|
+
"""
|
26
|
+
ALTER TABLE account_analytic_line
|
27
|
+
ADD COLUMN IF NOT EXISTS ancestor_task_id integer
|
28
|
+
""",
|
29
|
+
)
|
30
|
+
|
31
|
+
openupgrade.logged_query(
|
32
|
+
env.cr,
|
33
|
+
"""
|
34
|
+
UPDATE account_analytic_line AS aal
|
35
|
+
SET ancestor_task_id = pt.ancestor_id
|
36
|
+
FROM project_task AS pt
|
37
|
+
WHERE pt.id = aal.task_id
|
38
|
+
""",
|
39
|
+
)
|
40
|
+
|
41
|
+
|
42
|
+
def create_manager_id(env):
|
43
|
+
openupgrade.logged_query(
|
44
|
+
env.cr,
|
45
|
+
"""
|
46
|
+
ALTER TABLE account_analytic_line
|
47
|
+
ADD COLUMN IF NOT EXISTS manager_id integer
|
48
|
+
""",
|
49
|
+
)
|
50
|
+
|
51
|
+
openupgrade.logged_query(
|
52
|
+
env.cr,
|
53
|
+
"""
|
54
|
+
UPDATE account_analytic_line AS aal
|
55
|
+
SET manager_id = he.parent_id
|
56
|
+
FROM hr_employee AS he
|
57
|
+
WHERE he.id = aal.employee_id
|
58
|
+
""",
|
59
|
+
)
|
60
|
+
|
61
|
+
|
62
|
+
def delete_constraint_project_task_create_timesheet_time_positive(env):
|
63
|
+
openupgrade.delete_sql_constraint_safely(
|
64
|
+
env,
|
65
|
+
"hr_timesheet",
|
66
|
+
"project_task",
|
67
|
+
"create_timesheet_time_positive",
|
68
|
+
)
|
69
|
+
|
70
|
+
|
71
|
+
@openupgrade.migrate()
|
72
|
+
def migrate(env, version):
|
73
|
+
update_rename_field(env)
|
74
|
+
create_ancestor_task_id(env)
|
75
|
+
create_manager_id(env)
|
76
|
+
delete_constraint_project_task_create_timesheet_time_positive(env)
|
@@ -0,0 +1,76 @@
|
|
1
|
+
---Models in module 'hr_timesheet'---
|
2
|
+
obsolete model project.task.create.timesheet [transient]
|
3
|
+
new model timesheets.analysis.report [sql_view]
|
4
|
+
|
5
|
+
# NOTHING TO DO
|
6
|
+
|
7
|
+
---Fields in module 'hr_timesheet'---
|
8
|
+
hr_timesheet / account.analytic.line / ancestor_task_id (many2one) : NEW relation: project.task, isrelated: related, stored
|
9
|
+
hr_timesheet / account.analytic.line / manager_id (many2one) : NEW relation: hr.employee, isrelated: related, stored
|
10
|
+
|
11
|
+
# DONE: create column and load data in pre-migration
|
12
|
+
|
13
|
+
hr_timesheet / account.analytic.line / partner_id (False) : module is now 'account' ('hr_timesheet')
|
14
|
+
hr_timesheet / hr.employee / currency_id (many2one) : module is now 'hr_hourly_cost' ('hr_timesheet')
|
15
|
+
|
16
|
+
# NOTHING TO DO
|
17
|
+
|
18
|
+
hr_timesheet / hr.employee / timesheet_cost (float) : DEL
|
19
|
+
|
20
|
+
# DONE: changed to hourly_cost field in pre-migration
|
21
|
+
|
22
|
+
hr_timesheet / project.project / allocated_hours (float) : NEW
|
23
|
+
|
24
|
+
# NOTHING TO DO: remove in master
|
25
|
+
|
26
|
+
hr_timesheet / project.project / timesheet_count (boolean) : type is now 'integer' ('boolean')
|
27
|
+
|
28
|
+
# NOTHING TO DO: field store = False
|
29
|
+
|
30
|
+
---XML records in module 'hr_timesheet'---
|
31
|
+
NEW ir.actions.act_window.view: hr_timesheet.act_hr_timesheet_line_by_project_view_form
|
32
|
+
NEW ir.actions.act_window.view: hr_timesheet.act_hr_timesheet_line_by_project_view_graph
|
33
|
+
NEW ir.actions.act_window.view: hr_timesheet.act_hr_timesheet_line_by_project_view_kanban
|
34
|
+
NEW ir.actions.act_window.view: hr_timesheet.act_hr_timesheet_line_by_project_view_pivot
|
35
|
+
NEW ir.actions.act_window.view: hr_timesheet.act_hr_timesheet_line_by_project_view_tree
|
36
|
+
DEL ir.actions.act_window.view: hr_timesheet.act_hr_timesheet_report_form
|
37
|
+
DEL ir.actions.act_window.view: hr_timesheet.act_hr_timesheet_report_kanban
|
38
|
+
DEL ir.actions.act_window.view: hr_timesheet.act_hr_timesheet_report_tree
|
39
|
+
DEL ir.actions.act_window.view: hr_timesheet.timesheet_action_view_report_by_project_form
|
40
|
+
DEL ir.actions.act_window.view: hr_timesheet.timesheet_action_view_report_by_project_kanban
|
41
|
+
DEL ir.actions.act_window.view: hr_timesheet.timesheet_action_view_report_by_project_tree
|
42
|
+
DEL ir.actions.act_window.view: hr_timesheet.timesheet_action_view_report_by_task_form
|
43
|
+
DEL ir.actions.act_window.view: hr_timesheet.timesheet_action_view_report_by_task_kanban
|
44
|
+
DEL ir.actions.act_window.view: hr_timesheet.timesheet_action_view_report_by_task_tree
|
45
|
+
NEW ir.actions.report: hr_timesheet.timesheet_report_task_timesheets
|
46
|
+
NEW ir.model.access: hr_timesheet.access_timesheets_analysis_report_manager
|
47
|
+
NEW ir.model.access: hr_timesheet.access_timesheets_analysis_report_user
|
48
|
+
DEL ir.model.access: hr_timesheet.access_project_task_create_timesheet
|
49
|
+
|
50
|
+
# NOTHING TO DO
|
51
|
+
|
52
|
+
DEL ir.model.constraint: hr_timesheet.constraint_project_task_create_timesheet_time_positive
|
53
|
+
|
54
|
+
# DONE : delete safely in pre-migration
|
55
|
+
|
56
|
+
NEW ir.rule: hr_timesheet.timesheets_analysis_report_comp_rule (noupdate)
|
57
|
+
NEW ir.ui.view: hr_timesheet.hr_timesheet_report_search
|
58
|
+
NEW ir.ui.view: hr_timesheet.project_project_view_tree_inherit_sale_project
|
59
|
+
NEW ir.ui.view: hr_timesheet.project_sharing_project_task_view_search_inherit_timesheet
|
60
|
+
NEW ir.ui.view: hr_timesheet.project_update_view_search_inherit
|
61
|
+
NEW ir.ui.view: hr_timesheet.rating_rating_view_search_project_inherited
|
62
|
+
NEW ir.ui.view: hr_timesheet.report_timesheet_task
|
63
|
+
NEW ir.ui.view: hr_timesheet.timesheet_project_task_page
|
64
|
+
NEW ir.ui.view: hr_timesheet.timesheets_analysis_report_graph_employee
|
65
|
+
NEW ir.ui.view: hr_timesheet.timesheets_analysis_report_graph_project
|
66
|
+
NEW ir.ui.view: hr_timesheet.timesheets_analysis_report_graph_task
|
67
|
+
NEW ir.ui.view: hr_timesheet.timesheets_analysis_report_pivot_employee
|
68
|
+
NEW ir.ui.view: hr_timesheet.timesheets_analysis_report_pivot_project
|
69
|
+
NEW ir.ui.view: hr_timesheet.timesheets_analysis_report_pivot_task
|
70
|
+
NEW ir.ui.view: hr_timesheet.view_hr_timesheet_line_graph_by_employee
|
71
|
+
NEW ir.ui.view: hr_timesheet.view_project_project_filter_inherit_timesheet
|
72
|
+
NEW ir.ui.view: hr_timesheet.view_task_search_form_hr_extended
|
73
|
+
DEL ir.ui.view: hr_timesheet.project_sharing_inherit_project_task_view_search
|
74
|
+
DEL ir.ui.view: hr_timesheet.project_task_create_timesheet_view_form
|
75
|
+
|
76
|
+
# NOTHING TO DO
|
@@ -5,3 +5,4 @@ NEW ir.actions.act_window.view: hr_timesheet_attendance.action_hr_timesheet_atte
|
|
5
5
|
NEW ir.rule: hr_timesheet_attendance.hr_timesheet_attendance_report_rule_approver (noupdate)
|
6
6
|
NEW ir.rule: hr_timesheet_attendance.hr_timesheet_attendance_report_rule_manager (noupdate)
|
7
7
|
NEW ir.rule: hr_timesheet_attendance.hr_timesheet_attendance_report_rule_user (noupdate)
|
8
|
+
# NOTHING TO DO: Handled by ORM
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Copyright 2023 Trần Trường Sơn
|
2
|
+
# Copyright 2023 Rémy Taymans
|
3
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
4
|
+
|
5
|
+
from openupgradelib import openupgrade
|
6
|
+
|
7
|
+
_translations_to_delete = [
|
8
|
+
"mail_template_data_project_task",
|
9
|
+
"project_manager_all_project_tasks_rule",
|
10
|
+
"project_message_user_assigned",
|
11
|
+
"rating_project_request_email_template",
|
12
|
+
]
|
13
|
+
|
14
|
+
|
15
|
+
@openupgrade.migrate()
|
16
|
+
def migrate(env, version):
|
17
|
+
openupgrade.load_data(env.cr, "project", "16.0.1.2/noupdate_changes.xml")
|
18
|
+
openupgrade.delete_record_translations(env.cr, "project", _translations_to_delete)
|
@@ -0,0 +1,170 @@
|
|
1
|
+
# Copyright 2023 Trần Trường Sơn
|
2
|
+
# Copyright 2023 Rémy Taymans
|
3
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
4
|
+
|
5
|
+
from openupgradelib import openupgrade
|
6
|
+
|
7
|
+
_new_fields = [
|
8
|
+
(
|
9
|
+
"is_closed", # Field name
|
10
|
+
"project.task", # Model name
|
11
|
+
"project_task", # Table name
|
12
|
+
"boolean", # Odoo Field type (in lower case)
|
13
|
+
False, # [Optional] SQL type (if custom fields)
|
14
|
+
"project", # Module name
|
15
|
+
False, # [Optional] Default value
|
16
|
+
),
|
17
|
+
(
|
18
|
+
"ancestor_id", # Field name
|
19
|
+
"project.task", # Model name
|
20
|
+
"project_task", # Table name
|
21
|
+
"many2one", # Odoo Field type (in lower case)
|
22
|
+
False, # [Optional] SQL type (if custom fields)
|
23
|
+
"project", # Module name
|
24
|
+
False, # [Optional] Default value
|
25
|
+
),
|
26
|
+
(
|
27
|
+
"is_analytic_account_id_changed", # Field name
|
28
|
+
"project.task", # Model name
|
29
|
+
"project_task", # Table name
|
30
|
+
"boolean", # Odoo Field type (in lower case)
|
31
|
+
False, # [Optional] SQL type (if custom fields)
|
32
|
+
"project", # Module name
|
33
|
+
False, # [Optional] Default value
|
34
|
+
),
|
35
|
+
(
|
36
|
+
"allow_milestones", # Field name
|
37
|
+
"project.project", # Model name
|
38
|
+
"project_project", # Table name
|
39
|
+
"boolean", # Odoo Field type (in lower case)
|
40
|
+
False, # [Optional] SQL type (if custom fields)
|
41
|
+
"project", # Module name
|
42
|
+
False, # [Optional] Default value
|
43
|
+
),
|
44
|
+
]
|
45
|
+
|
46
|
+
|
47
|
+
def _set_task_type_fold_if_is_closed(env):
|
48
|
+
"""Field `is_closed` on project.task.type is removed. The field
|
49
|
+
`fold` can be used instead.
|
50
|
+
"""
|
51
|
+
openupgrade.logged_query(
|
52
|
+
env.cr,
|
53
|
+
"""
|
54
|
+
UPDATE project_task_type
|
55
|
+
SET fold = TRUE
|
56
|
+
WHERE is_closed = TRUE;
|
57
|
+
""",
|
58
|
+
)
|
59
|
+
|
60
|
+
|
61
|
+
def _fill_project_task_is_closed(env):
|
62
|
+
"""Field `is_closed` on project.task is now a stored field."""
|
63
|
+
openupgrade.logged_query(
|
64
|
+
env.cr,
|
65
|
+
"""
|
66
|
+
UPDATE project_task task
|
67
|
+
SET is_closed = stage.fold
|
68
|
+
FROM project_task_type stage
|
69
|
+
WHERE task.stage_id = stage.id;
|
70
|
+
""",
|
71
|
+
)
|
72
|
+
|
73
|
+
|
74
|
+
def _fill_project_last_update_status_if_null(env):
|
75
|
+
"""In some cases, the user can go to the DB and reset the
|
76
|
+
`last_update_status` field to NULL. In version 16.0 it is necessary
|
77
|
+
to reset it to `to_define` because it has a `required` attribute.
|
78
|
+
"""
|
79
|
+
openupgrade.logged_query(
|
80
|
+
env.cr,
|
81
|
+
"""
|
82
|
+
UPDATE project_project project
|
83
|
+
SET last_update_status = 'to_define'
|
84
|
+
WHERE last_update_status IS NULL;
|
85
|
+
""",
|
86
|
+
)
|
87
|
+
|
88
|
+
|
89
|
+
def _compute_project_task_ancestor_id(env):
|
90
|
+
"""
|
91
|
+
New column at version 16.0. valid as the ancestor of the current task
|
92
|
+
"""
|
93
|
+
openupgrade.logged_query(
|
94
|
+
env.cr,
|
95
|
+
"""
|
96
|
+
WITH RECURSIVE task_ancestors AS (
|
97
|
+
SELECT id, parent_id, id AS ancestor_id
|
98
|
+
FROM project_task
|
99
|
+
WHERE parent_id IS NULL
|
100
|
+
|
101
|
+
UNION ALL
|
102
|
+
|
103
|
+
SELECT pt.id, pt.parent_id, ta.ancestor_id
|
104
|
+
FROM project_task pt
|
105
|
+
INNER JOIN task_ancestors ta ON pt.parent_id = ta.id
|
106
|
+
)
|
107
|
+
UPDATE project_task pt
|
108
|
+
SET ancestor_id = ta.ancestor_id
|
109
|
+
FROM task_ancestors ta
|
110
|
+
WHERE pt.id = ta.id;
|
111
|
+
|
112
|
+
UPDATE project_task pt
|
113
|
+
SET ancestor_id = NULL
|
114
|
+
WHERE id = ancestor_id;
|
115
|
+
""",
|
116
|
+
)
|
117
|
+
|
118
|
+
|
119
|
+
def _compute_project_task_is_analytic_account_id_changed(env):
|
120
|
+
"""
|
121
|
+
`is_analytic_account_id_changed` is a new field at version 16.0.
|
122
|
+
It has a value of False if you have the same admin account as the project,
|
123
|
+
otherwise it will have a value of True
|
124
|
+
"""
|
125
|
+
openupgrade.logged_query(
|
126
|
+
env.cr,
|
127
|
+
"""
|
128
|
+
UPDATE project_task task
|
129
|
+
SET is_analytic_account_id_changed = CASE
|
130
|
+
WHEN project_id IS NOT NULL
|
131
|
+
AND task.project_id = project.id
|
132
|
+
AND task.analytic_account_id != project.analytic_account_id
|
133
|
+
THEN TRUE
|
134
|
+
ELSE FALSE
|
135
|
+
END
|
136
|
+
FROM project_project as project;
|
137
|
+
""",
|
138
|
+
)
|
139
|
+
|
140
|
+
|
141
|
+
def _fill_project_allow_milestones(env):
|
142
|
+
"""New field allow_milestones on project.project depends on the
|
143
|
+
value of the configuration (based on a group)
|
144
|
+
project.group_project_milestone.
|
145
|
+
Previously, milestone where visible by default on a project. To keep
|
146
|
+
this behaviour with existing project, allow_milestones need to be
|
147
|
+
set to True.
|
148
|
+
"""
|
149
|
+
openupgrade.logged_query(
|
150
|
+
env.cr,
|
151
|
+
"""
|
152
|
+
UPDATE project_project project
|
153
|
+
SET allow_milestones = true
|
154
|
+
""",
|
155
|
+
)
|
156
|
+
|
157
|
+
|
158
|
+
@openupgrade.migrate()
|
159
|
+
def migrate(env, version):
|
160
|
+
openupgrade.add_fields(env, _new_fields)
|
161
|
+
_set_task_type_fold_if_is_closed(env)
|
162
|
+
_fill_project_task_is_closed(env)
|
163
|
+
_fill_project_last_update_status_if_null(env)
|
164
|
+
_compute_project_task_ancestor_id(env)
|
165
|
+
_compute_project_task_is_analytic_account_id_changed(env)
|
166
|
+
|
167
|
+
# Remove SQL view project_task_burndown_chart_report not used anymore in Odoo v16.0
|
168
|
+
openupgrade.logged_query(
|
169
|
+
env.cr, "DROP VIEW IF EXISTS project_task_burndown_chart_report CASCADE"
|
170
|
+
)
|
@@ -0,0 +1 @@
|
|
1
|
+
from . import test_project_migration
|
@@ -0,0 +1,13 @@
|
|
1
|
+
from odoo.tests import TransactionCase
|
2
|
+
|
3
|
+
|
4
|
+
class TestProjectMigration(TransactionCase):
|
5
|
+
def test_project_allow_milestones(self):
|
6
|
+
"""Test that the allow_milestones field on a project is correctly set.
|
7
|
+
On a database with demo data, project.group_project_milestone
|
8
|
+
option is set to true. So allow_milestones should be true on
|
9
|
+
projects.
|
10
|
+
"""
|
11
|
+
projects = self.env["project.project"].search([])
|
12
|
+
for project in projects:
|
13
|
+
self.assertTrue(project.allow_milestones)
|
@@ -0,0 +1,101 @@
|
|
1
|
+
---Models in module 'project'---
|
2
|
+
obsolete model project.delete.wizard [transient]
|
3
|
+
# NOTHING TO DO: wizard removed
|
4
|
+
|
5
|
+
---Fields in module 'project'---
|
6
|
+
project / account.analytic.tag / task_ids (many2many) : DEL relation: project.task
|
7
|
+
project / project.task / analytic_tag_ids (many2many) : DEL relation: account.analytic.tag
|
8
|
+
# NOTHING TO DO: lost feature
|
9
|
+
|
10
|
+
project / project.milestone / task_ids (one2many) : NEW relation: project.task
|
11
|
+
project / project.project / task_properties_definition (properties_definition): NEW
|
12
|
+
project / project.task / task_properties (properties) : NEW hasdefault: compute
|
13
|
+
project / res.company / analytic_plan_id (many2one) : NEW relation: account.analytic.plan, hasdefault: compute
|
14
|
+
# NOTHING TO DO: new features
|
15
|
+
|
16
|
+
project / project.tags / project_ids (many2many) : NEW relation: project.project
|
17
|
+
project / project.tags / task_ids (many2many) : NEW relation: project.task
|
18
|
+
# NOTHING TO DO: reverse relation that already exists on project.project and project.task
|
19
|
+
|
20
|
+
pad_project / project.project / description_pad (char) : DEL
|
21
|
+
pad_project / project.project / use_pads (boolean) : DEL
|
22
|
+
pad_project / project.task / description_pad (char) : DEL
|
23
|
+
# TODO: Module pad_project has been removed
|
24
|
+
|
25
|
+
project / project.project / allow_milestones (boolean) : NEW hasdefault: default
|
26
|
+
# DONE: pre-migration: create field and set default value.
|
27
|
+
|
28
|
+
project / project.project / last_update_status (selection): not a function anymore
|
29
|
+
project / project.project / last_update_status (selection): now required
|
30
|
+
project / project.project / last_update_status (selection): selection_keys is now '['at_risk', 'off_track', 'on_hold', 'on_track', 'to_define']' ('['at_risk', 'off_track', 'on_hold', 'on_track']')
|
31
|
+
# DONE: pre-migration: Set value of last_update_status to 'to_define' where field is empty
|
32
|
+
|
33
|
+
project / project.task.type / is_closed (boolean) : DEL
|
34
|
+
# DONE: pre-migration: Field removed, field 'fold' should be used instead. Moving values from 'is_closed' to 'fold'.
|
35
|
+
|
36
|
+
project / project.task / is_closed (boolean) : is now stored
|
37
|
+
# DONE: pre-migration: Add new column & set value for it
|
38
|
+
|
39
|
+
project / project.task / ancestor_id (many2one) : NEW relation: project.task, isfunction: function, stored
|
40
|
+
project / project.task / is_analytic_account_id_changed (boolean): NEW isfunction: function, stored
|
41
|
+
# DONE: pre-migration: pre-compute value for new computed fields
|
42
|
+
|
43
|
+
project / project.task / is_blocked (boolean) : NEW isfunction: function, stored
|
44
|
+
project / project.task / milestone_id (many2one) : NEW relation: project.milestone, hasdefault: compute
|
45
|
+
# TODO (speed improvement): pre-migration: pre-compute value for new computed fields
|
46
|
+
|
47
|
+
|
48
|
+
---XML records in module 'project'---
|
49
|
+
NEW digest.tip: project.digest_tip_project_1
|
50
|
+
NEW ir.actions.act_window: project.action_send_mail_project_project
|
51
|
+
NEW ir.actions.act_window: project.action_send_mail_project_task
|
52
|
+
NEW ir.actions.act_window: project.action_view_task_from_milestone
|
53
|
+
NEW ir.actions.act_window: project.open_view_project_all_config_group_stage
|
54
|
+
NEW ir.actions.act_window: project.project_sharing_project_task_action_sub_task
|
55
|
+
NEW ir.actions.act_window: project.project_task_action_sub_task
|
56
|
+
DEL ir.actions.act_window: project.project_milestone_all
|
57
|
+
NEW ir.actions.act_window.view: project.open_view_all_task_list_calendar
|
58
|
+
NEW ir.actions.act_window.view: project.open_view_all_task_list_kanban
|
59
|
+
NEW ir.actions.act_window.view: project.open_view_all_task_list_tree
|
60
|
+
NEW ir.actions.act_window.view: project.open_view_project_all_config_group_stage_kanban_action_view
|
61
|
+
NEW ir.actions.act_window.view: project.open_view_project_all_config_group_stage_tree_action_view
|
62
|
+
NEW ir.actions.act_window.view: project.project_all_task_activity_action_view
|
63
|
+
NEW ir.actions.act_window.view: project.project_all_task_calendar_action_view
|
64
|
+
NEW ir.actions.act_window.view: project.project_all_task_graph_action_view
|
65
|
+
NEW ir.actions.act_window.view: project.project_all_task_pivot_action_view
|
66
|
+
NEW ir.actions.act_window.view: project.project_sharing_subtasks_form_action_view
|
67
|
+
NEW ir.actions.act_window.view: project.project_sharing_subtasks_kanban_action_view
|
68
|
+
NEW ir.actions.act_window.view: project.project_sharing_subtasks_tree_action_view
|
69
|
+
NEW ir.actions.act_window.view: project.project_task_form_action_view
|
70
|
+
NEW ir.actions.act_window.view: project.project_task_kanban_action_view
|
71
|
+
NEW ir.actions.act_window.view: project.project_task_tree_action_view
|
72
|
+
NEW ir.actions.act_window.view: project.rating_rating_action_task_kanban
|
73
|
+
NEW ir.actions.act_window.view: project.rating_rating_action_view_project_rating_kanban
|
74
|
+
DEL ir.actions.server: project.unlink_project_action
|
75
|
+
NEW ir.model.access: project.access_project_task_burndown_chart_report_user
|
76
|
+
NEW ir.model.access: project.access_report_project_task_user_project_user
|
77
|
+
DEL ir.model.access: project.access_project_delete_wizard
|
78
|
+
NEW ir.rule: project.burndown_chart_project_manager_rule (noupdate)
|
79
|
+
NEW ir.rule: project.burndown_chart_project_user_rule (noupdate)
|
80
|
+
NEW ir.rule: project.report_project_task_manager_rule (noupdate)
|
81
|
+
NEW ir.rule: project.report_project_task_user_rule (noupdate)
|
82
|
+
NEW ir.ui.menu: project.menu_projects_config_group_stage
|
83
|
+
NEW ir.ui.view: project.rating_rating_project_view_kanban
|
84
|
+
NEW ir.ui.view: project.task_type_tree_inherited
|
85
|
+
NEW ir.ui.view: project.view_project_calendar
|
86
|
+
NEW ir.ui.view: project.view_project_config_kanban
|
87
|
+
NEW ir.ui.view: project.view_project_task_pivot_inherit
|
88
|
+
NEW ir.ui.view: project.view_project_task_type_unarchive_wizard
|
89
|
+
NEW ir.ui.view: project.view_task_all_calendar
|
90
|
+
NEW ir.ui.view: project.view_task_kanban_inherit_my_task
|
91
|
+
DEL ir.ui.view: pad_project.project_project_view_form
|
92
|
+
DEL ir.ui.view: pad_project.res_config_settings_view_form
|
93
|
+
DEL ir.ui.view: pad_project.view_task_form2_inherit_pad_project
|
94
|
+
DEL ir.ui.view: project.project_collaborator_view_form
|
95
|
+
DEL ir.ui.view: project.project_delete_wizard_form
|
96
|
+
DEL ir.ui.view: project.project_task_burndown_chart_report_view_pivot
|
97
|
+
NEW mail.message.subtype: project.mt_project_update_create (noupdate)
|
98
|
+
NEW mail.message.subtype: project.mt_task_progress (noupdate)
|
99
|
+
NEW mail.message.subtype: project.mt_update_create (noupdate)
|
100
|
+
NEW res.groups: project.group_project_milestone
|
101
|
+
# NOTHING TO DO
|
@@ -0,0 +1,22 @@
|
|
1
|
+
---Models in module 'sale_project'---
|
2
|
+
---Fields in module 'sale_project'---
|
3
|
+
sale_project / product.product / service_policy (selection) : previously in module sale_timesheet
|
4
|
+
sale_project / product.template / service_policy (selection) : previously in module sale_timesheet
|
5
|
+
sale_project / project.project / allow_billable (boolean) : previously in module sale_timesheet
|
6
|
+
sale_project / project.project / invoice_count (integer) : previously in module account_sale_timesheet
|
7
|
+
sale_project / project.project / vendor_bill_count (integer) : previously in module sale_project_account
|
8
|
+
# NOTHING TO DO: Covered by ORM
|
9
|
+
|
10
|
+
sale_project / product.template / service_type (False) : NEW selection_keys: ['manual', 'milestones'], mode: modify
|
11
|
+
sale_project / project.milestone / quantity_percentage (float) : NEW
|
12
|
+
sale_project / project.milestone / sale_line_id (many2one) : NEW relation: sale.order.line
|
13
|
+
sale_project / sale.order.line / qty_delivered_method (False) : NEW selection_keys: ['analytic', 'manual', 'milestones', 'stock_move'], mode: modify
|
14
|
+
sale_project / sale.order.line / reached_milestones_ids (one2many): NEW relation: project.milestone
|
15
|
+
# NOTHING TO DO: New feature of billing by milestones.
|
16
|
+
|
17
|
+
---XML records in module 'sale_project'---
|
18
|
+
NEW ir.ui.view: sale_project.project_milestone_view_form
|
19
|
+
NEW ir.ui.view: sale_project.project_milestone_view_tree
|
20
|
+
NEW ir.ui.view: sale_project.sale_project_milestone_view_tree
|
21
|
+
DEL ir.ui.view: sale_project.project_task_view_form_inherit_sale_line_editable
|
22
|
+
# NOTHING TO DO: noupdate="0" records
|
@@ -0,0 +1,36 @@
|
|
1
|
+
from openupgradelib import openupgrade
|
2
|
+
|
3
|
+
|
4
|
+
def _update_account_analytic_line_timesheet_invoice_type(env):
|
5
|
+
openupgrade.logged_query(
|
6
|
+
env.cr,
|
7
|
+
"""
|
8
|
+
WITH timesheet_info as (
|
9
|
+
SELECT aal.id as id,
|
10
|
+
product_tmpl.service_type as service_type
|
11
|
+
FROM account_analytic_line aal
|
12
|
+
JOIN sale_order_line sol
|
13
|
+
ON sol.id = aal.so_line
|
14
|
+
JOIN product_product product
|
15
|
+
ON product.id = sol.product_id
|
16
|
+
JOIN product_template product_tmpl
|
17
|
+
ON product_tmpl.id = product.product_tmpl_id
|
18
|
+
WHERE product_tmpl.type = 'service'
|
19
|
+
AND product_tmpl.invoice_policy = 'delivery'
|
20
|
+
AND product_tmpl.service_type IN ('milestones', 'manual')
|
21
|
+
)
|
22
|
+
UPDATE account_analytic_line aal
|
23
|
+
SET timesheet_invoice_type = CONCAT('billable_', info.service_type)
|
24
|
+
FROM timesheet_info info
|
25
|
+
WHERE aal.id = info.id
|
26
|
+
""",
|
27
|
+
)
|
28
|
+
|
29
|
+
|
30
|
+
@openupgrade.migrate()
|
31
|
+
def migrate(env, version):
|
32
|
+
_update_account_analytic_line_timesheet_invoice_type(env)
|
33
|
+
# Remove SQL view project_profitability_report not used anymore in Odoo 16
|
34
|
+
openupgrade.logged_query(
|
35
|
+
env.cr, "DROP VIEW IF EXISTS project_profitability_report CASCADE"
|
36
|
+
)
|
@@ -0,0 +1,58 @@
|
|
1
|
+
---Models in module 'sale_timesheet'---
|
2
|
+
obsolete model project.profitability.report [sql_view]
|
3
|
+
# NOTHING TO DO
|
4
|
+
|
5
|
+
---Fields in module 'sale_timesheet'---
|
6
|
+
sale_timesheet / account.analytic.line / timesheet_invoice_type (selection): selection_keys is now '['billable_fixed', 'billable_manual', 'billable_milestones', 'billable_time', 'non_billable', 'other_costs', 'other_revenues', 'service_revenues', 'timesheet_revenues']' ('['billable_fixed', 'billable_time', 'non_billable', 'other_costs', 'other_revenues', 'service_revenues', 'timesheet_revenues']')
|
7
|
+
# DONE: pre-migration: update the value for timesheet_invoice_type.
|
8
|
+
|
9
|
+
sale_timesheet / product.product / service_policy (selection) : module is now 'sale_project' ('sale_timesheet')
|
10
|
+
sale_timesheet / product.template / service_policy (selection) : module is now 'sale_project' ('sale_timesheet')
|
11
|
+
sale_timesheet / project.project / allow_billable (boolean) : module is now 'sale_project' ('sale_timesheet')
|
12
|
+
# NOTHING TO DO: Module changes handled by ORM.
|
13
|
+
|
14
|
+
sale_timesheet / product.template / service_policy (selection) : selection_keys is now 'function' ('['delivered_manual', 'delivered_timesheet', 'ordered_timesheet']')
|
15
|
+
# NOTHING TO DO: store="False"
|
16
|
+
|
17
|
+
sale_timesheet / product.template / service_type (False) : selection_keys is now '['manual', 'milestones', 'timesheet']' ('['manual', 'timesheet']')
|
18
|
+
sale_timesheet / sale.order.line / qty_delivered_method (False) : selection_keys is now '['analytic', 'manual', 'milestones', 'stock_move', 'timesheet']' ('['analytic', 'manual', 'stock_move', 'timesheet']')
|
19
|
+
sale_timesheet / sale.order.line / timesheet_ids (one2many) : NEW relation: account.analytic.line
|
20
|
+
# NOTHING TO DO: New feature of invoicing by milestones.
|
21
|
+
|
22
|
+
sale_timesheet / project.project / allocated_hours (False) : NEW mode: modify, hasdefault: compute
|
23
|
+
# NOTHING TO DO
|
24
|
+
|
25
|
+
---XML records in module 'sale_timesheet'---
|
26
|
+
NEW ir.actions.act_window: sale_timesheet.timesheet_action_from_sales_order_item
|
27
|
+
NEW ir.actions.act_window.view: sale_timesheet.timesheet_action_from_sales_order_item_form
|
28
|
+
NEW ir.actions.act_window.view: sale_timesheet.timesheet_action_from_sales_order_item_graph
|
29
|
+
NEW ir.actions.act_window.view: sale_timesheet.timesheet_action_from_sales_order_item_kanban
|
30
|
+
NEW ir.actions.act_window.view: sale_timesheet.timesheet_action_from_sales_order_item_pivot
|
31
|
+
NEW ir.actions.act_window.view: sale_timesheet.timesheet_action_from_sales_order_item_tree
|
32
|
+
DEL ir.actions.act_window.view: sale_timesheet.timesheet_action_view_report_by_billing_rate_form
|
33
|
+
DEL ir.actions.act_window.view: sale_timesheet.timesheet_action_view_report_by_billing_rate_kanban
|
34
|
+
DEL ir.actions.act_window.view: sale_timesheet.timesheet_action_view_report_by_billing_rate_tree
|
35
|
+
NEW ir.actions.report: sale_timesheet.timesheet_report_account_move
|
36
|
+
NEW ir.actions.report: sale_timesheet.timesheet_report_sale_order
|
37
|
+
DEL ir.filters: sale_timesheet.ir_filter_project_profitability_report_costs_and_revenues
|
38
|
+
DEL ir.model.access: sale_timesheet.access_project_profitability_report_analysis_manager
|
39
|
+
NEW ir.ui.view: sale_timesheet.hr_timesheet_report_search_sale_timesheet
|
40
|
+
NEW ir.ui.view: sale_timesheet.project_project_view_kanban_inherit_sale_timesheet_so_button
|
41
|
+
NEW ir.ui.view: sale_timesheet.project_sharing_inherit_project_task_view_tree_sale_timesheet
|
42
|
+
NEW ir.ui.view: sale_timesheet.report_timesheet_account_move
|
43
|
+
NEW ir.ui.view: sale_timesheet.report_timesheet_sale_order
|
44
|
+
NEW ir.ui.view: sale_timesheet.timesheet_sale_page
|
45
|
+
NEW ir.ui.view: sale_timesheet.timesheets_analysis_report_graph_inherit
|
46
|
+
NEW ir.ui.view: sale_timesheet.timesheets_analysis_report_graph_invoice_type
|
47
|
+
NEW ir.ui.view: sale_timesheet.timesheets_analysis_report_pivot_inherit
|
48
|
+
NEW ir.ui.view: sale_timesheet.timesheets_analysis_report_pivot_invoice_type
|
49
|
+
NEW ir.ui.view: sale_timesheet.view_hr_timesheet_line_graph_employee_per_date
|
50
|
+
NEW ir.ui.view: sale_timesheet.view_task_tree2_inherited
|
51
|
+
DEL ir.ui.view: sale_timesheet.project_profitability_report_view_graph
|
52
|
+
DEL ir.ui.view: sale_timesheet.project_profitability_report_view_pivot
|
53
|
+
DEL ir.ui.view: sale_timesheet.project_profitability_report_view_search
|
54
|
+
DEL ir.ui.view: sale_timesheet.project_profitability_report_view_tree
|
55
|
+
DEL ir.ui.view: sale_timesheet.project_project_view_form_salesman
|
56
|
+
DEL ir.ui.view: sale_timesheet.project_task_view_form_inherit_sale_timesheet_editable
|
57
|
+
DEL ir.ui.view: sale_timesheet.timesheet_view_pivot_revenue
|
58
|
+
# NOTHING TO DO: noupdate="0" records
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Copyright 2024 Tecnativa - Pedro M. Baeza
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
from openupgradelib import openupgrade
|
4
|
+
|
5
|
+
|
6
|
+
def _empty_images_on_answers(env):
|
7
|
+
"""Clean images on those answers that had the check unmarked on the question, as
|
8
|
+
they didn't show the image in v15 even if they have one loaded. Now, not having the
|
9
|
+
check, the image will be displayed always.
|
10
|
+
"""
|
11
|
+
env.cr.execute("SELECT id FROM survey_question WHERE NOT allow_value_image")
|
12
|
+
question_ids = env.cr.fetchall()
|
13
|
+
answers = env["survey.question.answer"].search(
|
14
|
+
[("value_image", "!=", False), ("question_id", "in", question_ids)]
|
15
|
+
)
|
16
|
+
answers.value_image = False
|
17
|
+
|
18
|
+
|
19
|
+
@openupgrade.migrate()
|
20
|
+
def migrate(env, version):
|
21
|
+
_empty_images_on_answers(env)
|
22
|
+
openupgrade.delete_records_safely_by_xml_id(
|
23
|
+
env, ["survey.survey_action_server_clean_test_answers"]
|
24
|
+
)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Copyright 2024 Tecnativa - Pedro M. Baeza
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
from openupgradelib import openupgrade
|
4
|
+
|
5
|
+
_xmlids_renames = [
|
6
|
+
("survey.survey_form", "survey.survey_survey_view_form"),
|
7
|
+
("survey.survey_kanban", "survey.survey_survey_view_kanban"),
|
8
|
+
("survey.survey_tree", "survey.survey_survey_view_tree"),
|
9
|
+
]
|
10
|
+
|
11
|
+
|
12
|
+
@openupgrade.migrate()
|
13
|
+
def migrate(env, version):
|
14
|
+
openupgrade.rename_xmlids(env.cr, _xmlids_renames)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---Models in module 'survey'---
|
2
|
+
---Fields in module 'survey'---
|
3
|
+
survey / survey.question / allow_value_image (boolean) : DEL
|
4
|
+
# DONE: post-migration: Empty value_image on answers that had this check unmarked on the question. Now images are displayed always if they are present.
|
5
|
+
|
6
|
+
survey / survey.question / background_image (binary) : NEW attachment: True, hasdefault: compute
|
7
|
+
# NOTHING TO DO: New feature. The first computation on the existing records is not perfomance-drainer.
|
8
|
+
|
9
|
+
survey / survey.question / column_nb (selection) : DEL selection_keys: ['12', '2', '3', '4', '6']
|
10
|
+
# NOTHING TO DO: Feature already hidden in previous version
|
11
|
+
|
12
|
+
survey / survey.question / question_placeholder (char) : NEW hasdefault: compute
|
13
|
+
# NOTHING TO DO: New feature. The first computation on the existing records is not perfomance-drainer.
|
14
|
+
|
15
|
+
survey / survey.question.answer / value_image_filename (char) : NEW
|
16
|
+
# NOTHING TO DO: New helper field for storing the image filename (only as reference, no other reflection). Existing uploaded images won't have that name, but that was the case in v15.
|
17
|
+
|
18
|
+
survey / survey.survey / _order : _order is now 'create_date DESC' ('id')
|
19
|
+
# NOTHING TO DO: New model sorting criteria
|
20
|
+
|
21
|
+
survey / survey.user_input / activity_ids (one2many) : NEW relation: mail.activity
|
22
|
+
survey / survey.user_input / message_follower_ids (one2many): NEW relation: mail.followers
|
23
|
+
survey / survey.user_input / message_ids (one2many) : NEW relation: mail.message
|
24
|
+
survey / survey.user_input / message_main_attachment_id (many2one): NEW relation: ir.attachment
|
25
|
+
survey / survey.user_input / website_message_ids (one2many): NEW relation: mail.message
|
26
|
+
# NOTHING TO DO: New feature in the answers to have its own chatter.
|
27
|
+
|
28
|
+
---XML records in module 'survey'---
|
29
|
+
DEL ir.actions.server: survey.survey_action_server_clean_test_answers (noupdate)
|
30
|
+
# DONE: Try to delete the record.
|
31
|
+
|
32
|
+
DEL ir.ui.menu: survey.survey_menu_user_inputs
|
33
|
+
NEW ir.ui.view: survey.question_result_number_or_date_or_datetime
|
34
|
+
NEW ir.ui.view: survey.survey_question_answer_view_form
|
35
|
+
NEW ir.ui.view: survey.survey_remove_unnecessary_decimals
|
36
|
+
NEW ir.ui.view: survey.survey_results_filters
|
37
|
+
NEW ir.ui.view: survey.survey_survey_view_graph
|
38
|
+
NEW ir.ui.view: survey.survey_survey_view_pivot
|
39
|
+
DEL ir.ui.view: survey.question_result_number_or_date
|
40
|
+
# NOTHING TO DO: noupdate=0 records hanlded by ORM.
|
41
|
+
|
42
|
+
DEL ir.ui.view: survey.survey_form
|
43
|
+
NEW ir.ui.view: survey.survey_survey_view_form
|
44
|
+
DEL ir.ui.view: survey.survey_kanban
|
45
|
+
NEW ir.ui.view: survey.survey_survey_view_kanban
|
46
|
+
DEL ir.ui.view: survey.survey_tree
|
47
|
+
NEW ir.ui.view: survey.survey_survey_view_tree
|
48
|
+
# DONE: Just for completion and double safety, rename XML-IDs
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odoo-addon-openupgrade-scripts
|
3
|
-
Version: 16.0.1.0.3.
|
3
|
+
Version: 16.0.1.0.3.162
|
4
4
|
Summary: Module that contains all the migrations analysis and scripts for migrate Odoo SA modules.
|
5
5
|
Home-page: https://github.com/OCA/OpenUpgrade
|
6
6
|
Author: Odoo Community Association (OCA)
|
@@ -135,19 +135,29 @@ odoo/addons/openupgrade_scripts/scripts/hr/16.0.1.1/tests/__init__.py,sha256=qa6
|
|
135
135
|
odoo/addons/openupgrade_scripts/scripts/hr/16.0.1.1/tests/data.py,sha256=LswyfUF0owjdxQaiJGxY2wqCzFfthhDApb-v9r2VgBA,9908
|
136
136
|
odoo/addons/openupgrade_scripts/scripts/hr/16.0.1.1/tests/test_hr_migration.py,sha256=a8LNu8hi7cVc4xmuuz4_qpjZ-f2LDb_uELWPUAjlApI,2142
|
137
137
|
odoo/addons/openupgrade_scripts/scripts/hr_attendance/16.0.2.0/noupdate_changes.xml,sha256=nU-PUX2tc-1kcCkKJHQjMHRrhxhT1IagEMvaC3jUjv0,439
|
138
|
+
odoo/addons/openupgrade_scripts/scripts/hr_attendance/16.0.2.0/post-migration.py,sha256=xGeFaLZifgKwYW-ah2gswd6O-N066mnmP_G1dmPa1CY,175
|
138
139
|
odoo/addons/openupgrade_scripts/scripts/hr_attendance/16.0.2.0/upgrade_analysis.txt,sha256=Q01smh269EHWk6UvEn2QC3nOuyE24BYRaQMiUCNKrH0,719
|
139
|
-
odoo/addons/openupgrade_scripts/scripts/
|
140
|
+
odoo/addons/openupgrade_scripts/scripts/hr_attendance/16.0.2.0/upgrade_analysis_work.txt,sha256=_j-bbcB5Iy78MpvJw0d_kfrqGufDA_FHFy5u51wWe2k,1089
|
141
|
+
odoo/addons/openupgrade_scripts/scripts/hr_contract/16.0.1.0/noupdate_changes.xml,sha256=mnl3pmPfX06TNYbs7uxv8X2XsH-6ZqP-s2g9PceDQLE,449
|
142
|
+
odoo/addons/openupgrade_scripts/scripts/hr_contract/16.0.1.0/post-migration.py,sha256=ByGJfZQ1-CBQ9ORoX_ABDvcqXBWuXkoAGNZX95tYAaU,297
|
140
143
|
odoo/addons/openupgrade_scripts/scripts/hr_contract/16.0.1.0/upgrade_analysis.txt,sha256=mJOLGScbyvtjLYM5H6dnlqyKL-F5rQYWF9zvqyXZYh0,1066
|
144
|
+
odoo/addons/openupgrade_scripts/scripts/hr_contract/16.0.1.0/upgrade_analysis_work.txt,sha256=StrTtd3_ysYjSWOynWGDcnxFaEfr9rLOQPNdl2e2k0g,1395
|
141
145
|
odoo/addons/openupgrade_scripts/scripts/hr_expense/16.0.2.0/noupdate_changes.xml,sha256=SDRjZLGDKLTmL_xK_a1q9a_8JpXCgJkz27Nt0B1vlMs,1133
|
146
|
+
odoo/addons/openupgrade_scripts/scripts/hr_expense/16.0.2.0/post-migration.py,sha256=eUV3kkrEWFlyAOEH1-z0llJJ6qjKdpPyzYmySEN_q-M,2321
|
147
|
+
odoo/addons/openupgrade_scripts/scripts/hr_expense/16.0.2.0/pre-migration.py,sha256=cxJDD2gBCL0Vd7i4vn4falwON0YOy67OsAbpMqor1lU,3801
|
142
148
|
odoo/addons/openupgrade_scripts/scripts/hr_expense/16.0.2.0/upgrade_analysis.txt,sha256=jcxZTjMentbGt3vqdFaG_9NX9sb9KHtJyGfZlw6V4us,4453
|
149
|
+
odoo/addons/openupgrade_scripts/scripts/hr_expense/16.0.2.0/upgrade_analysis_work.txt,sha256=fvIrFIWUu-yyxh7PoSfj5EuaXqmVntzftuov5P55fSw,4523
|
143
150
|
odoo/addons/openupgrade_scripts/scripts/hr_fleet/16.0.1.0/upgrade_analysis.txt,sha256=3Z06g4YG8NTmD-qV6to7RhPJbqkUPhxqppzKVzunw0w,492
|
144
151
|
odoo/addons/openupgrade_scripts/scripts/hr_gamification/16.0.1.0/upgrade_analysis.txt,sha256=cMaEUAXfvHRW3vwIZMIrGROH5eDQjRAbqLkraqvEj-4,168
|
145
152
|
odoo/addons/openupgrade_scripts/scripts/hr_gamification/16.0.1.0/upgrade_analysis_work.txt,sha256=3iBxaIQTm-sWLBp43p9C6sjlz2cEs0Bw8yf-0VOL0LM,185
|
146
153
|
odoo/addons/openupgrade_scripts/scripts/hr_holidays/16.0.1.5/noupdate_changes.xml,sha256=bq3L_KlIGBVh9BSCmAWA-HVg6LhfQ-2sg-Jr2N1Fi0c,1247
|
154
|
+
odoo/addons/openupgrade_scripts/scripts/hr_holidays/16.0.1.5/post-migration.py,sha256=7JcDNJ9XUGHfIF_HBlbm2oCpSJcikpORoZDceOzxN9Q,880
|
147
155
|
odoo/addons/openupgrade_scripts/scripts/hr_holidays/16.0.1.5/upgrade_analysis.txt,sha256=dfAqkleufTqu1igQSi5idj9F69YorN3v8Ff5Mg2Ki5s,2281
|
156
|
+
odoo/addons/openupgrade_scripts/scripts/hr_holidays/16.0.1.5/upgrade_analysis_work.txt,sha256=J-9r6yzuGnja9LCx0CkifNxnZFYDRGpY2jUq5Icy-bc,2771
|
148
157
|
odoo/addons/openupgrade_scripts/scripts/hr_holidays_attendance/16.0.1.0/noupdate_changes.xml,sha256=OzxdaoxV1NybA2Xp2qjTU-nG7auZaqwmpHCYoSLZglk,168
|
149
158
|
odoo/addons/openupgrade_scripts/scripts/hr_holidays_attendance/16.0.1.0/upgrade_analysis.txt,sha256=iIq0WvegXemuojBa9KNPlGlhwcCG_xMgIKgY9pLymmg,273
|
150
159
|
odoo/addons/openupgrade_scripts/scripts/hr_hourly_cost/16.0.1.0/upgrade_analysis.txt,sha256=c8u8sEURXNF87Lt3UWDf9VyrxImSdSqG4OOnoCZDAB4,275
|
160
|
+
odoo/addons/openupgrade_scripts/scripts/hr_hourly_cost/16.0.1.0/upgrade_analysis_work.txt,sha256=j5moFtU6ZG_xFkqlg3_m8YxwdypufHoMKBda2CJclLw,617
|
151
161
|
odoo/addons/openupgrade_scripts/scripts/hr_maintenance/16.0.1.0/upgrade_analysis.txt,sha256=yu4-K8VQ4jtiDZvIlVIyIZJuj8gnN_qT4qI5RcYzTZM,165
|
152
162
|
odoo/addons/openupgrade_scripts/scripts/hr_maintenance/16.0.1.0/upgrade_analysis_work.txt,sha256=dM-2IlbkgeTl7Ey9Q651OaXYbMivlT2eCVp6x-IEnIg,182
|
153
163
|
odoo/addons/openupgrade_scripts/scripts/hr_org_chart/16.0.1.0/upgrade_analysis.txt,sha256=Uky8qbUr2mAREwEQdj3oO497YPalkGe6-ZVRq_G08-g,159
|
@@ -160,13 +170,16 @@ odoo/addons/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/upgrade_analysis
|
|
160
170
|
odoo/addons/openupgrade_scripts/scripts/hr_recruitment/16.0.1.1/upgrade_analysis_work.txt,sha256=c3WHcrrqfsqosx-k1LF1rNkinSa8fMuq3YWbKv-oTQk,3348
|
161
171
|
odoo/addons/openupgrade_scripts/scripts/hr_recruitment_skills/16.0.1.0/upgrade_analysis.txt,sha256=M9639cCz-6oKY1NC7XA8u2-k-hf9_1mCdaHAptDOt2c,1529
|
162
172
|
odoo/addons/openupgrade_scripts/scripts/hr_recruitment_survey/16.0.1.0/upgrade_analysis.txt,sha256=GMRU5w0aGxnHsHkGm4Jhkco0Dq2iGJ5b5DoX8nCamQk,186
|
173
|
+
odoo/addons/openupgrade_scripts/scripts/hr_recruitment_survey/16.0.1.0/upgrade_analysis_work.txt,sha256=_1c4hfHB2K9SFxCDO2N1cNUg_IUJ3AIp7lByQF103lI,203
|
163
174
|
odoo/addons/openupgrade_scripts/scripts/hr_skills/16.0.1.0/noupdate_changes.xml,sha256=ZuJuErC3ewPYGLlOByjzcX3qEo43aQtG8-TQlXrcCBA,456
|
164
175
|
odoo/addons/openupgrade_scripts/scripts/hr_skills/16.0.1.0/upgrade_analysis.txt,sha256=Oo6V5SlbCldLM72UmYstrO1HKjJbHDoxyG3cP5lLnFs,3033
|
165
176
|
odoo/addons/openupgrade_scripts/scripts/hr_skills_slides/16.0.1.0/upgrade_analysis.txt,sha256=rrtYD2Z3hZU9o7NavHC6-NhEq9c4UT4rWYs1eVtVoxg,186
|
166
177
|
odoo/addons/openupgrade_scripts/scripts/hr_skills_survey/16.0.1.0/upgrade_analysis.txt,sha256=GFhqA9h0mFrVP5SC5YpRLRJTLVwLN-1EPFhRL4y0gDg,171
|
178
|
+
odoo/addons/openupgrade_scripts/scripts/hr_timesheet/16.0.1.0/pre-migration.py,sha256=ZY9AHIY3YP_HVJg-Qsh_FB9olrnwLqg4BGd8AJHRpfE,1697
|
167
179
|
odoo/addons/openupgrade_scripts/scripts/hr_timesheet/16.0.1.0/upgrade_analysis.txt,sha256=ej1Ej7foICLBjli5HqNAzGi4tyz6IQ8UW-nvqYItr7A,4076
|
168
|
-
odoo/addons/openupgrade_scripts/scripts/
|
180
|
+
odoo/addons/openupgrade_scripts/scripts/hr_timesheet/16.0.1.0/upgrade_analysis_work.txt,sha256=zzMuoclczyu1Y1BKo-6yfBvNhnaeM6qO6b-tuOsODf0,4176
|
169
181
|
odoo/addons/openupgrade_scripts/scripts/hr_timesheet_attendance/16.0.1.1/upgrade_analysis.txt,sha256=Fhn3fJPxVqhA-bGTho--ynwvTGPsrAbdW-6g0Q2H990,526
|
182
|
+
odoo/addons/openupgrade_scripts/scripts/hr_timesheet_attendance/16.0.1.1/upgrade_analysis_work.txt,sha256=CWoHbjP9h8ae7-7q939Uh0ew8Sf0qqP72hIAKPbVp5M,558
|
170
183
|
odoo/addons/openupgrade_scripts/scripts/hr_work_entry/16.0.1.0/upgrade_analysis.txt,sha256=cAbyDftyWWrH859s-9Iy18Oq5FrmvyKtmX8H5_V7ZHE,275
|
171
184
|
odoo/addons/openupgrade_scripts/scripts/hr_work_entry_contract/16.0.1.0/upgrade_analysis.txt,sha256=H4xuArLCSzJ4blG0j_iWhlk1_aXLW3b5jZeaCZLp2JY,550
|
172
185
|
odoo/addons/openupgrade_scripts/scripts/hr_work_entry_holidays/16.0.1.0/upgrade_analysis.txt,sha256=-wF9U3GWdsuzBlkc7Gz2XYElk4lAGOAmtBUwX8nwVKI,189
|
@@ -434,7 +447,12 @@ odoo/addons/openupgrade_scripts/scripts/product_images/16.0.1.0/upgrade_analysis
|
|
434
447
|
odoo/addons/openupgrade_scripts/scripts/product_margin/16.0.1.0/upgrade_analysis.txt,sha256=4ttHOXP24HQX80aD5j6gIjzZBzhAD599KgvOxkR9wmM,165
|
435
448
|
odoo/addons/openupgrade_scripts/scripts/product_margin/16.0.1.0/upgrade_analysis_work.txt,sha256=4ttHOXP24HQX80aD5j6gIjzZBzhAD599KgvOxkR9wmM,165
|
436
449
|
odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/noupdate_changes.xml,sha256=0oH13jMbTYciRXhBd8s5W-ezK9BbpEBrVmAuJMOSdi8,5258
|
450
|
+
odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/post-migration.py,sha256=BT7aWbGKC_qA5kaMHQnVM61fDuBUBolWV-9yWzL8Jqo,594
|
451
|
+
odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/pre-migration.py,sha256=BGn_5Lsjqo_QgZtFxirM-G7HBHa7q5vY07ZRV25ubcc,5137
|
437
452
|
odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/upgrade_analysis.txt,sha256=Ra_nPB2OUJ54l31epPuP04icLT8uJrcdGHXqlKrermw,5831
|
453
|
+
odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/upgrade_analysis_work.txt,sha256=i35lNMJQ6Ap1z6Nmd-JChXipDqts1akWGWFekAXv0wM,6559
|
454
|
+
odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/tests/__init__.py,sha256=7uKZNMbS-tJslQ3DoJoKyUeosa_RNRseB4khQIP8bfc,37
|
455
|
+
odoo/addons/openupgrade_scripts/scripts/project/16.0.1.2/tests/test_project_migration.py,sha256=DIN6z623Bx6XtH62I7xq40CHsmWIIbfOYaceSNxsYBc,524
|
438
456
|
odoo/addons/openupgrade_scripts/scripts/project_hr_expense/16.0.1.0/upgrade_analysis.txt,sha256=skVoiLqMWdknfvsv53MZo2un62E7zQzjFaN4NL4PiZs,198
|
439
457
|
odoo/addons/openupgrade_scripts/scripts/project_mrp/16.0.1.0/upgrade_analysis.txt,sha256=mrMSwqKMslVHJCrf0YpQSAL1NE31ZnY9vLW1ep9rjzI,180
|
440
458
|
odoo/addons/openupgrade_scripts/scripts/project_purchase/16.0.1.0/upgrade_analysis.txt,sha256=1bGd47YlH5_3OHH33v-HGc1IES2Zw1vU0V9iNEcTVz8,200
|
@@ -484,12 +502,15 @@ odoo/addons/openupgrade_scripts/scripts/sale_mrp/16.0.1.0/upgrade_analysis.txt,s
|
|
484
502
|
odoo/addons/openupgrade_scripts/scripts/sale_product_configurator/16.0.1.0/upgrade_analysis.txt,sha256=3wHhFk4rmZ3PurMy3ZlQ8vH8baRl0xNZ_9ofGp-3By4,455
|
485
503
|
odoo/addons/openupgrade_scripts/scripts/sale_product_matrix/16.0.1.0/upgrade_analysis.txt,sha256=-_99R6PnRJKHWr1zvrruy5m0RYjMSSK-QIlU_CNEJjk,180
|
486
504
|
odoo/addons/openupgrade_scripts/scripts/sale_project/16.0.1.0/upgrade_analysis.txt,sha256=3_MabDi3INHUQI9b0qYLPEAgQ-FiMBVyz6cf3eoldlU,1618
|
505
|
+
odoo/addons/openupgrade_scripts/scripts/sale_project/16.0.1.0/upgrade_analysis_work.txt,sha256=XzPdzthCMjGri6-BgxmrLPf1ctXo1i-k8VXdsc80xKg,1648
|
487
506
|
odoo/addons/openupgrade_scripts/scripts/sale_project_stock/16.0.1.0/upgrade_analysis.txt,sha256=CvydNXFLRJ3UyF1j1fW0FMiIYjMGFaA-KI8t4nPXekM,221
|
488
507
|
odoo/addons/openupgrade_scripts/scripts/sale_purchase/16.0.1.0/upgrade_analysis.txt,sha256=KICfQiqiyfFj1kfW0VXF0zyk8wnik_0APGVT0JdU9lY,361
|
489
508
|
odoo/addons/openupgrade_scripts/scripts/sale_quotation_builder/16.0.1.0/noupdate_changes.xml,sha256=rgaGcEPiWrUftrz6BetgECgDqG3M3Nygj3XmTBVMvbo,3497
|
490
509
|
odoo/addons/openupgrade_scripts/scripts/sale_quotation_builder/16.0.1.0/upgrade_analysis.txt,sha256=06ej-ps7VMDzYrQl7Hdd6uR_V_uhY2mtKQniOHUwmtA,351
|
491
510
|
odoo/addons/openupgrade_scripts/scripts/sale_stock/16.0.1.0/upgrade_analysis.txt,sha256=2pgVDl2UDhrMPdfMl6Yts6AJbXt28_q7I1OuE45E4-U,819
|
511
|
+
odoo/addons/openupgrade_scripts/scripts/sale_timesheet/16.0.1.0/pre-migration.py,sha256=9xiwKatRFe6WrUE4jYhdS86LaN8EHslHJyiw2kUwJzw,1297
|
492
512
|
odoo/addons/openupgrade_scripts/scripts/sale_timesheet/16.0.1.0/upgrade_analysis.txt,sha256=3ZAhGhCvAVd45pIpfNRtFbhbdv7dhcd6zdS4qhOCjUU,4247
|
513
|
+
odoo/addons/openupgrade_scripts/scripts/sale_timesheet/16.0.1.0/upgrade_analysis_work.txt,sha256=_294_KUpIOVVhbiq_HLCpjXqOX-gXd_5zAwL5jzmKK0,4527
|
493
514
|
odoo/addons/openupgrade_scripts/scripts/sales_team/16.0.1.1/upgrade_analysis.txt,sha256=g4BtnBJtJ-XhWm5omP0T--l4R4D8w0H7X1hVZxhCmRI,243
|
494
515
|
odoo/addons/openupgrade_scripts/scripts/sales_team/16.0.1.1/upgrade_analysis_work.txt,sha256=NZeP-iA5SSfLcMa2o9eFGoaZ4JM15eiBDOKDv4aLVOA,260
|
495
516
|
odoo/addons/openupgrade_scripts/scripts/sms/16.0.2.4/upgrade_analysis.txt,sha256=_rqOOvN_wXpJmP-mMhO3SRQoPOD6UMEae_lZaMJGHYY,1513
|
@@ -523,7 +544,10 @@ odoo/addons/openupgrade_scripts/scripts/stock_dropshipping/16.0.1.0/upgrade_anal
|
|
523
544
|
odoo/addons/openupgrade_scripts/scripts/stock_landed_costs/16.0.1.1/upgrade_analysis.txt,sha256=WFU81Vt8XuuK9wkxAIUUtohVnUdyOzBtg08-3QGxKh8,177
|
524
545
|
odoo/addons/openupgrade_scripts/scripts/stock_picking_batch/16.0.1.0/upgrade_analysis.txt,sha256=-vWDvtNd94zMYD8LIYGJT_AiaYq4lZvCh4Jv9vL4paE,1327
|
525
546
|
odoo/addons/openupgrade_scripts/scripts/stock_sms/16.0.1.0/upgrade_analysis.txt,sha256=WmtD-QRPZnTjNKvErYIFRz_n-t4C2ttxPz_9eYkTOrw,150
|
547
|
+
odoo/addons/openupgrade_scripts/scripts/survey/16.0.3.5/post-migration.py,sha256=6-FUi-2MkJaOtE7qff_gIJBvPHdT6ugIf_ncjfpqatA,906
|
548
|
+
odoo/addons/openupgrade_scripts/scripts/survey/16.0.3.5/pre-migration.py,sha256=CgXlObR_j--DZRjzxdOJhv784bfQCvqmf3l7S_EWCxg,472
|
526
549
|
odoo/addons/openupgrade_scripts/scripts/survey/16.0.3.5/upgrade_analysis.txt,sha256=PZH-5KdMrPL-ozdlDCC5igHDzfcs7rIHqjdRhACr7mg,1977
|
550
|
+
odoo/addons/openupgrade_scripts/scripts/survey/16.0.3.5/upgrade_analysis_work.txt,sha256=S6ua954ALVHqYfzvXjtQ4DegqwWwEVZkdgxbmizW0LY,2849
|
527
551
|
odoo/addons/openupgrade_scripts/scripts/transifex/16.0.1.0/upgrade_analysis.txt,sha256=3vfZSjXSINOH_SE9C8mH77q-t2H8KxatKzbAQ5HY7Uc,1120
|
528
552
|
odoo/addons/openupgrade_scripts/scripts/uom/16.0.1.0/upgrade_analysis.txt,sha256=a5PetNi2DgHpGqqOp4U9sM8bpk7yayokWIU5MOfSTu4,137
|
529
553
|
odoo/addons/openupgrade_scripts/scripts/uom/16.0.1.0/upgrade_analysis_work.txt,sha256=byYT_AMkKr8rU-mX88VuQZjIKKtxltSuL-ph5q5EScE,189
|
@@ -611,7 +635,7 @@ odoo/addons/openupgrade_scripts/scripts/website_twitter/16.0.1.0/upgrade_analysi
|
|
611
635
|
odoo/addons/openupgrade_scripts/static/description/banner.png,sha256=KTIBu4gfxeZVw9zjs_fivTgFEOeaAorlBxajmCA1p6k,26859
|
612
636
|
odoo/addons/openupgrade_scripts/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
|
613
637
|
odoo/addons/openupgrade_scripts/static/description/index.html,sha256=IOWtZdzr_jN_Dja8HYIfzIxrO8NE5pFgazKJtPsLKw0,12678
|
614
|
-
odoo_addon_openupgrade_scripts-16.0.1.0.3.
|
615
|
-
odoo_addon_openupgrade_scripts-16.0.1.0.3.
|
616
|
-
odoo_addon_openupgrade_scripts-16.0.1.0.3.
|
617
|
-
odoo_addon_openupgrade_scripts-16.0.1.0.3.
|
638
|
+
odoo_addon_openupgrade_scripts-16.0.1.0.3.162.dist-info/METADATA,sha256=mToTaIa8ClQEiWd4R-Qr5HGseR1Vt8uH9mA-ACzc9b4,3810
|
639
|
+
odoo_addon_openupgrade_scripts-16.0.1.0.3.162.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
640
|
+
odoo_addon_openupgrade_scripts-16.0.1.0.3.162.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
|
641
|
+
odoo_addon_openupgrade_scripts-16.0.1.0.3.162.dist-info/RECORD,,
|
File without changes
|