diff --git a/.github/workflows/test-migration.yml b/.github/workflows/test-migration.yml
index 9402b852770..0cb8186ad3b 100644
--- a/.github/workflows/test-migration.yml
+++ b/.github/workflows/test-migration.yml
@@ -96,8 +96,10 @@ jobs:
pip install -q -r odoo/requirements.txt
pip install -r ./openupgrade/requirements.txt
pip install -U git+https://github.com/oca/openupgradelib
- # this is for v16 l10n_eg_edi_eta which crashes without it
+ # this is for v18 l10n_eg_edi_eta which crashes without it
pip install asn1crypto
+ # required by v18
+ pip install decorator
pip install coverage
# this is for account_peppol
pip install phonenumbers
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 35434e2b28b..52f78d1fe2c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -101,7 +101,7 @@ repos:
hooks:
- id: trailing-whitespace
# exclude autogenerated files
- exclude: /README\.rst$|\.pot?$
+ exclude: /README\.rst$|\.pot?$|noupdate_changes(_work){0,1}.xml$
- id: end-of-file-fixer
# exclude autogenerated files
exclude: /README\.rst$|\.pot?$
diff --git a/docsource/modules180-190.rst b/docsource/modules180-190.rst
new file mode 100644
index 00000000000..68cd05d0a51
--- /dev/null
+++ b/docsource/modules180-190.rst
@@ -0,0 +1,1248 @@
+Module coverage 18.0 -> 19.0
+============================
+
+.. include:: coverage_legend.rst
+
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| Module | Status + Extra Information |
++===================================================+======================+=================================================+
+| account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_check_printing | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_debit_note | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_edi | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_edi_proxy_client | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_edi_ubl_cii | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| account_edi_ubl_cii_tax_extension | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_fleet | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_payment | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_peppol | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| account_peppol_advanced_fields | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_qr_code_emv | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_qr_code_sepa | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_tax_python | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| account_update_tax_tags | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| analytic | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| api_doc | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| attachment_indexation | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_ldap | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_oauth | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_passkey | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| auth_passkey_portal | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_password_policy | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_password_policy_portal | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_password_policy_signup | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_signup | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| auth_timeout | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_totp | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_totp_mail | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| auth_totp_mail_enforce | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| auth_totp_portal | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| barcodes | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| barcodes_gs1_nomenclature | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base | |Done |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_address_extended | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_automation | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_geolocalize | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_iban | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_import | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_import_module | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_install_request | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_setup | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_sparse_field | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| base_vat | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| board | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| bus | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| calendar | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| calendar_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| certificate | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| cloud_storage | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| cloud_storage_azure | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| cloud_storage_google | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| contacts | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| crm | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| crm_iap_enrich | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| crm_iap_mine | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| crm_livechat | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| crm_mail_plugin | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| crm_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| data_recycle | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| delivery | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| delivery_mondialrelay | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| delivery_stock_picking_batch | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| digest | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| event | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| event_booth | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| event_booth_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| event_crm | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| event_crm_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| event_product | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| event_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| event_sms | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| fleet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| gamification | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| gamification_sale_crm | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| google_account | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| google_address_autocomplete | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| google_calendar | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| google_gmail | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| google_recaptcha | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_attendance | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_calendar | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| hr_contract | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_expense | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_fleet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_gamification | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_holidays | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_holidays_attendance | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| hr_holidays_contract | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_homeworking | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_homeworking_calendar | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_hourly_cost | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_livechat | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_maintenance | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_org_chart | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_presence | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_recruitment | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_recruitment_skills | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_recruitment_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_recruitment_survey | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_skills | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| hr_skills_event | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_skills_slides | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_skills_survey | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_timesheet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_timesheet_attendance | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_work_entry | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| hr_work_entry_contract | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| hr_work_entry_holidays | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| html_builder | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| html_editor | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| http_routing | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| iap | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| iap_crm | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| iap_mail | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| im_livechat | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| iot_base | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_account_edi_ubl_cii_tests | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_account_withholding_tax | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_account_withholding_tax_pos | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ae | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| l10n_ae_pos | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_anz_ubl_pint | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ar | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ar_pos | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| l10n_ar_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ar_website_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ar_withholding | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_at | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_au | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_bd | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_be | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_be_pos_restaurant | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_be_pos_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_bf | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_bg | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_bg_ledger | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_bh | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_bj | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_bo | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_br | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_br_sales | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_br_website_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ca | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cd | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cf | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cg | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ch | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ch_pos | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ci | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cl | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cm | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cn | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cn_city | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_co | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_co_pos | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cy | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_cz | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_de | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_din5008 | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_din5008_expense | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_din5008_purchase | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_din5008_repair | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_din5008_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_din5008_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_dk | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_dk_nemhandel | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_dk_oioubl | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_do | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_dz | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ec | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| l10n_ec_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ec_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_ec_website_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ee | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_eg | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_eg_edi_eta | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_es | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_es_edi_facturae | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_es_edi_sii | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_es_edi_tbai | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_es_edi_tbai_pos | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_es_edi_verifactu | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_es_edi_verifactu_pos | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_es_modelo130 | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_es_pos | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_et | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_eu_oss | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_fi | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_fi_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_fr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_fr_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_fr_facturx_chorus_pro | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_fr_hr_holidays | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_fr_hr_work_entry_holidays | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_fr_pos_cert | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ga | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_gcc_invoice | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_gcc_invoice_stock_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_gcc_pos | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_gn | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_gq | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_gr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_gr_edi | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_gt | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_gw | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_hk | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_hn | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_hr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_hr_kuna | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_hu | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_hu_edi | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_id | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_id_efaktur | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_id_efaktur_coretax | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_id_pos | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ie | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_il | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_in | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_in_edi | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_in_edi_ewaybill | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| l10n_in_ewaybill | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| l10n_in_ewaybill_irn | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_in_ewaybill_port | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_in_ewaybill_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_in_gstin_status | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_in_hr_holidays | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_in_pos | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_in_purchase | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_in_purchase_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_in_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_in_sale_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_in_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_in_withholding | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_in_withholding_payment | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_iq | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_it | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_it_edi | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_it_edi_doi | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_it_edi_ndd | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_it_edi_ndd_account_dn | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_it_edi_sale | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_it_edi_website_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_it_edi_withholding | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_it_stock_ddt | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_jo | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_jo_edi | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_jo_edi_extended | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_jp | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_jp_ubl_pint | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ke | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ke_edi_tremol | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_kh | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_km | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_kr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_kw | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_kz | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_latam_base | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_latam_check | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_latam_invoice_document | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_lb_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| l10n_lk | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_lt | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_lu | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_lv | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ma | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_mc | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ml | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_mn | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_mt | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_mt_pos | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_mu_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_mx | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_mx_hr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_my | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_my_edi | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_my_edi_extended | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_my_edi_pos | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_my_ubl_pint | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_mz | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ne | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ng | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_nl | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_no | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_nz | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_om | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_pa | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_pe | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_pe_pos | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_pe_website_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ph | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_pk | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_pl | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_pl_taxable_supply_date | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_pt | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_qa | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ro | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ro_edi | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ro_edi_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ro_edi_stock_batch | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_ro_efactura_synchronize | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_rs | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_rs_edi | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_rw | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_sa | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_sa_edi | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_sa_edi_pos | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_sa_pos | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| l10n_sa_withholding_tax | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_se | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_sg | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_sg_ubl_pint | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_si | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_sk | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_sn | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_syscohada | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_td | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_test_pos_qr_payment | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tg | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_th | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tn | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tr | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tr_nilvera | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tr_nilvera_edispatch | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tr_nilvera_einvoice | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tr_nilvera_einvoice_extended | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tw | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tw_edi_ecpay | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_tz_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ua | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ug | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_uk | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_us | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_us_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_uy | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_uy_pos | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| l10n_uy_website_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_ve | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_vn | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_vn_edi_viettel | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_za | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| l10n_zm_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| link_tracker | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| loyalty | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| lunch | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mail | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mail_bot | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mail_bot_hr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mail_group | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mail_plugin | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| maintenance | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| marketing_card | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_crm | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_crm_sms | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_event | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_event_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_event_track | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_event_track_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_sale | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_sale_sms | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_slides | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mass_mailing_themes | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| membership | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| microsoft_account | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| microsoft_calendar | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| microsoft_outlook | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_landed_costs | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_product_expiry | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_repair | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_subcontracting | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_subcontracting_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_subcontracting_dropshipping | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_subcontracting_landed_costs | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_subcontracting_purchase | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| mrp_subcontracting_repair | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| onboarding | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| partner_autocomplete | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| partnership | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_adyen | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_aps | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_asiapay | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_authorize | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_buckaroo | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_custom | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_demo | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| payment_dpo | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_flutterwave | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| payment_iyzico | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_mercado_pago | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_mollie | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_nuvei | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| payment_paymob | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_paypal | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_razorpay | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| payment_razorpay_oauth | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| payment_redsys | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_stripe | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_worldline | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| payment_xendit | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| phone_validation | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| point_of_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| portal | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| portal_rating | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_account_tax_python | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_adyen | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_discount | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| pos_epson_printer | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_event | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_event_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| pos_glory_cash | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_hr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_hr_restaurant | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| pos_imin | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_loyalty | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_mercado_pago | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_mrp | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_online_payment | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_online_payment_self_order | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| pos_paytm | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_pine_labs | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| pos_qfpay | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_razorpay | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| pos_repair | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_restaurant | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_restaurant_adyen | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_restaurant_loyalty | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_restaurant_stripe | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_sale_loyalty | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_sale_margin | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_self_order | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_self_order_adyen | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| pos_self_order_epson_printer | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| pos_self_order_pine_labs | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| pos_self_order_qfpay | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_self_order_razorpay | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_self_order_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_self_order_stripe | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| pos_six | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_sms | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| pos_stripe | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| pos_viva_com | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| pos_viva_wallet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| privacy_lookup | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| product | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| product_email_template | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| product_expiry | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| product_images | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| product_margin | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| product_matrix | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_hr_expense | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_hr_skills | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_mail_plugin | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_mrp | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_mrp_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_mrp_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_mrp_stock_landed_costs | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_purchase | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_purchase_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_sale_expense | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_sms | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_stock_account | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_stock_landed_costs | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_timesheet_holidays | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| project_todo | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| purchase | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| purchase_edi_ubl_bis3 | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| purchase_mrp | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| purchase_product_matrix | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| purchase_repair | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| purchase_requisition | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| purchase_requisition_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| purchase_requisition_stock | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| purchase_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| rating | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| repair | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| resource | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| resource_mail | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| rpc | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| sale_async_emails | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_crm | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_edi_ubl | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_expense | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_expense_margin | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_gelato | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_gelato_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_loyalty | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_loyalty_delivery | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_management | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_margin | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_mrp | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_mrp_margin | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_pdf_quote_builder | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_product_matrix | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_project | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_project_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_project_stock_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_purchase | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_purchase_project | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_purchase_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_service | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_stock_margin | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| sale_stock_product_expiry | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_timesheet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sale_timesheet_margin | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sales_team | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| sms_twilio | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| snailmail | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| snailmail_account | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| social_media | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_event_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_hr_expense | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_hr_timesheet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_im_livechat | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_pos_hr | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_pos_restaurant | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_sale_timesheet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_stock_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_website_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| spreadsheet_dashboard_website_sale_slides | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| stock_account | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| stock_delivery | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| stock_dropshipping | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| stock_fleet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| stock_landed_costs | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| stock_maintenance | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| stock_picking_batch | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| stock_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| survey | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| survey_crm | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| theme_default | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| transifex | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| uom | |Done |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| utm | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| web | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| web_editor | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| web_hierarchy | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| web_tour | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| web_unsplash | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_blog | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_cf_turnstile | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_crm | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_crm_iap_reveal | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_crm_livechat | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_crm_partner_assign | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_crm_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_customer | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_booth | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_booth_exhibitor | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_booth_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_booth_sale_exhibitor | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_crm | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_exhibitor | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| website_event_jitsi | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| website_event_meet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| website_event_meet_quiz | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_track | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_track_live | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_track_live_quiz | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_event_track_quiz | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_forum | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_google_map | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_hr_recruitment | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| website_hr_recruitment_livechat | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| website_jitsi | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_links | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_livechat | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_mail | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_mail_group | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_mass_mailing | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_mass_mailing_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| website_membership | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_partner | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_payment | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |del| website_payment_authorize | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_profile | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_project | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_autocomplete | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_collect | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| website_sale_collect_wishlist | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_comparison | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_comparison_wishlist | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_gelato | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_loyalty | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_mass_mailing | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_mondialrelay | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_mrp | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_slides | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_stock | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_stock_wishlist | |No DB layout changes. |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sale_wishlist | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_slides | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_slides_forum | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_slides_survey | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| website_sms | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
+| |new| website_timesheet | | |
++---------------------------------------------------+----------------------+-------------------------------------------------+
diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/noupdate_changes_work.xml b/openupgrade_scripts/scripts/base/19.0.1.3/noupdate_changes_work.xml
new file mode 100644
index 00000000000..55854af7503
--- /dev/null
+++ b/openupgrade_scripts/scripts/base/19.0.1.3/noupdate_changes_work.xml
@@ -0,0 +1,69 @@
+
+
+
+ AED
+
+
+ 1
+ TRN
+
+
+ Congo (DRC)
+
+
+ Congo (Republic)
+
+
+ CH-LI
+
+
+ EEU
+
+
+ EU
+
+
+ GCC
+
+
+ [('user_ids','in',[False,user.id])]
+ ir.filter: owner or global
+
+
+
+
+
+
+ [('user_ids', 'in', user.ids)]
+
+
+
+
+
+ VAT
+
+
+
+
+
+ SEPA
+
+
+ SA
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/post-migration.py b/openupgrade_scripts/scripts/base/19.0.1.3/post-migration.py
new file mode 100644
index 00000000000..a4997c2a6ba
--- /dev/null
+++ b/openupgrade_scripts/scripts/base/19.0.1.3/post-migration.py
@@ -0,0 +1,107 @@
+# Copyright 2025 Hunki Enterprises BV
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+from odoo.fields import Command
+
+
+def _ir_actions_act_window_target(env):
+ """
+ selection value 'inline' was removed, map to 'current'
+ """
+ openupgrade.logged_query(
+ env.cr,
+ "UPDATE ir_act_window SET target='current' WHERE target='inline'",
+ )
+
+
+def _ir_actions_server_child_ids(env):
+ """
+ Field was changed from m2m to o2m - set parent_id from m2m table,
+ duplicate child actions that had multiple parents
+ """
+ env.cr.execute(
+ """
+ SELECT action_id, array_agg(server_id)
+ FROM rel_server_actions GROUP BY action_id
+ """
+ )
+ for action_id, parent_ids in env.cr.fetchall():
+ action = env["ir.actions.server"].browse(action_id)
+ parents = env["ir.actions.server"].browse(parent_ids)
+ action.parent_id = parents[0]
+ for parent in parents[1:]:
+ action.copy({"name": action.name, "parent_id": parent.id})
+
+
+def _ir_actions_server_html_value(env):
+ """
+ For evaluation_type 'value' and update_field_id.ttype == 'html',
+ new field html_value is used
+ """
+ for action in env["ir.actions.server"].search(
+ [
+ ("state", "=", "object_write"),
+ ("evaluation_type", "=", "value"),
+ ("update_field_id.ttype", "=", "html"),
+ ]
+ ):
+ action.write({"html_value": action.value})
+
+
+def _ir_filters_user_ids(env):
+ """
+ m2o user_id has been transformed to m2m user_ids
+ """
+ openupgrade.m2o_to_x2m(
+ env.cr, env["ir.filters"], env["ir.filters"]._table, "user_ids", "user_id"
+ )
+
+
+def _res_lang(env):
+ """
+ Char fields date_format, grouping and time_format have been dumbed down to
+ selection fields. Keep their original value in a legacy column, and map existing
+ values not in the selection to the default value
+ """
+ ResLang = env["res.lang"]
+ for field_name in ("date_format", "time_format", "grouping"):
+ field = ResLang._fields[field_name]
+ openupgrade.copy_columns(env.cr, {"res_lang": [(field_name, None, None)]})
+ openupgrade.logged_query(
+ env.cr,
+ f"UPDATE res_lang SET {field_name}=%(default)s "
+ f"WHERE {field_name} NOT IN %(selection)s",
+ {
+ "default": field.default(ResLang),
+ "selection": tuple(
+ value for value, _string in field._description_selection(env)
+ ),
+ },
+ )
+
+
+def _init_default_user_group(env):
+ """
+ Assign all groups of default_user to implied_ids of default_user_group
+ """
+ default_user = env.ref("base.default_user", raise_if_not_found=False)
+ if not default_user:
+ return
+ env.ref("base.default_user_group").write(
+ {
+ "implied_ids": [Command.set(default_user.group_ids.ids)],
+ }
+ )
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "base", "19.0.1.3/noupdate_changes_work.xml")
+ _ir_actions_act_window_target(env)
+ _ir_actions_server_child_ids(env)
+ _ir_actions_server_html_value(env)
+ _ir_filters_user_ids(env)
+ _res_lang(env)
+ _init_default_user_group(env)
diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/pre-migration.py b/openupgrade_scripts/scripts/base/19.0.1.3/pre-migration.py
new file mode 100644
index 00000000000..28873fe73c6
--- /dev/null
+++ b/openupgrade_scripts/scripts/base/19.0.1.3/pre-migration.py
@@ -0,0 +1,172 @@
+# Copyright 2025 Hunki Enterprises BV
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+# pylint: disable=odoo-addons-relative-import
+from odoo.addons.openupgrade_scripts.apriori import merged_modules, renamed_modules
+
+_renamed_xmlids = [
+ ("l10n_fr.dom-tom", "base.dom-tom"),
+ ("l10n_at.state_at_1", "base.state_at_1"),
+ ("l10n_at.state_at_2", "base.state_at_2"),
+ ("l10n_at.state_at_3", "base.state_at_3"),
+ ("l10n_at.state_at_4", "base.state_at_4"),
+ ("l10n_at.state_at_5", "base.state_at_5"),
+ ("l10n_at.state_at_6", "base.state_at_6"),
+ ("l10n_at.state_at_7", "base.state_at_7"),
+ ("l10n_at.state_at_8", "base.state_at_8"),
+ ("l10n_at.state_at_9", "base.state_at_9"),
+ ("l10n_bd.state_bd_a", "base.state_bd_a"),
+ ("l10n_bd.state_bd_b", "base.state_bd_b"),
+ ("l10n_bd.state_bd_c", "base.state_bd_c"),
+ ("l10n_bd.state_bd_d", "base.state_bd_d"),
+ ("l10n_bd.state_bd_e", "base.state_bd_e"),
+ ("l10n_bd.state_bd_f", "base.state_bd_f"),
+ ("l10n_bd.state_bd_g", "base.state_bd_g"),
+ ("l10n_bd.state_bd_h", "base.state_bd_h"),
+ ("base.state_id_pp", "base.state_id_pe"),
+ ("l10n_iq.state_iq_01", "base.state_iq_01"),
+ ("l10n_iq.state_iq_01_ar", "base.state_iq_01_ar"),
+ ("l10n_iq.state_iq_02", "base.state_iq_02"),
+ ("l10n_iq.state_iq_02_ar", "base.state_iq_02_ar"),
+ ("l10n_iq.state_iq_03", "base.state_iq_03"),
+ ("l10n_iq.state_iq_03_ar", "base.state_iq_03_ar"),
+ ("l10n_iq.state_iq_04", "base.state_iq_04"),
+ ("l10n_iq.state_iq_04_ar", "base.state_iq_04_ar"),
+ ("l10n_iq.state_iq_05", "base.state_iq_05"),
+ ("l10n_iq.state_iq_05_ar", "base.state_iq_05_ar"),
+ ("l10n_iq.state_iq_06", "base.state_iq_06"),
+ ("l10n_iq.state_iq_06_ar", "base.state_iq_06_ar"),
+ ("l10n_iq.state_iq_07", "base.state_iq_07"),
+ ("l10n_iq.state_iq_07_ar", "base.state_iq_07_ar"),
+ ("l10n_iq.state_iq_08", "base.state_iq_08"),
+ ("l10n_iq.state_iq_08_ar", "base.state_iq_08_ar"),
+ ("l10n_iq.state_iq_09", "base.state_iq_09"),
+ ("l10n_iq.state_iq_09_ar", "base.state_iq_09_ar"),
+ ("l10n_iq.state_iq_10", "base.state_iq_10"),
+ ("l10n_iq.state_iq_10_ar", "base.state_iq_10_ar"),
+ ("l10n_iq.state_iq_11", "base.state_iq_11"),
+ ("l10n_iq.state_iq_11_ar", "base.state_iq_11_ar"),
+ ("l10n_iq.state_iq_12", "base.state_iq_12"),
+ ("l10n_iq.state_iq_12_ar", "base.state_iq_12_ar"),
+ ("l10n_iq.state_iq_13", "base.state_iq_13"),
+ ("l10n_iq.state_iq_13_ar", "base.state_iq_13_ar"),
+ ("l10n_iq.state_iq_14", "base.state_iq_14"),
+ ("l10n_iq.state_iq_14_ar", "base.state_iq_14_ar"),
+ ("l10n_iq.state_iq_15", "base.state_iq_15"),
+ ("l10n_iq.state_iq_15_ar", "base.state_iq_15_ar"),
+ ("l10n_iq.state_iq_16", "base.state_iq_16"),
+ ("l10n_iq.state_iq_16_ar", "base.state_iq_16_ar"),
+ ("l10n_iq.state_iq_17", "base.state_iq_17"),
+ ("l10n_iq.state_iq_17_ar", "base.state_iq_17_ar"),
+ ("l10n_iq.state_iq_18", "base.state_iq_18"),
+ ("l10n_iq.state_iq_18_ar", "base.state_iq_18_ar"),
+ ("l10n_pk.state_pk_ajk", "base.state_pk_ajk"),
+ ("l10n_pk.state_pk_ba", "base.state_pk_ba"),
+ ("l10n_pk.state_pk_gb", "base.state_pk_gb"),
+ ("l10n_pk.state_pk_is", "base.state_pk_is"),
+ ("l10n_pk.state_pk_kp", "base.state_pk_kp"),
+ ("l10n_pk.state_pk_pb", "base.state_pk_pb"),
+ ("l10n_pk.state_pk_sd", "base.state_pk_sd"),
+ ("l10n_pl.state_pl_ds", "base.state_pl_ds"),
+ ("l10n_pl.state_pl_kp", "base.state_pl_kp"),
+ ("l10n_pl.state_pl_lb", "base.state_pl_lb"),
+ ("l10n_pl.state_pl_ld", "base.state_pl_ld"),
+ ("l10n_pl.state_pl_ls", "base.state_pl_ls"),
+ ("l10n_pl.state_pl_mp", "base.state_pl_mp"),
+ ("l10n_pl.state_pl_mz", "base.state_pl_mz"),
+ ("l10n_pl.state_pl_op", "base.state_pl_op"),
+ ("l10n_pl.state_pl_pk", "base.state_pl_pk"),
+ ("l10n_pl.state_pl_pl", "base.state_pl_pl"),
+ ("l10n_pl.state_pl_pm", "base.state_pl_pm"),
+ ("l10n_pl.state_pl_sk", "base.state_pl_sk"),
+ ("l10n_pl.state_pl_sl", "base.state_pl_sl"),
+ ("l10n_pl.state_pl_wm", "base.state_pl_wm"),
+ ("l10n_pl.state_pl_wp", "base.state_pl_wp"),
+ ("l10n_pl.state_pl_zp", "base.state_pl_zp"),
+ ("l10n_tw.state_tw_chh", "base.state_tw_chh"),
+ ("l10n_tw.state_tw_cic", "base.state_tw_cic"),
+ ("l10n_tw.state_tw_cih", "base.state_tw_cih"),
+ ("l10n_tw.state_tw_hch", "base.state_tw_hch"),
+ ("l10n_tw.state_tw_hct", "base.state_tw_hct"),
+ ("l10n_tw.state_tw_hlh", "base.state_tw_hlh"),
+ ("l10n_tw.state_tw_ilh", "base.state_tw_ilh"),
+ ("l10n_tw.state_tw_khc", "base.state_tw_khc"),
+ ("l10n_tw.state_tw_klc", "base.state_tw_klc"),
+ ("l10n_tw.state_tw_kmc", "base.state_tw_kmc"),
+ ("l10n_tw.state_tw_lcc", "base.state_tw_lcc"),
+ ("l10n_tw.state_tw_mlh", "base.state_tw_mlh"),
+ ("l10n_tw.state_tw_ntc", "base.state_tw_ntc"),
+ ("l10n_tw.state_tw_ntpc", "base.state_tw_ntpc"),
+ ("l10n_tw.state_tw_phc", "base.state_tw_phc"),
+ ("l10n_tw.state_tw_pth", "base.state_tw_pth"),
+ ("l10n_tw.state_tw_tcc", "base.state_tw_tcc"),
+ ("l10n_tw.state_tw_tnh", "base.state_tw_tnh"),
+ ("l10n_tw.state_tw_tpc", "base.state_tw_tpc"),
+ ("l10n_tw.state_tw_tth", "base.state_tw_tth"),
+ ("l10n_tw.state_tw_tyc", "base.state_tw_tyc"),
+ ("l10n_tw.state_tw_ylh", "base.state_tw_ylh"),
+]
+
+_renamed_fields = [
+ (
+ "ir.actions.act_window",
+ "ir_act_window",
+ "groups_id",
+ "group_ids",
+ ),
+ (
+ "ir.actions.report",
+ "ir_act_report_xml",
+ "groups_id",
+ "group_ids",
+ ),
+ (
+ "ir.actions.server",
+ "ir_act_report_xml",
+ "groups_id",
+ "group_ids",
+ ),
+ (
+ "ir.ui.menu",
+ "ir_ui_menu",
+ "groups_id",
+ "group_ids",
+ ),
+ (
+ "ir.ui.view",
+ "ir_ui_view",
+ "groups_id",
+ "group_ids",
+ ),
+ (
+ "res.groups",
+ "res_groups",
+ "users",
+ "user_ids",
+ ),
+ (
+ "res.users",
+ "res_users",
+ "groups_id",
+ "group_ids",
+ ),
+]
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.logged_query(
+ env.cr,
+ f"""
+ CREATE TABLE {
+ openupgrade.get_legacy_name("ir_module_module")
+ } AS (SELECT name, state FROM ir_module_module);
+ """,
+ )
+ openupgrade.update_module_names(env.cr, renamed_modules.items())
+ openupgrade.update_module_names(env.cr, merged_modules.items(), merge_modules=True)
+ openupgrade.clean_transient_models(env.cr)
+ openupgrade.rename_xmlids(env.cr, _renamed_xmlids)
+ openupgrade.rename_fields(env, _renamed_fields)
diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..58b17faadbe
--- /dev/null
+++ b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_analysis_work.txt
@@ -0,0 +1,641 @@
+---Models in module 'base'---
+obsolete model res.partner.title
+
+# NOTHING TO DO: possibly some oca module will pick this up again
+
+new model ir.actions.server.history
+
+# NOTHING TO DO: new functionality
+
+new model properties.base.definition
+new model properties.base.definition.mixin [abstract]
+
+# NOTHING TO DO: handled by orm
+
+new model res.groups.privilege
+new model server.action.history.wizard [transient]
+
+# NOTHING TO DO: new functionality
+
+---Fields in module 'base'---
+account / res.company / company_registry_placeholder (char): not a function anymore
+account / res.company / company_registry_placeholder (char): now related
+base / ir.actions.act_url / _order : _order is now 'name, id' ('name')
+base / ir.actions.act_window / _order : _order is now 'name, id' ('name')
+base / ir.actions.act_window / cache (boolean) : NEW hasdefault: default
+
+# NOTHING TO DO
+
+base / ir.actions.act_window / group_ids (many2many) : NEW relation: res.groups
+base / ir.actions.act_window / groups_id (many2many) : DEL relation: res.groups
+
+# DONE: renamed groups_id to group_ids in pre-migration
+
+base / ir.actions.act_window / target (selection) : selection_keys removed: [inline]
+
+# DONE: set to 'current' in post-migration
+
+base / ir.actions.act_window_close / _order : _order is now 'name, id' ('name')
+base / ir.actions.actions / _order : _order is now 'name, id' ('name')
+base / ir.actions.client / _order : _order is now 'name, id' ('name')
+
+# NOTHING TO DO
+
+base / ir.actions.report / group_ids (many2many) : NEW relation: res.groups
+base / ir.actions.report / groups_id (many2many) : DEL relation: res.groups
+
+# DONE: renamed groups_id to group_ids in pre-migration
+
+base / ir.actions.server / _order : _order is now 'sequence,name,id' ('sequence,name')
+base / ir.actions.server / automated_name (char) : NEW isfunction: function, stored
+
+# NOTHING TO DO
+
+base / ir.actions.server / child_ids (many2many) : table is now 'False' ('rel_server_actions')
+base / ir.actions.server / child_ids (many2many) : type is now 'one2many' ('many2many')
+
+# DONE: set from m2m table in post-migration
+
+base / ir.actions.server / crud_model_id (many2one) : now a function
+
+# NOTHING TO DO: same computation function
+
+base / ir.actions.server / evaluation_type (selection) : selection_keys added: [sequence] (most likely nothing to do)
+
+# NOTHING TO DO
+
+base / ir.actions.server / group_ids (many2many) : NEW relation: res.groups
+base / ir.actions.server / groups_id (many2many) : DEL relation: res.groups
+
+# DONE: renamed groups_id to group_ids in pre-migration
+
+base / ir.actions.server / html_value (html) : NEW
+
+# DONE: filled from value in post-migration
+
+base / ir.actions.server / ir_cron_ids (one2many) : NEW relation: ir.cron
+
+# NOTHING TO DO: inverse of ir.cron#ir_actions_server_id
+
+base / ir.actions.server / model_name (char) : not stored anymore
+
+# NOTHING TO DO
+
+base / ir.actions.server / parent_id (many2one) : NEW relation: ir.actions.server
+
+# DONE: see above for child_ids
+
+base / ir.actions.server / sequence_id (many2one) : NEW relation: ir.sequence
+
+# NOTHING TO DO: new field for evaluation_type == 'sequence'
+
+base / ir.actions.server / state (selection) : selection_keys added: [object_copy] (most likely nothing to do)
+base / ir.actions.server / value_field_to_show (selection): selection_keys added: [html_value, sequence_id] (most likely nothing to do)
+
+# NOTHING TO DO
+
+base / ir.actions.server.history / action_id (many2one) : NEW relation: ir.actions.server, required
+base / ir.actions.server.history / code (text) : NEW
+
+# NOTHING TO DO: v19 keeps a history of code changes
+
+base / ir.cron / _order : _order is now 'cron_name, id' ('cron_name')
+
+# NOTHING TO DO
+
+base / ir.cron / child_ids (many2many) : type is now 'one2many' ('many2many')
+
+# NOTHING TO DO: inherited from ir.actions.server, handled there
+
+base / ir.cron.trigger / call_at (datetime) : now required
+base / ir.cron.trigger / cron_id (many2one) : now required
+
+# NOTHING TO DO: old records with missing fields will be cleaned up eventually
+
+base / ir.exports / _order : _order is now 'name, id' ('name')
+
+# NOTHING TO DO
+
+base / ir.filters / user_id (many2one) : DEL relation: res.users
+base / ir.filters / user_ids (many2many) : NEW relation: res.users
+
+# DONE: openupgrade.m2o_to_x2m in post-migration
+
+base / ir.mail_server / smtp_encryption (selection) : selection_keys added: [ssl_strict, starttls_strict] (most likely nothing to do)
+
+# NOTHING TO DO
+
+base / ir.model / abstract (boolean) : NEW
+base / ir.model / fold_name (char) : NEW
+
+# NOTHING TO DO: filled by orm
+
+base / ir.model.fields / _order : _order is now 'name, id' ('name')
+base / ir.model.fields / complete_name (char) : DEL
+
+# NOTHING TO DO
+
+base / ir.model.fields / translate (boolean) : selection_keys is now '['html_translate', 'standard', 'xml_translate']' ('False')
+base / ir.model.fields / translate (boolean) : type is now 'selection' ('boolean')
+
+# DONE: set column to NULL where it was FALSE in openupgrade_framework, because migration scripts are too late for it
+
+base / ir.module.category / _order : _order is now 'sequence, name, id' ('name')
+
+# NOTHING TO DO: we want to have the ordering by sequence as provided by Odoo
+
+base / ir.module.category / privilege_ids (one2many) : NEW relation: res.groups.privilege
+
+# NOTHING TO DO: new concept
+
+base / ir.profile / cpu_duration (float) : NEW
+base / ir.profile / others (text) : NEW
+
+# NOTHING TO DO: new funcitonality, no way of generating this data
+
+base / ir.sequence / _order : _order is now 'name, id' ('name')
+
+# NOTHING TO DO
+
+base / ir.ui.menu / group_ids (many2many) : NEW relation: res.groups
+base / ir.ui.menu / groups_id (many2many) : DEL relation: res.groups
+base / ir.ui.view / group_ids (many2many) : NEW relation: res.groups
+base / ir.ui.view / groups_id (many2many) : DEL relation: res.groups
+
+# DONE: renamed groups_id to group_ids in pre-migration
+
+base / ir.ui.view.custom / _order : _order is now 'create_date desc, id desc' ('create_date desc')
+
+# NOTHING TO DO
+
+base / properties.base.definition / properties_definition (properties_definition): NEW
+base / properties.base.definition / properties_field_id (many2one): NEW relation: ir.model.fields, required
+
+# NOTHING TO DO: filled by orm
+
+base / report.layout / _order : _order is now 'sequence, id' ('sequence')
+base / res.bank / _order : _order is now 'name, id' ('name')
+base / res.company / company_registry_placeholder (char): previously in module account
+
+# NOTHING TO DO
+
+base / res.company / mobile (char) : DEL
+
+# NOTHING TO DO: possibly some oca module will pick this up again
+
+base / res.country / _order : _order is now 'name, id' ('name')
+
+# NOTHING TO DO: possibly some oca module will pick this up again
+
+base / res.country.group / code (char) : NEW
+
+# NOTHING TO DO: filled in noupdate_changes.xml
+
+base / res.country.state / _order : _order is now 'code, id' ('code')
+base / res.currency.rate / _order : _order is now 'name desc, id' ('name desc')
+base / res.groups / _order : _order is now 'privilege_id, sequence, name, id' ('name')
+
+# NOTHING TO DO
+
+base / res.groups / category_id (many2one) : DEL relation: ir.module.category
+
+# NOTHING TO DO: code provided groups will set their own privilege if applicable, manually created ones will have to be assigned to whatever privilege makes sense
+
+base / res.groups / color (integer) : DEL
+
+# NOTHING TO DO
+
+base / res.groups / implied_by_ids (many2many) : NEW relation: res.groups
+
+# NOTHING TO DO: inverse of existing relation
+
+base / res.groups / privilege_id (many2one) : NEW relation: res.groups.privilege
+
+# NOTHING TO DO: new concept
+
+base / res.groups / sequence (integer) : NEW
+
+# NOTHING TO DO
+
+base / res.groups / user_ids (many2many) : NEW relation: res.users
+base / res.groups / users (many2many) : DEL relation: res.users
+
+# DONE: renamed field in pre-migration
+
+base / res.groups.privilege / category_id (many2one) : NEW relation: ir.module.category
+base / res.groups.privilege / description (text) : NEW
+base / res.groups.privilege / group_ids (one2many) : NEW relation: res.groups
+base / res.groups.privilege / name (char) : NEW required, translate
+base / res.groups.privilege / placeholder (char) : NEW hasdefault: default
+base / res.groups.privilege / sequence (integer) : NEW hasdefault: default
+
+# NOTHING TO DO: new concept
+
+base / res.lang / date_format (char) : selection_keys is now 'function' ('False')
+base / res.lang / date_format (char) : type is now 'selection' ('char')
+base / res.lang / grouping (char) : selection_keys is now '['[3,0]', '[3,2,0]']' ('False')
+base / res.lang / grouping (char) : type is now 'selection' ('char')
+base / res.lang / short_time_format (char) : DEL required
+base / res.lang / time_format (char) : selection_keys is now '['%H:%M:%S', '%I:%M:%S %p']' ('False')
+base / res.lang / time_format (char) : type is now 'selection' ('char')
+
+# DONE: copy original values to legacy column, map values not in selection to default value
+
+base / res.partner / mobile (char) : DEL
+
+# NOTHING TO DO: possibly some oca module will pick this up again
+
+base / res.partner / properties (properties) : NEW hasdefault: compute
+
+# NOTHING TO DO: new functionality
+
+base / res.partner / title (many2one) : DEL relation: res.partner.title
+
+# NOTHING TO DO: possibly some oca module will pick this up again
+
+base / res.partner.bank / clearing_number (char) : NEW
+base / res.partner.bank / note (text) : NEW
+
+# NOTHING TO DO: new functionality
+
+base / res.partner.category / _order : _order is now 'name, id' ('name')
+base / res.partner.industry / _order : _order is now 'name, id' ('name')
+
+# NOTHING TO DO
+
+base / res.partner.title / name (char) : DEL required
+base / res.partner.title / shortcut (char) : DEL
+
+# NOTHING TO DO: obsolete model
+
+base / res.users / group_ids (many2many) : NEW relation: res.groups, hasdefault: default
+base / res.users / groups_id (many2many) : DEL relation: res.groups
+
+# DONE: renamed groups_id to group_ids in pre-migration
+
+base / res.users / role (selection) : NEW selection_keys: ['group_system', 'group_user'], hasdefault: compute, stored: False
+base / res.users / view_group_hierarchy (json) : NEW hasdefault: default, stored: False
+
+# NOTHING TO DO: nonstored
+
+---XML records in module 'base'---
+NEW ir.actions.act_window: base.action_res_groups_privilege
+DEL ir.actions.act_window: base.action_partner_title_contact
+NEW ir.model.access: base.access_ir_actions_server_history_group_system
+NEW ir.model.access: base.access_properties_base_definition_group_system
+NEW ir.model.access: base.access_res_groups_privilege_group_erp_manager
+NEW ir.model.access: base.access_res_groups_privilege_group_user
+NEW ir.model.access: base.access_server_action_history_wizard
+DEL ir.model.access: base.access_res_partner_title_group_partner_manager
+DEL ir.model.access: base.access_res_partner_title_group_user
+NEW ir.model.constraint: base.constraint_ir_act_window_view_unique_mode_per_action
+NEW ir.model.constraint: base.constraint_ir_attachment_res_idx
+NEW ir.model.constraint: base.constraint_ir_filters_get_filters_index
+NEW ir.model.constraint: base.constraint_ir_model_data_model_res_id_index
+NEW ir.model.constraint: base.constraint_ir_model_data_module_name_uniq_index
+NEW ir.model.constraint: base.constraint_ir_ui_view_custom_user_id_ref_id
+NEW ir.model.constraint: base.constraint_ir_ui_view_model_type_inherit_id
+NEW ir.model.constraint: base.constraint_properties_base_definition_unique_properties_field_id
+NEW ir.model.constraint: base.constraint_res_country_group_check_code_uniq
+NEW ir.model.constraint: base.constraint_res_device_composite_idx
+NEW ir.model.constraint: base.constraint_res_device_log_composite_idx
+NEW ir.model.constraint: base.constraint_res_device_log_revoked_idx
+NEW ir.model.constraint: base.constraint_res_device_revoked_idx
+ir.model.constraint: base.constraint_res_groups_name_uniq (changed definition: is now 'UNIQUE (privilege_id, name)' ('unique(category_id,name)'))
+DEL ir.model.constraint: base.constraint_ir_filters_name_model_uid_unique
+NEW ir.module.category: base.module_category_esg
+NEW ir.module.category: base.module_category_human_resources_referrals
+NEW ir.module.category: base.module_category_internet_of_things_(iot)
+NEW ir.module.category: base.module_category_master_data
+NEW ir.module.category: base.module_category_shipping_connectors (noupdate)
+NEW ir.module.category: base.module_category_supply_chain (noupdate)
+DEL ir.module.category: base.module_category_inventory (noupdate)
+DEL ir.module.category: base.module_category_manufacturing (noupdate)
+DEL ir.module.category: base.module_category_usability
+DEL ir.module.category: base.module_category_user_type
+NEW ir.rule: base.properties_base_definition_rule_admin (noupdate)
+NEW ir.rule: base.res_users_rule_portal (noupdate)
+DEL ir.rule: base.ir_filters_delete_own_rule (noupdate)
+NEW ir.ui.menu: base.menu_action_res_groups_privilege
+NEW ir.ui.view: base.ir_filters_view_edit_form
+NEW ir.ui.view: base.res_users_apikeys_view_kanban
+NEW ir.ui.view: base.server_action_history_wizard_view
+NEW ir.ui.view: base.view_default_groups_form
+NEW ir.ui.view: base.view_groups_list
+NEW ir.ui.view: base.view_res_groups_privilege_form
+NEW ir.ui.view: base.view_res_groups_privilege_list
+NEW ir.ui.view: base.view_server_action_kanban
+DEL ir.ui.view: base.res_partner_view_form_private
+DEL ir.ui.view: base.user_groups_view
+DEL ir.ui.view: base.view_partner_title_form
+DEL ir.ui.view: base.view_partner_title_tree
+NEW res.country: base.xi (noupdate)
+NEW res.country.group: base.dom-tom [renamed from l10n_fr module] (noupdate) (noupdate switched)
+NEW res.country.group: base.europe_prefix (noupdate)
+
+# NOTHING TO DO
+
+NEW res.country.state: base.state_at_1 [renamed from l10n_at module]
+NEW res.country.state: base.state_at_2 [renamed from l10n_at module]
+NEW res.country.state: base.state_at_3 [renamed from l10n_at module]
+NEW res.country.state: base.state_at_4 [renamed from l10n_at module]
+NEW res.country.state: base.state_at_5 [renamed from l10n_at module]
+NEW res.country.state: base.state_at_6 [renamed from l10n_at module]
+NEW res.country.state: base.state_at_7 [renamed from l10n_at module]
+NEW res.country.state: base.state_at_8 [renamed from l10n_at module]
+NEW res.country.state: base.state_at_9 [renamed from l10n_at module]
+NEW res.country.state: base.state_bd_a [renamed from l10n_bd module]
+NEW res.country.state: base.state_bd_b [renamed from l10n_bd module]
+NEW res.country.state: base.state_bd_c [renamed from l10n_bd module]
+NEW res.country.state: base.state_bd_d [renamed from l10n_bd module]
+NEW res.country.state: base.state_bd_e [renamed from l10n_bd module]
+NEW res.country.state: base.state_bd_f [renamed from l10n_bd module]
+NEW res.country.state: base.state_bd_g [renamed from l10n_bd module]
+NEW res.country.state: base.state_bd_h [renamed from l10n_bd module]
+
+# DONE: renamed from l10n module
+
+NEW res.country.state: base.state_id_pe
+
+# DONE: renamed from base.state_id_pp
+
+NEW res.country.state: base.state_iq_01 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_01_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_02 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_02_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_03 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_03_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_04 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_04_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_05 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_05_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_06 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_06_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_07 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_07_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_08 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_08_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_09 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_09_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_10 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_10_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_11 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_11_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_12 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_12_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_13 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_13_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_14 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_14_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_15 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_15_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_16 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_16_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_17 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_17_ar [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_18 [renamed from l10n_iq module]
+NEW res.country.state: base.state_iq_18_ar [renamed from l10n_iq module]
+
+# DONE: renamed from l10n module
+
+NEW res.country.state: base.state_ng_ab
+NEW res.country.state: base.state_ng_ad
+NEW res.country.state: base.state_ng_ak
+NEW res.country.state: base.state_ng_an
+NEW res.country.state: base.state_ng_ba
+NEW res.country.state: base.state_ng_be
+NEW res.country.state: base.state_ng_bo
+NEW res.country.state: base.state_ng_by
+NEW res.country.state: base.state_ng_cr
+NEW res.country.state: base.state_ng_de
+NEW res.country.state: base.state_ng_eb
+NEW res.country.state: base.state_ng_ed
+NEW res.country.state: base.state_ng_ek
+NEW res.country.state: base.state_ng_en
+NEW res.country.state: base.state_ng_fc
+NEW res.country.state: base.state_ng_go
+NEW res.country.state: base.state_ng_im
+NEW res.country.state: base.state_ng_ji
+NEW res.country.state: base.state_ng_ka
+NEW res.country.state: base.state_ng_ke
+NEW res.country.state: base.state_ng_kn
+NEW res.country.state: base.state_ng_ko
+NEW res.country.state: base.state_ng_kt
+NEW res.country.state: base.state_ng_kw
+NEW res.country.state: base.state_ng_la
+NEW res.country.state: base.state_ng_na
+NEW res.country.state: base.state_ng_ni
+NEW res.country.state: base.state_ng_og
+NEW res.country.state: base.state_ng_on
+NEW res.country.state: base.state_ng_os
+NEW res.country.state: base.state_ng_oy
+NEW res.country.state: base.state_ng_pl
+NEW res.country.state: base.state_ng_ri
+NEW res.country.state: base.state_ng_so
+NEW res.country.state: base.state_ng_ta
+NEW res.country.state: base.state_ng_yo
+NEW res.country.state: base.state_ng_za
+NEW res.country.state: base.state_ph_01
+NEW res.country.state: base.state_ph_02
+NEW res.country.state: base.state_ph_03
+NEW res.country.state: base.state_ph_04
+NEW res.country.state: base.state_ph_05
+NEW res.country.state: base.state_ph_06
+NEW res.country.state: base.state_ph_07
+NEW res.country.state: base.state_ph_08
+NEW res.country.state: base.state_ph_09
+NEW res.country.state: base.state_ph_10
+NEW res.country.state: base.state_ph_11
+NEW res.country.state: base.state_ph_12
+NEW res.country.state: base.state_ph_13
+NEW res.country.state: base.state_ph_14
+NEW res.country.state: base.state_ph_15
+NEW res.country.state: base.state_ph_16
+NEW res.country.state: base.state_ph_17
+NEW res.country.state: base.state_ph_18
+NEW res.country.state: base.state_ph_19
+NEW res.country.state: base.state_ph_20
+NEW res.country.state: base.state_ph_21
+NEW res.country.state: base.state_ph_22
+NEW res.country.state: base.state_ph_23
+NEW res.country.state: base.state_ph_24
+NEW res.country.state: base.state_ph_25
+NEW res.country.state: base.state_ph_26
+NEW res.country.state: base.state_ph_27
+NEW res.country.state: base.state_ph_28
+NEW res.country.state: base.state_ph_29
+NEW res.country.state: base.state_ph_30
+NEW res.country.state: base.state_ph_31
+NEW res.country.state: base.state_ph_32
+NEW res.country.state: base.state_ph_33
+NEW res.country.state: base.state_ph_34
+NEW res.country.state: base.state_ph_35
+NEW res.country.state: base.state_ph_36
+NEW res.country.state: base.state_ph_37
+NEW res.country.state: base.state_ph_38
+NEW res.country.state: base.state_ph_39
+NEW res.country.state: base.state_ph_40
+NEW res.country.state: base.state_ph_41
+NEW res.country.state: base.state_ph_42
+NEW res.country.state: base.state_ph_43
+NEW res.country.state: base.state_ph_44
+NEW res.country.state: base.state_ph_45
+NEW res.country.state: base.state_ph_46
+NEW res.country.state: base.state_ph_47
+NEW res.country.state: base.state_ph_48
+NEW res.country.state: base.state_ph_49
+NEW res.country.state: base.state_ph_50
+NEW res.country.state: base.state_ph_51
+NEW res.country.state: base.state_ph_52
+NEW res.country.state: base.state_ph_53
+NEW res.country.state: base.state_ph_54
+NEW res.country.state: base.state_ph_55
+NEW res.country.state: base.state_ph_56
+NEW res.country.state: base.state_ph_57
+NEW res.country.state: base.state_ph_58
+NEW res.country.state: base.state_ph_59
+NEW res.country.state: base.state_ph_60
+NEW res.country.state: base.state_ph_61
+NEW res.country.state: base.state_ph_62
+NEW res.country.state: base.state_ph_63
+NEW res.country.state: base.state_ph_64
+NEW res.country.state: base.state_ph_65
+NEW res.country.state: base.state_ph_66
+NEW res.country.state: base.state_ph_67
+NEW res.country.state: base.state_ph_68
+NEW res.country.state: base.state_ph_69
+NEW res.country.state: base.state_ph_70
+NEW res.country.state: base.state_ph_71
+NEW res.country.state: base.state_ph_72
+NEW res.country.state: base.state_ph_73
+NEW res.country.state: base.state_ph_74
+NEW res.country.state: base.state_ph_75
+NEW res.country.state: base.state_ph_76
+NEW res.country.state: base.state_ph_77
+NEW res.country.state: base.state_ph_78
+NEW res.country.state: base.state_ph_79
+NEW res.country.state: base.state_ph_80
+NEW res.country.state: base.state_ph_81
+NEW res.country.state: base.state_ph_82
+NEW res.country.state: base.state_ph_83
+
+# NOTHING TO DO
+
+NEW res.country.state: base.state_pk_ajk [renamed from l10n_pk module]
+NEW res.country.state: base.state_pk_ba [renamed from l10n_pk module]
+NEW res.country.state: base.state_pk_gb [renamed from l10n_pk module]
+NEW res.country.state: base.state_pk_is [renamed from l10n_pk module]
+NEW res.country.state: base.state_pk_kp [renamed from l10n_pk module]
+NEW res.country.state: base.state_pk_pb [renamed from l10n_pk module]
+NEW res.country.state: base.state_pk_sd [renamed from l10n_pk module]
+NEW res.country.state: base.state_pl_ds [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_kp [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_lb [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_ld [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_ls [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_mp [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_mz [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_op [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_pk [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_pl [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_pm [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_sk [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_sl [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_wm [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_wp [renamed from l10n_pl module]
+NEW res.country.state: base.state_pl_zp [renamed from l10n_pl module]
+
+# DONE: renamed from l10n module
+
+NEW res.country.state: base.state_so_1
+NEW res.country.state: base.state_so_2
+NEW res.country.state: base.state_so_3
+NEW res.country.state: base.state_so_4
+NEW res.country.state: base.state_so_5
+NEW res.country.state: base.state_so_6
+NEW res.country.state: base.state_so_7
+NEW res.country.state: base.state_so_8
+
+# NOTHING TO DO
+
+NEW res.country.state: base.state_tw_chh [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_cic [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_cih [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_hch [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_hct [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_hlh [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_ilh [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_khc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_klc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_kmc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_lcc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_mlh [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_ntc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_ntpc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_phc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_pth [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_tcc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_tnh [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_tpc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_tth [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_tyc [renamed from l10n_tw module]
+NEW res.country.state: base.state_tw_ylh [renamed from l10n_tw module]
+
+# DONE: renamed from l10n module
+
+DEL res.country.state: base.state_id_pp
+
+# DONE: renamed to base.state_id_pe
+
+DEL res.country.state: base.state_vn_VN-03
+DEL res.country.state: base.state_vn_VN-06
+DEL res.country.state: base.state_vn_VN-14
+DEL res.country.state: base.state_vn_VN-20
+DEL res.country.state: base.state_vn_VN-24
+DEL res.country.state: base.state_vn_VN-27
+DEL res.country.state: base.state_vn_VN-28
+DEL res.country.state: base.state_vn_VN-31
+DEL res.country.state: base.state_vn_VN-32
+DEL res.country.state: base.state_vn_VN-36
+DEL res.country.state: base.state_vn_VN-40
+DEL res.country.state: base.state_vn_VN-41
+DEL res.country.state: base.state_vn_VN-43
+DEL res.country.state: base.state_vn_VN-46
+DEL res.country.state: base.state_vn_VN-47
+DEL res.country.state: base.state_vn_VN-50
+DEL res.country.state: base.state_vn_VN-51
+DEL res.country.state: base.state_vn_VN-52
+DEL res.country.state: base.state_vn_VN-53
+DEL res.country.state: base.state_vn_VN-54
+DEL res.country.state: base.state_vn_VN-55
+DEL res.country.state: base.state_vn_VN-57
+DEL res.country.state: base.state_vn_VN-58
+DEL res.country.state: base.state_vn_VN-61
+DEL res.country.state: base.state_vn_VN-63
+DEL res.country.state: base.state_vn_VN-67
+DEL res.country.state: base.state_vn_VN-70
+DEL res.country.state: base.state_vn_VN-72
+DEL res.country.state: base.state_vn_VN-73
+
+# NOTHING TO DO
+
+NEW res.groups: base.default_user_group (noupdate)
+
+# DONE: set implied_ids from base.default_user in post_migration
+
+NEW res.groups.privilege: base.res_groups_privilege_contact
+NEW res.groups.privilege: base.res_groups_privilege_export
+
+# NOTHING TO DO
+
+DEL res.partner.title: base.res_partner_title_doctor (noupdate)
+DEL res.partner.title: base.res_partner_title_madam (noupdate)
+DEL res.partner.title: base.res_partner_title_miss (noupdate)
+DEL res.partner.title: base.res_partner_title_mister (noupdate)
+DEL res.partner.title: base.res_partner_title_prof (noupdate)
+
+# NOTHING TO DO: will be cleaned by database_cleanup
+
+DEL res.users: base.default_user (noupdate)
+
+# DONE: see above for base.default_user_group
diff --git a/openupgrade_scripts/scripts/base/tests/data_base_migration.py b/openupgrade_scripts/scripts/base/tests/data_base_migration.py
new file mode 100644
index 00000000000..472065b3655
--- /dev/null
+++ b/openupgrade_scripts/scripts/base/tests/data_base_migration.py
@@ -0,0 +1,44 @@
+env = locals().get("env")
+# server action with multiple children
+parent_action1 = env["ir.actions.server"].create(
+ {
+ "name": "test server action 1",
+ "state": "multi",
+ "model_id": env.ref("base.model_ir_module_module").id,
+ "child_ids": [
+ (
+ 0,
+ 0,
+ {
+ "name": "child action 1",
+ "model_id": env.ref("base.model_ir_module_module").id,
+ },
+ ),
+ (
+ 0,
+ 0,
+ {
+ "name": "child action 2",
+ "model_id": env.ref("base.model_ir_module_module").id,
+ },
+ ),
+ ],
+ }
+)
+parent_action1.copy(
+ {
+ "name": "test server action 2",
+ "child_ids": [
+ (6, 0, parent_action1.child_ids.ids),
+ (
+ 0,
+ 0,
+ {
+ "name": "child action 3",
+ "model_id": env.ref("base.model_ir_module_module").id,
+ },
+ ),
+ ],
+ }
+)
+env.cr.commit()
diff --git a/openupgrade_scripts/scripts/base/tests/test_base_migration.py b/openupgrade_scripts/scripts/base/tests/test_base_migration.py
new file mode 100644
index 00000000000..525218394f5
--- /dev/null
+++ b/openupgrade_scripts/scripts/base/tests/test_base_migration.py
@@ -0,0 +1,26 @@
+from odoo.tests import TransactionCase
+
+from odoo.addons.openupgrade_framework import openupgrade_test
+
+
+@openupgrade_test
+class TestBaseMigration(TransactionCase):
+ def test_server_action_child_ids(self):
+ """
+ Test that server action children are migrated correctly
+ """
+ action1 = self.env["ir.actions.server"].search(
+ [("name", "=", "test server action 1")]
+ )
+ self.assertTrue(action1)
+ self.assertItemsEqual(
+ action1.child_ids.mapped("name"), ("child action 1", "child action 2")
+ )
+ action2 = self.env["ir.actions.server"].search(
+ [("name", "=", "test server action 2")]
+ )
+ self.assertTrue(action2)
+ self.assertItemsEqual(
+ action2.child_ids.mapped("name"),
+ ("child action 1", "child action 2", "child action 3"),
+ )
diff --git a/openupgrade_scripts/scripts/uom/19.0.1.0/noupdate_changes_work.xml b/openupgrade_scripts/scripts/uom/19.0.1.0/noupdate_changes_work.xml
new file mode 100644
index 00000000000..ba0e7289c87
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/19.0.1.0/noupdate_changes_work.xml
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ton
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openupgrade_scripts/scripts/uom/19.0.1.0/post-migration.py b/openupgrade_scripts/scripts/uom/19.0.1.0/post-migration.py
new file mode 100644
index 00000000000..75ac9db015c
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/19.0.1.0/post-migration.py
@@ -0,0 +1,65 @@
+# Copyright 2025 Hunki Enterprises BV
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from openupgradelib import openupgrade
+
+
+def _uom_relative_uom_id_relative_factor(env):
+ """
+ UOM categories have been obsoleted, UOMs are a tree now with the reference
+ unit as root and relative_factor giving the ratio to the UOM linked in
+ relative_uom_id
+ """
+
+ def has_xmlid(uom):
+ return env["ir.model.data"].search_count(
+ [
+ ("model", "=", "uom.uom"),
+ ("res_id", "=", uom.id),
+ ("module", "!=", "__export__"),
+ ]
+ )
+
+ env.cr.execute(
+ f"""
+ SELECT
+ array_agg(id),
+ array_agg({openupgrade.get_legacy_name("factor")}),
+ array_agg({openupgrade.get_legacy_name("uom_type")})
+ FROM
+ uom_uom
+ WHERE {openupgrade.get_legacy_name("category_id")} IS NOT NULL
+ GROUP BY {openupgrade.get_legacy_name("category_id")}
+ """
+ )
+ for ids, factors, uom_types in env.cr.fetchall():
+ uoms = env["uom.uom"].browse(ids)
+ uom2factor = dict(zip(uoms, factors, strict=False))
+ uom2type = dict(zip(uoms, uom_types, strict=False))
+
+ old_reference = uoms.filtered(
+ lambda x, uom2type=uom2type: uom2type[x] == "reference"
+ )
+
+ for uom in uoms - old_reference:
+ if has_xmlid(uom):
+ # uoms with xmlid will be updated by the migration of the module
+ # providing them
+ continue
+
+ relative_factor = (
+ uom2factor[uom] if uom2type[uom] == "bigger" else (1 / uom2factor[uom])
+ )
+
+ uom.write(
+ {
+ "relative_uom_id": old_reference,
+ "relative_factor": relative_factor,
+ }
+ )
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ openupgrade.load_data(env, "uom", "19.0.1.0/noupdate_changes_work.xml")
+ _uom_relative_uom_id_relative_factor(env)
diff --git a/openupgrade_scripts/scripts/uom/19.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/uom/19.0.1.0/pre-migration.py
new file mode 100644
index 00000000000..635d213272e
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/19.0.1.0/pre-migration.py
@@ -0,0 +1,32 @@
+# Copyright 2025 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.copy_columns(
+ env.cr,
+ {
+ "uom_uom": [
+ ("category_id", None, None),
+ ("factor", None, None),
+ ("rounding", None, None),
+ ("uom_type", None, None),
+ ]
+ },
+ )
+ openupgrade.rename_xmlids(
+ env.cr,
+ [
+ ("product.decimal_product_uom", "uom.decimal_product_uom"),
+ ("uom.uom_square_foot", "uom.product_uom_square_foot"),
+ ("uom.uom_square_meter", "uom.product_uom_square_meter"),
+ ],
+ )
+ # this would be cleaned up after the migration, but we can't have it during
+ # migration
+ openupgrade.delete_sql_constraint_safely(
+ env, "uom", "uom_uom", "factor_reference_is_one"
+ )
diff --git a/openupgrade_scripts/scripts/uom/19.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/uom/19.0.1.0/upgrade_analysis_work.txt
new file mode 100644
index 00000000000..ea3c9aebe71
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/19.0.1.0/upgrade_analysis_work.txt
@@ -0,0 +1,70 @@
+---Models in module 'uom'---
+obsolete model uom.category
+---Fields in module 'uom'---
+uom / uom.category / name (char) : DEL required
+uom / uom.category / reference_uom_id (many2one) : DEL relation: uom.uom, stored: False
+uom / uom.category / uom_ids (one2many) : DEL relation: uom.uom
+
+# NOTHING TO DO
+
+uom / uom.uom / _order : _order is now 'sequence, relative_uom_id, id' ('factor DESC, id')
+
+# NOTHING TO DO
+
+uom / uom.uom / category_id (many2one) : DEL relation: uom.category, required
+
+# NOTHING TO DO
+
+uom / uom.uom / factor (float) : now a function
+uom / uom.uom / parent_path (char) : NEW
+uom / uom.uom / related_uom_ids (one2many) : NEW relation: uom.uom
+uom / uom.uom / relative_factor (float) : NEW required, hasdefault: default
+uom / uom.uom / relative_uom_id (many2one) : NEW relation: uom.uom
+
+# DONE: compute relative_factor, relative_uom_id for custom UOMs in post-migration
+
+uom / uom.uom / rounding (float) : not stored anymore
+
+# DONE: copied to legacy column in pre-migration
+
+uom / uom.uom / rounding (float) : now a function
+uom / uom.uom / sequence (integer) : NEW hasdefault: compute
+
+# NOTHING TO DO
+
+uom / uom.uom / uom_type (selection) : DEL required, selection_keys: ['bigger', 'reference', 'smaller']
+
+# DONE: copied to legacy column in pre-migration
+
+---XML records in module 'uom'---
+NEW decimal.precision: uom.decimal_product_uom [renamed from product module] (noupdate)
+
+# DONE: renamed in pre-migration
+
+DEL ir.actions.act_window: uom.product_uom_categ_form_action
+DEL ir.model.access: uom.access_uom_category_manager
+DEL ir.model.access: uom.access_uom_category_user
+ir.model.constraint: uom.constraint_uom_uom_factor_gt_zero (changed definition: is now 'CHECK (relative_factor!=0)' ('check(factor!=0)'))
+DEL ir.model.constraint: uom.constraint_uom_uom_factor_reference_is_one
+DEL ir.model.constraint: uom.constraint_uom_uom_rounding_gt_zero
+DEL ir.ui.view: uom.product_uom_categ_form_view
+DEL ir.ui.view: uom.product_uom_categ_tree_view
+DEL ir.ui.view: uom.uom_categ_view_search
+DEL uom.category: uom.product_uom_categ_energy (noupdate)
+DEL uom.category: uom.product_uom_categ_kgm (noupdate)
+DEL uom.category: uom.product_uom_categ_unit (noupdate)
+DEL uom.category: uom.product_uom_categ_vol (noupdate)
+DEL uom.category: uom.uom_categ_length (noupdate)
+DEL uom.category: uom.uom_categ_surface (noupdate)
+DEL uom.category: uom.uom_categ_wtime (noupdate)
+NEW uom.uom: uom.product_uom_milliliter (noupdate)
+NEW uom.uom: uom.product_uom_pack_6 (noupdate)
+
+# NOTHING TO DO
+
+NEW uom.uom: uom.product_uom_square_foot (noupdate)
+NEW uom.uom: uom.product_uom_square_meter (noupdate)
+DEL uom.uom: uom.uom_square_foot (noupdate)
+DEL uom.uom: uom.uom_square_meter (noupdate)
+
+# DONE: renamed in pre-migration
diff --git a/openupgrade_scripts/scripts/uom/tests/data_uom_migration.py b/openupgrade_scripts/scripts/uom/tests/data_uom_migration.py
new file mode 100644
index 00000000000..2136c11c219
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/tests/data_uom_migration.py
@@ -0,0 +1,51 @@
+env = locals().get("env")
+# decimeter
+env["uom.uom"].create(
+ {
+ "name": "dm",
+ "category_id": env.ref("uom.uom_categ_length").id,
+ "factor": 10,
+ "uom_type": "smaller",
+ }
+)
+# megameter
+env["uom.uom"].create(
+ {
+ "name": "Mm",
+ "category_id": env.ref("uom.uom_categ_length").id,
+ "factor": 1000000,
+ "uom_type": "bigger",
+ }
+)
+# entirely custom uom category
+uom_category = env["uom.category"].create(
+ {
+ "name": "Electric current",
+ }
+)
+env["uom.uom"].create(
+ {
+ "name": "A",
+ "category_id": uom_category.id,
+ "factor": 1,
+ "uom_type": "reference",
+ }
+)
+env["uom.uom"].create(
+ {
+ "name": "mA",
+ "category_id": uom_category.id,
+ "factor": 1000,
+ "uom_type": "smaller",
+ }
+)
+env["uom.uom"].create(
+ {
+ "name": "MA",
+ "category_id": uom_category.id,
+ "factor": 1000000,
+ "uom_type": "bigger",
+ }
+)
+
+env.cr.commit()
diff --git a/openupgrade_scripts/scripts/uom/tests/test_uom_migration.py b/openupgrade_scripts/scripts/uom/tests/test_uom_migration.py
new file mode 100644
index 00000000000..66faa649609
--- /dev/null
+++ b/openupgrade_scripts/scripts/uom/tests/test_uom_migration.py
@@ -0,0 +1,31 @@
+from odoo.tests import TransactionCase
+
+from odoo.addons.openupgrade_framework import openupgrade_test
+
+
+@openupgrade_test
+class TestUomMigration(TransactionCase):
+ def test_uoms(self):
+ """
+ Test that decimeters and megameters compute correctly
+ """
+ dm = self.env["uom.uom"].search([("name", "=", "dm")])
+ Mm = self.env["uom.uom"].search([("name", "=", "Mm")])
+ self.assertEqual(
+ dm._compute_quantity(1, Mm, round=False),
+ 0.0000001,
+ )
+ self.assertEqual(
+ Mm._compute_quantity(1, dm),
+ 10000000,
+ )
+ mA = self.env["uom.uom"].search([("name", "=", "mA")])
+ MA = self.env["uom.uom"].search([("name", "=", "MA")])
+ self.assertEqual(
+ mA._compute_quantity(1, MA, round=False),
+ 0.000000001,
+ )
+ self.assertEqual(
+ MA._compute_quantity(1, mA),
+ 1000000000,
+ )