diff --git a/docsource/modules190-200.rst b/docsource/modules190-200.rst new file mode 100644 index 00000000000..e1bae2b073e --- /dev/null +++ b/docsource/modules190-200.rst @@ -0,0 +1,1342 @@ +Module coverage 19.0 -> 20.0 +============================ + +.. include:: coverage_legend.rst + ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| Module | Status + Extra Information | ++===================================================+======================+=================================================+ +| account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| account_add_gln | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_check_printing | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_debit_note | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_edi_proxy_client | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_edi_ubl_cii | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_fleet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| account_payment_custom | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_payment_interco | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_peppol | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| account_peppol_advanced_fields | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| account_peppol_response | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_qr_code_emv | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_qr_code_sepa | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_tax_python | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_update_tax_tags | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| analytic | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| api_doc | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| attachment_indexation | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_ldap | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_oauth | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_passkey | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_passkey_portal | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_password_policy | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_password_policy_portal | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_password_policy_signup | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_signup | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_timeout | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_totp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_totp_mail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_totp_portal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| barcodes | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| barcodes_gs1_nomenclature | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base |Done | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_address_extended | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_automation | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_geolocalize | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| base_iban | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_import | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_import_module | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_install_request | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| base_report_paper_muncher | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| base_report_wkhtmltox | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_setup | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_sparse_field | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| base_vat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| board | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| bus | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| calendar | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| calendar_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| certificate | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| cloud_storage | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| cloud_storage_azure | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| cloud_storage_google | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| cloud_storage_migration | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| contacts | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm |Done | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_iap_enrich |Nothing to do |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_iap_mine |Done |SIC industry catalog replaces reveal ids. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_livechat |Done |Chatbot steps and UTM reference. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_mail_plugin |Done |Removed obsolete plugin actions. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| crm_sale_project | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_sms |Nothing to do |Access rows recreated from ir.access.csv. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| data_recycle | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| delivery | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| delivery_mondialrelay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| delivery_stock_picking_batch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| digest | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_booth | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_booth_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_crm_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_product | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| fleet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| fleet_maintenance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| gamification | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| gamification_sale_crm | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| google_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| google_address_autocomplete | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| google_calendar | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| google_gmail | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| google_recaptcha | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| hr_address_extended | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_attendance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_calendar | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| hr_calendar_google | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_expense | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_fleet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_gamification | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_holidays_attendance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| hr_holidays_homeworking | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| hr_homeworking | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| hr_homeworking_calendar | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| hr_hourly_cost | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_livechat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_maintenance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| hr_org_chart | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_presence | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_recruitment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_recruitment_skills | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_recruitment_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_recruitment_survey | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_skills | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_skills_event | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_skills_slides | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_skills_survey | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_timesheet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_timesheet_attendance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_work_entry | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| hr_work_entry_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| html_builder | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| html_editor | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| http_routing | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| iap | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| iap_crm | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| iap_mail | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| im_livechat | |Partial: chatbot source map only. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| iot_base | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| iot_webserial | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_account_withholding_tax | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_account_withholding_tax_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ae | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ae_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_anz_ubl_pint | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ar | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ar_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ar_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ar_website_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ar_withholding | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_at | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_au | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bd | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_be | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_be_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_be_pos_restaurant | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_be_pos_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bf | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bg | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bg_ledger | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bh | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bj | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bo | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_br | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_br_sales | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_br_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ca | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cd | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cf | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cg | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ch_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ci | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cl | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cm | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_cn_city | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_co | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_co_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cr | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cy | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_de | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008 | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_expense | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_purchase | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_repair | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_stock | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_dk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_dk_fik | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_dk_nemhandel | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_dk_nemhandel_response | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_dk_oioubl | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_do | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_dz | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ec | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ec_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_ec_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ee | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_eg | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_eg_edi_eta | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_eg_edi_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_facturae | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_sii | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_tbai | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_tbai_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_verifactu | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_verifactu_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_es_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_et | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_eu_account_vies | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_eu_oss | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fi_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_facturx_chorus_pro | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_hr_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_fr_hr_work_entry_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_fr_payment | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_pdp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_pdp_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_pos_cert | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ga | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gcc_invoice | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gcc_invoice_stock_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gcc_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ge | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gf | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gn | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gp | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gq | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gr_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_gr_edi_delivery_note | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gr_edi_e_invoo | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gt | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gw | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hn | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hr | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hr_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hr_kuna | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hu | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hu_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_hu_edi_receive | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_id | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_id_efaktur_coretax | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_id_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_id_pos_self_order_qris | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ie | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_il | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_in_boe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_ewaybill | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_ewaybill_irn | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_ewaybill_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_hr_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_purchase_stock | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_sale_stock | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_stock | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_iq | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it_edi_doi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it_edi_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it_stock_ddt | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_jo | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_jo_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_jo_edi_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_jp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_jp_ubl_pint | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ke | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ke_edi_tremol | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_kh | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_km | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_kr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_kr_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_kw | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_kz | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_latam_base | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_latam_check | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_latam_invoice_document | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_lb_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_lk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_lk_invoice | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_lt | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_lu | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_lv | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ma | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mc | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_mk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ml | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_mm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mn | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mq | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mr | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mt | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mt_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mu_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mx | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_my | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_my_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_my_edi_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_my_ubl_pint | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mz | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ne | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ng | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_nl | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_no | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_nz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_om | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pa | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pe_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ph | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_ph_invoice | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_ph_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_pk_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_pk_edi_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pl | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_pl_bank_verification | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pl_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pl_edi_jst | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pt | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_qa | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_re | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ro | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_ro_cpv_code | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ro_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ro_edi_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_ro_edi_stock_batch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_rs | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_rs_edi | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_rw | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sa | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sa_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sa_edi_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sa_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_sa_withholding_tax | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_se | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sg | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sg_ubl_pint | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_si | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sn | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_syscohada | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_td | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tg | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_th | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tn | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_tr_nilvera | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_tr_nilvera_base_vat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_tr_nilvera_edispatch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_tr_nilvera_einvoice | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_tr_nilvera_einvoice_extended | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tw | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tw_edi_ecpay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tw_edi_ecpay_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_tw_edi_ecpay_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tw_edi_ecpay_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tz_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ua | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ug | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_uk | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_us | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_us_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_uy | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_uy_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_uz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ve | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_vn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_vn_edi_viettel | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_vn_edi_viettel_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_vn_edi_viettel_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_yt | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_za | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_zm_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| link_tracker | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| loyalty | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| lunch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail_bot | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail_bot_hr | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail_group | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail_plugin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| mail_tracking | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| mail_tracking_mass_mailing | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| mail_tracking_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| maintenance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| marketing_card | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| marketing_card_event | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_crm | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_crm_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_event | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_event_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_event_track | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_event_track_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_sale_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_slides | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_themes | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| microsoft_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| microsoft_calendar | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| microsoft_outlook | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| mrp_delivery | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_landed_costs | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_product_expiry | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_repair | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting_dropshipping | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting_landed_costs | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting_purchase | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| mrp_subcontracting_repair | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| mysubscription | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| onboarding | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| partner_autocomplete | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| partnership | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_adyen | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_aps | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_asiapay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_authorize | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_buckaroo | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_custom | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_demo | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_dpo | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_ecpay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_flutterwave | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_iyzico | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_mercado_pago | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_mollie | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_nuvei | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_paymob | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_paypal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_payu | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_razorpay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_redsys | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_stripe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_toss_payments | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_worldline | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_xendit | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| phone_validation | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| point_of_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| populate | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| portal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| portal_discuss | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| portal_rating | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_account_tax_python | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_adyen | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_bancontact_pay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_cashdro | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_cashmatic | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_discount | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_dpopay | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_edi_ubl | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_event | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_event_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_glory_cash | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_hr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_hr_restaurant | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_imin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_loyalty | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_mercado_pago | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_mollie | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_mrp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_online_payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_online_payment_self_order | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_partner_autocomplete | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_pine_labs | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_qfpay | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_razorpay | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_repair | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_restaurant | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_restaurant_adyen | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_restaurant_loyalty | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_restaurant_stripe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_safaricom | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_sale_delivery | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_sale_loyalty | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_sale_margin | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_sale_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_self_order_adyen | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_self_order_bancontact_pay | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_self_order_event | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order_pine_labs | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order_qfpay | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order_razorpay | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_self_order_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_self_order_stripe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_self_order_viva_com | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_stripe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_viva_com | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| printer | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| privacy_lookup | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product_email_template | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product_expiry | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product_margin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product_matrix | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_hr_expense | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_hr_skills | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mail_plugin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mrp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mrp_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mrp_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mrp_stock_landed_costs | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_purchase | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_purchase_stock | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_sale_expense | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_stock | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_stock_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_stock_landed_costs | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_timesheet_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_todo | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| purchase_alternative | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| purchase_alternative_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| purchase_alternative_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_edi_ubl_bis3 | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_mrp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_product_matrix | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_repair | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_requisition | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| purchase_requisition_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_requisition_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| rating | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| repair | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| resource | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| resource_mail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| rpc | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_edi_ubl | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_expense | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_expense_margin | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_gelato | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_gelato_stock | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_loyalty | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_loyalty_delivery | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_management | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_margin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_mrp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_mrp_margin | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_pdf_quote_builder | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_product_matrix | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_project | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| sale_project_margin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_project_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_project_stock_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_purchase | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_purchase_project | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_purchase_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_service | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_stock_margin | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_stock_product_expiry | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_timesheet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_timesheet_margin | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sales_team |Nothing to do |Access rows recreated from ir.access.csv. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sms_twilio | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| snailmail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| snailmail_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| social_media | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_event_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_hr_expense | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_hr_timesheet | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_im_livechat | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_pos_hr | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_pos_restaurant | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_sale_timesheet | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_stock_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_website_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_website_sale_slides | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_delivery | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_dropshipping | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_fleet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_landed_costs | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_maintenance | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| stock_picking_batch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| survey | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| survey_crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| theme_default | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| transifex | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| uom | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| utm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| web | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| web_hierarchy | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| web_tour | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| web_unsplash | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| website_address_autocomplete | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_blog | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_cf_turnstile | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm_iap_reveal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm_livechat | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm_partner_assign | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_customer | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_booth | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_booth_exhibitor | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_booth_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_booth_sale_exhibitor | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_crm | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_exhibitor | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_track | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_track_live | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_track_live_quiz | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_track_quiz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_forum | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_google_map | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_hr_recruitment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_hr_recruitment_livechat | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_links | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_livechat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_mail | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_mail_group | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_mass_mailing | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| website_mass_mailing_event | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_mass_mailing_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_partner | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| website_partnership | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_profile | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_project | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_sale_autocomplete | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_collect | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_sale_collect_wishlist | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_sale_comparison | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_sale_comparison_wishlist | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_gelato | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_loyalty | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_mass_mailing | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_sale_mondialrelay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_mrp | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| website_sale_project | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_slides | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_sale_stock_wishlist | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_sale_wishlist | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_slides | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_slides_forum | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_slides_survey | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_timesheet | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ diff --git a/openupgrade_scripts/scripts/crm/20.0.1.9/post-migration.py b/openupgrade_scripts/scripts/crm/20.0.1.9/post-migration.py new file mode 100644 index 00000000000..c2abf80abda --- /dev/null +++ b/openupgrade_scripts/scripts/crm/20.0.1.9/post-migration.py @@ -0,0 +1,20 @@ +# Copyright 2026 Odoo Community Association (OCA) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from openupgradelib import openupgrade + +# Data files that defined these records were removed from the manifest, so +# module loading does not delete them until the very end of the upgrade. +# Drop them before view validation: the wizard view targets a transient +# model that no longer exists, and the server actions call removed methods. +_DELETED_XMLIDS = [ + "crm.action_crm_lead2opportunity_partner", + "crm.action_opportunity_forecast", + "crm.action_your_pipeline", + "crm.view_crm_lead2opportunity_partner", + "crm.crm_lead_all_leads_view_calendar", +] + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.delete_records_safely_by_xml_id(env, _DELETED_XMLIDS) diff --git a/openupgrade_scripts/scripts/crm/20.0.1.9/pre-migration.py b/openupgrade_scripts/scripts/crm/20.0.1.9/pre-migration.py new file mode 100644 index 00000000000..51220b5676f --- /dev/null +++ b/openupgrade_scripts/scripts/crm/20.0.1.9/pre-migration.py @@ -0,0 +1,183 @@ +# Copyright 2026 Odoo Community Association (OCA) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +import logging + +from openupgradelib import openupgrade + +_logger = logging.getLogger(__name__) + + +def _preserve_email_cc(env): + """Keep crm.lead email_cc, which mail.thread.cc used to store. + + The mixin is gone in 20.0 (odoo/odoo@3c26c0553754) and nothing else + holds those addresses. Append them to the lead description, then drop + the column so it is not an invisible leftover. + """ + if not openupgrade.column_exists(env.cr, "crm_lead", "email_cc"): + return + openupgrade.logged_query( + env.cr, + """ + UPDATE crm_lead + SET description = CONCAT( + COALESCE(description, ''), + CASE + WHEN COALESCE(description, '') = '' THEN '' + ELSE '
' + END, + '

Email cc preserved from previous version: ', + replace( + replace(replace(btrim(email_cc), '&', '&'), '<', '<'), + '>', + '>' + ), + '

' + ) + WHERE COALESCE(btrim(email_cc), '') <> '' + """, + ) + _logger.info( + "Preserved email_cc on %s crm.lead rows into description.", + env.cr.rowcount, + ) + openupgrade.logged_query(env.cr, "ALTER TABLE crm_lead DROP COLUMN email_cc") + + +def _fill_duration_tracking(env): + """Fill stored duration_tracking before the ORM recomputes it. + + v19 rebuilt a non-stored ``{stage_id: seconds}`` map from + mail.tracking.value on every read. v20 stores + ``{"s", "d", "": minutes}`` and the compute only rolls that + dict forward (odoo/odoo@d5e8a68f4b). Recomputing NULL keeps the current + stage and drops history. Completed visits are stored as minutes; the + open visit stays in ``d`` (date_last_stage_update), which is what the + web client adds on top of the stored map. + """ + if not openupgrade.column_exists(env.cr, "crm_lead", "duration_tracking"): + openupgrade.logged_query( + env.cr, + "ALTER TABLE crm_lead ADD COLUMN duration_tracking jsonb", + ) + openupgrade.logged_query( + env.cr, + """ + WITH stage_field AS ( + SELECT id + FROM ir_model_fields + WHERE model = 'crm.lead' AND name = 'stage_id' + ORDER BY id + LIMIT 1 + ), + changes AS ( + SELECT + m.res_id, + v.id AS tracking_id, + v.create_date AS change_date, + COALESCE(v.old_value_integer, 0) AS old_stage_id + FROM mail_tracking_value v + JOIN mail_message m ON m.id = v.mail_message_id + WHERE v.field_id = (SELECT id FROM stage_field) + AND m.model = 'crm.lead' + AND m.res_id IS NOT NULL + ), + ordered_changes AS ( + SELECT + changes.res_id, + changes.old_stage_id, + changes.change_date, + LAG(changes.change_date) OVER ( + PARTITION BY changes.res_id + ORDER BY changes.tracking_id + ) AS prev_change_date + FROM changes + ), + intervals AS ( + SELECT + ordered_changes.res_id, + ordered_changes.old_stage_id AS stage_id, + GREATEST( + 0, + FLOOR( + EXTRACT( + EPOCH FROM ( + ordered_changes.change_date - COALESCE( + ordered_changes.prev_change_date, + crm_lead.create_date, + ordered_changes.change_date + ) + ) + ) / 60 + ) + )::int AS minutes + FROM ordered_changes + JOIN crm_lead ON crm_lead.id = ordered_changes.res_id + ), + spent AS ( + SELECT res_id, jsonb_object_agg(stage_id::text, minutes) AS payload + FROM ( + SELECT res_id, stage_id, SUM(minutes)::int AS minutes + FROM intervals + GROUP BY res_id, stage_id + HAVING SUM(minutes) > 0 + ) grouped + GROUP BY res_id + ) + UPDATE crm_lead + SET duration_tracking = + COALESCE(spent.payload, '{}'::jsonb) + || jsonb_build_object( + 's', COALESCE(crm_lead.stage_id, 0), + 'd', to_char( + COALESCE( + crm_lead.date_last_stage_update, + crm_lead.create_date, + timezone('UTC', now()) + ), + 'YYYY-MM-DD HH24:MI:SS' + ) + ) + FROM ( + SELECT id + FROM crm_lead + WHERE duration_tracking IS NULL + ) todo + LEFT JOIN spent ON spent.res_id = todo.id + WHERE crm_lead.id = todo.id + """, + ) + + +def _migrate_assignment_optout(env): + """Map team-member opt-out onto assignment_max = 0. + + v20 drops assignment_optout. ``assignment_rules`` is a non-stored + compute: max >= 30000 is unlimited, max == 0 is opt-out, anything else + is limited (odoo/odoo@553fbd1afa). Existing caps stay as "limited". + """ + if not openupgrade.column_exists(env.cr, "crm_team_member", "assignment_optout"): + return + openupgrade.logged_query( + env.cr, + """ + UPDATE crm_team_member + SET assignment_max = 0 + WHERE assignment_optout + """, + ) + _logger.info( + "Opted %s crm.team.member rows out of assignment (assignment_max=0).", + env.cr.rowcount, + ) + openupgrade.logged_query( + env.cr, + "ALTER TABLE crm_team_member DROP COLUMN assignment_optout", + ) + + +@openupgrade.migrate() +def migrate(env, version): + _preserve_email_cc(env) + _fill_duration_tracking(env) + _migrate_assignment_optout(env) diff --git a/openupgrade_scripts/scripts/crm/20.0.1.9/upgrade_analysis.txt b/openupgrade_scripts/scripts/crm/20.0.1.9/upgrade_analysis.txt new file mode 100644 index 00000000000..6db311b87e4 --- /dev/null +++ b/openupgrade_scripts/scripts/crm/20.0.1.9/upgrade_analysis.txt @@ -0,0 +1,94 @@ +---Models in module 'crm'--- +obsolete model crm.lead2opportunity.partner [transient] +---Fields in module 'crm'--- +crm / crm.lead / commercial_partner_id (many2one): DEL relation: res.partner, stored: False +crm / crm.lead / duration_tracking (json) : is now stored +crm / crm.lead / email_cc (char) : DEL +crm / crm.lead / utm_reference (reference) : NEW +crm / crm.lead / website_message_ids (one2many): DEL relation: mail.message +crm / crm.stage / color (integer) : DEL +crm / crm.team.member / assignment_optout (boolean) : DEL +crm / crm.team.member / assignment_rules (selection) : NEW selection_keys: ['limited', 'opt-out', 'unlimited'], hasdefault: compute, stored: False +---XML records in module 'crm'--- +NEW ir.access: crm.access_calendar_event_type_sale_manager +NEW ir.access: crm.access_calendar_event_type_sale_user +NEW ir.access: crm.access_crm_lead2opportunity_partner_mass +NEW ir.access: crm.access_crm_lead_lost +NEW ir.access: crm.access_crm_lead_scoring_frequency +NEW ir.access: crm.access_crm_lead_scoring_frequency_field +NEW ir.access: crm.access_crm_lead_scoring_frequency_field_system +NEW ir.access: crm.access_crm_lead_scoring_frequency_system +NEW ir.access: crm.access_crm_lost_reason_manager +NEW ir.access: crm.access_crm_lost_reason_user +NEW ir.access: crm.access_crm_merge_opportunity +NEW ir.access: crm.access_crm_stage +NEW ir.access: crm.access_crm_stage_manager +NEW ir.access: crm.access_mail_activity_plan_sale_manager +NEW ir.access: crm.access_mail_activity_plan_template_sale_manager +NEW ir.access: crm.access_mail_activity_type_sale_manager +NEW ir.access: crm.access_res_partner +NEW ir.access: crm.access_res_partner_category +NEW ir.access: crm.calendar_event_rule_employee +NEW ir.access: crm.calendar_event_rule_employee_1 +NEW ir.access: crm.crm_activity_report_rule_all_activities +NEW ir.access: crm.crm_activity_report_rule_multi_company +NEW ir.access: crm.crm_activity_report_rule_personal_activities +NEW ir.access: crm.crm_lead_company_rule +NEW ir.access: crm.crm_lead_pls_update_access_system +NEW ir.access: crm.crm_recurring_plan_access_manager +NEW ir.access: crm.crm_recurring_plan_access_salesman +NEW ir.access: crm.crm_rule_all_lead +NEW ir.access: crm.crm_rule_all_lead_1 +NEW ir.access: crm.crm_rule_personal_lead +NEW ir.access: crm.mail_plan_rule_group_sale_manager_lead +NEW ir.access: crm.mail_plan_templates_rule_group_sale_manager_lead +NEW ir.access: crm.res_partner_rule_edit_all +NEW ir.access: crm.res_partner_rule_user +DEL ir.actions.act_window: crm.action_crm_lead2opportunity_partner +DEL ir.actions.act_window.view: crm.crm_lead_all_leads_view_calendar +DEL ir.actions.server: crm.action_opportunity_forecast +DEL ir.actions.server: crm.action_your_pipeline +DEL ir.model.access: crm.access_calendar_event +DEL ir.model.access: crm.access_calendar_event_manager +DEL ir.model.access: crm.access_calendar_event_type_sale_manager +DEL ir.model.access: crm.access_calendar_event_type_sale_salesman +DEL ir.model.access: crm.access_calendar_event_type_sale_user +DEL ir.model.access: crm.access_crm_activity_report_salesman +DEL ir.model.access: crm.access_crm_activity_report_user +DEL ir.model.access: crm.access_crm_lead +DEL ir.model.access: crm.access_crm_lead2opportunity_partner +DEL ir.model.access: crm.access_crm_lead2opportunity_partner_mass +DEL ir.model.access: crm.access_crm_lead_lost +DEL ir.model.access: crm.access_crm_lead_manager +DEL ir.model.access: crm.access_crm_lead_scoring_frequency +DEL ir.model.access: crm.access_crm_lead_scoring_frequency_field +DEL ir.model.access: crm.access_crm_lead_scoring_frequency_field_system +DEL ir.model.access: crm.access_crm_lead_scoring_frequency_system +DEL ir.model.access: crm.access_crm_lost_reason_manager +DEL ir.model.access: crm.access_crm_lost_reason_salesman +DEL ir.model.access: crm.access_crm_lost_reason_user +DEL ir.model.access: crm.access_crm_merge_opportunity +DEL ir.model.access: crm.access_crm_stage +DEL ir.model.access: crm.access_crm_stage_manager +DEL ir.model.access: crm.access_mail_activity_plan_sale_manager +DEL ir.model.access: crm.access_mail_activity_plan_template_sale_manager +DEL ir.model.access: crm.access_mail_activity_type_sale_manager +DEL ir.model.access: crm.access_res_partner +DEL ir.model.access: crm.access_res_partner_category +DEL ir.model.access: crm.access_res_partner_category_manager +DEL ir.model.access: crm.access_res_partner_manager +DEL ir.model.access: crm.crm_lead_pls_update_access_system +DEL ir.model.access: crm.crm_recurring_plan_access_manager +DEL ir.model.access: crm.crm_recurring_plan_access_salesman +DEL ir.rule: crm.crm_activity_report_rule_all_activities (noupdate) +DEL ir.rule: crm.crm_activity_report_rule_multi_company (noupdate) +DEL ir.rule: crm.crm_activity_report_rule_personal_activities (noupdate) +DEL ir.rule: crm.crm_lead_company_rule (noupdate) +DEL ir.rule: crm.crm_rule_all_lead (noupdate) +DEL ir.rule: crm.crm_rule_personal_lead (noupdate) +DEL ir.rule: crm.mail_plan_rule_group_sale_manager_lead (noupdate) +DEL ir.rule: crm.mail_plan_templates_rule_group_sale_manager_lead (noupdate) +NEW ir.ui.view: crm.crm_lead_creation_message +NEW ir.ui.view: crm.crm_lead_view_list_simplified +NEW ir.ui.view: crm.crm_module_access_request_template +DEL ir.ui.view: crm.view_crm_lead2opportunity_partner diff --git a/openupgrade_scripts/scripts/crm/20.0.1.9/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/crm/20.0.1.9/upgrade_analysis_work.txt new file mode 100644 index 00000000000..0db160323b9 --- /dev/null +++ b/openupgrade_scripts/scripts/crm/20.0.1.9/upgrade_analysis_work.txt @@ -0,0 +1,155 @@ +---Models in module 'crm'--- +obsolete model crm.lead2opportunity.partner [transient] +# NOTHING TO DO: transient convert wizard removed. crm.lead2opportunity.partner.mass +# remains. No persistent rows. base pre-migration cleans transient models. + +---Fields in module 'crm'--- +crm / crm.lead / commercial_partner_id (many2one): DEL relation: res.partner, stored: False +# NOTHING TO DO: non-stored UX compute removed from crm.lead. No column. + +crm / crm.lead / duration_tracking (json) : is now stored +# DONE: pre-migration. Column is created and filled from mail.tracking.value +# in the v20 shape {s, d, : minutes} before the ORM loads the field. +# The new compute only rolls a stored dict forward (odoo/odoo@d5e8a68f4b), +# so a recompute of NULL would drop stage history. Open visit time stays in d +# (date_last_stage_update), which is what the web client adds. + +crm / crm.lead / email_cc (char) : DEL +# DONE: pre-migration. Non-empty values are HTML-escaped and appended to +# crm.lead description, then the column is dropped. mail.thread.cc was removed +# (odoo/odoo@3c26c0553754) and has no successor field. + +crm / crm.lead / utm_reference (reference) : NEW +# NOTHING TO DO in crm: new optional utm.mixin reference (absent on the 19.0 +# branch, present on 20.0). Existing leads stay empty. crm_livechat fills it +# for leads whose source was a chatbot script. + +crm / crm.lead / website_message_ids (one2many): DEL relation: mail.message +# NOTHING TO DO: non-stored one2many of mail.message. It is not defined on +# current 19.0 or 20.0 mail.thread / crm.lead, so there is no column. Chatter +# rows stay on mail.message. + +crm / crm.stage / color (integer) : DEL +# NOTHING TO DO: stage color was removed (odoo/odoo@3cce5fbeba01) with no +# replacement field. Odoo 20 does not drop the leftover integer column, but +# the UI no longer reads it. Default stage colors in crm_stage_data.xml are +# gone; noupdate does not apply because the field itself is gone. + +crm / crm.team.member / assignment_optout (boolean) : DEL +crm / crm.team.member / assignment_rules (selection) : NEW selection_keys: ['limited', 'opt-out', 'unlimited'], hasdefault: compute, stored: False +# DONE: pre-migration. assignment_optout = true becomes assignment_max = 0, +# which v20 treats as 'opt-out' (odoo/odoo@553fbd1afa). assignment_rules is a +# non-stored compute of assignment_max (unlimited when max >= 30000). Members +# who were not opted out keep their existing cap, so they stay 'limited'. +# The new unlimited default applies only to members created after upgrade. + +---XML records in module 'crm'--- +NEW ir.access: crm.access_calendar_event_type_sale_manager +NEW ir.access: crm.access_calendar_event_type_sale_user +NEW ir.access: crm.access_crm_lead2opportunity_partner_mass +NEW ir.access: crm.access_crm_lead_lost +NEW ir.access: crm.access_crm_lead_scoring_frequency +NEW ir.access: crm.access_crm_lead_scoring_frequency_field +NEW ir.access: crm.access_crm_lead_scoring_frequency_field_system +NEW ir.access: crm.access_crm_lead_scoring_frequency_system +NEW ir.access: crm.access_crm_lost_reason_manager +NEW ir.access: crm.access_crm_lost_reason_user +NEW ir.access: crm.access_crm_merge_opportunity +NEW ir.access: crm.access_crm_stage +NEW ir.access: crm.access_crm_stage_manager +NEW ir.access: crm.access_mail_activity_plan_sale_manager +NEW ir.access: crm.access_mail_activity_plan_template_sale_manager +NEW ir.access: crm.access_mail_activity_type_sale_manager +NEW ir.access: crm.access_res_partner +NEW ir.access: crm.access_res_partner_category +NEW ir.access: crm.calendar_event_rule_employee +NEW ir.access: crm.calendar_event_rule_employee_1 +NEW ir.access: crm.crm_activity_report_rule_all_activities +NEW ir.access: crm.crm_activity_report_rule_multi_company +NEW ir.access: crm.crm_activity_report_rule_personal_activities +NEW ir.access: crm.crm_lead_company_rule +NEW ir.access: crm.crm_lead_pls_update_access_system +NEW ir.access: crm.crm_recurring_plan_access_manager +NEW ir.access: crm.crm_recurring_plan_access_salesman +NEW ir.access: crm.crm_rule_all_lead +NEW ir.access: crm.crm_rule_all_lead_1 +NEW ir.access: crm.crm_rule_personal_lead +NEW ir.access: crm.mail_plan_rule_group_sale_manager_lead +NEW ir.access: crm.mail_plan_templates_rule_group_sale_manager_lead +NEW ir.access: crm.res_partner_rule_edit_all +NEW ir.access: crm.res_partner_rule_user +# NOTHING TO DO: ir.model.access and ir.rule were merged into ir.access. +# Base (OCA/OpenUpgrade#6068) renames those xmlids in pre-migration and +# recreates standard rows from this module's ir.access.csv. Rows without a +# standard xmlid are converted in base post-migration. Customizations of +# noupdate standard rules are not replayed; that gap belongs to base. + +DEL ir.actions.act_window: crm.action_crm_lead2opportunity_partner +DEL ir.actions.act_window.view: crm.crm_lead_all_leads_view_calendar +DEL ir.actions.server: crm.action_opportunity_forecast +DEL ir.actions.server: crm.action_your_pipeline +# DONE: post-migration delete_records_safely_by_xml_id. The wizard view and +# the two server actions lived in data files removed from the manifest, so +# they would survive until the end of the upgrade. The view targets the +# removed transient model; the actions call action_your_pipeline() and +# action_opportunity_forecast(), which are gone. The calendar window-view +# binding is included and is a no-op if module data already removed it. + +DEL ir.model.access: crm.access_calendar_event +DEL ir.model.access: crm.access_calendar_event_manager +DEL ir.model.access: crm.access_calendar_event_type_sale_manager +DEL ir.model.access: crm.access_calendar_event_type_sale_salesman +DEL ir.model.access: crm.access_calendar_event_type_sale_user +DEL ir.model.access: crm.access_crm_activity_report_salesman +DEL ir.model.access: crm.access_crm_activity_report_user +DEL ir.model.access: crm.access_crm_lead +DEL ir.model.access: crm.access_crm_lead2opportunity_partner +DEL ir.model.access: crm.access_crm_lead2opportunity_partner_mass +DEL ir.model.access: crm.access_crm_lead_lost +DEL ir.model.access: crm.access_crm_lead_manager +DEL ir.model.access: crm.access_crm_lead_scoring_frequency +DEL ir.model.access: crm.access_crm_lead_scoring_frequency_field +DEL ir.model.access: crm.access_crm_lead_scoring_frequency_field_system +DEL ir.model.access: crm.access_crm_lead_scoring_frequency_system +DEL ir.model.access: crm.access_crm_lost_reason_manager +DEL ir.model.access: crm.access_crm_lost_reason_salesman +DEL ir.model.access: crm.access_crm_lost_reason_user +DEL ir.model.access: crm.access_crm_merge_opportunity +DEL ir.model.access: crm.access_crm_stage +DEL ir.model.access: crm.access_crm_stage_manager +DEL ir.model.access: crm.access_mail_activity_plan_sale_manager +DEL ir.model.access: crm.access_mail_activity_plan_template_sale_manager +DEL ir.model.access: crm.access_mail_activity_type_sale_manager +DEL ir.model.access: crm.access_res_partner +DEL ir.model.access: crm.access_res_partner_category +DEL ir.model.access: crm.access_res_partner_category_manager +DEL ir.model.access: crm.access_res_partner_manager +DEL ir.model.access: crm.crm_lead_pls_update_access_system +DEL ir.model.access: crm.crm_recurring_plan_access_manager +DEL ir.model.access: crm.crm_recurring_plan_access_salesman +DEL ir.rule: crm.crm_activity_report_rule_all_activities (noupdate) +DEL ir.rule: crm.crm_activity_report_rule_multi_company (noupdate) +DEL ir.rule: crm.crm_activity_report_rule_personal_activities (noupdate) +DEL ir.rule: crm.crm_lead_company_rule (noupdate) +DEL ir.rule: crm.crm_rule_all_lead (noupdate) +DEL ir.rule: crm.crm_rule_personal_lead (noupdate) +DEL ir.rule: crm.mail_plan_rule_group_sale_manager_lead (noupdate) +DEL ir.rule: crm.mail_plan_templates_rule_group_sale_manager_lead (noupdate) +# NOTHING TO DO: ir.model.access and ir.rule were merged into ir.access. +# Base (OCA/OpenUpgrade#6068) renames those xmlids in pre-migration and +# recreates standard rows from this module's ir.access.csv. Rows without a +# standard xmlid are converted in base post-migration. Customizations of +# noupdate standard rules are not replayed; that gap belongs to base. + +NEW ir.ui.view: crm.crm_lead_creation_message +NEW ir.ui.view: crm.crm_lead_view_list_simplified +NEW ir.ui.view: crm.crm_module_access_request_template +# NOTHING TO DO: new views loaded from module data. + +DEL ir.ui.view: crm.view_crm_lead2opportunity_partner +# DONE: post-migration delete_records_safely_by_xml_id. The wizard view and +# the two server actions lived in data files removed from the manifest, so +# they would survive until the end of the upgrade. The view targets the +# removed transient model; the actions call action_your_pipeline() and +# action_opportunity_forecast(), which are gone. The calendar window-view +# binding is included and is a no-op if module data already removed it. diff --git a/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/post-migration.py b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/post-migration.py new file mode 100644 index 00000000000..46ea0051bc6 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/post-migration.py @@ -0,0 +1,18 @@ +# Copyright 2026 Odoo Community Association (OCA) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from openupgradelib import openupgrade + +# crm_lead_views.xml left the manifest. The inherited views still point at +# lead fields this module no longer extends, so remove them before view +# validation. Module data loads the new industry tree/search views. +_DELETED_XMLIDS = [ + "crm_iap_mine.crm_case_kanban_view_leads", + "crm_iap_mine.crm_lead_view_tree_lead", + "crm_iap_mine.crm_lead_view_tree_opportunity", + "crm_iap_mine.view_crm_lead_kanban", +] + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.delete_records_safely_by_xml_id(env, _DELETED_XMLIDS) diff --git a/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/pre-migration.py b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/pre-migration.py new file mode 100644 index 00000000000..0e9b8260d52 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/pre-migration.py @@ -0,0 +1,154 @@ +# Copyright 2026 Odoo Community Association (OCA) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +import logging + +from openupgradelib import openupgrade +from psycopg2 import sql + +_logger = logging.getLogger(__name__) + + +def _sql_table(name): + parts = [part.replace('"', "") for part in name.split(".")] + return sql.Identifier(*parts) + + +def _industry_fks(cr): + cr.execute( + """ + SELECT c.conrelid::regclass::text, a.attname, a.attnotnull + FROM pg_constraint AS c + JOIN pg_attribute AS a + ON a.attrelid = c.conrelid + AND a.attnum = c.conkey[1] + WHERE c.contype = 'f' + AND c.confrelid = 'crm_iap_lead_industry'::regclass + AND cardinality(c.conkey) = 1 + """ + ) + return cr.fetchall() + + +def _table_columns(cr, table): + cr.execute( + """ + SELECT attname + FROM pg_attribute + WHERE attrelid = %s::regclass + AND attnum > 0 + AND NOT attisdropped + """, + (table.replace('"', ""),), + ) + return {row[0] for row in cr.fetchall()} + + +def _deactivate_reveal_rules(cr, rel_table, industry_column): + """An empty industry filter means "match every industry". + + Rules that had a v19 reveal-industry filter cannot be translated to SIC + groups (odoo/odoo@57b8a7d360). Deactivate them instead of widening a + paid IAP cron to every visitor. + """ + if not openupgrade.table_exists(cr, "crm_reveal_rule"): + return + query = sql.SQL( + """ + UPDATE crm_reveal_rule + SET active = FALSE + WHERE active + AND id IN ( + SELECT crm_reveal_rule_id + FROM {rel} + WHERE {industry} IS NOT NULL + ) + """ + ).format( + rel=_sql_table(rel_table), + industry=sql.Identifier(industry_column), + ) + openupgrade.logged_query(cr, query) + _logger.info( + "Deactivated %s crm.reveal.rule rows; their industry filter used " + "the removed reveal catalog.", + cr.rowcount, + ) + + +def _drop_industry_links(cr): + for table, column, not_null in _industry_fks(cr): + columns = _table_columns(cr, table) + if "crm_reveal_rule_id" in columns and table != "crm_reveal_rule": + _deactivate_reveal_rules(cr, table, column) + openupgrade.logged_query( + cr, + sql.SQL("DELETE FROM {rel}").format(rel=_sql_table(table)), + ) + continue + if table == "crm_reveal_rule": + _deactivate_reveal_rules_m2o(cr, column) + continue + if not_null: + openupgrade.logged_query( + cr, + sql.SQL("DELETE FROM {rel}").format(rel=_sql_table(table)), + ) + else: + openupgrade.logged_query( + cr, + sql.SQL("UPDATE {rel} SET {column} = NULL").format( + rel=_sql_table(table), + column=sql.Identifier(column), + ), + ) + + +def _deactivate_reveal_rules_m2o(cr, column): + query = sql.SQL( + """ + UPDATE crm_reveal_rule + SET active = FALSE + WHERE active AND {column} IS NOT NULL + """ + ).format(column=sql.Identifier(column)) + openupgrade.logged_query(cr, query) + openupgrade.logged_query( + cr, + sql.SQL("UPDATE crm_reveal_rule SET {column} = NULL").format( + column=sql.Identifier(column) + ), + ) + + +def _purge_v19_industries(env): + """Replace the reveal-id industry catalog with the SIC catalog. + + v19 rows are keyed by IAP reveal ids. v20 rows are SIC major groups + with a required division (odoo/odoo@57b8a7d360). There is no published + mapping. Old rows are removed so the module data can load the new + catalog, and links from mining requests are cleared. People-search + columns on crm.iap.lead.mining.request are left in the table: Odoo 20 + does not drop removed columns, and v20 has no field for them. + """ + cr = env.cr + if not openupgrade.column_exists(cr, "crm_iap_lead_industry", "reveal_ids"): + return + _drop_industry_links(cr) + openupgrade.logged_query( + cr, + """ + DELETE FROM ir_model_data + WHERE model = 'crm.iap.lead.industry' + """, + ) + openupgrade.logged_query(cr, "DELETE FROM crm_iap_lead_industry") + _logger.info("Removed the v19 reveal industry catalog (%s rows).", cr.rowcount) + openupgrade.logged_query( + cr, + "ALTER TABLE crm_iap_lead_industry DROP COLUMN reveal_ids", + ) + + +@openupgrade.migrate() +def migrate(env, version): + _purge_v19_industries(env) diff --git a/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/upgrade_analysis.txt b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/upgrade_analysis.txt new file mode 100644 index 00000000000..effc4f1247d --- /dev/null +++ b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/upgrade_analysis.txt @@ -0,0 +1,146 @@ +---Models in module 'crm_iap_mine'--- +new model crm.iap.lead.industry.division +---Fields in module 'crm_iap_mine'--- +crm_iap_mine / crm.iap.lead.industry / _order : _order is now 'sequence,division_id,name' ('sequence,id') +crm_iap_mine / crm.iap.lead.industry / division_id (many2one) : NEW relation: crm.iap.lead.industry.division, required +crm_iap_mine / crm.iap.lead.industry / reveal_ids (char) : DEL required +crm_iap_mine / crm.iap.lead.industry / sic_group (integer) : NEW required +crm_iap_mine / crm.iap.lead.industry.division / code (char) : NEW required +crm_iap_mine / crm.iap.lead.industry.division / name (char) : NEW required, translate +crm_iap_mine / crm.iap.lead.industry.division / sequence (integer) : NEW +crm_iap_mine / crm.iap.lead.mining.request / contact_filter_type (selection): DEL selection_keys: ['role', 'seniority'] +crm_iap_mine / crm.iap.lead.mining.request / contact_number (integer) : DEL +crm_iap_mine / crm.iap.lead.mining.request / preferred_role_id (many2one) : DEL relation: crm.iap.lead.role +crm_iap_mine / crm.iap.lead.mining.request / role_ids (many2many) : DEL relation: crm.iap.lead.role +crm_iap_mine / crm.iap.lead.mining.request / search_type (selection) : DEL required, selection_keys: ['companies', 'people'] +crm_iap_mine / crm.iap.lead.mining.request / seniority_id (many2one) : DEL relation: crm.iap.lead.seniority +---XML records in module 'crm_iap_mine'--- +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_01 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_02 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_07 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_08 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_09 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_10 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_12 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_13 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_14 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_15 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_16 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_17 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_20 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_21 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_22 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_23 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_24 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_25 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_26 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_27 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_28 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_29 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_30 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_31 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_32 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_34 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_35 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_36 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_37 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_38 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_39 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_40 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_41 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_42 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_43 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_44 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_45 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_46 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_47 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_48 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_49 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_50 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_51 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_52 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_53 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_54 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_55 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_56 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_57 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_58 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_59 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_60 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_61 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_62 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_63 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_64 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_65 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_67 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_70 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_72 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_73 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_75 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_76 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_78 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_79 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_80 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_81 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_82 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_83 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_84 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_87 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_88 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_89 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_91 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_92 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_93 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_94 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_95 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_96 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_97 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_99 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_114 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_136 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_138_156 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_148 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_149 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_150_151 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_152 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_153_154 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_158_159 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_160 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_161 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_162 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_163 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_165 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_166 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_167 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_168 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_238 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_239 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_30_155 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_69_157 +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_a +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_b +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_c +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_d +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_e +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_f +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_g +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_h +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_i +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_j +NEW ir.access: crm_iap_mine.access_crm_iap_lead_industry +NEW ir.access: crm_iap_mine.access_crm_iap_lead_industry_division +NEW ir.access: crm_iap_mine.access_crm_iap_lead_mining_request +NEW ir.access: crm_iap_mine.access_crm_iap_lead_role +NEW ir.access: crm_iap_mine.access_crm_iap_lead_seniority +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_helpers +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_industry +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_mining_request +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_role +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_seniority +NEW ir.model.constraint: crm_iap_mine.constraint_crm_iap_lead_industry_division_name_uniq +NEW ir.ui.view: crm_iap_mine.crm_iap_lead_industry_view_search +NEW ir.ui.view: crm_iap_mine.crm_iap_lead_industry_view_tree +DEL ir.ui.view: crm_iap_mine.crm_case_kanban_view_leads +DEL ir.ui.view: crm_iap_mine.crm_lead_view_tree_lead +DEL ir.ui.view: crm_iap_mine.crm_lead_view_tree_opportunity +DEL ir.ui.view: crm_iap_mine.view_crm_lead_kanban diff --git a/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/upgrade_analysis_work.txt new file mode 100644 index 00000000000..b9fb9bf37b6 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_iap_mine/20.0.1.2/upgrade_analysis_work.txt @@ -0,0 +1,185 @@ +---Models in module 'crm_iap_mine'--- +new model crm.iap.lead.industry.division +# NOTHING TO DO: crm.iap.lead.industry.division is loaded from +# data/crm.iap.lead.industry.division.csv during module update. + +---Fields in module 'crm_iap_mine'--- +crm_iap_mine / crm.iap.lead.industry / _order : _order is now 'sequence,division_id,name' ('sequence,id') +# NOTHING TO DO: order is not stored. + +crm_iap_mine / crm.iap.lead.industry / division_id (many2one) : NEW relation: crm.iap.lead.industry.division, required +crm_iap_mine / crm.iap.lead.industry / reveal_ids (char) : DEL required +crm_iap_mine / crm.iap.lead.industry / sic_group (integer) : NEW required +crm_iap_mine / crm.iap.lead.industry.division / code (char) : NEW required +crm_iap_mine / crm.iap.lead.industry.division / name (char) : NEW required, translate +crm_iap_mine / crm.iap.lead.industry.division / sequence (integer) : NEW +# DONE: pre-migration deletes the v19 reveal-id catalog (and its xmlids) +# after clearing foreign keys, then drops reveal_ids. The new CSV fills +# sic_group and division_id. There is no mapping from reveal ids to SIC +# major groups (odoo/odoo@57b8a7d360). crm.reveal.rule rows that filtered +# on an old industry are deactivated first: an empty industry_tag_ids +# means match every industry, which would widen a paid IAP cron. + +crm_iap_mine / crm.iap.lead.mining.request / contact_filter_type (selection): DEL selection_keys: ['role', 'seniority'] +crm_iap_mine / crm.iap.lead.mining.request / contact_number (integer) : DEL +crm_iap_mine / crm.iap.lead.mining.request / preferred_role_id (many2one) : DEL relation: crm.iap.lead.role +crm_iap_mine / crm.iap.lead.mining.request / role_ids (many2many) : DEL relation: crm.iap.lead.role +crm_iap_mine / crm.iap.lead.mining.request / search_type (selection) : DEL required, selection_keys: ['companies', 'people'] +crm_iap_mine / crm.iap.lead.mining.request / seniority_id (many2one) : DEL relation: crm.iap.lead.seniority +# NOTHING TO DO: people search was removed from mining requests. v20 always +# sends search_type companies. Odoo 20 does not drop removed columns, so +# contact_number, contact_filter_type, preferred_role_id, seniority_id and +# search_type remain in crm_iap_lead_mining_request for a DBA. There is no +# v20 field to copy them into. Generated leads are untouched. Role and +# seniority master data stay; only the request fields go away. + +---XML records in module 'crm_iap_mine'--- +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_01 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_02 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_07 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_08 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_09 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_10 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_12 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_13 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_14 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_15 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_16 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_17 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_20 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_21 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_22 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_23 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_24 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_25 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_26 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_27 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_28 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_29 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_30 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_31 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_32 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_34 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_35 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_36 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_37 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_38 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_39 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_40 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_41 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_42 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_43 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_44 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_45 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_46 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_47 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_48 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_49 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_50 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_51 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_52 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_53 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_54 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_55 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_56 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_57 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_58 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_59 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_60 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_61 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_62 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_63 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_64 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_65 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_67 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_70 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_72 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_73 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_75 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_76 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_78 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_79 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_80 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_81 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_82 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_83 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_84 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_87 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_88 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_89 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_91 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_92 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_93 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_94 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_95 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_96 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_97 +NEW crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_99 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_114 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_136 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_138_156 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_148 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_149 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_150_151 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_152 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_153_154 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_158_159 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_160 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_161 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_162 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_163 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_165 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_166 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_167 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_168 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_238 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_239 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_30_155 +DEL crm.iap.lead.industry: crm_iap_mine.crm_iap_mine_industry_69_157 +# DONE: pre-migration removes every v19 crm.iap.lead.industry row and its +# ir.model.data. Module data then loads the SIC rows (new xmlids). User +# industries are removed too: they stored reveal ids and cannot satisfy +# required sic_group / division_id. Mining-request industry links are cleared. + +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_a +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_b +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_c +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_d +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_e +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_f +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_g +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_h +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_i +NEW crm.iap.lead.industry.division: crm_iap_mine.crm_iap_mine_division_j +# NOTHING TO DO: new noupdate-less CSV data, loaded by the module. + +NEW ir.access: crm_iap_mine.access_crm_iap_lead_industry +NEW ir.access: crm_iap_mine.access_crm_iap_lead_industry_division +NEW ir.access: crm_iap_mine.access_crm_iap_lead_mining_request +NEW ir.access: crm_iap_mine.access_crm_iap_lead_role +NEW ir.access: crm_iap_mine.access_crm_iap_lead_seniority +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_helpers +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_industry +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_mining_request +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_role +DEL ir.model.access: crm_iap_mine.access_crm_iap_lead_seniority +# NOTHING TO DO: ir.model.access and ir.rule were merged into ir.access. +# Base (OCA/OpenUpgrade#6068) renames those xmlids in pre-migration and +# recreates standard rows from this module's ir.access.csv. Rows without a +# standard xmlid are converted in base post-migration. Customizations of +# noupdate standard rules are not replayed; that gap belongs to base. + +NEW ir.model.constraint: crm_iap_mine.constraint_crm_iap_lead_industry_division_name_uniq +# NOTHING TO DO: new unique(name) on divisions, created by the ORM. + +NEW ir.ui.view: crm_iap_mine.crm_iap_lead_industry_view_search +NEW ir.ui.view: crm_iap_mine.crm_iap_lead_industry_view_tree +# NOTHING TO DO: new industry views loaded from module data. + +DEL ir.ui.view: crm_iap_mine.crm_case_kanban_view_leads +DEL ir.ui.view: crm_iap_mine.crm_lead_view_tree_lead +DEL ir.ui.view: crm_iap_mine.crm_lead_view_tree_opportunity +DEL ir.ui.view: crm_iap_mine.view_crm_lead_kanban +# DONE: post-migration. crm_lead_views.xml left the manifest. The inherited +# lead views are deleted before view validation so they cannot reference +# fields this module no longer extends. diff --git a/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/post-migration.py new file mode 100644 index 00000000000..0cc72fdff69 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/post-migration.py @@ -0,0 +1,167 @@ +# Copyright 2026 Odoo Community Association (OCA) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +import logging + +from openupgradelib import openupgrade +from psycopg2 import sql + +_logger = logging.getLogger(__name__) + + +def _sql_table(name): + parts = [part.replace('"', "") for part in name.split(".")] + return sql.Identifier(*parts) + + +def _xmlid_res_id(cr, module, name): + cr.execute( + """ + SELECT res_id + FROM ir_model_data + WHERE module = %s AND name = %s AND model = 'utm.source' + """, + (module, name), + ) + row = cr.fetchone() + return row[0] if row else None + + +def _source_exists(cr, source_id): + cr.execute("SELECT 1 FROM utm_source WHERE id = %s", (source_id,)) + return bool(cr.fetchone()) + + +def _repoint_source_fks(cr, keep_id, drop_id): + cr.execute( + """ + SELECT c.conrelid::regclass::text, a.attname + FROM pg_constraint AS c + JOIN pg_attribute AS a + ON a.attrelid = c.conrelid + AND a.attnum = c.conkey[1] + WHERE c.contype = 'f' + AND c.confrelid = 'utm_source'::regclass + AND cardinality(c.conkey) = 1 + """ + ) + for table, column in cr.fetchall(): + if column == "id": + continue + query = sql.SQL("UPDATE {table} SET {column} = %s WHERE {column} = %s").format( + table=_sql_table(table), column=sql.Identifier(column) + ) + openupgrade.logged_query(cr, query, (keep_id, drop_id)) + openupgrade.logged_query( + cr, + """ + UPDATE ir_model_data + SET res_id = %s + WHERE model = 'utm.source' + AND res_id = %s + AND NOT (module = 'utm' AND name = 'utm_source_livechat') + """, + (keep_id, drop_id), + ) + + +def _merge_livechat_utm_source(env): + """Point utm.utm_source_livechat at the historical Livechat source. + + utm 20.0 loads that xmlid (noupdate) before this module runs, so a + database that already has crm_livechat.utm_source_livechat gets a + second source, usually named "Livechat [2]". Keep the historical row. + """ + cr = env.cr + historical_id = _xmlid_res_id(cr, "crm_livechat", "utm_source_livechat") + if not historical_id: + return + duplicate_id = _xmlid_res_id(cr, "utm", "utm_source_livechat") + if not _source_exists(cr, historical_id): + openupgrade.logged_query( + cr, + """ + DELETE FROM ir_model_data + WHERE module = 'crm_livechat' + AND name = 'utm_source_livechat' + AND model = 'utm.source' + """, + ) + return + if duplicate_id and duplicate_id != historical_id: + _repoint_source_fks(cr, historical_id, duplicate_id) + openupgrade.logged_query( + cr, + """ + DELETE FROM ir_model_data + WHERE module = 'utm' + AND name = 'utm_source_livechat' + AND model = 'utm.source' + """, + ) + openupgrade.logged_query( + cr, + "DELETE FROM utm_source WHERE id = %s", + (duplicate_id,), + ) + _logger.info( + "Merged duplicate utm.source %s into historical Livechat source %s.", + duplicate_id, + historical_id, + ) + openupgrade.logged_query( + cr, + """ + UPDATE ir_model_data + SET module = 'utm', name = 'utm_source_livechat', noupdate = TRUE + WHERE module = 'crm_livechat' + AND name = 'utm_source_livechat' + AND model = 'utm.source' + """, + ) + + +def _fill_chatbot_utm_reference(env): + """Leads created by a chatbot used to store that bot's utm.source. + + v20 counts them with utm_reference = ``chatbot.script,`` + (odoo/odoo@895154fd1725). The source_id column on chatbot.script is + removed when im_livechat is updated, which is before this module, so + the mapping is read from the table im_livechat's pre-migration saved. + The per-script source_id on the lead is kept: it is still a valid + source, and new leads use the shared Chatbot source instead. + """ + cr = env.cr + if not openupgrade.table_exists(cr, "ou_crm_livechat_chatbot_source"): + _logger.info( + "No chatbot source map; crm.lead.utm_reference was not backfilled." + ) + return + if not openupgrade.column_exists(cr, "crm_lead", "utm_reference"): + return + openupgrade.logged_query( + cr, + """ + UPDATE crm_lead + SET utm_reference = 'chatbot.script,' || src.chatbot_script_id::text + FROM ( + SELECT DISTINCT ON (source_id) + source_id, + chatbot_script_id + FROM ou_crm_livechat_chatbot_source + ORDER BY source_id, chatbot_script_id + ) AS src + WHERE crm_lead.source_id = src.source_id + AND COALESCE(crm_lead.utm_reference, '') = '' + """, + ) + _logger.info( + "Set utm_reference on %s leads created by a chatbot script.", + cr.rowcount, + ) + openupgrade.logged_query(cr, "DROP TABLE ou_crm_livechat_chatbot_source") + + +@openupgrade.migrate() +def migrate(env, version): + _merge_livechat_utm_source(env) + _fill_chatbot_utm_reference(env) diff --git a/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/pre-migration.py new file mode 100644 index 00000000000..8b3cd62fba4 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/pre-migration.py @@ -0,0 +1,27 @@ +# Copyright 2026 Odoo Community Association (OCA) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from openupgradelib import openupgrade + + +def _remap_create_lead_and_forward(env): + """The combined step was removed (odoo/odoo@895154fd1725). + + ``create_lead`` still creates the lead and assigns it. The automatic + forward-to-operator half of the old step is not recreated: inserting a + step would rewrite answer triggers and sequences. + """ + if not openupgrade.column_exists(env.cr, "chatbot_script_step", "step_type"): + return + openupgrade.logged_query( + env.cr, + """ + UPDATE chatbot_script_step + SET step_type = 'create_lead' + WHERE step_type = 'create_lead_and_forward' + """, + ) + + +@openupgrade.migrate() +def migrate(env, version): + _remap_create_lead_and_forward(env) diff --git a/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/upgrade_analysis.txt new file mode 100644 index 00000000000..218c825e099 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/upgrade_analysis.txt @@ -0,0 +1,9 @@ +---Models in module 'crm_livechat'--- +---Fields in module 'crm_livechat'--- +crm_livechat / chatbot.script.step / step_type (False) : selection_keys removed: [create_lead_and_forward] +---XML records in module 'crm_livechat'--- +NEW ir.access: crm_livechat.ir_rule_discuss_channel_crm_lead +NEW ir.access: crm_livechat.ir_rule_discuss_channel_member_crm_lead +DEL ir.rule: crm_livechat.ir_rule_discuss_channel_crm_lead (noupdate) +DEL ir.rule: crm_livechat.ir_rule_discuss_channel_member_crm_lead (noupdate) +DEL utm.source: crm_livechat.utm_source_livechat [renamed to utm module] (noupdate) diff --git a/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 00000000000..782524acb62 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_livechat/20.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,28 @@ +---Models in module 'crm_livechat'--- +---Fields in module 'crm_livechat'--- +crm_livechat / chatbot.script.step / step_type (False) : selection_keys removed: [create_lead_and_forward] +# DONE: pre-migration. create_lead_and_forward becomes create_lead +# (odoo/odoo@895154fd1725). The lead is still created and assigned. The +# forward-to-operator half is not rebuilt, because inserting a step would +# rewrite answer triggers and sequences. Upstream declares no ondelete for +# the removed key, so the column value would otherwise be left invalid. + +---XML records in module 'crm_livechat'--- +NEW ir.access: crm_livechat.ir_rule_discuss_channel_crm_lead +NEW ir.access: crm_livechat.ir_rule_discuss_channel_member_crm_lead +DEL ir.rule: crm_livechat.ir_rule_discuss_channel_crm_lead (noupdate) +DEL ir.rule: crm_livechat.ir_rule_discuss_channel_member_crm_lead (noupdate) +# NOTHING TO DO: ir.model.access and ir.rule were merged into ir.access. +# Base (OCA/OpenUpgrade#6068) renames those xmlids in pre-migration and +# recreates standard rows from this module's ir.access.csv. Rows without a +# standard xmlid are converted in base post-migration. Customizations of +# noupdate standard rules are not replayed; that gap belongs to base. +# The new operations match the old rules: channel is read, member is +# create+read, same domains and the salesman group. + +DEL utm.source: crm_livechat.utm_source_livechat [renamed to utm module] (noupdate) +# DONE: post-migration. The xmlid moves to utm.utm_source_livechat. utm is +# updated first and its noupdate data creates a second Livechat source when +# the old xmlid still exists. The duplicate is merged into the historical +# row (foreign keys included) and the xmlid is renamed. Leads that used a +# chatbot's own source get utm_reference from the map im_livechat saved. diff --git a/openupgrade_scripts/scripts/crm_mail_plugin/20.0.1.0/post-migration.py b/openupgrade_scripts/scripts/crm_mail_plugin/20.0.1.0/post-migration.py new file mode 100644 index 00000000000..caadca9bf03 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_mail_plugin/20.0.1.0/post-migration.py @@ -0,0 +1,15 @@ +# Copyright 2026 Odoo Community Association (OCA) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from openupgradelib import openupgrade + +# The 20.0 manifest ships no data files. These records called +# crm.lead._form_view_auto_fill(), which was removed with the XML. +_DELETED_XMLIDS = [ + "crm_mail_plugin.crm_lead_action_form_edit", + "crm_mail_plugin.lead_creation_prefilled_action", +] + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.delete_records_safely_by_xml_id(env, _DELETED_XMLIDS) diff --git a/openupgrade_scripts/scripts/crm_mail_plugin/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/crm_mail_plugin/20.0.1.0/upgrade_analysis.txt new file mode 100644 index 00000000000..f7c9d29b3da --- /dev/null +++ b/openupgrade_scripts/scripts/crm_mail_plugin/20.0.1.0/upgrade_analysis.txt @@ -0,0 +1,5 @@ +---Models in module 'crm_mail_plugin'--- +---Fields in module 'crm_mail_plugin'--- +---XML records in module 'crm_mail_plugin'--- +DEL ir.actions.act_window: crm_mail_plugin.crm_lead_action_form_edit +DEL ir.actions.server: crm_mail_plugin.lead_creation_prefilled_action diff --git a/openupgrade_scripts/scripts/crm_mail_plugin/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/crm_mail_plugin/20.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 00000000000..6de2221e095 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_mail_plugin/20.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,8 @@ +---Models in module 'crm_mail_plugin'--- +---Fields in module 'crm_mail_plugin'--- +---XML records in module 'crm_mail_plugin'--- +DEL ir.actions.act_window: crm_mail_plugin.crm_lead_action_form_edit +DEL ir.actions.server: crm_mail_plugin.lead_creation_prefilled_action +# DONE: post-migration delete_records_safely_by_xml_id. 20.0 ships no data +# files. lead_creation_prefilled_action called crm.lead._form_view_auto_fill(), +# which no longer exists. The form action only opened the lead form. diff --git a/openupgrade_scripts/scripts/crm_sms/20.0.1.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/crm_sms/20.0.1.1/upgrade_analysis.txt new file mode 100644 index 00000000000..f0f089097c1 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_sms/20.0.1.1/upgrade_analysis.txt @@ -0,0 +1,7 @@ +---Models in module 'crm_sms'--- +---Fields in module 'crm_sms'--- +---XML records in module 'crm_sms'--- +NEW ir.access: crm_sms.access_sms_template_sale_manager +NEW ir.access: crm_sms.ir_rule_sms_template_sale_manager +DEL ir.model.access: crm_sms.access_sms_template_sale_manager +DEL ir.rule: crm_sms.ir_rule_sms_template_sale_manager (noupdate) diff --git a/openupgrade_scripts/scripts/crm_sms/20.0.1.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/crm_sms/20.0.1.1/upgrade_analysis_work.txt new file mode 100644 index 00000000000..966e4958219 --- /dev/null +++ b/openupgrade_scripts/scripts/crm_sms/20.0.1.1/upgrade_analysis_work.txt @@ -0,0 +1,16 @@ +---Models in module 'crm_sms'--- +---Fields in module 'crm_sms'--- +---XML records in module 'crm_sms'--- +NEW ir.access: crm_sms.access_sms_template_sale_manager +NEW ir.access: crm_sms.ir_rule_sms_template_sale_manager +DEL ir.model.access: crm_sms.access_sms_template_sale_manager +DEL ir.rule: crm_sms.ir_rule_sms_template_sale_manager (noupdate) +# NOTHING TO DO: ir.model.access and ir.rule were merged into ir.access. +# Base (OCA/OpenUpgrade#6068) renames those xmlids in pre-migration and +# recreates standard rows from this module's ir.access.csv. Rows without a +# standard xmlid are converted in base post-migration. Customizations of +# noupdate standard rules are not replayed; that gap belongs to base. +# Semantics did change and the new CSV is what gets loaded: v19 gave sale +# managers full CRUD on every sms.template. v20 gives them read on all +# templates and create/write/unlink only when the template model is +# crm.lead or res.partner (ir_rule_sms_template_sale_manager). diff --git a/openupgrade_scripts/scripts/im_livechat/20.0.1.0/pre-migration.py b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/pre-migration.py new file mode 100644 index 00000000000..b1d5b467831 --- /dev/null +++ b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/pre-migration.py @@ -0,0 +1,56 @@ +# Copyright 2026 Odoo Community Association (OCA) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +"""Preserve chatbot.script source_id for the crm_livechat migration. + +im_livechat is updated before crm_livechat and drops source_id (the model +no longer inherits utm.source.mixin). crm_livechat post-migration reads +``ou_crm_livechat_chatbot_source`` to set crm.lead.utm_reference. + +This file does not migrate the rest of im_livechat. That module needs its +own PR (conversation tags, ratings, livechat_operator_id, ...). Merge this +function into that pre-migration if both land. +""" + +import logging + +from openupgradelib import openupgrade + +_logger = logging.getLogger(__name__) + + +def _preserve_chatbot_script_source(env): + cr = env.cr + cr.execute("SELECT state FROM ir_module_module WHERE name = %s", ("crm_livechat",)) + row = cr.fetchone() + if not row or row[0] not in ("installed", "to upgrade", "to install"): + return + if not openupgrade.column_exists(cr, "chatbot_script", "source_id"): + return + openupgrade.logged_query( + cr, + """ + CREATE TABLE IF NOT EXISTS ou_crm_livechat_chatbot_source ( + chatbot_script_id integer PRIMARY KEY, + source_id integer NOT NULL + ) + """, + ) + openupgrade.logged_query( + cr, + """ + INSERT INTO ou_crm_livechat_chatbot_source (chatbot_script_id, source_id) + SELECT id, source_id + FROM chatbot_script + WHERE source_id IS NOT NULL + ON CONFLICT (chatbot_script_id) DO NOTHING + """, + ) + _logger.info( + "Saved %s chatbot.script source links for crm_livechat.", + cr.rowcount, + ) + + +@openupgrade.migrate() +def migrate(env, version): + _preserve_chatbot_script_source(env) diff --git a/openupgrade_scripts/scripts/im_livechat/20.0.1.0/upgrade_analysis.txt b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/upgrade_analysis.txt new file mode 100644 index 00000000000..e8894973691 --- /dev/null +++ b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/upgrade_analysis.txt @@ -0,0 +1,82 @@ +---Models in module 'im_livechat'--- +obsolete model im_livechat.conversation.tag +---Fields in module 'im_livechat'--- +im_livechat / chatbot.script / source_id (many2one) : DEL relation: utm.source, required +im_livechat / discuss.channel / livechat_conversation_tag_ids (many2many): DEL relation: im_livechat.conversation.tag +im_livechat / discuss.channel / livechat_looking_for_help_since_dt (datetime): NEW isfunction: function, stored +im_livechat / discuss.channel / livechat_operator_id (many2one): DEL relation: res.partner +im_livechat / discuss.channel / livechat_rating (selection) : NEW selection_keys: ['1', '3', '5'] +im_livechat / discuss.channel / livechat_status (selection) : selection_keys removed: [waiting] +im_livechat / discuss.channel / rating_last_text (selection) : DEL selection_keys: function +im_livechat / discuss.channel / rating_last_value (float) : DEL +im_livechat / im_livechat.channel / rating_ids (one2many) : DEL relation: rating.rating +im_livechat / im_livechat.channel / rating_percentage_satisfaction (integer): type is now 'float' ('integer') +im_livechat / im_livechat.channel.member.history / rating (float) : is now stored +im_livechat / im_livechat.channel.member.history / rating (float) : not related anymore +im_livechat / im_livechat.channel.member.history / rating (float) : now a function +im_livechat / im_livechat.channel.member.history / rating (float) : selection_keys is now '['1', '3', '5']' ('False') +im_livechat / im_livechat.channel.member.history / rating (float) : type is now 'selection' ('float') +im_livechat / im_livechat.channel.member.history / rating_id (many2one) : DEL relation: rating.rating +im_livechat / im_livechat.conversation.tag / color (integer) : DEL +im_livechat / im_livechat.conversation.tag / conversation_ids (many2many) : DEL relation: discuss.channel +im_livechat / im_livechat.conversation.tag / name (char) : DEL required +im_livechat / im_livechat.expertise / color (integer) : NEW +im_livechat / mail.message / chatbot_message_ids (one2many): NEW relation: chatbot.message +---XML records in module 'im_livechat'--- +NEW ir.access: im_livechat.access_chatbot_message_user +NEW ir.access: im_livechat.access_chatbot_script_answer_user +NEW ir.access: im_livechat.access_chatbot_script_step_user +NEW ir.access: im_livechat.access_chatbot_script_user +NEW ir.access: im_livechat.access_im_livechat_channel_member_history_user +NEW ir.access: im_livechat.access_livechat_channel_manager +NEW ir.access: im_livechat.access_livechat_channel_rule_manager +NEW ir.access: im_livechat.access_livechat_channel_rule_user +NEW ir.access: im_livechat.access_livechat_channel_user +NEW ir.access: im_livechat.access_livechat_expertise_internal_user +NEW ir.access: im_livechat.access_livechat_expertise_livechat_manager +NEW ir.access: im_livechat.access_livechat_support_report_channel +NEW ir.access: im_livechat.ir_rule_discuss_call_history_im_livechat_group_user +NEW ir.access: im_livechat.ir_rule_discuss_channel_im_livechat_group_user +NEW ir.access: im_livechat.ir_rule_discuss_channel_member_im_livechat_group_user +NEW ir.actions.act_window: im_livechat.im_livechat_channel_config_action +DEL ir.actions.act_window: im_livechat.discuss_channel_looking_for_help_action +DEL ir.actions.act_window: im_livechat.livechat_conversation_tag_action +NEW ir.actions.act_window.view: im_livechat.im_livechat_channel_config_action_kanban +NEW ir.actions.act_window.view: im_livechat.im_livechat_channel_config_action_list +DEL ir.actions.act_window.view: im_livechat.discuss_channel_looking_for_help_action_form +DEL ir.actions.act_window.view: im_livechat.discuss_channel_looking_for_help_action_kanban +DEL ir.actions.act_window.view: im_livechat.discuss_channel_looking_for_help_action_list +DEL ir.model.access: im_livechat.access_chatbot_message_user +DEL ir.model.access: im_livechat.access_chatbot_script_answer +DEL ir.model.access: im_livechat.access_chatbot_script_answer_user +DEL ir.model.access: im_livechat.access_chatbot_script_step_user +DEL ir.model.access: im_livechat.access_chatbot_script_user +DEL ir.model.access: im_livechat.access_im_livechat_channel_member_history_user +DEL ir.model.access: im_livechat.access_livechat_channel_manager +DEL ir.model.access: im_livechat.access_livechat_channel_rule_manager +DEL ir.model.access: im_livechat.access_livechat_channel_rule_user +DEL ir.model.access: im_livechat.access_livechat_channel_user +DEL ir.model.access: im_livechat.access_livechat_conversation_tag_livechat_manager +DEL ir.model.access: im_livechat.access_livechat_conversation_tag_livechat_user +DEL ir.model.access: im_livechat.access_livechat_expertise_internal_user +DEL ir.model.access: im_livechat.access_livechat_expertise_livechat_manager +DEL ir.model.access: im_livechat.access_livechat_support_report_channel +NEW ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_looking_for_help_since_dt_constraint +NEW ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_rating_constraint +DEL ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_operator_id +DEL ir.model.constraint: im_livechat.constraint_im_livechat_conversation_tag_name_unique +DEL ir.rule: im_livechat.ir_rule_discuss_call_history_im_livechat_group_user (noupdate) +DEL ir.rule: im_livechat.ir_rule_discuss_channel_im_livechat_group_user (noupdate) +DEL ir.rule: im_livechat.ir_rule_discuss_channel_member_im_livechat_group_user (noupdate) +NEW ir.ui.menu: im_livechat.livechat_channels_config +DEL ir.ui.menu: im_livechat.menu_livechat_all_conversations +DEL ir.ui.menu: im_livechat.menu_livechat_conversation_tag +DEL ir.ui.menu: im_livechat.menu_livechat_looking_for_help +NEW ir.ui.view: im_livechat.im_livechat_channel_config_view_kanban +NEW ir.ui.view: im_livechat.im_livechat_channel_view_list +DEL ir.ui.view: im_livechat.discuss_channel_looking_for_help_view_kanban +DEL ir.ui.view: im_livechat.discuss_channel_looking_for_help_view_list +DEL ir.ui.view: im_livechat.discuss_channel_looking_for_help_view_search +DEL ir.ui.view: im_livechat.im_livechat_channel_conversation_tag_view_form +DEL ir.ui.view: im_livechat.im_livechat_channel_conversation_tag_view_list +NEW utm.source: im_livechat.utm_source_chatbot diff --git a/openupgrade_scripts/scripts/im_livechat/20.0.1.0/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/upgrade_analysis_work.txt new file mode 100644 index 00000000000..5611e0ba9b8 --- /dev/null +++ b/openupgrade_scripts/scripts/im_livechat/20.0.1.0/upgrade_analysis_work.txt @@ -0,0 +1,106 @@ +# Partial migration. Only chatbot.script.source_id is handled here so +# crm_livechat can rebuild lead UTM references. Every other line is deferred +# to a dedicated im_livechat PR; do not read DEFERRED as Nothing to do. + +---Models in module 'im_livechat'--- +obsolete model im_livechat.conversation.tag +# DEFERRED: not migrated in this PR. im_livechat has its own functional +# changes (conversation tags, ratings, livechat_operator_id, status keys) +# and needs a dedicated migration. This directory only saves +# chatbot.script.source_id for crm_livechat. + +---Fields in module 'im_livechat'--- +im_livechat / chatbot.script / source_id (many2one) : DEL relation: utm.source, required +# DONE: pre-migration, and only this line. If crm_livechat is installed or +# queued for upgrade, chatbot_script.source_id is copied to +# ou_crm_livechat_chatbot_source before this module drops the column. +# crm_livechat post-migration turns that into crm.lead.utm_reference and +# drops the table. The utm.source rows themselves are not deleted. + +im_livechat / discuss.channel / livechat_conversation_tag_ids (many2many): DEL relation: im_livechat.conversation.tag +im_livechat / discuss.channel / livechat_looking_for_help_since_dt (datetime): NEW isfunction: function, stored +im_livechat / discuss.channel / livechat_operator_id (many2one): DEL relation: res.partner +im_livechat / discuss.channel / livechat_rating (selection) : NEW selection_keys: ['1', '3', '5'] +im_livechat / discuss.channel / livechat_status (selection) : selection_keys removed: [waiting] +im_livechat / discuss.channel / rating_last_text (selection) : DEL selection_keys: function +im_livechat / discuss.channel / rating_last_value (float) : DEL +im_livechat / im_livechat.channel / rating_ids (one2many) : DEL relation: rating.rating +im_livechat / im_livechat.channel / rating_percentage_satisfaction (integer): type is now 'float' ('integer') +im_livechat / im_livechat.channel.member.history / rating (float) : is now stored +im_livechat / im_livechat.channel.member.history / rating (float) : not related anymore +im_livechat / im_livechat.channel.member.history / rating (float) : now a function +im_livechat / im_livechat.channel.member.history / rating (float) : selection_keys is now '['1', '3', '5']' ('False') +im_livechat / im_livechat.channel.member.history / rating (float) : type is now 'selection' ('float') +im_livechat / im_livechat.channel.member.history / rating_id (many2one) : DEL relation: rating.rating +im_livechat / im_livechat.conversation.tag / color (integer) : DEL +im_livechat / im_livechat.conversation.tag / conversation_ids (many2many) : DEL relation: discuss.channel +im_livechat / im_livechat.conversation.tag / name (char) : DEL required +im_livechat / im_livechat.expertise / color (integer) : NEW +im_livechat / mail.message / chatbot_message_ids (one2many): NEW relation: chatbot.message +# DEFERRED: not migrated in this PR. im_livechat has its own functional +# changes (conversation tags, ratings, livechat_operator_id, status keys) +# and needs a dedicated migration. This directory only saves +# chatbot.script.source_id for crm_livechat. + +---XML records in module 'im_livechat'--- +NEW ir.access: im_livechat.access_chatbot_message_user +NEW ir.access: im_livechat.access_chatbot_script_answer_user +NEW ir.access: im_livechat.access_chatbot_script_step_user +NEW ir.access: im_livechat.access_chatbot_script_user +NEW ir.access: im_livechat.access_im_livechat_channel_member_history_user +NEW ir.access: im_livechat.access_livechat_channel_manager +NEW ir.access: im_livechat.access_livechat_channel_rule_manager +NEW ir.access: im_livechat.access_livechat_channel_rule_user +NEW ir.access: im_livechat.access_livechat_channel_user +NEW ir.access: im_livechat.access_livechat_expertise_internal_user +NEW ir.access: im_livechat.access_livechat_expertise_livechat_manager +NEW ir.access: im_livechat.access_livechat_support_report_channel +NEW ir.access: im_livechat.ir_rule_discuss_call_history_im_livechat_group_user +NEW ir.access: im_livechat.ir_rule_discuss_channel_im_livechat_group_user +NEW ir.access: im_livechat.ir_rule_discuss_channel_member_im_livechat_group_user +NEW ir.actions.act_window: im_livechat.im_livechat_channel_config_action +DEL ir.actions.act_window: im_livechat.discuss_channel_looking_for_help_action +DEL ir.actions.act_window: im_livechat.livechat_conversation_tag_action +NEW ir.actions.act_window.view: im_livechat.im_livechat_channel_config_action_kanban +NEW ir.actions.act_window.view: im_livechat.im_livechat_channel_config_action_list +DEL ir.actions.act_window.view: im_livechat.discuss_channel_looking_for_help_action_form +DEL ir.actions.act_window.view: im_livechat.discuss_channel_looking_for_help_action_kanban +DEL ir.actions.act_window.view: im_livechat.discuss_channel_looking_for_help_action_list +DEL ir.model.access: im_livechat.access_chatbot_message_user +DEL ir.model.access: im_livechat.access_chatbot_script_answer +DEL ir.model.access: im_livechat.access_chatbot_script_answer_user +DEL ir.model.access: im_livechat.access_chatbot_script_step_user +DEL ir.model.access: im_livechat.access_chatbot_script_user +DEL ir.model.access: im_livechat.access_im_livechat_channel_member_history_user +DEL ir.model.access: im_livechat.access_livechat_channel_manager +DEL ir.model.access: im_livechat.access_livechat_channel_rule_manager +DEL ir.model.access: im_livechat.access_livechat_channel_rule_user +DEL ir.model.access: im_livechat.access_livechat_channel_user +DEL ir.model.access: im_livechat.access_livechat_conversation_tag_livechat_manager +DEL ir.model.access: im_livechat.access_livechat_conversation_tag_livechat_user +DEL ir.model.access: im_livechat.access_livechat_expertise_internal_user +DEL ir.model.access: im_livechat.access_livechat_expertise_livechat_manager +DEL ir.model.access: im_livechat.access_livechat_support_report_channel +NEW ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_looking_for_help_since_dt_constraint +NEW ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_rating_constraint +DEL ir.model.constraint: im_livechat.constraint_discuss_channel_livechat_operator_id +DEL ir.model.constraint: im_livechat.constraint_im_livechat_conversation_tag_name_unique +DEL ir.rule: im_livechat.ir_rule_discuss_call_history_im_livechat_group_user (noupdate) +DEL ir.rule: im_livechat.ir_rule_discuss_channel_im_livechat_group_user (noupdate) +DEL ir.rule: im_livechat.ir_rule_discuss_channel_member_im_livechat_group_user (noupdate) +NEW ir.ui.menu: im_livechat.livechat_channels_config +DEL ir.ui.menu: im_livechat.menu_livechat_all_conversations +DEL ir.ui.menu: im_livechat.menu_livechat_conversation_tag +DEL ir.ui.menu: im_livechat.menu_livechat_looking_for_help +NEW ir.ui.view: im_livechat.im_livechat_channel_config_view_kanban +NEW ir.ui.view: im_livechat.im_livechat_channel_view_list +DEL ir.ui.view: im_livechat.discuss_channel_looking_for_help_view_kanban +DEL ir.ui.view: im_livechat.discuss_channel_looking_for_help_view_list +DEL ir.ui.view: im_livechat.discuss_channel_looking_for_help_view_search +DEL ir.ui.view: im_livechat.im_livechat_channel_conversation_tag_view_form +DEL ir.ui.view: im_livechat.im_livechat_channel_conversation_tag_view_list +NEW utm.source: im_livechat.utm_source_chatbot +# DEFERRED: not migrated in this PR. im_livechat has its own functional +# changes (conversation tags, ratings, livechat_operator_id, status keys) +# and needs a dedicated migration. This directory only saves +# chatbot.script.source_id for crm_livechat. diff --git a/openupgrade_scripts/scripts/sales_team/20.0.1.1/upgrade_analysis.txt b/openupgrade_scripts/scripts/sales_team/20.0.1.1/upgrade_analysis.txt new file mode 100644 index 00000000000..23c05a64a31 --- /dev/null +++ b/openupgrade_scripts/scripts/sales_team/20.0.1.1/upgrade_analysis.txt @@ -0,0 +1,22 @@ +---Models in module 'sales_team'--- +---Fields in module 'sales_team'--- +---XML records in module 'sales_team'--- +NEW ir.access: sales_team.access_crm_tag_manager +NEW ir.access: sales_team.access_crm_tag_salesman +NEW ir.access: sales_team.access_crm_team +NEW ir.access: sales_team.access_crm_team_member_manager +NEW ir.access: sales_team.access_crm_team_member_user +NEW ir.access: sales_team.crm_rule_all_salesteam +NEW ir.access: sales_team.sale_team_comp_rule +DEL ir.actions.act_window: sales_team.crm_team_action_sales +DEL ir.model.access: sales_team.access_crm_tag +DEL ir.model.access: sales_team.access_crm_tag_manager +DEL ir.model.access: sales_team.access_crm_tag_salesman +DEL ir.model.access: sales_team.access_crm_team +DEL ir.model.access: sales_team.access_crm_team_manager +DEL ir.model.access: sales_team.access_crm_team_member_all +DEL ir.model.access: sales_team.access_crm_team_member_manager +DEL ir.model.access: sales_team.access_crm_team_member_user +DEL ir.model.access: sales_team.access_crm_team_user +DEL ir.rule: sales_team.crm_rule_all_salesteam (noupdate) +DEL ir.rule: sales_team.sale_team_comp_rule (noupdate) diff --git a/openupgrade_scripts/scripts/sales_team/20.0.1.1/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/sales_team/20.0.1.1/upgrade_analysis_work.txt new file mode 100644 index 00000000000..b14b7c3088c --- /dev/null +++ b/openupgrade_scripts/scripts/sales_team/20.0.1.1/upgrade_analysis_work.txt @@ -0,0 +1,47 @@ +---Models in module 'sales_team'--- +---Fields in module 'sales_team'--- +---XML records in module 'sales_team'--- +NEW ir.access: sales_team.access_crm_tag_manager +NEW ir.access: sales_team.access_crm_tag_salesman +NEW ir.access: sales_team.access_crm_team +NEW ir.access: sales_team.access_crm_team_member_manager +NEW ir.access: sales_team.access_crm_team_member_user +NEW ir.access: sales_team.crm_rule_all_salesteam +NEW ir.access: sales_team.sale_team_comp_rule +# NOTHING TO DO: ir.model.access and ir.rule were merged into ir.access. +# Base (OCA/OpenUpgrade#6068) renames those xmlids in pre-migration and +# recreates standard rows from this module's ir.access.csv. Rows without a +# standard xmlid are converted in base post-migration. Customizations of +# noupdate standard rules are not replayed; that gap belongs to base. +# crm_rule_all_salesteam moves from group_sale_salesman_all_leads to +# group_sale_manager with operation crud and no domain. Writes were already +# manager-only via ir.model.access (salesman rows were read-only). v20 +# grants read of crm.team to base.group_user. sale_team_comp_rule keeps the +# same multi-company domain. + +DEL ir.actions.act_window: sales_team.crm_team_action_sales +# NOTHING TO DO: crm_team_action_sales was removed from crm_team_views.xml, +# which is still loaded, and it is not noupdate. End-of-upgrade cleanup +# drops the xmlid. It is a window action, not a call to a removed method. + +DEL ir.model.access: sales_team.access_crm_tag +DEL ir.model.access: sales_team.access_crm_tag_manager +DEL ir.model.access: sales_team.access_crm_tag_salesman +DEL ir.model.access: sales_team.access_crm_team +DEL ir.model.access: sales_team.access_crm_team_manager +DEL ir.model.access: sales_team.access_crm_team_member_all +DEL ir.model.access: sales_team.access_crm_team_member_manager +DEL ir.model.access: sales_team.access_crm_team_member_user +DEL ir.model.access: sales_team.access_crm_team_user +DEL ir.rule: sales_team.crm_rule_all_salesteam (noupdate) +DEL ir.rule: sales_team.sale_team_comp_rule (noupdate) +# NOTHING TO DO: ir.model.access and ir.rule were merged into ir.access. +# Base (OCA/OpenUpgrade#6068) renames those xmlids in pre-migration and +# recreates standard rows from this module's ir.access.csv. Rows without a +# standard xmlid are converted in base post-migration. Customizations of +# noupdate standard rules are not replayed; that gap belongs to base. +# crm_rule_all_salesteam moves from group_sale_salesman_all_leads to +# group_sale_manager with operation crud and no domain. Writes were already +# manager-only via ir.model.access (salesman rows were read-only). v20 +# grants read of crm.team to base.group_user. sale_team_comp_rule keeps the +# same multi-company domain.