diff --git a/docsource/modules180-190.rst b/docsource/modules180-190.rst index 51e5e68a5ffb..60bbc5fdb093 100644 --- a/docsource/modules180-190.rst +++ b/docsource/modules180-190.rst @@ -14,7 +14,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | account_edi |Nothing to do |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| account_edi_proxy_client | | | +| account_edi_proxy_client |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | account_edi_ubl_cii |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -24,7 +24,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | account_payment |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| account_peppol | | | +| account_peppol |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | |new| account_peppol_advanced_fields | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -48,7 +48,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | auth_passkey |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| |new| auth_passkey_portal | | | +| |new| auth_passkey_portal |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | auth_password_policy |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -102,7 +102,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | calendar_sms |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| certificate | |No DB layout changes. | +| certificate |Nothing to do |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ | cloud_storage | |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -120,15 +120,15 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | crm_livechat |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| crm_mail_plugin | | | +| crm_mail_plugin |Nothing to do |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| crm_sms | | | +| crm_sms |Nothing to do |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ | data_recycle | |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ | delivery |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| delivery_mondialrelay | | | +| delivery_mondialrelay |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | delivery_stock_picking_batch | |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -136,9 +136,9 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | event |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| event_booth | | | +| event_booth |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| event_booth_sale | | | +| event_booth_sale |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | event_crm |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -146,7 +146,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | event_product |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| event_sale |Nothing to do | | +| event_sale |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | event_sms | |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -202,7 +202,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | hr_recruitment |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| hr_recruitment_skills | | | +| hr_recruitment_skills |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | hr_recruitment_sms |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -210,9 +210,9 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | hr_skills |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| |new| hr_skills_event | | | +| |new| hr_skills_event |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| hr_skills_slides | | | +| hr_skills_slides |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | hr_skills_survey |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -710,7 +710,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | mail_group | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| mail_plugin | |No DB layout changes. | +| mail_plugin |Nothing to do |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ | maintenance |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -754,7 +754,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | mrp_landed_costs | |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| mrp_product_expiry | | | +| mrp_product_expiry |Nothing to do |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ | mrp_repair | |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -774,7 +774,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | partner_autocomplete |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| |new| partnership | | | +| |new| partnership |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | payment |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -806,13 +806,13 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | |new| payment_paymob | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| payment_paypal | | | +| payment_paypal |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | payment_razorpay | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | |del| payment_razorpay_oauth | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| |new| payment_redsys | | | +| |new| payment_redsys |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | payment_stripe |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -914,7 +914,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | product_email_template | |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| product_expiry | | | +| product_expiry |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | |del| product_images | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -928,7 +928,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | project_hr_expense |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| project_hr_skills | | | +| project_hr_skills |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | project_mail_plugin | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -1108,7 +1108,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | |new| survey_crm | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| theme_default | | | +| theme_default |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | transifex | |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -1186,7 +1186,7 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | website_links |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_livechat | | | +| website_livechat |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | website_mail |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -1216,9 +1216,9 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | |new| website_sale_collect_wishlist | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_sale_comparison | | | +| website_sale_comparison |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_sale_comparison_wishlist | | | +| website_sale_comparison_wishlist |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | website_sale_gelato | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ @@ -1228,21 +1228,21 @@ Module coverage 18.0 -> 19.0 +---------------------------------------------------+----------------------+-------------------------------------------------+ | website_sale_mondialrelay | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_sale_mrp | | | +| website_sale_mrp |Nothing to do |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_sale_slides | | | +| website_sale_slides |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_sale_stock | | | +| website_sale_stock |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_sale_stock_wishlist | |No DB layout changes. | +| website_sale_stock_wishlist |Nothing to do |No DB layout changes. | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_sale_wishlist | | | +| website_sale_wishlist |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | website_slides |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_slides_forum | | | +| website_slides_forum |Nothing to do | | +---------------------------------------------------+----------------------+-------------------------------------------------+ -| website_slides_survey | | | +| website_slides_survey |Done | | +---------------------------------------------------+----------------------+-------------------------------------------------+ | website_sms | | | +---------------------------------------------------+----------------------+-------------------------------------------------+ diff --git a/openupgrade_scripts/scripts/account/19.0.1.4/end-migration.py b/openupgrade_scripts/scripts/account/19.0.1.4/end-migration.py index 2c1b2f518d2d..61b22d11ebc8 100644 --- a/openupgrade_scripts/scripts/account/19.0.1.4/end-migration.py +++ b/openupgrade_scripts/scripts/account/19.0.1.4/end-migration.py @@ -1,3 +1,4 @@ +from markupsafe import Markup from openupgradelib import openupgrade @@ -16,6 +17,7 @@ def res_company(env): Set fields expense_account_id, income_account_id, price_difference_account_id from localization if not set elsewhere and the localization sets it """ + admin_channel = env.ref("mail.channel_admin", False) for company in env["res.company"].search([]): AccountChartTemplate = env["account.chart.template"].with_context( default_company_id=company.id, @@ -26,10 +28,14 @@ def res_company(env): chart_template_load=True, ) if company.chart_template not in AccountChartTemplate._template_register: - openupgrade.logger.error( - "chart template %s unknown (not yet migrated?)", - company.chart_template, - ) + if admin_channel: + admin_channel.message_post( + body=Markup( + "
Chart template {company.chart_template} unknown " + "(not yet migrated?)
" + ) + ) continue template_data = AccountChartTemplate._get_chart_template_data( company.chart_template @@ -54,4 +60,4 @@ def res_company(env): @openupgrade.migrate() def migrate(env, version): account_move_line_is_storno(env) - res_company(env) + # res_company(env) diff --git a/openupgrade_scripts/scripts/account_edi_proxy_client/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/account_edi_proxy_client/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..f62aa993f147 --- /dev/null +++ b/openupgrade_scripts/scripts/account_edi_proxy_client/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,7 @@ +---Models in module 'account_edi_proxy_client'--- +---Fields in module 'account_edi_proxy_client'--- +account_edi_proxy_client / account_edi_proxy_client.user / is_token_out_of_sync (boolean): NEW +account_edi_proxy_client / account_edi_proxy_client.user / token_sync_version (integer) : NEW +# NOTHING TO DO: empty values are fine for existing records + +---XML records in module 'account_edi_proxy_client'--- diff --git a/openupgrade_scripts/scripts/account_peppol/19.0.1.2/post-migration.py b/openupgrade_scripts/scripts/account_peppol/19.0.1.2/post-migration.py new file mode 100644 index 000000000000..3beff574f0f4 --- /dev/null +++ b/openupgrade_scripts/scripts/account_peppol/19.0.1.2/post-migration.py @@ -0,0 +1,22 @@ +# Copyright 2026 Hunki Enterprises BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from markupsafe import Markup +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + admin_channel = env.ref("mail.channel_admin") + if admin_channel and any( + c.account_peppol_proxy_state == "sender" for c in env["res.company"].search([]) + ): + admin_channel.message_post( + body=Markup( + "" + "Cannot automatically determine res.company#peppol_external_provider." + "You should fill this field manually or rerun the peppol wizard." + "
" + ) + ) diff --git a/openupgrade_scripts/scripts/account_peppol/19.0.1.2/pre-migration.py b/openupgrade_scripts/scripts/account_peppol/19.0.1.2/pre-migration.py new file mode 100644 index 000000000000..033116c5e1c7 --- /dev/null +++ b/openupgrade_scripts/scripts/account_peppol/19.0.1.2/pre-migration.py @@ -0,0 +1,22 @@ +# Copyright 2026 Hunki Enterprises BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + +copy_columns = { + "res_company": [ + ("account_peppol_proxy_state", None, None), + ] +} + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.copy_columns(env.cr, copy_columns) + openupgrade.map_values( + env.cr, + openupgrade.get_legacy_name("account_peppol_proxy_state"), + "account_peppol_proxy_state", + [("in_verification", "not_registered")], + table="res_company", + ) diff --git a/openupgrade_scripts/scripts/account_peppol/19.0.1.2/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/account_peppol/19.0.1.2/upgrade_analysis_work.txt new file mode 100644 index 000000000000..5da6998baf9e --- /dev/null +++ b/openupgrade_scripts/scripts/account_peppol/19.0.1.2/upgrade_analysis_work.txt @@ -0,0 +1,47 @@ +---Models in module 'account_peppol'--- +obsolete model account_peppol.service.wizard (renamed to peppol.config.wizard) [transient] +new model peppol.config.wizard (renamed from account_peppol.service.wizard) [transient] +# NOTHING TO DO + +---Fields in module 'account_peppol'--- +account_peppol / account_edi_proxy_client.user / peppol_verification_code (char): DEL +# NOTHING TO DO + +account_peppol / res.company / account_peppol_proxy_state (selection): selection_keys removed: [in_verification] +# DONE: mapped 'in_verification' to 'not_registered' + +account_peppol / res.company / peppol_activate_self_billing_sending (boolean): NEW +# NOTHING TO DO + +account_peppol / res.company / peppol_external_provider (char): NEW +# NOTHING TO DO: we don't know this and don't want to (probably can't) query external resources during migration + +account_peppol / res.company / peppol_metadata (json) : NEW +account_peppol / res.company / peppol_metadata_updated_at (datetime): NEW +# NOTHING TO DO: fields seem unused in CE + +account_peppol / res.company / peppol_self_billing_reception_journal_id (many2one): NEW relation: account.journal, isfunction: function, stored +# NOTHING TO DO: rely on ORM computation + +account_peppol_selfbilling / account.journal / is_self_billing (boolean) : module is now 'account' ('account_peppol_selfbilling') +# NOTHING TO DO + +---XML records in module 'account_peppol'--- +NEW ir.actions.client: account_peppol.action_peppol_auth_callback +NEW ir.cron: account_peppol.ir_cron_peppol_webhook_keepalive +NEW ir.model.access: account_peppol.access_peppol_config_wizard +DEL ir.model.access: account_peppol.account_peppol_service_wizard_system +NEW ir.ui.view: account_peppol.peppol_config_wizard_form +NEW ir.ui.view: account_peppol.portal_my_details +DEL ir.ui.view: account_peppol.account_journal_dashboard_kanban_view +DEL ir.ui.view: account_peppol.peppol_service_configuration +DEL ir.ui.view: account_peppol.portal_my_details_fields +DEL ir.ui.view: account_peppol_selfbilling.account_move_form_inherit_self_billing +DEL ir.ui.view: account_peppol_selfbilling.report_invoice_document +DEL ir.ui.view: account_peppol_selfbilling.view_account_journal_form_inherited +NEW mail.template: account_peppol.mail_template_peppol_registration +# NOTHING TO DO + +DEL mail.template: account_peppol_selfbilling.email_template_edi_self_billing_credit_note [renamed to account module] (noupdate) +DEL mail.template: account_peppol_selfbilling.email_template_edi_self_billing_invoice [renamed to account module] (noupdate) +# NOTHING TO DO: handled in account migration diff --git a/openupgrade_scripts/scripts/auth_passkey_portal/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/auth_passkey_portal/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..1fa301ee3ac6 --- /dev/null +++ b/openupgrade_scripts/scripts/auth_passkey_portal/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,5 @@ +---Models in module 'auth_passkey_portal'--- +---Fields in module 'auth_passkey_portal'--- +---XML records in module 'auth_passkey_portal'--- +NEW ir.ui.view: auth_passkey_portal.passkeys_portal_hook +# NOTHING TO DO diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_general_log.txt b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_general_log.txt index b8f25d5b523a..3bbe22e2839c 100644 --- a/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_general_log.txt +++ b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_general_log.txt @@ -130,8 +130,8 @@ new model website.page_options.mixin [module website] new model website.page_visibility_options.mixin [module website] new model website.technical.page [module website] ---Fields in module 'general'--- -# 14550 fields matched, -# Direct match: 14375 +# 14552 fields matched, +# Direct match: 14377 # Found in other module with different type: 0 # Found in other module: 143 # Found with different type: 32 diff --git a/openupgrade_scripts/scripts/delivery_mondialrelay/19.0.0.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/delivery_mondialrelay/19.0.0.1/upgrade_analysis_work.txt new file mode 100644 index 000000000000..dfd01f65ddbb --- /dev/null +++ b/openupgrade_scripts/scripts/delivery_mondialrelay/19.0.0.1/upgrade_analysis_work.txt @@ -0,0 +1,8 @@ +---Models in module 'delivery_mondialrelay'--- + +---Fields in module 'delivery_mondialrelay'--- + +---XML records in module 'delivery_mondialrelay'--- +NEW ir.ui.view: delivery_mondialrelay.address_card + +# NOTHING TO DO: noupdate=0 ir stuff diff --git a/openupgrade_scripts/scripts/event_booth/19.0.1.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/event_booth/19.0.1.1/upgrade_analysis_work.txt new file mode 100644 index 000000000000..5bcfb40a07e6 --- /dev/null +++ b/openupgrade_scripts/scripts/event_booth/19.0.1.1/upgrade_analysis_work.txt @@ -0,0 +1,8 @@ +---Models in module 'event_booth'--- + +---Fields in module 'event_booth'--- + +---XML records in module 'event_booth'--- +NEW ir.model.access: event_booth.access_event_booth_desk + +# NOTHING TO DO diff --git a/openupgrade_scripts/scripts/event_booth_sale/19.0.1.2/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/event_booth_sale/19.0.1.2/upgrade_analysis_work.txt new file mode 100644 index 000000000000..6291a90b16ec --- /dev/null +++ b/openupgrade_scripts/scripts/event_booth_sale/19.0.1.2/upgrade_analysis_work.txt @@ -0,0 +1,8 @@ +---Models in module 'event_booth_sale'--- + +---Fields in module 'event_booth_sale'--- +event_booth_sale / product.template / service_tracking (False) : selection_keys added: [partnership, repair] (most likely nothing to do) + +# NOTHING TO DO: selection values added by external modules + +---XML records in module 'event_booth_sale'--- diff --git a/openupgrade_scripts/scripts/event_sale/19.0.1.3/pre-migration.py b/openupgrade_scripts/scripts/event_sale/19.0.1.3/pre-migration.py new file mode 100644 index 000000000000..79b9e61b3b0b --- /dev/null +++ b/openupgrade_scripts/scripts/event_sale/19.0.1.3/pre-migration.py @@ -0,0 +1,11 @@ +# Copyright 2026 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.add_columns( + env, [("sale.order.line", "event_slot_id", "many2one", None, "sale_order_line")] + ) diff --git a/openupgrade_scripts/scripts/event_sale/19.0.1.3/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/event_sale/19.0.1.3/upgrade_analysis_work.txt index 764d052c8f43..c38bf9f0dc4d 100644 --- a/openupgrade_scripts/scripts/event_sale/19.0.1.3/upgrade_analysis_work.txt +++ b/openupgrade_scripts/scripts/event_sale/19.0.1.3/upgrade_analysis_work.txt @@ -3,9 +3,11 @@ ---Fields in module 'event_sale'--- event_sale / event.registration / sale_status (selection) : module is now 'event_product' ('event_sale') -event_sale / sale.order.line / event_slot_id (many2one) : NEW relation: event.slot, hasdefault: compute # NOTHING TO DO: field definition changes only, no migration of existing data is required. +event_sale / sale.order.line / event_slot_id (many2one) : NEW relation: event.slot, hasdefault: compute +# DONE: pre-migration: Pre-create column and nothing to field, as it's a new feature. + ---XML records in module 'event_sale'--- DEL ir.model.access: event_sale.access_product_product_event_manager DEL ir.model.access: event_sale.access_product_template_event_manager diff --git a/openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/post-migration.py b/openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/post-migration.py new file mode 100644 index 000000000000..297974b76338 --- /dev/null +++ b/openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/post-migration.py @@ -0,0 +1,13 @@ +# Copyright 2026 Hunki Enterprises BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.load_data( + env, + "hr_recruitment_skills", + "19.0.1.0/noupdate_changes.xml", + ) diff --git a/openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/pre-migration.py new file mode 100644 index 000000000000..5df7ee3dd2a8 --- /dev/null +++ b/openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/pre-migration.py @@ -0,0 +1,79 @@ +# Copyright 2026 Hunki Enterprises BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade, openupgrade_tools + +copy_columns = { + "hr_candidate_skill": [ + ("candidate_id", None, None), + ("create_date", "valid_from", "date"), + ], +} + +renamed_fields = [ + ("hr.applicant.skill", "hr_applicant_skill", "candidate_id", "applicant_id") +] + +renamed_models = [ + ("hr.candidate.skill", "hr.applicant.skill"), +] + +renamed_tables = [ + ("hr_candidate_skill", "hr_applicant_skill"), +] + + +def hr_applicant_skill(env): + """ + Set hr.applicant.skill#applicant_id (renamed candidate_id) from hr_applicant + """ + openupgrade.lift_constraints(env.cr, "hr_applicant_skill", "applicant_id") + openupgrade.logged_query( + env.cr, + """ + UPDATE hr_applicant_skill + SET applicant_id=hr_applicant.id + FROM hr_applicant + WHERE hr_applicant.candidate_id=hr_applicant_skill.applicant_id + """, + ) + + +def hr_applicant_skill_ids(env): + """ + Pre-create and fill hr.applicant#skill_ids + """ + openupgrade.logged_query( + env.cr, + """ + CREATE TABLE hr_applicant_hr_skill_rel ( + hr_applicant_id INTEGER NOT NULL, + hr_skill_id INTEGER NOT NULL, + PRIMARY KEY(hr_applicant_id, hr_skill_id) + ); + COMMENT ON TABLE hr_applicant_hr_skill_rel IS + 'RELATION BETWEEN hr_applicant AND hr_skill'; + CREATE INDEX ON hr_applicant_hr_skill_rel + (hr_skill_id, hr_applicant_id); + """, + ) + openupgrade.logged_query( + env.cr, + """ + INSERT INTO hr_applicant_hr_skill_rel (hr_applicant_id, hr_skill_id) + SELECT applicant_id, skill_id FROM hr_applicant_skill + """, + ) + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.copy_columns(env.cr, copy_columns) + openupgrade.rename_models(env.cr, renamed_models) + if openupgrade_tools.table_exists(env.cr, "hr_applicant_skill"): + # if the database has been migrated from v17, this table can exist already + renamed_tables[0:0] = [("hr_applicant_skill", None)] + openupgrade.rename_tables(env.cr, renamed_tables) + openupgrade.rename_fields(env, renamed_fields) + hr_applicant_skill(env) + hr_applicant_skill_ids(env) diff --git a/openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..11739120ac57 --- /dev/null +++ b/openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,54 @@ +---Models in module 'hr_recruitment_skills'--- +obsolete model hr.candidate.skill (renamed to hr.applicant.skill) +new model hr.applicant.skill (renamed from hr.candidate.skill) +# DONE: renamed in pre-migration + +---Fields in module 'hr_recruitment_skills'--- +hr_recruitment_skills / hr.applicant / applicant_skill_ids (one2many): NEW relation: hr.applicant.skill +# DONE: inverse of hr.applicant.skill#applicant_id + +hr_recruitment_skills / hr.applicant / current_applicant_skill_ids (one2many): NEW relation: hr.applicant.skill, hasdefault: compute, stored: False +# NOTHING TO DO: not stored + +hr_recruitment_skills / hr.applicant / skill_ids (many2many) : is now stored +hr_recruitment_skills / hr.applicant / skill_ids (many2many) : not related anymore +hr_recruitment_skills / hr.applicant / skill_ids (many2many) : now a function +hr_recruitment_skills / hr.applicant / skill_ids (many2many) : table is now 'hr_applicant_hr_skill_rel' ('False') +# DONE: created and filled table in pre-migration + +hr_recruitment_skills / hr.applicant.skill / applicant_id (many2one) : NEW relation: hr.applicant, required +# DONE: renamed and adjusted in pre-migration + +hr_recruitment_skills / hr.applicant.skill / display_warning_message (boolean): NEW +# NOTHING TO DO: UI field, probably shouldn't be stored in the first palce + +hr_recruitment_skills / hr.applicant.skill / valid_from (date) : NEW hasdefault: default +# DONE: set to create_date as v18 doesn't have a concept of apllicant skill validity + +hr_recruitment_skills / hr.applicant.skill / valid_to (date) : NEW +# NOTHING TO DO + +hr_recruitment_skills / hr.candidate / candidate_skill_ids (one2many): DEL relation: hr.candidate.skill +hr_recruitment_skills / hr.candidate / skill_ids (many2many) : DEL relation: hr.skill +hr_recruitment_skills / hr.candidate.skill / _order : _order is now 'skill_type_id, skill_level_id desc' ('skill_level_id') +hr_recruitment_skills / hr.candidate.skill / candidate_id (many2one) : DEL relation: hr.candidate, required +# NOTHING TO DO: obsolete models + +hr_recruitment_skills / hr.job / skill_ids (many2many) : module is now 'hr_skills' ('hr_recruitment_skills') +# NOTHING TO DO: handled in hr_skills + +---XML records in module 'hr_recruitment_skills'--- +NEW ir.actions.act_window: hr_recruitment_skills.action_find_matching_job +NEW ir.model.access: hr_recruitment_skills.access_hr_applicant_skill_interviewer +NEW ir.model.access: hr_recruitment_skills.access_hr_job_skill_recruitment_user +DEL ir.model.access: hr_recruitment_skills.access_hr_candidate_skill_interviewer +DEL ir.model.constraint: hr_recruitment_skills.constraint_hr_candidate_skill__unique_skill +NEW ir.ui.view: hr_recruitment_skills.crm_case_tree_view_inherit_hr_recruitment_skills +NEW ir.ui.view: hr_recruitment_skills.crm_case_tree_view_job +NEW ir.ui.view: hr_recruitment_skills.hr_job_list_inherit_hr_recruitment_skills +NEW ir.ui.view: hr_recruitment_skills.view_hr_job_form +DEL ir.ui.view: hr_recruitment_skills.hr_candidate_view_form +DEL ir.ui.view: hr_recruitment_skills.hr_candidate_view_search +DEL ir.ui.view: hr_recruitment_skills.hr_candidate_view_tree +DEL ir.ui.view: hr_recruitment_skills.hr_job_form_inherit_hr_recruitment_skills +# NOTHING TO DO diff --git a/openupgrade_scripts/scripts/hr_skills/19.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/hr_skills/19.0.1.0/pre-migration.py index 882527605941..76211119e540 100644 --- a/openupgrade_scripts/scripts/hr_skills/19.0.1.0/pre-migration.py +++ b/openupgrade_scripts/scripts/hr_skills/19.0.1.0/pre-migration.py @@ -6,8 +6,12 @@ _added_fields = [ ("valid_from", "hr.employee.skill", "hr_employee_skill", "date", None, "hr_skills"), ] +_renamed_xmlids = [ + ("hr_skills_slides.resume_type_training", "hr_skills.resume_type_training"), +] @openupgrade.migrate() def migrate(env, version): openupgrade.add_fields(env, _added_fields) + openupgrade.rename_xmlids(env.cr, _renamed_xmlids) diff --git a/openupgrade_scripts/scripts/hr_skills/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/hr_skills/19.0.1.0/upgrade_analysis_work.txt index 27609c3c784c..f4bac218533b 100644 --- a/openupgrade_scripts/scripts/hr_skills/19.0.1.0/upgrade_analysis_work.txt +++ b/openupgrade_scripts/scripts/hr_skills/19.0.1.0/upgrade_analysis_work.txt @@ -78,6 +78,9 @@ hr_skills_survey / hr.resume.line / department_id (many2one) : no ---XML records in module 'hr_skills'--- NEW hr.resume.line.type: hr_skills.resume_type_training [renamed from hr_skills_slides module] + +# DONE: renamed XML ID in pre-migration + DEL hr.resume.line.type: hr_skills.resume_type_social_media NEW ir.actions.act_window: hr_skills.action_hr_employee_skill_certification diff --git a/openupgrade_scripts/scripts/hr_skills_event/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/hr_skills_event/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..61f0d56d6e93 --- /dev/null +++ b/openupgrade_scripts/scripts/hr_skills_event/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,13 @@ +---Models in module 'hr_skills_event'--- +---Fields in module 'hr_skills_event'--- +hr_skills_event / hr.resume.line / course_type (False) : NEW selection_keys: ['external', 'onsite'], mode: modify +hr_skills_event / hr.resume.line / event_id (many2one) : NEW relation: event.event, isfunction: function, stored +# NOTHING TO DO + +---XML records in module 'hr_skills_event'--- +NEW ir.actions.act_window: hr_skills_event.event_training_onsite_action +NEW ir.ui.menu: hr_skills_event.menu_learnings_training_attendances_onsite +NEW ir.ui.view: hr_skills_event.resume_slides_line_view_form +NEW ir.ui.view: hr_skills_event.resume_slides_line_view_kanban +NEW ir.ui.view: hr_skills_event.resume_slides_line_view_list +# NOTHING TO DO diff --git a/openupgrade_scripts/scripts/hr_skills_slides/19.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/hr_skills_slides/19.0.1.0/pre-migration.py new file mode 100644 index 000000000000..56e105c2d35a --- /dev/null +++ b/openupgrade_scripts/scripts/hr_skills_slides/19.0.1.0/pre-migration.py @@ -0,0 +1,16 @@ +# Copyright 2026 Heliconia Solutions Pvt. Ltd. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.logged_query( + env.cr, + """ + UPDATE hr_resume_line + SET course_type = 'elearning' + WHERE channel_id IS NOT NULL + """, + ) diff --git a/openupgrade_scripts/scripts/hr_skills_slides/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/hr_skills_slides/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..1e8db05d080b --- /dev/null +++ b/openupgrade_scripts/scripts/hr_skills_slides/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,30 @@ +---Models in module 'hr_skills_slides'--- + +---Fields in module 'hr_skills_slides'--- +hr_skills_slides / hr.resume.line / channel_id (many2one) : now a function +hr_skills_slides / hr.resume.line / course_type (False) : NEW selection_keys: ['elearning', 'external', 'onsite'], mode: modify + +# DONE: pre-migration update course_type='elearning' where channel_id is not null + +hr_skills_slides / hr.resume.line / course_url (char) : not a function anymore +hr_skills_slides / hr.resume.line / course_url (char) : now related +hr_skills_slides / hr.resume.line / display_type (False) : DEL selection_keys: ['certification', 'classic', 'course'], mode: modify +hr_skills_slides / hr.resume.line / duration (False) : NEW mode: modify, hasdefault: compute + +# NOTHING TO DO + +---XML records in module 'hr_skills_slides'--- +DEL hr.resume.line.type: hr_skills_slides.resume_type_training [renamed to hr_skills module] + +# NOTHING TO DO: handled in hr_skills migration + +NEW ir.actions.act_window: hr_skills_slides.slide_channel_training_elearning_action +NEW ir.ui.menu: hr_skills_slides.menu_learnings_training_attendances_elearning +NEW ir.ui.view: hr_skills_slides.hr_employee_public_resume_view_form_inherit +NEW ir.ui.view: hr_skills_slides.hr_employee_public_view_form +NEW ir.ui.view: hr_skills_slides.hr_employee_resume_view_form_inherit +NEW ir.ui.view: hr_skills_slides.resume_slides_line_view_kanban +NEW ir.ui.view: hr_skills_slides.resume_slides_line_view_list +NEW ir.ui.view: hr_skills_slides.slide_channel_view_list + +# NOTHING TO DO diff --git a/openupgrade_scripts/scripts/l10n_cl/19.0.3.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/l10n_cl/19.0.3.1/upgrade_analysis.txt index c64c00464fd0..ad9647a19f2d 100644 --- a/openupgrade_scripts/scripts/l10n_cl/19.0.3.1/upgrade_analysis.txt +++ b/openupgrade_scripts/scripts/l10n_cl/19.0.3.1/upgrade_analysis.txt @@ -1,6 +1,13 @@ ---Models in module 'l10n_cl'--- ---Fields in module 'l10n_cl'--- ---XML records in module 'l10n_cl'--- +NEW account.account.tag: l10n_cl.account_tag_f29_020 +NEW account.account.tag: l10n_cl.account_tag_f29_048 +NEW account.account.tag: l10n_cl.account_tag_f29_062 +NEW account.account.tag: l10n_cl.account_tag_f29_077 +NEW account.account.tag: l10n_cl.account_tag_f29_142 +NEW account.account.tag: l10n_cl.account_tag_f29_755 +NEW product.product: l10n_cl.product_product_fees (noupdate) DEL uom.category: l10n_cl.uom_categ_energy (noupdate) DEL uom.category: l10n_cl.uom_categ_others (noupdate) DEL uom.uom: l10n_cl.product_uom_bar (noupdate) diff --git a/openupgrade_scripts/scripts/partnership/19.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/partnership/19.0.1.0/pre-migration.py new file mode 100644 index 000000000000..6b803b1f8d8c --- /dev/null +++ b/openupgrade_scripts/scripts/partnership/19.0.1.0/pre-migration.py @@ -0,0 +1,40 @@ +# Copyright 2026 Heliconia Solutions Pvt. Ltd. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + +xmlid_renames = [ + ( + "website_crm_partner_assign.res_partner_grade_action", + "partnership.res_partner_grade_action", + ), + ( + "website_crm_partner_assign.access_res_partner_grade", + "partnership.access_res_partner_grade", + ), + ( + "website_crm_partner_assign.access_res_partner_grade_manager", + "partnership.access_res_partner_grade_manager", + ), + ( + "website_crm_partner_assign.menu_res_partner_grade_action", + "partnership.menu_res_partner_grade_action", + ), + ( + "website_crm_partner_assign.res_partner_grade_data_bronze", + "partnership.res_partner_grade_data_bronze", + ), + ( + "website_crm_partner_assign.res_partner_grade_data_gold", + "partnership.res_partner_grade_data_gold", + ), + ( + "website_crm_partner_assign.res_partner_grade_data_silver", + "partnership.res_partner_grade_data_silver", + ), +] + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.rename_xmlids(env.cr, xmlid_renames) diff --git a/openupgrade_scripts/scripts/partnership/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/partnership/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..2e73758d3fe5 --- /dev/null +++ b/openupgrade_scripts/scripts/partnership/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,45 @@ +---Models in module 'partnership'--- +model res.partner.grade (moved from website_crm_partner_assign) + +# NOTHING TO DO + +---Fields in module 'partnership'--- +partnership / product.template / grade_id (many2one) : NEW relation: res.partner.grade +partnership / product.template / service_tracking (False) : NEW selection_keys: ['event', 'no', 'partnership'], mode: modify +partnership / res.company / partnership_label (char) : NEW hasdefault: default, translate +partnership / res.partner / grade_id (many2one) : previously in module website_crm_partner_assign +partnership / res.partner.grade / _order : previously in module website_crm_partner_assign +partnership / res.partner.grade / active (boolean) : previously in module website_crm_partner_assign +partnership / res.partner.grade / company_id (many2one) : NEW relation: res.company, hasdefault: default +partnership / res.partner.grade / default_pricelist_id (many2one): NEW relation: product.pricelist +partnership / res.partner.grade / display_name (char) : previously in module website_crm_partner_assign +partnership / res.partner.grade / name (char) : previously in module website_crm_partner_assign +partnership / res.partner.grade / sequence (integer) : previously in module website_crm_partner_assign +partnership / res.users / grade_id (many2one) : previously in module website_crm_partner_assign + +# NOTHING TO DO + +---XML records in module 'partnership'--- +NEW ir.actions.act_window: partnership.action_grade_partners +NEW ir.actions.act_window: partnership.action_pricelist_partners +NEW ir.actions.act_window: partnership.res_partner_grade_action [renamed from website_crm_partner_assign module] +NEW ir.model.access: partnership.access_res_partner_grade [renamed from website_crm_partner_assign module] +NEW ir.model.access: partnership.access_res_partner_grade_admin +NEW ir.model.access: partnership.access_res_partner_grade_manager [renamed from website_crm_partner_assign module] +NEW ir.model.access: partnership.access_res_partner_grade_user +NEW ir.ui.menu: partnership.crm_menu_partners +NEW ir.ui.menu: partnership.menu_res_partner_grade_action [renamed from website_crm_partner_assign module] +NEW ir.ui.view: partnership.product_template_form_view +NEW ir.ui.view: partnership.res_config_settings_view_form +NEW ir.ui.view: partnership.res_partner_grade_view_search +NEW ir.ui.view: partnership.view_partner_grade_form +NEW ir.ui.view: partnership.view_partner_grade_tree +NEW ir.ui.view: partnership.view_partner_pricelist_form +NEW ir.ui.view: partnership.view_res_partner_filter_assign +NEW ir.ui.view: partnership.view_res_partner_form +NEW ir.ui.view: partnership.view_res_partner_grade_tree +NEW res.partner.grade: partnership.res_partner_grade_data_bronze [renamed from website_crm_partner_assign module] +NEW res.partner.grade: partnership.res_partner_grade_data_gold [renamed from website_crm_partner_assign module] +NEW res.partner.grade: partnership.res_partner_grade_data_silver [renamed from website_crm_partner_assign module] + +# DONE: xmlids renamed from website_crm_partner_assign in pre-migration diff --git a/openupgrade_scripts/scripts/payment_paypal/19.0.2.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_paypal/19.0.2.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..d74d81a068a7 --- /dev/null +++ b/openupgrade_scripts/scripts/payment_paypal/19.0.2.0/upgrade_analysis_work.txt @@ -0,0 +1,6 @@ +---Models in module 'payment_paypal'--- +---Fields in module 'payment_paypal'--- +payment_paypal / payment.provider / code (False) : selection_keys added: [dpo, ecpay, iyzico, paymob] (most likely nothing to do) +# NOTHING TO DO: New payment providers added. + +---XML records in module 'payment_paypal'--- diff --git a/openupgrade_scripts/scripts/payment_redsys/19.0.1.0/post-migration.py b/openupgrade_scripts/scripts/payment_redsys/19.0.1.0/post-migration.py new file mode 100644 index 000000000000..abbaefcff589 --- /dev/null +++ b/openupgrade_scripts/scripts/payment_redsys/19.0.1.0/post-migration.py @@ -0,0 +1,37 @@ +# Copyright 2026 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + +from odoo import Command + +PAY_METHOD_MAPPING = { + "T": "payment.payment_method_card", + "z": "payment.payment_method_bizum", +} + + +def _adjust_payment_methods(env): + """On the OCA module, done before the payment refactoring, the payment method of + Redsys was defined through a specific field, instead of using payment_method_ids + field. + + We need to convert existing payment providers to this new way, as the Odoo module + handles it through it. + """ + if not openupgrade.column_exists(env.cr, "payment_provider", "redsys_pay_method"): + return # No previous OCA module installed + env.cr.execute( + "SELECT id, redsys_pay_method FROM payment_provider " + "WHERE code='redsys' AND redsys_pay_method IS NOT NULL" + ) + for provider_id, redsys_pay_method in env.cr.fetchall(): + provider = env["payment.provider"].browse(provider_id) + provider.payment_method_ids = [ + Command.set(env.ref(PAY_METHOD_MAPPING[redsys_pay_method]).ids) + ] + + +@openupgrade.migrate() +def migrate(env, version): + _adjust_payment_methods(env) diff --git a/openupgrade_scripts/scripts/payment_redsys/19.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/payment_redsys/19.0.1.0/pre-migration.py new file mode 100644 index 000000000000..ad633fdc2f2b --- /dev/null +++ b/openupgrade_scripts/scripts/payment_redsys/19.0.1.0/pre-migration.py @@ -0,0 +1,29 @@ +# Copyright 2026 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.rename_fields( + env, + [ + ( + "payment.provider", + "payment_provider", + "redsys_terminal", + "redsys_merchant_terminal", + ), + ], + ) + openupgrade.rename_xmlids( + env.cr, + [ + ( + "payment_redsys.provider_form_redsys", + "payment_redsys.payment_provider_form", + ), + ("payment_redsys.redsys_form", "payment_redsys.redirect_form"), + ], + ) diff --git a/openupgrade_scripts/scripts/payment_redsys/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/payment_redsys/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..9db457d82edb --- /dev/null +++ b/openupgrade_scripts/scripts/payment_redsys/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,16 @@ +---Models in module 'payment_redsys'--- +---Fields in module 'payment_redsys'--- +payment_redsys / payment.provider / code (False) : NEW selection_keys: ['adyen', 'aps', 'asiapay', 'authorize', 'buckaroo', 'custom', 'demo', 'dpo', 'ecpay', 'flutterwave', 'iyzico', 'mercado_pago', 'mollie', 'none', 'nuvei', 'paymob', 'paypal', 'payu', 'razorpay', 'redsys'], mode: modify +# NOTHING TO DO: the value is the same for the OCA and this one + +payment_redsys / payment.provider / redsys_merchant_code (char) : NEW +payment_redsys / payment.provider / redsys_secret_key (char) : NEW +# NOTHING TO DO: Same field name + +payment_redsys / payment.provider / redsys_merchant_terminal (char): NEW +# DONE: pre-migration: Rename field + +---XML records in module 'payment_redsys'--- +NEW ir.ui.view: payment_redsys.payment_provider_form +NEW ir.ui.view: payment_redsys.redirect_form +# DONE: pre-migration: Rename OCA XML-IDs diff --git a/openupgrade_scripts/scripts/product_expiry/19.0.1.0/post-migration.py b/openupgrade_scripts/scripts/product_expiry/19.0.1.0/post-migration.py new file mode 100644 index 000000000000..e0a06dcb5591 --- /dev/null +++ b/openupgrade_scripts/scripts/product_expiry/19.0.1.0/post-migration.py @@ -0,0 +1,46 @@ +# Copyright 2026 Heliconia Solutions Pvt. Ltd. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + backfill_stock_move_line_removal_date(env) + + +def backfill_stock_move_line_removal_date(env): + """Backfill removal_date on existing move lines - core only creates the + column empty to avoid a MemoryError on large tables. Mirrors + _compute_removal_date (lot priority, use_create_lots / use_expiration_date + gating, picking_id -> move_id fallback for picking type).""" + env.cr.execute( + """ + UPDATE stock_move_line sml + SET removal_date = CASE + WHEN lot.removal_date IS NOT NULL + THEN lot.removal_date + ELSE sml2.expiration_date + - (COALESCE(pt.removal_time, 0) || ' days')::interval + END + FROM stock_move_line sml2 + JOIN product_product pp ON sml2.product_id = pp.id + JOIN product_template pt ON pp.product_tmpl_id = pt.id + LEFT JOIN stock_lot lot ON sml2.lot_id = lot.id + LEFT JOIN stock_picking sp ON sml2.picking_id = sp.id + LEFT JOIN stock_move sm ON sml2.move_id = sm.id + LEFT JOIN stock_picking_type spt ON spt.id = COALESCE( + sp.picking_type_id, sm.picking_type_id + ) + WHERE sml.id = sml2.id + AND sml.removal_date IS NULL + AND ( + lot.removal_date IS NOT NULL + OR ( + COALESCE(spt.use_create_lots, FALSE) IS TRUE + AND COALESCE(pt.use_expiration_date, FALSE) IS TRUE + AND sml2.expiration_date IS NOT NULL + ) + ) + """ + ) diff --git a/openupgrade_scripts/scripts/product_expiry/19.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/product_expiry/19.0.1.0/pre-migration.py new file mode 100644 index 000000000000..c61869b2219b --- /dev/null +++ b/openupgrade_scripts/scripts/product_expiry/19.0.1.0/pre-migration.py @@ -0,0 +1,26 @@ +# Copyright 2026 Heliconia Solutions Pvt. Ltd. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + reassign_alert_date_activities(env) + + +def reassign_alert_date_activities(env): + """Reassign alert-date activities to the standard To-do type + before the old activity type record is removed by the data sync.""" + old_type = env.ref("product_expiry.mail_activity_type_alert_date_reached", False) + new_type = env.ref("mail.mail_activity_data_todo", False) + if old_type and new_type: + env.cr.execute( + """ + UPDATE mail_activity + SET activity_type_id = %s, + summary = COALESCE(summary, 'Alert Date Reached') + WHERE activity_type_id = %s + """, + (new_type.id, old_type.id), + ) diff --git a/openupgrade_scripts/scripts/product_expiry/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/product_expiry/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..878327984d98 --- /dev/null +++ b/openupgrade_scripts/scripts/product_expiry/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,11 @@ +---Models in module 'product_expiry'--- + +---Fields in module 'product_expiry'--- +product_expiry / stock.move.line / removal_date (datetime) : NEW hasdefault: compute + +# DONE: backfilled in post-migration, mirrors _compute_removal_date + +---XML records in module 'product_expiry'--- +DEL mail.activity.type: product_expiry.mail_activity_type_alert_date_reached + +# DONE: reassigned existing activities to mail.mail_activity_data_todo in pre-migration diff --git a/openupgrade_scripts/scripts/project_hr_skills/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/project_hr_skills/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..af5c45bb431d --- /dev/null +++ b/openupgrade_scripts/scripts/project_hr_skills/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,6 @@ +---Models in module 'project_hr_skills'--- +---Fields in module 'project_hr_skills'--- +project_hr_skills / res.users / employee_skill_ids (one2many) : previously in module hr_skills +# NOTHING TO DO + +---XML records in module 'project_hr_skills'--- diff --git a/openupgrade_scripts/scripts/stock_account/19.0.1.1/end-migration.py b/openupgrade_scripts/scripts/stock_account/19.0.1.1/end-migration.py index 4a5b37c7248c..750e9402902e 100644 --- a/openupgrade_scripts/scripts/stock_account/19.0.1.1/end-migration.py +++ b/openupgrade_scripts/scripts/stock_account/19.0.1.1/end-migration.py @@ -1,6 +1,7 @@ # Copyright 2026 Hunki Enterprises BV # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from markupsafe import Markup from openupgradelib import openupgrade from odoo import fields @@ -14,7 +15,7 @@ def update_from_coa_generic(env, spec): TODO: Move this to openupgradelib if needed for more migrations than account, stock_account """ - + admin_channel = env.ref("mail.channel_admin", False) for company in env["res.company"].search([]): AccountChartTemplate = env["account.chart.template"].with_context( default_company_id=company.id, @@ -24,12 +25,15 @@ def update_from_coa_generic(env, spec): lang="en_US", chart_template_load=True, ) - if company.chart_template not in AccountChartTemplate._template_register: - openupgrade.logger.error( - "chart template %s unknown (not yet migrated?)", - company.chart_template, - ) + if admin_channel: + admin_channel.message_post( + body=Markup( + "Chart template {company.chart_template} unknown " + "(not yet migrated?)
" + ) + ) continue def ref_or_id(ref_or_id, model_name, AccountChartTemplate=AccountChartTemplate): @@ -45,15 +49,18 @@ def ref_or_id(ref_or_id, model_name, AccountChartTemplate=AccountChartTemplate): company_data = {} for model_name, field_names in spec.items(): - company_data[model_name] = { - record_id: { + filtered_records = {} + for record_id, record_data in template_data[model_name].items(): + if not any(record_data.get(key) for key in field_names): + continue + filtered = { key: value for key, value in record_data.items() if key in field_names and not ref_or_id(record_id, model_name)[key] } - for record_id, record_data in template_data[model_name].items() - if any(record_data.get(key) for key in field_names) - } + if filtered: + filtered_records[record_id] = filtered + company_data[model_name] = filtered_records AccountChartTemplate._load_data(company_data) @@ -109,6 +116,6 @@ def stock_move_is_fields(env): @openupgrade.migrate() def migrate(env, version): - update_from_coa(env) + # update_from_coa(env) stock_lot_avg_cost(env) stock_move_is_fields(env) diff --git a/openupgrade_scripts/scripts/stock_account/19.0.1.1/post-migration.py b/openupgrade_scripts/scripts/stock_account/19.0.1.1/post-migration.py index c90e05afd159..8f30980f82ba 100644 --- a/openupgrade_scripts/scripts/stock_account/19.0.1.1/post-migration.py +++ b/openupgrade_scripts/scripts/stock_account/19.0.1.1/post-migration.py @@ -81,10 +81,10 @@ def stock_move_value(env): env.cr.execute( """ UPDATE stock_move - SET value=aggregated_values.value + SET value=aggregated_values.agg_value FROM ( SELECT - move_id, sum(value) value + move_id, sum(value) AS agg_value FROM product_value GROUP BY move_id diff --git a/openupgrade_scripts/scripts/website_livechat/19.0.1.0/post-migration.py b/openupgrade_scripts/scripts/website_livechat/19.0.1.0/post-migration.py new file mode 100644 index 000000000000..5c27d4ddcf82 --- /dev/null +++ b/openupgrade_scripts/scripts/website_livechat/19.0.1.0/post-migration.py @@ -0,0 +1,14 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.delete_records_safely_by_xml_id( + env, + [ + "website_livechat.im_livechat_channel_rule_public", + ], + ) diff --git a/openupgrade_scripts/scripts/website_livechat/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_livechat/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..7e1f36cbd436 --- /dev/null +++ b/openupgrade_scripts/scripts/website_livechat/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,20 @@ +---Models in module 'website_livechat'--- +---Fields in module 'website_livechat'--- +website_livechat / discuss.channel / is_pending_chat_request (boolean): NEW +# NOTHING TO DO + +website_livechat / im_livechat.channel / is_published (boolean) : DEL +website_livechat / im_livechat.channel / website_description (html) : DEL +# NOTHING TO DO + +---XML records in module 'website_livechat'--- +DEL ir.model.access: website_livechat.access_im_livechat_channel_public_employee +DEL ir.model.access: website_livechat.access_im_livechat_channel_public_portal +DEL ir.model.access: website_livechat.access_im_livechat_channel_public_public +DEL ir.ui.view: website_livechat.channel_list_page +DEL ir.ui.view: website_livechat.channel_page +DEL ir.ui.view: website_livechat.im_livechat_channel_form_view +# NOTHING TO DO + +DEL ir.rule: website_livechat.im_livechat_channel_rule_public (noupdate) +# DONE: post-migration: deleted noupdate rule diff --git a/openupgrade_scripts/scripts/website_sale_comparison/19.0.1.0/upgrade_analysis copy.txt b/openupgrade_scripts/scripts/website_sale_comparison/19.0.1.0/upgrade_analysis copy.txt new file mode 100644 index 000000000000..47b639575569 --- /dev/null +++ b/openupgrade_scripts/scripts/website_sale_comparison/19.0.1.0/upgrade_analysis copy.txt @@ -0,0 +1,6 @@ +---Models in module 'website_sale_comparison'--- +---Fields in module 'website_sale_comparison'--- +---XML records in module 'website_sale_comparison'--- +DEL ir.ui.view: website_sale_comparison.product_product +DEL ir.ui.view: website_sale_comparison.snippet_options +# NOTHING TO DO diff --git a/openupgrade_scripts/scripts/website_sale_slides/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_sale_slides/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..a655aeeb24cc --- /dev/null +++ b/openupgrade_scripts/scripts/website_sale_slides/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,9 @@ +---Models in module 'website_sale_slides'--- +---Fields in module 'website_sale_slides'--- +website_sale_slides / product.template / service_tracking (False) : selection_keys added: [partnership, repair] (most likely nothing to do) +# NOTHING TO DO + +---XML records in module 'website_sale_slides'--- +DEL ir.ui.view: website_sale_slides.snippet_options +DEL product.category: website_sale_slides.product_category_courses +# NOTHING TO DO diff --git a/openupgrade_scripts/scripts/website_sale_stock/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_sale_stock/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..eb15743fb195 --- /dev/null +++ b/openupgrade_scripts/scripts/website_sale_stock/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,6 @@ +---Models in module 'website_sale_stock'--- +---Fields in module 'website_sale_stock'--- +website_sale_stock / product.ribbon / assign (False) : NEW selection_keys: ['manual', 'new', 'out_of_stock', 'sale'], mode: modify +# NOTHING TO DO + +---XML records in module 'website_sale_stock'--- diff --git a/openupgrade_scripts/scripts/website_sale_wishlist/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_sale_wishlist/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..4952be1ffcca --- /dev/null +++ b/openupgrade_scripts/scripts/website_sale_wishlist/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,12 @@ +---Models in module 'website_sale_wishlist'--- +---Fields in module 'website_sale_wishlist'--- +website_sale_wishlist / website / wishlist_gap (char) : NEW hasdefault: default +website_sale_wishlist / website / wishlist_grid_columns (integer): NEW hasdefault: default +website_sale_wishlist / website / wishlist_mobile_columns (integer): NEW hasdefault: default +website_sale_wishlist / website / wishlist_opt_products_design_classes (char): NEW hasdefault: default +# NOTHING TO DO: seem to be new features with default + +---XML records in module 'website_sale_wishlist'--- +NEW ir.ui.view: website_sale_wishlist.empty_wishlist_svg +DEL ir.ui.view: website_sale_wishlist.snippet_options +# NOTHING TO DO diff --git a/openupgrade_scripts/scripts/website_slides_forum/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_slides_forum/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..418379e8f9d3 --- /dev/null +++ b/openupgrade_scripts/scripts/website_slides_forum/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,9 @@ +---Models in module 'website_slides_forum'--- +# NOTHING TO DO + +---Fields in module 'website_slides_forum'--- +# NOTHING TO DO + +---XML records in module 'website_slides_forum'--- +DEL ir.ui.view: website_slides_forum.snippet_options +# NOTHING TO DO: replaced by a website builder option diff --git a/openupgrade_scripts/scripts/website_slides_survey/19.0.1.0/post-migration.py b/openupgrade_scripts/scripts/website_slides_survey/19.0.1.0/post-migration.py new file mode 100644 index 000000000000..6236ef7ecd44 --- /dev/null +++ b/openupgrade_scripts/scripts/website_slides_survey/19.0.1.0/post-migration.py @@ -0,0 +1,16 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.load_data(env, "website_slides_survey", "19.0.1.0/noupdate_changes.xml") + openupgrade.delete_record_translations( + env.cr, + "website_slides_survey", + [ + "mail_template_user_input_certification_failed", + ], + ) diff --git a/openupgrade_scripts/scripts/website_slides_survey/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/website_slides_survey/19.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 000000000000..d12571adbeac --- /dev/null +++ b/openupgrade_scripts/scripts/website_slides_survey/19.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,7 @@ +---Models in module 'website_slides_survey'--- +---Fields in module 'website_slides_survey'--- +---XML records in module 'website_slides_survey'--- +NEW ir.ui.view: website_slides_survey.courses_search_bar_inherit_survey +NEW ir.ui.view: website_slides_survey.courses_search_results_inherit_survey +DEL ir.ui.view: website_slides_survey.courses_home_inherit_survey +# NOTHING TO DO