odoo-addon-openupgrade-scripts 18.0.1.0.0.79__py3-none-any.whl → 18.0.1.0.0.97__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/account/18.0.1.3/post-migration.py +1 -1
- odoo/addons/openupgrade_scripts/scripts/base_vat/18.0.1.0/upgrade_analysis_work.txt +5 -0
- odoo/addons/openupgrade_scripts/scripts/hr/18.0.1.1/post-migration.py +10 -0
- odoo/addons/openupgrade_scripts/scripts/hr/18.0.1.1/pre-migration.py +52 -0
- odoo/addons/openupgrade_scripts/scripts/hr/18.0.1.1/upgrade_analysis_work.txt +76 -0
- odoo/addons/openupgrade_scripts/scripts/l10n_es/18.0.5.4/upgrade_analysis_work.txt +76 -0
- odoo/addons/openupgrade_scripts/scripts/purchase/18.0.1.2/post-migration.py +28 -0
- odoo/addons/openupgrade_scripts/scripts/purchase/18.0.1.2/pre-migration.py +24 -0
- odoo/addons/openupgrade_scripts/scripts/purchase/18.0.1.2/upgrade_analysis_work.txt +51 -0
- odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/end-migration.py +49 -0
- odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/post-migration.py +21 -0
- odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/pre-migration.py +34 -0
- odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/upgrade_analysis_work.txt +85 -0
- odoo/addons/openupgrade_scripts/scripts/sale_crm/18.0.1.0/upgrade_analysis_work.txt +5 -0
- odoo/addons/openupgrade_scripts/scripts/sale_stock/18.0.1.0/post-migration.py +12 -0
- odoo/addons/openupgrade_scripts/scripts/sale_stock/18.0.1.0/pre-migration.py +62 -0
- odoo/addons/openupgrade_scripts/scripts/sale_stock/18.0.1.0/upgrade_analysis_work.txt +18 -0
- odoo/addons/openupgrade_scripts/scripts/stock/18.0.1.1/post-migration.py +99 -0
- odoo/addons/openupgrade_scripts/scripts/stock/18.0.1.1/pre-migration.py +81 -0
- odoo/addons/openupgrade_scripts/scripts/stock/18.0.1.1/upgrade_analysis_work.txt +139 -0
- odoo/addons/openupgrade_scripts/scripts/stock_account/18.0.1.1/end-migration.py +23 -0
- odoo/addons/openupgrade_scripts/scripts/stock_account/18.0.1.1/post-migration.py +36 -0
- odoo/addons/openupgrade_scripts/scripts/stock_account/18.0.1.1/pre-migration.py +22 -0
- odoo/addons/openupgrade_scripts/scripts/stock_account/18.0.1.1/upgrade_analysis_work.txt +34 -0
- {odoo_addon_openupgrade_scripts-18.0.1.0.0.79.dist-info → odoo_addon_openupgrade_scripts-18.0.1.0.0.97.dist-info}/METADATA +1 -1
- {odoo_addon_openupgrade_scripts-18.0.1.0.0.79.dist-info → odoo_addon_openupgrade_scripts-18.0.1.0.0.97.dist-info}/RECORD +28 -5
- {odoo_addon_openupgrade_scripts-18.0.1.0.0.79.dist-info → odoo_addon_openupgrade_scripts-18.0.1.0.0.97.dist-info}/WHEEL +0 -0
- {odoo_addon_openupgrade_scripts-18.0.1.0.0.79.dist-info → odoo_addon_openupgrade_scripts-18.0.1.0.0.97.dist-info}/top_level.txt +0 -0
@@ -85,7 +85,7 @@ def fill_res_partner_property_x_payment_method_line_id(env):
|
|
85
85
|
FROM (
|
86
86
|
SELECT
|
87
87
|
SPLIT_PART(ip.res_id, ',', 2)::integer res_id,
|
88
|
-
JSON_OBJECT_AGG(ip.company_id, sub.id) value
|
88
|
+
JSON_OBJECT_AGG(ip.company_id, sub.id) AS "value"
|
89
89
|
FROM ir_property ip
|
90
90
|
JOIN LATERAL (
|
91
91
|
SELECT *
|
@@ -0,0 +1,10 @@
|
|
1
|
+
from openupgradelib import openupgrade
|
2
|
+
|
3
|
+
|
4
|
+
@openupgrade.migrate()
|
5
|
+
def migrate(env, version):
|
6
|
+
openupgrade.load_data(env, "hr", "18.0.1.1/noupdate_changes.xml")
|
7
|
+
openupgrade.delete_record_translations(
|
8
|
+
env.cr, "hr", ["contract_type_part_time"], ["name"]
|
9
|
+
)
|
10
|
+
openupgrade.delete_records_safely_by_xml_id(env, ["hr.hr_presence_control_login"])
|
@@ -0,0 +1,52 @@
|
|
1
|
+
from openupgradelib import openupgrade
|
2
|
+
|
3
|
+
_new_columns = [
|
4
|
+
(
|
5
|
+
"hr.employee",
|
6
|
+
"distance_home_work_unit",
|
7
|
+
"selection",
|
8
|
+
"kilometers",
|
9
|
+
"hr_employee",
|
10
|
+
),
|
11
|
+
("hr.employee", "is_flexible", "boolean", None, "hr_employee"),
|
12
|
+
("hr.employee", "is_fully_flexible", "boolean", None, "hr_employee"),
|
13
|
+
("res.company", "hr_presence_control_attendance", "boolean"),
|
14
|
+
("res.company", "hr_presence_control_email", "boolean"),
|
15
|
+
("res.company", "hr_presence_control_ip", "boolean"),
|
16
|
+
("res.company", "hr_presence_control_login", "boolean", True),
|
17
|
+
]
|
18
|
+
|
19
|
+
|
20
|
+
@openupgrade.migrate()
|
21
|
+
def migrate(env, version):
|
22
|
+
openupgrade.rename_columns(
|
23
|
+
env.cr, {"employee_category_rel": [("emp_id", "employee_id")]}
|
24
|
+
)
|
25
|
+
openupgrade.add_columns(env, _new_columns)
|
26
|
+
openupgrade.logged_query(
|
27
|
+
env.cr,
|
28
|
+
"""
|
29
|
+
UPDATE hr_employee
|
30
|
+
SET is_fully_flexible = CASE WHEN resource_calendar_id IS NULL
|
31
|
+
THEN TRUE ELSE FALSE END
|
32
|
+
""",
|
33
|
+
)
|
34
|
+
openupgrade.logged_query(
|
35
|
+
env.cr,
|
36
|
+
"""
|
37
|
+
UPDATE hr_employee he2
|
38
|
+
SET is_flexible = CASE WHEN he.is_fully_flexible OR rc.flexible_hours
|
39
|
+
THEN TRUE ELSE FALSE END
|
40
|
+
FROM hr_employee he
|
41
|
+
LEFT JOIN resource_calendar rc ON he.resource_calendar_id = rc.id
|
42
|
+
WHERE he.id = he2.id
|
43
|
+
""",
|
44
|
+
)
|
45
|
+
openupgrade.logged_query(
|
46
|
+
env.cr,
|
47
|
+
"""
|
48
|
+
UPDATE hr_employee
|
49
|
+
SET marital = 'single'
|
50
|
+
WHERE marital IS NULL
|
51
|
+
""",
|
52
|
+
)
|
@@ -0,0 +1,76 @@
|
|
1
|
+
---Models in module 'hr'---
|
2
|
+
new model hr.manager.department.report [abstract]
|
3
|
+
# NOTHING TO DO
|
4
|
+
|
5
|
+
---Fields in module 'hr'---
|
6
|
+
hr / hr.department / activity_ids (one2many) : NEW relation: mail.activity
|
7
|
+
hr / hr.department / has_read_access (boolean) : NEW stored: False
|
8
|
+
hr / hr.department / message_has_sms_error (boolean): previously in module sms
|
9
|
+
hr / hr.department / website_message_ids (one2many): previously in module portal
|
10
|
+
# NOTHING TO DO
|
11
|
+
|
12
|
+
hr / hr.employee / category_ids (many2many) : column1 is now 'employee_id' ('emp_id') [employee_category_rel]
|
13
|
+
hr / hr.employee.category / employee_ids (many2many) : column2 is now 'employee_id' ('emp_id') [employee_category_rel]
|
14
|
+
# DONE: pre-migration: Rename column
|
15
|
+
|
16
|
+
hr / hr.employee / distance_home_work (integer) : NEW
|
17
|
+
hr / hr.employee / distance_home_work_unit (selection): NEW required, selection_keys: ['kilometers', 'miles'], hasdefault: default
|
18
|
+
# DONE: pre-migration: ADD column
|
19
|
+
|
20
|
+
hr / hr.employee / employee_type (selection) : selection_keys is now '['contractor', 'employee', 'freelance', 'student', 'trainee', 'worker']' ('['contractor', 'employee', 'freelance', 'student', 'trainee']')
|
21
|
+
# NOTHING TO DO: new 'worker' option
|
22
|
+
|
23
|
+
hr / hr.employee / hr_icon_display (selection) : selection_keys is now '['presence_absent', 'presence_archive', 'presence_out_of_working_hour', 'presence_present', 'presence_undetermined']' ('['presence_absent', 'presence_absent_active', 'presence_present', 'presence_to_define', 'presence_undetermined']')
|
24
|
+
hr / hr.employee / hr_presence_state (selection) : selection_keys is now '['absent', 'archive', 'out_of_working_hour', 'present']' ('['absent', 'present', 'to_define']')
|
25
|
+
# NOTHING TO DO: non stored fields
|
26
|
+
|
27
|
+
hr / hr.employee / is_flexible (boolean) : NEW isfunction: function, stored
|
28
|
+
hr / hr.employee / is_fully_flexible (boolean) : NEW isfunction: function, stored
|
29
|
+
# DONE: pre-migration: pre-created and filled
|
30
|
+
|
31
|
+
hr / hr.employee / km_home_work (integer) : now a function
|
32
|
+
hr / hr.employee / marital (selection) : now required
|
33
|
+
hr / hr.employee / marital (selection) : selection_keys is now 'function' ('['cohabitant', 'divorced', 'married', 'single', 'widower']')
|
34
|
+
hr / hr.employee / message_has_sms_error (boolean): previously in module sms
|
35
|
+
hr / hr.employee / website_message_ids (one2many): previously in module portal
|
36
|
+
hr / hr.job / message_has_sms_error (boolean): previously in module sms
|
37
|
+
hr / hr.job / no_of_hired_employee (integer): module is now 'hr_recruitment' ('hr')
|
38
|
+
hr / hr.job / website_message_ids (one2many): previously in module portal
|
39
|
+
hr / res.company / hr_presence_control_attendance (boolean): NEW
|
40
|
+
hr / res.company / hr_presence_control_email (boolean): NEW
|
41
|
+
hr / res.company / hr_presence_control_ip (boolean): NEW
|
42
|
+
hr / res.company / hr_presence_control_login (boolean): NEW hasdefault: default
|
43
|
+
# NOTHING TO DO
|
44
|
+
|
45
|
+
---XML records in module 'hr'---
|
46
|
+
NEW digest.tip: hr.digest_tip_hr_0
|
47
|
+
NEW hr.contract.type: hr.contract_type_apprenticeship (noupdate)
|
48
|
+
NEW hr.contract.type: hr.contract_type_employee (noupdate)
|
49
|
+
NEW hr.contract.type: hr.contract_type_statutaire (noupdate)
|
50
|
+
NEW hr.contract.type: hr.contract_type_student (noupdate)
|
51
|
+
NEW hr.contract.type: hr.contract_type_thesis (noupdate)
|
52
|
+
DEL ir.actions.act_window: hr.act_employee_from_department
|
53
|
+
DEL ir.actions.act_window: hr.open_view_employee_tree
|
54
|
+
NEW ir.actions.act_window.view: hr.act_hr_employee_activity_view
|
55
|
+
NEW ir.actions.act_window.view: hr.act_hr_employee_form_view
|
56
|
+
NEW ir.actions.act_window.view: hr.act_hr_employee_graph_view
|
57
|
+
NEW ir.actions.act_window.view: hr.act_hr_employee_kanban_view
|
58
|
+
NEW ir.actions.act_window.view: hr.act_hr_employee_pivot_view
|
59
|
+
NEW ir.actions.act_window.view: hr.act_hr_employee_public_form_view
|
60
|
+
NEW ir.actions.act_window.view: hr.act_hr_employee_public_kanban_view
|
61
|
+
NEW ir.actions.act_window.view: hr.act_hr_employee_public_tree_view
|
62
|
+
NEW ir.actions.act_window.view: hr.act_hr_employee_tree_view
|
63
|
+
NEW ir.actions.act_window.view: hr.hr_department_form_view_kanban_action
|
64
|
+
NEW ir.actions.act_window.view: hr.hr_department_form_view_tree_action
|
65
|
+
NEW ir.actions.act_window.view: hr.hr_department_kanban_view_kanban_action
|
66
|
+
NEW ir.actions.act_window.view: hr.hr_department_kanban_view_tree_action
|
67
|
+
NEW ir.actions.act_window.view: hr.hr_department_tree_view_kanban_action
|
68
|
+
NEW ir.actions.act_window.view: hr.hr_department_tree_view_tree_action
|
69
|
+
DEL ir.actions.server: hr.action_hr_employee_create_user
|
70
|
+
DEL ir.config_parameter: hr.hr_presence_control_login (noupdate)
|
71
|
+
DEL ir.ui.menu: hr.menu_config_plan
|
72
|
+
DEL ir.ui.menu: hr.menu_hr_department_tree
|
73
|
+
NEW ir.ui.view: hr.res_partner_view_search
|
74
|
+
NEW ir.ui.view: hr.view_employee_form_smartbutton_inherited
|
75
|
+
NEW report.paperformat: hr.paperformat_hr_employee_badge
|
76
|
+
# NOTHING TO DO
|
@@ -0,0 +1,76 @@
|
|
1
|
+
---Models in module 'l10n_es'---
|
2
|
+
---Fields in module 'l10n_es'---
|
3
|
+
l10n_es / res.company / l10n_es_simplified_invoice_limit (float): NEW hasdefault: default
|
4
|
+
# NOTHING TO DO
|
5
|
+
|
6
|
+
---XML records in module 'l10n_es'---
|
7
|
+
NEW account.report: l10n_es.mod_420
|
8
|
+
NEW account.report.column: l10n_es.mod_420_column_base
|
9
|
+
NEW account.report.column: l10n_es.mod_420_column_tax_amount
|
10
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_10
|
11
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_12
|
12
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_13
|
13
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_15
|
14
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_16
|
15
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_18
|
16
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_19
|
17
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_1_base
|
18
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_20
|
19
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_21
|
20
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_22
|
21
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_23
|
22
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_24
|
23
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_25
|
24
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_26
|
25
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_27
|
26
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_28
|
27
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_29
|
28
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_30
|
29
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_31
|
30
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_32
|
31
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_33
|
32
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_34
|
33
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_35
|
34
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_36
|
35
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_37
|
36
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_38
|
37
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_39
|
38
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_4
|
39
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_40
|
40
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_41
|
41
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_42
|
42
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_43
|
43
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_44
|
44
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_45
|
45
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_6
|
46
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_7
|
47
|
+
NEW account.report.expression: l10n_es.mod_420_casilla_9
|
48
|
+
NEW account.report.line: l10n_es.mod_420_casilla_10_12
|
49
|
+
NEW account.report.line: l10n_es.mod_420_casilla_13_15
|
50
|
+
NEW account.report.line: l10n_es.mod_420_casilla_16_18
|
51
|
+
NEW account.report.line: l10n_es.mod_420_casilla_1_3
|
52
|
+
NEW account.report.line: l10n_es.mod_420_casilla_4_6
|
53
|
+
NEW account.report.line: l10n_es.mod_420_casilla_7_9
|
54
|
+
NEW account.report.line: l10n_es.mod_420_casilla_comp_agri
|
55
|
+
NEW account.report.line: l10n_es.mod_420_casilla_comp_reg_def
|
56
|
+
NEW account.report.line: l10n_es.mod_420_casilla_comp_reg_inv
|
57
|
+
NEW account.report.line: l10n_es.mod_420_casilla_comp_reg_start
|
58
|
+
NEW account.report.line: l10n_es.mod_420_casilla_deduc_modif
|
59
|
+
NEW account.report.line: l10n_es.mod_420_casilla_diff
|
60
|
+
NEW account.report.line: l10n_es.mod_420_casilla_igic_comp
|
61
|
+
NEW account.report.line: l10n_es.mod_420_casilla_igic_deductible
|
62
|
+
NEW account.report.line: l10n_es.mod_420_casilla_igic_deductible_imp
|
63
|
+
NEW account.report.line: l10n_es.mod_420_casilla_igic_deductible_imp_inv
|
64
|
+
NEW account.report.line: l10n_es.mod_420_casilla_igic_deductible_inv
|
65
|
+
NEW account.report.line: l10n_es.mod_420_casilla_isp
|
66
|
+
NEW account.report.line: l10n_es.mod_420_casilla_mod_21_22
|
67
|
+
NEW account.report.line: l10n_es.mod_420_casilla_mod_23_24
|
68
|
+
NEW account.report.line: l10n_es.mod_420_casilla_reg_art
|
69
|
+
NEW account.report.line: l10n_es.mod_420_casilla_result
|
70
|
+
NEW account.report.line: l10n_es.mod_420_casilla_to_deduct
|
71
|
+
NEW account.report.line: l10n_es.mod_420_casilla_total
|
72
|
+
NEW account.report.line: l10n_es.mod_420_casilla_total_25
|
73
|
+
NEW account.report.line: l10n_es.mod_420_igic_due
|
74
|
+
NEW account.report.line: l10n_es.mod_420_title_igic_deductible
|
75
|
+
NEW ir.ui.view: l10n_es.res_config_settings_view_form
|
76
|
+
# NOTHING TO DO
|
@@ -0,0 +1,28 @@
|
|
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, openupgrade_180
|
4
|
+
|
5
|
+
|
6
|
+
def convert_company_dependent(env):
|
7
|
+
openupgrade_180.convert_company_dependent(
|
8
|
+
env, "res.partner", "property_purchase_currency_id"
|
9
|
+
)
|
10
|
+
openupgrade_180.convert_company_dependent(
|
11
|
+
env, "res.partner", "receipt_reminder_email"
|
12
|
+
)
|
13
|
+
openupgrade_180.convert_company_dependent(
|
14
|
+
env, "res.partner", "reminder_date_before_receipt"
|
15
|
+
)
|
16
|
+
|
17
|
+
|
18
|
+
@openupgrade.migrate()
|
19
|
+
def migrate(env, version):
|
20
|
+
convert_company_dependent(env)
|
21
|
+
openupgrade.load_data(env, "purchase", "18.0.1.2/noupdate_changes.xml")
|
22
|
+
openupgrade.delete_record_translations(
|
23
|
+
env.cr, "purchase", ["email_template_edi_purchase", "track_po_line_template"]
|
24
|
+
)
|
25
|
+
openupgrade.delete_records_safely_by_xml_id(
|
26
|
+
env,
|
27
|
+
["purchase.receipt_reminder_email", "purchase.reminder_date_before_receipt"],
|
28
|
+
)
|
@@ -0,0 +1,24 @@
|
|
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
|
+
|
6
|
+
def fill_purchase_order_amount_total_cc(env):
|
7
|
+
openupgrade.logged_query(
|
8
|
+
env.cr,
|
9
|
+
"""
|
10
|
+
UPDATE purchase_order
|
11
|
+
SET amount_total_cc = amount_total / currency_rate
|
12
|
+
WHERE COALESCE(currency_rate, 0) != 0""",
|
13
|
+
)
|
14
|
+
|
15
|
+
|
16
|
+
@openupgrade.migrate()
|
17
|
+
def migrate(env, version):
|
18
|
+
openupgrade.delete_sql_constraint_safely(
|
19
|
+
env, "purchase", "purchase_order_line", "accountable_required_fields"
|
20
|
+
)
|
21
|
+
openupgrade.add_columns(
|
22
|
+
env, [("purchase.order", "amount_total_cc", "float", None, "purchase_order")]
|
23
|
+
)
|
24
|
+
fill_purchase_order_amount_total_cc(env)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
---Models in module 'purchase'---
|
2
|
+
new model bill.to.po.wizard [transient]
|
3
|
+
new model purchase.bill.line.match [sql_view]
|
4
|
+
# NOTHING TO DO
|
5
|
+
|
6
|
+
---Fields in module 'purchase'---
|
7
|
+
purchase / account.move.line / is_downpayment (boolean) : previously in module sale
|
8
|
+
# NOTHING TO DO
|
9
|
+
|
10
|
+
purchase / purchase.order / amount_total_cc (float) : NEW isfunction: function, stored
|
11
|
+
# DONE: pre-migration: pre-create column and fill it (amount_total_cc = amount_total / currency_rate)
|
12
|
+
|
13
|
+
purchase / purchase.order / mail_reception_declined (boolean): NEW
|
14
|
+
# NOTHING TO DO: new feature
|
15
|
+
|
16
|
+
purchase / purchase.order.line / analytic_distribution_search (json): DEL stored: False
|
17
|
+
# NOTHING TO DO
|
18
|
+
|
19
|
+
purchase / purchase.order.line / is_downpayment (boolean) : NEW
|
20
|
+
purchase / purchase.order.line / product_no_variant_attribute_value_ids (many2many): previously in module purchase_product_matrix
|
21
|
+
purchase / purchase.order.line / product_template_attribute_value_ids (many2many): previously in module purchase_product_matrix
|
22
|
+
# NOTHING TO DO
|
23
|
+
|
24
|
+
purchase / res.partner / property_purchase_currency_id (many2one): needs conversion to v18-style company dependent
|
25
|
+
purchase / res.partner / receipt_reminder_email (boolean): needs conversion to v18-style company dependent
|
26
|
+
purchase / res.partner / reminder_date_before_receipt (integer): needs conversion to v18-style company dependent
|
27
|
+
# DONE: post-migration: used openupgrade_180.convert_company_dependent
|
28
|
+
|
29
|
+
---XML records in module 'purchase'---
|
30
|
+
NEW ir.actions.server: purchase.action_confirm_rfqs
|
31
|
+
NEW ir.actions.server: purchase.action_merger
|
32
|
+
NEW ir.model.access: purchase.access_bill_to_po_wizard
|
33
|
+
NEW ir.model.access: purchase.access_purchase_bill_line_match
|
34
|
+
NEW ir.model.access: purchase.access_purchase_bill_line_match_invoicing_payments
|
35
|
+
NEW ir.model.access: purchase.access_purchase_bill_line_match_readonly
|
36
|
+
# NOTHING TO DO
|
37
|
+
|
38
|
+
ir.model.constraint: purchase.constraint_purchase_order_line_accountable_required_fields (changed definition: is now 'check(display_type is not null or is_downpayment or(product_id is not null and product_uom is not null and date_planned is not null))' ('check(display_type is not null or(product_id is not null and product_uom is not null and date_planned is not null))'))
|
39
|
+
# DONE: pre-migration: delete it (to safely force the change)
|
40
|
+
|
41
|
+
DEL ir.property: purchase.receipt_reminder_email (noupdate)
|
42
|
+
DEL ir.property: purchase.reminder_date_before_receipt (noupdate)
|
43
|
+
# DONE: post-migration: delete old property safely (now it's an ir.default record created by ORM)
|
44
|
+
|
45
|
+
NEW ir.ui.view: purchase.bill_to_po_wizard_form
|
46
|
+
NEW ir.ui.view: purchase.product_product_supplierinfo_tree_view2
|
47
|
+
NEW ir.ui.view: purchase.purchase_bill_line_match_tree
|
48
|
+
NEW ir.ui.view: purchase.purchase_history_graph
|
49
|
+
NEW ir.ui.view: purchase.purchase_history_pivot
|
50
|
+
DEL ir.ui.view: purchase.view_product_account_purchase_ok_form
|
51
|
+
NEW web_tour.tour: purchase.purchase_tour
|
@@ -0,0 +1,49 @@
|
|
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
|
+
|
6
|
+
def _setup_property_downpayment_account(env):
|
7
|
+
# "Copy" of sale _setup_property_downpayment_account
|
8
|
+
for company in env.companies:
|
9
|
+
if not company.chart_template or env["product.category"].with_company(
|
10
|
+
company
|
11
|
+
).search_count(
|
12
|
+
[("property_account_downpayment_categ_id", "!=", False)], limit=1
|
13
|
+
):
|
14
|
+
continue
|
15
|
+
# begin patch: avoid having errors for not loading l10n modules
|
16
|
+
if not company.country_id.code:
|
17
|
+
continue
|
18
|
+
module_name = "l10n_" + company.country_id.code.lower()
|
19
|
+
l10n_module = env["ir.module.module"].search(
|
20
|
+
[
|
21
|
+
("name", "=", module_name),
|
22
|
+
("state", "=", "installed"),
|
23
|
+
]
|
24
|
+
)
|
25
|
+
if not l10n_module:
|
26
|
+
continue
|
27
|
+
# end patch
|
28
|
+
template_data = (
|
29
|
+
env["account.chart.template"]
|
30
|
+
._get_chart_template_data(company.chart_template)
|
31
|
+
.get("template_data")
|
32
|
+
)
|
33
|
+
if template_data and template_data.get("property_account_downpayment_categ_id"):
|
34
|
+
property_downpayment_account = env.ref(
|
35
|
+
f'account.{company.id}_{template_data["property_account_downpayment_categ_id"]}',
|
36
|
+
raise_if_not_found=False,
|
37
|
+
)
|
38
|
+
if property_downpayment_account:
|
39
|
+
env["ir.default"].set(
|
40
|
+
"product.category",
|
41
|
+
"property_account_downpayment_categ_id",
|
42
|
+
property_downpayment_account.id,
|
43
|
+
company_id=company.id,
|
44
|
+
)
|
45
|
+
|
46
|
+
|
47
|
+
@openupgrade.migrate()
|
48
|
+
def migrate(env, version):
|
49
|
+
_setup_property_downpayment_account(env)
|
@@ -0,0 +1,21 @@
|
|
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
|
+
|
6
|
+
@openupgrade.migrate()
|
7
|
+
def migrate(env, version):
|
8
|
+
openupgrade.load_data(env, "sale", "18.0.1.2/noupdate_changes.xml")
|
9
|
+
openupgrade.delete_record_translations(
|
10
|
+
env.cr, "sale", ["email_template_edi_sale", "mail_template_sale_confirmation"]
|
11
|
+
)
|
12
|
+
openupgrade.delete_records_safely_by_xml_id(
|
13
|
+
env,
|
14
|
+
[
|
15
|
+
"sale.account_invoice_send_rule_see_all",
|
16
|
+
"sale.account_invoice_send_rule_see_personal",
|
17
|
+
"sale.onboarding_onboarding_step_sale_order_confirmation",
|
18
|
+
"sale.onboarding_onboarding_step_sample_quotation",
|
19
|
+
"sale.onboarding_onboarding_sale_quotation",
|
20
|
+
],
|
21
|
+
)
|
@@ -0,0 +1,34 @@
|
|
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
|
+
|
6
|
+
@openupgrade.migrate()
|
7
|
+
def migrate(env, version):
|
8
|
+
openupgrade.rename_fields(
|
9
|
+
env,
|
10
|
+
[("product.document", "product_document", "attached_on", "attached_on_sale")],
|
11
|
+
)
|
12
|
+
openupgrade.rename_xmlids(
|
13
|
+
env.cr,
|
14
|
+
[
|
15
|
+
(
|
16
|
+
"sale.sale_order_action_view_quotation_kanban",
|
17
|
+
"sale.action_quotations_kanban",
|
18
|
+
)
|
19
|
+
],
|
20
|
+
)
|
21
|
+
openupgrade.add_columns(
|
22
|
+
env,
|
23
|
+
[("sale.order.line", "technical_price_unit", "float", None, "sale_order_line")],
|
24
|
+
)
|
25
|
+
openupgrade.logged_query(
|
26
|
+
env.cr,
|
27
|
+
"""
|
28
|
+
UPDATE sale_order_line
|
29
|
+
SET technical_price_unit = price_unit
|
30
|
+
""",
|
31
|
+
)
|
32
|
+
openupgrade.delete_sql_constraint_safely(
|
33
|
+
env, "sale", "sale_order_line", "accountable_required_fields"
|
34
|
+
)
|
@@ -0,0 +1,85 @@
|
|
1
|
+
---Models in module 'sale'---
|
2
|
+
---Fields in module 'sale'---
|
3
|
+
sale / account.analytic.applicability / business_domain (False) : selection_keys is now '['bill', 'expense', 'general', 'invoice', 'manufacturing_order', 'purchase_order', 'sale_order', 'stock_picking', 'timesheet']' ('['bill', 'expense', 'general', 'invoice', 'manufacturing_order', 'purchase_order', 'sale_order']')
|
4
|
+
# NOTHING TO DO: new options 'stock_picking' and 'timesheet'
|
5
|
+
|
6
|
+
sale / account.move.line / is_downpayment (boolean) : module is now 'purchase' ('sale')
|
7
|
+
# NOTHING TO DO
|
8
|
+
|
9
|
+
sale / product.category / property_account_downpayment_categ_id (many2one): NEW relation: account.account
|
10
|
+
# DONE: end-migration: call _setup_property_downpayment_account
|
11
|
+
|
12
|
+
sale / product.document / attached_on (selection) : DEL selection_keys: ['quotation', 'sale_order']
|
13
|
+
sale / product.document / attached_on_sale (selection) : NEW required, selection_keys: ['hidden', 'quotation', 'sale_order'], hasdefault: default
|
14
|
+
# DONE: pre-migration: renamed field
|
15
|
+
|
16
|
+
sale / res.company / sale_down_payment_product_id (many2one): DEL relation: product.product
|
17
|
+
# NOTHING TO DO: it was unused. Now downpayments use property_account_downpayment_categ_id
|
18
|
+
|
19
|
+
sale / sale.order / amount_to_invoice (float) : not stored anymore
|
20
|
+
sale / sale.order / analytic_account_id (many2one): DEL relation: account.analytic.account
|
21
|
+
|
22
|
+
sale / sale.order.line / analytic_distribution_search (json): DEL stored: False
|
23
|
+
# NOTHING TO DO
|
24
|
+
|
25
|
+
sale / sale.order.line / qty_invoiced_posted (float) : previously in module l10n_it_edi_doi
|
26
|
+
l10n_it_edi_doi / sale.order.line / qty_invoiced_posted (float) : not stored anymore
|
27
|
+
# NOTHING TO DO
|
28
|
+
|
29
|
+
sale / sale.order.line / combo_item_id (many2one) : NEW relation: product.combo.item
|
30
|
+
sale / sale.order.line / linked_line_id (many2one) : previously in module website_sale
|
31
|
+
sale / sale.order.line / linked_line_ids (one2many) : NEW relation: sale.order.line
|
32
|
+
sale / sale.order.line / linked_virtual_id (char) : NEW
|
33
|
+
sale / sale.order.line / selected_combo_items (char) : NEW stored: False
|
34
|
+
sale / sale.order.line / virtual_id (char) : NEW
|
35
|
+
# NOTHING TO DO
|
36
|
+
|
37
|
+
sale / sale.order.line / technical_price_unit (float) : NEW
|
38
|
+
# DONE: pre-migration: technical field filled with price_unit
|
39
|
+
|
40
|
+
---XML records in module 'sale'---
|
41
|
+
NEW ir.actions.act_window.view: sale.action_quotations_kanban
|
42
|
+
NEW ir.actions.act_window.view: sale.action_quotations_tree
|
43
|
+
NEW ir.actions.server: sale.model_sale_order_send_mail
|
44
|
+
NEW ir.model.access: sale.access_account_move_send_batch_wizard_salesman
|
45
|
+
NEW ir.model.access: sale.access_account_move_send_wizard_salesman
|
46
|
+
NEW ir.model.access: sale.access_update_product_attribute_value_sale_manager
|
47
|
+
DEL ir.model.access: sale.access_account_move_send_salesman
|
48
|
+
# NOTHING TO DO
|
49
|
+
|
50
|
+
ir.model.constraint: sale.constraint_sale_order_line_accountable_required_fields (changed definition: is now 'check(display_type is not null or is_downpayment or(product_id is not null and product_uom is not null))' ('check(display_type is not null or(product_id is not null and product_uom is not null))'))
|
51
|
+
# DONE: pre-migration: delete it to force the change
|
52
|
+
|
53
|
+
NEW ir.rule: sale.account_invoice_send_batch_rule_see_all (noupdate)
|
54
|
+
NEW ir.rule: sale.account_invoice_send_batch_rule_see_personal (noupdate)
|
55
|
+
NEW ir.rule: sale.account_invoice_send_single_rule_see_all (noupdate)
|
56
|
+
NEW ir.rule: sale.account_invoice_send_single_rule_see_personal (noupdate)
|
57
|
+
DEL ir.rule: sale.account_invoice_send_rule_see_all (noupdate)
|
58
|
+
DEL ir.rule: sale.account_invoice_send_rule_see_personal (noupdate)
|
59
|
+
# DONE: post-migration: safely delete (we could rename them in pre-migration too, but then we would need to change the field name)
|
60
|
+
|
61
|
+
NEW ir.ui.menu: sale.menu_product_combos
|
62
|
+
NEW ir.ui.menu: sale.menu_product_tags
|
63
|
+
NEW ir.ui.menu: sale.sale_menu_config_activities
|
64
|
+
NEW ir.ui.view: sale.product_template_view_form
|
65
|
+
NEW ir.ui.view: sale.quote_document_layout_preview
|
66
|
+
NEW ir.ui.view: sale.sale_order_kanban_upload
|
67
|
+
NEW ir.ui.view: sale.sale_order_list_upload
|
68
|
+
NEW ir.ui.view: sale.view_category_property_form
|
69
|
+
NEW ir.ui.view: sale.view_quotation_kanban_with_onboarding
|
70
|
+
DEL ir.ui.view: sale_product_configurator.product_template_view_form
|
71
|
+
DEL ir.ui.view: sale_product_configurator.sale_order_view_form
|
72
|
+
NEW mail.message.subtype: sale.mt_order_viewed (noupdate)
|
73
|
+
NEW mail.message.subtype: sale.mt_salesteam_order_viewed (noupdate)
|
74
|
+
# NOTHING TO DO
|
75
|
+
|
76
|
+
DEL onboarding.onboarding: sale.onboarding_onboarding_sale_quotation (noupdate)
|
77
|
+
DEL onboarding.onboarding.step: sale.onboarding_onboarding_step_sale_order_confirmation (noupdate)
|
78
|
+
DEL onboarding.onboarding.step: sale.onboarding_onboarding_step_sample_quotation (noupdate)
|
79
|
+
# DONE: post-migration: safely delete
|
80
|
+
|
81
|
+
NEW res.groups: sale.group_discount_per_so_line [renamed from product module]
|
82
|
+
# NOTHING TO DO: rename done in product module
|
83
|
+
|
84
|
+
NEW web_tour.tour: sale.sale_tour
|
85
|
+
# NOTHING TO DO
|
@@ -0,0 +1,12 @@
|
|
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, openupgrade_180
|
4
|
+
|
5
|
+
|
6
|
+
def convert_company_dependent(env):
|
7
|
+
openupgrade_180.convert_company_dependent(env, "res.users", "property_warehouse_id")
|
8
|
+
|
9
|
+
|
10
|
+
@openupgrade.migrate()
|
11
|
+
def migrate(env, version):
|
12
|
+
convert_company_dependent(env)
|
@@ -0,0 +1,62 @@
|
|
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
|
+
("sale.order.line", "warehouse_id", "many2one"),
|
7
|
+
]
|
8
|
+
|
9
|
+
|
10
|
+
def fill_sale_order_line_warehouse_id(env):
|
11
|
+
openupgrade.logged_query(
|
12
|
+
env.cr,
|
13
|
+
"""
|
14
|
+
UPDATE sale_order_line sol
|
15
|
+
SET warehouse_id = so.warehouse_id
|
16
|
+
FROM sale_order so
|
17
|
+
WHERE sol.order_id = so.id AND sol.route_id IS NULL
|
18
|
+
""",
|
19
|
+
)
|
20
|
+
openupgrade.logged_query(
|
21
|
+
env.cr,
|
22
|
+
"""
|
23
|
+
WITH sub as (
|
24
|
+
SELECT sr.route_id, sr.location_dest_id, sl.warehouse_id
|
25
|
+
FROM stock_rule sr
|
26
|
+
JOIN stock_route slr ON sr.route_id = slr.id
|
27
|
+
LEFT JOIN stock_location sl ON sr.location_src_id = sl.id
|
28
|
+
WHERE sr.action != 'push'
|
29
|
+
ORDER BY sr.route_sequence, sr.sequence
|
30
|
+
)
|
31
|
+
UPDATE sale_order_line sol2
|
32
|
+
SET warehouse_id = COALESCE(
|
33
|
+
sub1.warehouse_id, sub2.warehouse_id, so.warehouse_id)
|
34
|
+
FROM sale_order_line sol
|
35
|
+
JOIN sale_order so ON sol.order_id = so.id
|
36
|
+
LEFT JOIN res_partner rp ON so.partner_shipping_id = rp.id
|
37
|
+
LEFT JOIN stock_location sl ON sl.id = (
|
38
|
+
rp.property_stock_customer::jsonb -> so.company_id)::int4
|
39
|
+
LEFT JOIN LATERAL (
|
40
|
+
SELECT sub.warehouse_id
|
41
|
+
FROM sub
|
42
|
+
WHERE sol.route_id = sub.route_id AND
|
43
|
+
sub.location_dest_id = sl.id AND (
|
44
|
+
sub.warehouse_id IS NULL OR so.warehouse_id = sub.warehouse_id)
|
45
|
+
LIMIT 1
|
46
|
+
) sub1 ON TRUE
|
47
|
+
LEFT JOIN LATERAL (
|
48
|
+
SELECT sub.warehouse_id
|
49
|
+
FROM sub
|
50
|
+
WHERE sol.route_id = sub.route_id AND
|
51
|
+
sub.location_dest_id = sl.id
|
52
|
+
LIMIT 1
|
53
|
+
) sub2 ON TRUE
|
54
|
+
WHERE sol.id = sol2.id AND sol.route_id IS NOT NULL
|
55
|
+
""",
|
56
|
+
)
|
57
|
+
|
58
|
+
|
59
|
+
@openupgrade.migrate()
|
60
|
+
def migrate(env, version=None):
|
61
|
+
openupgrade.add_columns(env, _new_columns)
|
62
|
+
fill_sale_order_line_warehouse_id(env)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
---Models in module 'sale_stock'---
|
2
|
+
---Fields in module 'sale_stock'---
|
3
|
+
sale_stock / res.users / property_warehouse_id (many2one): needs conversion to v18-style company dependent
|
4
|
+
# DONE: post-migration: used openupgrade_180.convert_company_dependent
|
5
|
+
|
6
|
+
sale_stock / sale.order.line / warehouse_id (many2one) : is now stored
|
7
|
+
sale_stock / sale.order.line / warehouse_id (many2one) : not related anymore
|
8
|
+
sale_stock / sale.order.line / warehouse_id (many2one) : now a function
|
9
|
+
# DONE: pre-migration: pre-create and fill
|
10
|
+
|
11
|
+
sale_stock / stock.picking / sale_id (many2one) : not related anymore
|
12
|
+
sale_stock / stock.picking / sale_id (many2one) : now a function
|
13
|
+
# NOTHING TO DO
|
14
|
+
|
15
|
+
---XML records in module 'sale_stock'---
|
16
|
+
NEW ir.ui.view: sale_stock.sale_stock_help_message_template
|
17
|
+
NEW ir.ui.view: sale_stock.view_picking_form
|
18
|
+
# NOTHING TO DO
|
@@ -0,0 +1,99 @@
|
|
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, openupgrade_180
|
4
|
+
|
5
|
+
|
6
|
+
def convert_company_dependent(env):
|
7
|
+
openupgrade_180.convert_company_dependent(
|
8
|
+
env, "product.template", "property_stock_inventory"
|
9
|
+
)
|
10
|
+
openupgrade_180.convert_company_dependent(
|
11
|
+
env, "product.template", "property_stock_production"
|
12
|
+
)
|
13
|
+
openupgrade_180.convert_company_dependent(env, "product.template", "responsible_id")
|
14
|
+
openupgrade_180.convert_company_dependent(
|
15
|
+
env, "res.partner", "property_stock_customer"
|
16
|
+
)
|
17
|
+
openupgrade_180.convert_company_dependent(
|
18
|
+
env, "res.partner", "property_stock_supplier"
|
19
|
+
)
|
20
|
+
|
21
|
+
|
22
|
+
def _create_default_new_types_for_all_warehouses(env):
|
23
|
+
# method mainly based on _create_or_update_sequences_and_picking_types()
|
24
|
+
all_warehouses = env["stock.warehouse"].with_context(active_test=False).search([])
|
25
|
+
for wh in all_warehouses:
|
26
|
+
sequence_data = wh._get_sequence_values()
|
27
|
+
for field in ["qc_type_id", "store_type_id", "xdock_type_id"]:
|
28
|
+
# choose the next available color for the operation types of this warehouse
|
29
|
+
all_used_colors = [
|
30
|
+
res["color"]
|
31
|
+
for res in env["stock.picking.type"]
|
32
|
+
.with_context(active_test=False)
|
33
|
+
.search_read(
|
34
|
+
[("warehouse_id", "!=", False), ("color", "!=", False)],
|
35
|
+
["color"],
|
36
|
+
order="color",
|
37
|
+
)
|
38
|
+
]
|
39
|
+
available_colors = [
|
40
|
+
zef for zef in range(0, 12) if zef not in all_used_colors
|
41
|
+
]
|
42
|
+
color = available_colors[0] if available_colors else 0
|
43
|
+
# suit for each warehouse: reception, internal, pick, pack, ship
|
44
|
+
max_sequence = (
|
45
|
+
env["stock.picking.type"]
|
46
|
+
.with_context(active_test=False)
|
47
|
+
.search_read(
|
48
|
+
[("sequence", "!=", False)],
|
49
|
+
["sequence"],
|
50
|
+
limit=1,
|
51
|
+
order="sequence desc",
|
52
|
+
)
|
53
|
+
)
|
54
|
+
max_sequence = max_sequence and max_sequence[0]["sequence"] or 0
|
55
|
+
values = wh._get_picking_type_update_values()[field]
|
56
|
+
create_data, _ = wh._get_picking_type_create_values(max_sequence)
|
57
|
+
values.update(create_data[field])
|
58
|
+
sequence = env["ir.sequence"].create(sequence_data[field])
|
59
|
+
values.update(
|
60
|
+
warehouse_id=wh.id,
|
61
|
+
color=color,
|
62
|
+
sequence_id=sequence.id,
|
63
|
+
sequence=max_sequence + 1,
|
64
|
+
company_id=wh.company_id.id,
|
65
|
+
active=wh.active,
|
66
|
+
)
|
67
|
+
# create picking type
|
68
|
+
picking_type_id = env["stock.picking.type"].create(values).id
|
69
|
+
# update picking type for warehouse
|
70
|
+
wh.write({field: picking_type_id})
|
71
|
+
|
72
|
+
|
73
|
+
def _set_inter_company_locations(env):
|
74
|
+
"""See https://github.com/odoo/odoo/commit/08536d687880ca6d9ad5c37b639c0ad4c2599d74"""
|
75
|
+
companies = env["res.company"].search([])
|
76
|
+
if len(companies) > 1:
|
77
|
+
inter_company_location = env.ref("stock.stock_location_inter_company")
|
78
|
+
inactive = False
|
79
|
+
if not inter_company_location.active:
|
80
|
+
inactive = True
|
81
|
+
inter_company_location.sudo().write({"active": True})
|
82
|
+
for company in companies:
|
83
|
+
company.sudo()._set_per_company_inter_company_locations(
|
84
|
+
inter_company_location
|
85
|
+
)
|
86
|
+
if inactive:
|
87
|
+
# we leave everything as it was
|
88
|
+
inter_company_location.sudo().write({"active": False})
|
89
|
+
|
90
|
+
|
91
|
+
@openupgrade.migrate()
|
92
|
+
def migrate(env, version):
|
93
|
+
convert_company_dependent(env)
|
94
|
+
_create_default_new_types_for_all_warehouses(env)
|
95
|
+
_set_inter_company_locations(env)
|
96
|
+
openupgrade.load_data(env, "stock", "18.0.1.1/noupdate_changes.xml")
|
97
|
+
openupgrade.delete_records_safely_by_xml_id(
|
98
|
+
env, ["stock.property_stock_customer", "stock.property_stock_supplier"]
|
99
|
+
)
|
@@ -0,0 +1,81 @@
|
|
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
|
+
_field_renames = [
|
6
|
+
("stock.move", "stock_move", "location_dest_id", "location_final_id"),
|
7
|
+
(
|
8
|
+
"stock.warehouse.orderpoint",
|
9
|
+
"stock_warehouse_orderpoint",
|
10
|
+
"qty_to_order",
|
11
|
+
"qty_to_order_manual",
|
12
|
+
),
|
13
|
+
]
|
14
|
+
|
15
|
+
_xmlid_renames = [
|
16
|
+
("stock.stock_location_inter_wh", "stock.stock_location_inter_company"),
|
17
|
+
]
|
18
|
+
|
19
|
+
_new_columns = [
|
20
|
+
("product.template", "is_storable", "boolean", False),
|
21
|
+
("stock.move", "location_dest_id", "many2one"),
|
22
|
+
("stock.rule", "location_dest_from_rule", "boolean", False),
|
23
|
+
("stock.picking.type", "move_type", "selection", "direct"),
|
24
|
+
("stock.putaway.rule", "sublocation", "selection", "no"),
|
25
|
+
]
|
26
|
+
|
27
|
+
|
28
|
+
def fill_product_template_is_storable(env):
|
29
|
+
openupgrade.logged_query(
|
30
|
+
env.cr,
|
31
|
+
"""
|
32
|
+
UPDATE product_template
|
33
|
+
SET is_storable = TRUE, type = 'consu'
|
34
|
+
WHERE type = 'product'""",
|
35
|
+
)
|
36
|
+
|
37
|
+
|
38
|
+
def fill_stock_move_location_dest_id(env):
|
39
|
+
openupgrade.logged_query(
|
40
|
+
env.cr,
|
41
|
+
"""
|
42
|
+
UPDATE stock_move sm2
|
43
|
+
SET location_dest_id = COALESCE(sp.location_dest_id,
|
44
|
+
spt.default_location_dest_id, sm.location_final_id)
|
45
|
+
FROM stock_move sm
|
46
|
+
LEFT JOIN stock_picking sp ON sm.picking_id = sp.id
|
47
|
+
LEFT JOIN stock_picking_type spt ON sm.picking_type_id = spt.id
|
48
|
+
WHERE sm2.id = sm.id
|
49
|
+
""",
|
50
|
+
)
|
51
|
+
openupgrade.logged_query(
|
52
|
+
env.cr,
|
53
|
+
"""
|
54
|
+
UPDATE stock_rule sr
|
55
|
+
SET location_dest_from_rule = TRUE
|
56
|
+
FROM stock_move sm
|
57
|
+
WHERE sm.rule_id = sr.id
|
58
|
+
AND sm.location_dest_id != sm.location_final_id
|
59
|
+
AND sr.action IN ('pull', 'pull_push')
|
60
|
+
""",
|
61
|
+
)
|
62
|
+
|
63
|
+
|
64
|
+
def fill_stock_putaway_rule_sublocation(env):
|
65
|
+
openupgrade.logged_query(
|
66
|
+
env.cr,
|
67
|
+
"""
|
68
|
+
UPDATE stock_putaway_rule
|
69
|
+
SET sublocation = 'closest_location'
|
70
|
+
WHERE storage_category_id is not null""",
|
71
|
+
)
|
72
|
+
|
73
|
+
|
74
|
+
@openupgrade.migrate()
|
75
|
+
def migrate(env, version=None):
|
76
|
+
openupgrade.rename_fields(env, _field_renames)
|
77
|
+
openupgrade.rename_xmlids(env.cr, _xmlid_renames)
|
78
|
+
openupgrade.add_columns(env, _new_columns)
|
79
|
+
fill_product_template_is_storable(env)
|
80
|
+
fill_stock_move_location_dest_id(env)
|
81
|
+
fill_stock_putaway_rule_sublocation(env)
|
@@ -0,0 +1,139 @@
|
|
1
|
+
---Models in module 'stock'---
|
2
|
+
obsolete model stock.assign.serial [transient]
|
3
|
+
obsolete model stock.scheduler.compute [transient]
|
4
|
+
new model stock.lot.report [sql_view]
|
5
|
+
new model stock.replenish.mixin [abstract]
|
6
|
+
new model stock.scrap.reason.tag
|
7
|
+
# NOTHING TO DO
|
8
|
+
|
9
|
+
---Fields in module 'stock'---
|
10
|
+
stock / product.template / detailed_type (False) : DEL selection_keys: ['consu', 'product', 'service'], mode: modify
|
11
|
+
stock / product.template / type (False) : DEL selection_keys: ['consu', 'product', 'service'], mode: modify
|
12
|
+
stock / product.template / is_storable (boolean) : NEW hasdefault: default
|
13
|
+
# DONE: pre-migration:: pre-create and fill is_storable and move 'product' to 'consu'
|
14
|
+
|
15
|
+
stock / product.template / route_from_categ_ids (many2many): table is now 'False' ('stock.route')
|
16
|
+
# NOTHING TO DO: related field
|
17
|
+
|
18
|
+
stock / product.template / property_stock_inventory (many2one): needs conversion to v18-style company dependent
|
19
|
+
stock / product.template / property_stock_production (many2one): needs conversion to v18-style company dependent
|
20
|
+
stock / product.template / responsible_id (many2one) : needs conversion to v18-style company dependent
|
21
|
+
stock / res.partner / property_stock_customer (many2one): needs conversion to v18-style company dependent
|
22
|
+
stock / res.partner / property_stock_supplier (many2one): needs conversion to v18-style company dependent
|
23
|
+
# DONE: post-migration: used openupgrade_180.convert_company_dependent
|
24
|
+
|
25
|
+
stock / stock.location / return_location (boolean) : DEL
|
26
|
+
stock / stock.picking.type / default_location_return_id (many2one): DEL relation: stock.location
|
27
|
+
# NOTHING TO DO: now is using _can_return() method instead
|
28
|
+
|
29
|
+
stock / stock.move / location_dest_id (many2one) : now a function
|
30
|
+
stock / stock.move / location_final_id (many2one) : NEW relation: stock.location
|
31
|
+
stock / stock.rule / location_dest_from_rule (boolean): NEW hasdefault: default
|
32
|
+
# DONE: pre-migration: rename location_dest_id to location_final_id, pre-create and fill location_dest_id and location_dest_from_rule
|
33
|
+
|
34
|
+
stock / stock.move / never_product_template_attribute_value_ids (many2many): NEW relation: product.template.attribute.value
|
35
|
+
# NOTHING TO DO: new technical feature
|
36
|
+
|
37
|
+
stock / stock.move.line / product_category_name (char) : not stored anymore
|
38
|
+
# NOTHING TO DO
|
39
|
+
|
40
|
+
stock / stock.picking / search_date_category (selection): NEW selection_keys: ['after', 'before', 'day_1', 'day_2', 'today', 'yesterday'], stored: False
|
41
|
+
stock / stock.picking / shipping_weight (float) : previously in module stock_delivery
|
42
|
+
stock_delivery / stock.picking / shipping_weight (float) : not a function anymore
|
43
|
+
stock / stock.picking / weight_bulk (float) : previously in module stock_delivery
|
44
|
+
# NOTHING TO DO: not stored
|
45
|
+
|
46
|
+
stock / stock.picking.type / _order : _order is now 'is_favorite desc, sequence, id' ('sequence, id')
|
47
|
+
# NOTHING TO DO: is_favorite is not stored
|
48
|
+
|
49
|
+
stock / stock.picking.type / default_location_dest_id (many2one): now required
|
50
|
+
stock / stock.picking.type / default_location_src_id (many2one): now required
|
51
|
+
# NOTHING TO DO? (not sure if we can assure it someway)
|
52
|
+
|
53
|
+
stock / stock.picking.type / favorite_user_ids (many2many) : NEW relation: res.users
|
54
|
+
# NOTHING TO DO: new feature
|
55
|
+
|
56
|
+
stock / stock.picking.type / move_type (selection) : NEW required, selection_keys: ['direct', 'one'], hasdefault: default
|
57
|
+
# DONE: pre-migration: pre-create and fill it with default 'direct'
|
58
|
+
|
59
|
+
stock / stock.picking.type / show_reserved (boolean) : DEL
|
60
|
+
# NOTHING TO DO: obsolete, see https://github.com/odoo/odoo/commit/54a795bf11d1ef5d791e587b0c9e4d260b97a79d
|
61
|
+
|
62
|
+
stock / stock.putaway.rule / sublocation (selection) : NEW selection_keys: ['closest_location', 'last_used', 'no'], hasdefault: default
|
63
|
+
# DONE: pre-migration: pre-create and fill it ('no' by default, 'closest_location' if storage_category_id is not null)
|
64
|
+
|
65
|
+
stock / stock.quant.package / location_id (many2one) : not a function anymore
|
66
|
+
# NOTHING TO DO: not sure why marked this way, it's the same in both v17 and v18
|
67
|
+
|
68
|
+
stock / stock.quant.package / shipping_weight (float) : previously in module stock_delivery
|
69
|
+
# NOTHING TO DO
|
70
|
+
|
71
|
+
stock / stock.rule / push_domain (char) : NEW
|
72
|
+
# NOTHING TO DO: new feature
|
73
|
+
|
74
|
+
stock / stock.scrap / scrap_reason_tag_ids (many2many): NEW relation: stock.scrap.reason.tag
|
75
|
+
stock / stock.scrap.reason.tag / color (char) : NEW hasdefault: default
|
76
|
+
stock / stock.scrap.reason.tag / name (char) : NEW required
|
77
|
+
stock / stock.scrap.reason.tag / sequence (integer) : NEW hasdefault: default
|
78
|
+
# NOTHING TO DO: new feature
|
79
|
+
|
80
|
+
stock / stock.warehouse / qc_type_id (many2one) : NEW relation: stock.picking.type
|
81
|
+
stock / stock.warehouse / store_type_id (many2one) : NEW relation: stock.picking.type
|
82
|
+
stock / stock.warehouse / xdock_type_id (many2one) : NEW relation: stock.picking.type
|
83
|
+
# DONE: post-migration: created / updated default picking types for all warehouses
|
84
|
+
|
85
|
+
stock / stock.warehouse.orderpoint / qty_to_order (float) : not stored anymore
|
86
|
+
stock / stock.warehouse.orderpoint / qty_to_order (float) : now a function
|
87
|
+
stock / stock.warehouse.orderpoint / qty_to_order_manual (float) : NEW
|
88
|
+
# DONE: pre-migration: rename qty_to_order to qty_to_order_manual
|
89
|
+
|
90
|
+
---XML records in module 'stock'---
|
91
|
+
NEW digest.tip: stock.digest_tip_stock_1
|
92
|
+
NEW ir.actions.act_window: stock.action_get_picking_type_ready_moves
|
93
|
+
NEW ir.actions.act_window: stock.action_inventory_at_date
|
94
|
+
NEW ir.actions.act_window: stock.action_lot_report
|
95
|
+
NEW ir.actions.act_window: stock.action_picking_tree_graph
|
96
|
+
# NOTHING TO DO
|
97
|
+
|
98
|
+
ir.actions.act_window: stock.stock_picking_action_picking_type (deleted domain)
|
99
|
+
# NOTHING TO DO: domain was already empty
|
100
|
+
|
101
|
+
DEL ir.actions.act_window: stock.act_assign_serial_numbers
|
102
|
+
DEL ir.actions.act_window: stock.action_procurement_compute
|
103
|
+
NEW ir.actions.server: stock.action_install_barcode
|
104
|
+
NEW ir.actions.server: stock.action_print_labels
|
105
|
+
NEW ir.actions.server: stock.click_dashboard_graph
|
106
|
+
NEW ir.actions.server: stock.method_action_picking_tree_incoming
|
107
|
+
NEW ir.actions.server: stock.method_action_picking_tree_internal
|
108
|
+
NEW ir.actions.server: stock.method_action_picking_tree_outgoing
|
109
|
+
NEW ir.actions.server: stock.stock_split_picking
|
110
|
+
NEW ir.config_parameter: stock.barcode_separator (noupdate)
|
111
|
+
NEW ir.model.access: stock.access_stock_inventory_adjustment_name_manager
|
112
|
+
NEW ir.model.access: stock.access_stock_inventory_adjustment_name_user
|
113
|
+
NEW ir.model.access: stock.access_stock_location_all_user
|
114
|
+
NEW ir.model.access: stock.access_stock_lot_report
|
115
|
+
NEW ir.model.access: stock.access_stock_scrap_reason_tag_manager
|
116
|
+
NEW ir.model.access: stock.access_stock_scrap_reason_tag_user
|
117
|
+
NEW ir.model.access: stock.access_update_product_attribute_value_stock_manager
|
118
|
+
DEL ir.model.access: stock.access_stock_assign_serial
|
119
|
+
DEL ir.model.access: stock.access_stock_inventory_adjustment_name
|
120
|
+
DEL ir.model.access: stock.access_stock_scheduler_compute
|
121
|
+
NEW ir.model.constraint: stock.constraint_stock_scrap_reason_tag_name_uniq
|
122
|
+
DEL ir.ui.menu: stock.menu_reordering_rules_config
|
123
|
+
NEW ir.ui.view: stock.help_message_template
|
124
|
+
NEW ir.ui.view: stock.product_template_search_view_inherit_stock
|
125
|
+
NEW ir.ui.view: stock.search_customer_lot_filter
|
126
|
+
NEW ir.ui.view: stock.stock_lot_customer_report_view_list
|
127
|
+
DEL ir.ui.view: stock.view_assign_serial_numbers
|
128
|
+
DEL ir.ui.view: stock.view_procurement_compute_wizard
|
129
|
+
DEL res.groups: stock.group_stock_picking_wave
|
130
|
+
DEL res.groups: stock.group_stock_storage_categories
|
131
|
+
# NOTHING TO DO
|
132
|
+
|
133
|
+
DEL ir.property: stock.property_stock_customer (noupdate)
|
134
|
+
DEL ir.property: stock.property_stock_supplier (noupdate)
|
135
|
+
# DONE: post-migration: safely delete records
|
136
|
+
|
137
|
+
NEW stock.location: stock.stock_location_inter_company (noupdate)
|
138
|
+
DEL stock.location: stock.stock_location_inter_wh (noupdate)
|
139
|
+
# DONE: pre-migration: rename xmlid
|
@@ -0,0 +1,23 @@
|
|
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
|
+
|
6
|
+
@openupgrade.migrate()
|
7
|
+
def migrate(env, version):
|
8
|
+
for company in env["res.company"].search([("chart_template", "!=", False)]):
|
9
|
+
if not company.country_id.code:
|
10
|
+
continue
|
11
|
+
module_name = "l10n_" + company.country_id.code.lower()
|
12
|
+
l10n_module = env["ir.module.module"].search(
|
13
|
+
[
|
14
|
+
("name", "=", module_name),
|
15
|
+
("state", "=", "installed"),
|
16
|
+
]
|
17
|
+
)
|
18
|
+
if not l10n_module:
|
19
|
+
continue
|
20
|
+
template_code = company.chart_template
|
21
|
+
ChartTemplate = env["account.chart.template"].with_company(company)
|
22
|
+
full_data = ChartTemplate._get_chart_template_data(template_code)
|
23
|
+
ChartTemplate._load_wip_accounts(company, full_data["res.company"])
|
@@ -0,0 +1,36 @@
|
|
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, openupgrade_180
|
4
|
+
|
5
|
+
|
6
|
+
def convert_company_dependent(env):
|
7
|
+
openupgrade_180.convert_company_dependent(
|
8
|
+
env, "product.category", "property_cost_method"
|
9
|
+
)
|
10
|
+
openupgrade_180.convert_company_dependent(
|
11
|
+
env, "product.category", "property_stock_account_input_categ_id"
|
12
|
+
)
|
13
|
+
openupgrade_180.convert_company_dependent(
|
14
|
+
env, "product.category", "property_stock_account_output_categ_id"
|
15
|
+
)
|
16
|
+
openupgrade_180.convert_company_dependent(
|
17
|
+
env, "product.category", "property_stock_journal"
|
18
|
+
)
|
19
|
+
openupgrade_180.convert_company_dependent(
|
20
|
+
env, "product.category", "property_stock_valuation_account_id"
|
21
|
+
)
|
22
|
+
openupgrade_180.convert_company_dependent(
|
23
|
+
env, "product.category", "property_valuation"
|
24
|
+
)
|
25
|
+
|
26
|
+
|
27
|
+
@openupgrade.migrate()
|
28
|
+
def migrate(env, version):
|
29
|
+
convert_company_dependent(env)
|
30
|
+
openupgrade.delete_records_safely_by_xml_id(
|
31
|
+
env,
|
32
|
+
[
|
33
|
+
"stock_account.default_category_cost_method",
|
34
|
+
"stock_account.default_category_valuation",
|
35
|
+
],
|
36
|
+
)
|
@@ -0,0 +1,22 @@
|
|
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
|
+
|
6
|
+
def delete_property_xmlids(env):
|
7
|
+
# avoid conflict in in _create_default_stock_accounts_properties
|
8
|
+
# they changed records from ir.property to ir.default
|
9
|
+
for field in [
|
10
|
+
"property_stock_account_output_categ_id",
|
11
|
+
"property_stock_account_input_categ_id",
|
12
|
+
]:
|
13
|
+
imd = env["ir.model.data"].search(
|
14
|
+
[("module", "=", "stock_account"), ("name", "=", field)]
|
15
|
+
)
|
16
|
+
if imd:
|
17
|
+
imd.unlink()
|
18
|
+
|
19
|
+
|
20
|
+
@openupgrade.migrate()
|
21
|
+
def migrate(env, version):
|
22
|
+
delete_property_xmlids(env)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
---Models in module 'stock_account'---
|
2
|
+
---Fields in module 'stock_account'---
|
3
|
+
stock_account / product.category / property_cost_method (selection): needs conversion to v18-style company dependent
|
4
|
+
stock_account / product.category / property_stock_account_input_categ_id (many2one): needs conversion to v18-style company dependent
|
5
|
+
stock_account / product.category / property_stock_account_output_categ_id (many2one): needs conversion to v18-style company dependent
|
6
|
+
stock_account / product.category / property_stock_journal (many2one): needs conversion to v18-style company dependent
|
7
|
+
stock_account / product.category / property_stock_valuation_account_id (many2one): needs conversion to v18-style company dependent
|
8
|
+
stock_account / product.category / property_valuation (selection): needs conversion to v18-style company dependent
|
9
|
+
# DONE: post-migration: used openupgrade_180.convert_company_dependent
|
10
|
+
|
11
|
+
stock_account / res.company / account_production_wip_account_id (many2one): NEW relation: account.account
|
12
|
+
stock_account / res.company / account_production_wip_overhead_account_id (many2one): NEW relation: account.account
|
13
|
+
# DONE: end-migration: call _load_wip_accounts
|
14
|
+
|
15
|
+
stock_account / product.template / lot_valuated (boolean) : NEW hasdefault: compute
|
16
|
+
stock_account / stock.lot / standard_price (float) : NEW
|
17
|
+
stock_account / stock.lot / stock_valuation_layer_ids (one2many): NEW relation: stock.valuation.layer
|
18
|
+
stock_account / stock.valuation.layer / lot_id (many2one) : NEW relation: stock.lot
|
19
|
+
# NOTHING TO DO: new features
|
20
|
+
|
21
|
+
---XML records in module 'stock_account'---
|
22
|
+
NEW ir.actions.act_window: stock_account.action_revalue_layers
|
23
|
+
DEL ir.actions.act_window: stock_account.inventory_aging_action
|
24
|
+
# NOTHING TO DO
|
25
|
+
|
26
|
+
DEL ir.property: stock_account.default_category_cost_method (noupdate)
|
27
|
+
DEL ir.property: stock_account.default_category_valuation (noupdate)
|
28
|
+
# DONE: post-migration: delete old property safely (now it's an ir.default record created by ORM)
|
29
|
+
|
30
|
+
DEL ir.ui.menu: stock_account.menu_inventory_aging
|
31
|
+
NEW ir.ui.view: stock_account.view_picking_form
|
32
|
+
NEW ir.ui.view: stock_account.view_production_lot_form_stock_account
|
33
|
+
NEW ir.ui.view: stock_account.view_template_property_form_stock_account
|
34
|
+
# NOTHING TO DO
|
@@ -6,7 +6,7 @@ odoo/addons/openupgrade_scripts/readme/CONFIGURE.md,sha256=rnx8ADTYzVUB93PIG3Lib
|
|
6
6
|
odoo/addons/openupgrade_scripts/readme/DESCRIPTION.md,sha256=6hwHccovmE9cfaV7PQPvKUvNJa-f_Uc1wgXyL_SrYck,86
|
7
7
|
odoo/addons/openupgrade_scripts/readme/INSTALL.md,sha256=NDKVZRv0J8BTqcSTD7JwUXL_AY-cDJoegn5IUTbEOFk,113
|
8
8
|
odoo/addons/openupgrade_scripts/scripts/account/18.0.1.3/noupdate_changes.xml,sha256=1SneJujek6MgUrwI0rVHsDylugguPefT0IsNfQDdmhk,3897
|
9
|
-
odoo/addons/openupgrade_scripts/scripts/account/18.0.1.3/post-migration.py,sha256
|
9
|
+
odoo/addons/openupgrade_scripts/scripts/account/18.0.1.3/post-migration.py,sha256=1owo0nPgYcTKkcreMZXqpD7ncjX9NSksKvdpQmODCDA,6054
|
10
10
|
odoo/addons/openupgrade_scripts/scripts/account/18.0.1.3/pre-migration.py,sha256=PhJf_Lde2fk6EjaWUL_TmlGoPY--2WCT3zcbx1ZlaGU,6863
|
11
11
|
odoo/addons/openupgrade_scripts/scripts/account/18.0.1.3/upgrade_analysis.txt,sha256=vbyBRym4DSEQxqxhMH_InF37tEvmv4ZNXvHue0n3OW0,22056
|
12
12
|
odoo/addons/openupgrade_scripts/scripts/account/18.0.1.3/upgrade_analysis_work.txt,sha256=YrfcO8-DN1AlFM261lufp4yhGUyGL1G6_9MBEHnkqf8,25107
|
@@ -66,6 +66,7 @@ odoo/addons/openupgrade_scripts/scripts/base_setup/18.0.1.0/upgrade_analysis.txt
|
|
66
66
|
odoo/addons/openupgrade_scripts/scripts/base_setup/18.0.1.0/upgrade_analysis_work.txt,sha256=ZdJBECuFK-mQEKqxI-lNStawGIO5YPmiUJ3QWVtqUBE,333
|
67
67
|
odoo/addons/openupgrade_scripts/scripts/base_sparse_field/18.0.1.0/upgrade_analysis.txt,sha256=shg-2JSIpxi-K20IWUbWROaY5CNsHdGaBUbNizYU8dk,174
|
68
68
|
odoo/addons/openupgrade_scripts/scripts/base_vat/18.0.1.0/upgrade_analysis.txt,sha256=LXrUfYCz0k0VpKULEP3DmH2kYnO2BdMDh6T0HyyYPIc,147
|
69
|
+
odoo/addons/openupgrade_scripts/scripts/base_vat/18.0.1.0/upgrade_analysis_work.txt,sha256=G1hXSvAdx6XXjGtAmd-9ib2GBEoLdIqeinN0cTxE2uw,163
|
69
70
|
odoo/addons/openupgrade_scripts/scripts/board/18.0.1.0/upgrade_analysis.txt,sha256=Xl5TzyuBSsACKcv80s8z9wRqjM0jzYLnryGXjsa_H6A,138
|
70
71
|
odoo/addons/openupgrade_scripts/scripts/bus/18.0.1.0/upgrade_analysis.txt,sha256=Yy8XmQl4tpOeVWWhpZo5quFOOVwu7NauJvmuPyEiYRU,132
|
71
72
|
odoo/addons/openupgrade_scripts/scripts/calendar/18.0.1.1/noupdate_changes.xml,sha256=SjGqS0MfHf6LF__KFXX5u5h9W0KJo2UwhYYUZdpVjCs,23914
|
@@ -114,7 +115,10 @@ odoo/addons/openupgrade_scripts/scripts/google_account/18.0.1.0/upgrade_analysis
|
|
114
115
|
odoo/addons/openupgrade_scripts/scripts/google_calendar/18.0.1.0/upgrade_analysis.txt,sha256=iMeeIGefpSzSYdQz8N7VPB4kv43LmOuEjTz45kF1UAA,1898
|
115
116
|
odoo/addons/openupgrade_scripts/scripts/google_gmail/18.0.1.2/upgrade_analysis.txt,sha256=b1TWNWOfzOEpXDKKTyKhdJjTQxGbpL13YSubr1uIXKY,159
|
116
117
|
odoo/addons/openupgrade_scripts/scripts/hr/18.0.1.1/noupdate_changes.xml,sha256=_g7rno2TLcVA8xR5C1XaLQBjpLJjXudne5jhRUVmUs4,1106
|
118
|
+
odoo/addons/openupgrade_scripts/scripts/hr/18.0.1.1/post-migration.py,sha256=dmm0jm1RwjZb_JIpT1zHJa_rBZ8euEF4rR3Kv_3fh_I,358
|
119
|
+
odoo/addons/openupgrade_scripts/scripts/hr/18.0.1.1/pre-migration.py,sha256=EByvFmWejoFNEo2s9fozSGrrpE6ZURvjpDRUrB67oL4,1573
|
117
120
|
odoo/addons/openupgrade_scripts/scripts/hr/18.0.1.1/upgrade_analysis.txt,sha256=kKuy0qp3PThp9pBBA4gp8_VRXO_JQzvFfIMeylPnsvo,5059
|
121
|
+
odoo/addons/openupgrade_scripts/scripts/hr/18.0.1.1/upgrade_analysis_work.txt,sha256=XiSQbufmJfTgyBTWG8LPQ8L59QK1Z20cbw1Iuc8Tl2c,5320
|
118
122
|
odoo/addons/openupgrade_scripts/scripts/hr_attendance/18.0.2.0/upgrade_analysis.txt,sha256=fnRJlMoormu0_MXOVs9SwqRyTmz8Y0KUP_CdJq1jmYg,2387
|
119
123
|
odoo/addons/openupgrade_scripts/scripts/hr_calendar/18.0.1.0/upgrade_analysis.txt,sha256=dV6653kOoWySkXPgHvodW1MBxFJdvX-ABxneZaJGm6Y,361
|
120
124
|
odoo/addons/openupgrade_scripts/scripts/hr_contract/18.0.1.0/noupdate_changes.xml,sha256=PkV4DydJ8vfXgFiRWKfxyy4NouAUSO32YafYq4MGLjw,257
|
@@ -192,6 +196,7 @@ odoo/addons/openupgrade_scripts/scripts/l10n_ee/18.0.1.2/upgrade_analysis.txt,sh
|
|
192
196
|
odoo/addons/openupgrade_scripts/scripts/l10n_eg/18.0.1.0/upgrade_analysis.txt,sha256=51_t54Tm_IwWUUFvtrB3XmMNkzLggWl2_bb3iSckLGE,144
|
193
197
|
odoo/addons/openupgrade_scripts/scripts/l10n_eg_edi_eta/18.0.0.2/upgrade_analysis.txt,sha256=f2AaXZRdCljxh7HjEHarlfgonOcm-NqVuLmhfAR_y4c,168
|
194
198
|
odoo/addons/openupgrade_scripts/scripts/l10n_es/18.0.5.4/upgrade_analysis.txt,sha256=9M4rNqV6rvP2uFZtXPAOLlSONYBzZS2RT_35vSClxSs,4212
|
199
|
+
odoo/addons/openupgrade_scripts/scripts/l10n_es/18.0.5.4/upgrade_analysis_work.txt,sha256=qSYnZ6mWmGu1FeE_Z2Tbi3LYfcEjkxuwo-BWjldcxKs,4245
|
195
200
|
odoo/addons/openupgrade_scripts/scripts/l10n_es_edi_facturae/18.0.1.0/upgrade_analysis.txt,sha256=u_6KlmBB8ePuBHndermTbiQCuEBdSnpcyFrcvm9EtNk,7280
|
196
201
|
odoo/addons/openupgrade_scripts/scripts/l10n_es_edi_sii/18.0.1.1/upgrade_analysis.txt,sha256=cU_8rPaLN5uBVOBEwAaaJs00-ZoLVT1hK5CQBmZ9M4E,2573
|
197
202
|
odoo/addons/openupgrade_scripts/scripts/l10n_es_edi_tbai/18.0.1.1/upgrade_analysis.txt,sha256=3cJ1IutooQ4lIUUNZ24alWY7ifMon4_5TYUPgHop3N8,3021
|
@@ -404,7 +409,10 @@ odoo/addons/openupgrade_scripts/scripts/project_timesheet_holidays/18.0.1.0/upgr
|
|
404
409
|
odoo/addons/openupgrade_scripts/scripts/project_todo/18.0.1.0/noupdate_changes.xml,sha256=T2_NPrJLpea-bVxlENwmZHOyNKQeN7HUCNI2UVcxlnw,5561
|
405
410
|
odoo/addons/openupgrade_scripts/scripts/project_todo/18.0.1.0/upgrade_analysis.txt,sha256=XmVoWbJznxZPygiq6awrsJkLPoltoUAjxxHPf5etKlw,465
|
406
411
|
odoo/addons/openupgrade_scripts/scripts/purchase/18.0.1.2/noupdate_changes.xml,sha256=xGGVoZl05obHeSSwfN1KPQcufevlxNgL6rKmvRIyqDU,2256
|
412
|
+
odoo/addons/openupgrade_scripts/scripts/purchase/18.0.1.2/post-migration.py,sha256=unDAHUzzbqyJP1cFbrSLKxefmmWFcC0UYlDCALazy-U,1003
|
413
|
+
odoo/addons/openupgrade_scripts/scripts/purchase/18.0.1.2/pre-migration.py,sha256=HxbROa1GN7CENDBRBbBBi9jO97Y4CogKR7TO388P8Hs,763
|
407
414
|
odoo/addons/openupgrade_scripts/scripts/purchase/18.0.1.2/upgrade_analysis.txt,sha256=qFZcna2eRbIcTDSv5TyJQKfJsIePI4Z1mCukGfxlLlQ,2554
|
415
|
+
odoo/addons/openupgrade_scripts/scripts/purchase/18.0.1.2/upgrade_analysis_work.txt,sha256=qYY_80OGXo303eFurAtAaYXIec638Zy40Ie-Jg2mtOM,3006
|
408
416
|
odoo/addons/openupgrade_scripts/scripts/purchase_edi_ubl_bis3/18.0.1.0/upgrade_analysis.txt,sha256=uysFx3NDehxGwCKjXp3Ldacyz4V-I7E64Fm40Fnh5wI,895
|
409
417
|
odoo/addons/openupgrade_scripts/scripts/purchase_mrp/18.0.1.0/upgrade_analysis.txt,sha256=s0eoIIo1yB8XyLS0MNqcjE3IkZSQ-r4l4jVya3V6GFs,159
|
410
418
|
odoo/addons/openupgrade_scripts/scripts/purchase_product_matrix/18.0.1.0/upgrade_analysis.txt,sha256=obvxp1mgxodP6rjNo4iQu45-Tt6Dec70_Tq-nKHYdM0,466
|
@@ -421,10 +429,15 @@ odoo/addons/openupgrade_scripts/scripts/resource/18.0.1.1/upgrade_analysis.txt,s
|
|
421
429
|
odoo/addons/openupgrade_scripts/scripts/resource/18.0.1.1/upgrade_analysis_work.txt,sha256=1Mlqxp205WZTXosQuKyETeoqToAXPadSA9Sg7Mk5uQI,464
|
422
430
|
odoo/addons/openupgrade_scripts/scripts/resource_mail/18.0.1.0/upgrade_analysis.txt,sha256=sgtF4Q_GF86a4zLOB9HX1HnU5mPj_hPWyT54gM3bU7w,162
|
423
431
|
odoo/addons/openupgrade_scripts/scripts/resource_mail/18.0.1.0/upgrade_analysis_work.txt,sha256=lVtnhpENuiCrKqav2o8fwJF5hv2CT5rZEuHu8IjeVwY,178
|
432
|
+
odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/end-migration.py,sha256=sU91wzwF4aYz_xx9Vt0gWsgB0ZlY3BB91qzz1CLwEyQ,1848
|
424
433
|
odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/noupdate_changes.xml,sha256=22xjrfNR9uX7YWGv4cuLmrnwJlqHa9jdOg6IPp5RnO4,15888
|
434
|
+
odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/post-migration.py,sha256=nw1z4mKNcws5LNxuvyDs9EgB26NAtKAGsmy2tq_DiW0,819
|
435
|
+
odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/pre-migration.py,sha256=0KR_7FtOfQMT7l3xedoda4FGpjFDaKcWcEq_3gyYuPY,981
|
425
436
|
odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/upgrade_analysis.txt,sha256=Zrp9xnFBDxHkINEJZjJgeTv7Ws0xVdadb9d9vIbQkiA,4458
|
437
|
+
odoo/addons/openupgrade_scripts/scripts/sale/18.0.1.2/upgrade_analysis_work.txt,sha256=_zKUwOKNSO-IThuLSi9R64SMEPfpvA2zail066ACsZw,5170
|
426
438
|
odoo/addons/openupgrade_scripts/scripts/sale_async_emails/18.0.1.0/upgrade_analysis.txt,sha256=kY93alnS-FPYSRIZdYl4Qcnns27GpJ95evr0XmCBLuA,174
|
427
439
|
odoo/addons/openupgrade_scripts/scripts/sale_crm/18.0.1.0/upgrade_analysis.txt,sha256=lv8jHV4r15aW7GmffXmW3R6DrZAoKEC60trv5mjtbdU,147
|
440
|
+
odoo/addons/openupgrade_scripts/scripts/sale_crm/18.0.1.0/upgrade_analysis_work.txt,sha256=wmjKSpCaW6ientHM3WMAfbnXTuvofeXNPLN4guTEv0U,163
|
428
441
|
odoo/addons/openupgrade_scripts/scripts/sale_edi_ubl/18.0.1.0/upgrade_analysis.txt,sha256=Ic9wauo6hAghlyKhAiXFfOmkIos6SghxBK6bbeL_bIU,199
|
429
442
|
odoo/addons/openupgrade_scripts/scripts/sale_expense/18.0.1.0/upgrade_analysis.txt,sha256=fmL9ehU0qjB23ZWgU66K05YBEvF1kjLmbV3p28-CU3M,159
|
430
443
|
odoo/addons/openupgrade_scripts/scripts/sale_expense_margin/18.0.1.0/upgrade_analysis.txt,sha256=9d62c8OD-bC7sknkGNfwteGPhnmi9OnL7DDCGu8F-Po,180
|
@@ -439,7 +452,10 @@ odoo/addons/openupgrade_scripts/scripts/sale_product_matrix/18.0.1.0/upgrade_ana
|
|
439
452
|
odoo/addons/openupgrade_scripts/scripts/sale_project/18.0.1.0/upgrade_analysis.txt,sha256=9KgSX5UNQHVbLInxyNxStXas-JmCv98hub3wWM9x-jo,2646
|
440
453
|
odoo/addons/openupgrade_scripts/scripts/sale_purchase/18.0.1.0/upgrade_analysis.txt,sha256=vuc0cBM74XVqfBQyb7Ncpr4U3FEs7bY5FUqXHzXPm7I,245
|
441
454
|
odoo/addons/openupgrade_scripts/scripts/sale_service/18.0.1.0/upgrade_analysis.txt,sha256=aZz8BN0dfotG8o04pLNWHZW-SOa8fWI4iNfbSjV8mgI,159
|
455
|
+
odoo/addons/openupgrade_scripts/scripts/sale_stock/18.0.1.0/post-migration.py,sha256=QhAGk_EYZXHBa4iw5kZ5WXrpMTzVRjcyys6XpQ39lFE,395
|
456
|
+
odoo/addons/openupgrade_scripts/scripts/sale_stock/18.0.1.0/pre-migration.py,sha256=uck-mNWhW_y1XN3G1HGSQpNBpBHYVwZezt_fD8zADrU,2116
|
442
457
|
odoo/addons/openupgrade_scripts/scripts/sale_stock/18.0.1.0/upgrade_analysis.txt,sha256=RwUr5aCoaKeqbxyGcsCr87a2NjixvvIWSPotRWFwsVI,796
|
458
|
+
odoo/addons/openupgrade_scripts/scripts/sale_stock/18.0.1.0/upgrade_analysis_work.txt,sha256=LU3xUMURljn9AQba_G14pBr0XV6RNJcSwzqHugxU-xg,945
|
443
459
|
odoo/addons/openupgrade_scripts/scripts/sale_timesheet/18.0.1.0/upgrade_analysis.txt,sha256=9BvRKELhpDh-lgxHjpW-NUEE5b4PT98qasabwHwWfpI,1875
|
444
460
|
odoo/addons/openupgrade_scripts/scripts/sales_team/18.0.1.1/post-migration.py,sha256=lsz6vqm1VRr8E2YKj0IN9NaA4i1hBUy1IdZxERJsCyc,301
|
445
461
|
odoo/addons/openupgrade_scripts/scripts/sales_team/18.0.1.1/upgrade_analysis.txt,sha256=VOk4EzkUmzQrgbyfJKD9HsloFOmoT_oO9ulNb9S4CHY,311
|
@@ -456,8 +472,15 @@ odoo/addons/openupgrade_scripts/scripts/spreadsheet_dashboard/18.0.1.0/upgrade_a
|
|
456
472
|
odoo/addons/openupgrade_scripts/scripts/spreadsheet_dashboard_pos_restaurant/18.0.1.0/upgrade_analysis.txt,sha256=2sp42OSaBEMKrEhPPst4IxjffGe_2wj8nU_QM1uY3m0,292
|
457
473
|
odoo/addons/openupgrade_scripts/scripts/spreadsheet_dashboard_stock_account/18.0.1.0/upgrade_analysis.txt,sha256=iJhZOolILwgrkATpb0o6L7h9lCAK8NA3fVSmO2ST1HU,394
|
458
474
|
odoo/addons/openupgrade_scripts/scripts/stock/18.0.1.1/noupdate_changes.xml,sha256=D5zrp_FcweU-CigDEwOGh0yIrn7lRkhfXVaUzeq7pko,209
|
475
|
+
odoo/addons/openupgrade_scripts/scripts/stock/18.0.1.1/post-migration.py,sha256=J_cwgQUx5BdHCdlO1c4AJoanaklhPQbjuxLK38la1_c,4112
|
476
|
+
odoo/addons/openupgrade_scripts/scripts/stock/18.0.1.1/pre-migration.py,sha256=-Qn6hUuHJwJBh3pakZ8XR49EX50b0U4H6Mtm71I_qqg,2415
|
459
477
|
odoo/addons/openupgrade_scripts/scripts/stock/18.0.1.1/upgrade_analysis.txt,sha256=7StsiWfSuZCHPygChCsOC2bQM3pUskwMq181WofeNF8,7061
|
478
|
+
odoo/addons/openupgrade_scripts/scripts/stock/18.0.1.1/upgrade_analysis_work.txt,sha256=AI7RvmuykQnlxDB4GmGsehDq7WZm9J1BZtzMcCpAoJE,8449
|
479
|
+
odoo/addons/openupgrade_scripts/scripts/stock_account/18.0.1.1/end-migration.py,sha256=opAeXNeSconzN37tBDW9tMPMrb4PrHJ0MH6-88yJ28o,925
|
480
|
+
odoo/addons/openupgrade_scripts/scripts/stock_account/18.0.1.1/post-migration.py,sha256=Rtfpey0dONHUXyswMrvGK9MlwSJyal2HgfFloO4Dhs0,1213
|
481
|
+
odoo/addons/openupgrade_scripts/scripts/stock_account/18.0.1.1/pre-migration.py,sha256=zWOya4IKLGlpWE0pVcTRh7_A5SfKA77Ro8uAHMJ23Jc,698
|
460
482
|
odoo/addons/openupgrade_scripts/scripts/stock_account/18.0.1.1/upgrade_analysis.txt,sha256=gcIY6zJyEcnjzYpQnlk-Tp1_kZlPX51SlIaEvHD0J18,2066
|
483
|
+
odoo/addons/openupgrade_scripts/scripts/stock_account/18.0.1.1/upgrade_analysis_work.txt,sha256=eQHOB1lO4QjTyERt4RG1uP5XjNWIP_wzHjSpvNcCS4c,2349
|
461
484
|
odoo/addons/openupgrade_scripts/scripts/stock_delivery/18.0.1.0/upgrade_analysis.txt,sha256=Ld27ATWZZEPNc1b4S8iowPbMPfia2ZB1KTU9QdqWBnk,476
|
462
485
|
odoo/addons/openupgrade_scripts/scripts/stock_dropshipping/18.0.1.0/upgrade_analysis.txt,sha256=DBMf7nszzJNHE1R2i_1f1tCr779hqsVzZ-p4EN9laaU,198
|
463
486
|
odoo/addons/openupgrade_scripts/scripts/stock_fleet/18.0.1.0/upgrade_analysis.txt,sha256=HMq6lVXyu5E8Dt8ow1hwGIxf6XwkrZHZgpYhGubA1dY,1779
|
@@ -525,7 +548,7 @@ odoo/addons/openupgrade_scripts/scripts/website_slides_survey/18.0.1.0/upgrade_a
|
|
525
548
|
odoo/addons/openupgrade_scripts/static/description/banner.png,sha256=KTIBu4gfxeZVw9zjs_fivTgFEOeaAorlBxajmCA1p6k,26859
|
526
549
|
odoo/addons/openupgrade_scripts/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
|
527
550
|
odoo/addons/openupgrade_scripts/static/description/index.html,sha256=Jc0qAThlH5WnoSq6vPamjC8WyMkdo_9zkhDuU1qW1VI,12722
|
528
|
-
odoo_addon_openupgrade_scripts-18.0.1.0.0.
|
529
|
-
odoo_addon_openupgrade_scripts-18.0.1.0.0.
|
530
|
-
odoo_addon_openupgrade_scripts-18.0.1.0.0.
|
531
|
-
odoo_addon_openupgrade_scripts-18.0.1.0.0.
|
551
|
+
odoo_addon_openupgrade_scripts-18.0.1.0.0.97.dist-info/METADATA,sha256=yh5-JnC2IhwsS42bASprPWmMSJhrz4cg0ohOTAQvHpE,3774
|
552
|
+
odoo_addon_openupgrade_scripts-18.0.1.0.0.97.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
|
553
|
+
odoo_addon_openupgrade_scripts-18.0.1.0.0.97.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
|
554
|
+
odoo_addon_openupgrade_scripts-18.0.1.0.0.97.dist-info/RECORD,,
|
File without changes
|