From 5e5bb0975807e9dbbabef4761c8b4e7ba293f89a Mon Sep 17 00:00:00 2001 From: DanielAPereyraB Date: Mon, 19 Jan 2026 11:23:13 -0400 Subject: [PATCH 1/7] ref(l10n_do_banks): update pre-view-delete script to include additional views and improve formatting --- src/l10n_do_banks/17.0.1.0.0/pre-view-delete.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/l10n_do_banks/17.0.1.0.0/pre-view-delete.py b/src/l10n_do_banks/17.0.1.0.0/pre-view-delete.py index 01bedfc36..69886dbb8 100644 --- a/src/l10n_do_banks/17.0.1.0.0/pre-view-delete.py +++ b/src/l10n_do_banks/17.0.1.0.0/pre-view-delete.py @@ -6,7 +6,7 @@ def migrate(cr, version): """ Pre-migration script to delete specific views before upgrade. - + Args: cr (cursor): Database cursor version (str): Module version @@ -18,7 +18,7 @@ def migrate(cr, version): 'bi_warranty_registration.warranty_details_form_view' 'bi_warranty_registration.warranty_case_claims_form_view1', 'product_product_price_widget.product_product_tree_view_inherit_widget', - 'sale_stock_product_price_widget.sale_price_widgets_view', + 'sale_stock_product_price_widget.sale_price_widgets_view', 'sale_stock_qty_date_widgets.sale_stock_qty_date_widgets_view', 'product_stock_qty_date_widget.product_product_tree_view_inherit_widget_qty', 'warranty_registration_extra_features.warranty_case_claims_form_view1_inherit', @@ -30,6 +30,7 @@ def migrate(cr, version): 'professional_templates.view_sale_order_inherit_customized', 'professional_templates.view_rfq_inherit_customized', 'professional_templates.purchase_order_inherited_customized', + 'stock_analytic.view_picking_form', ] for xml_id in views_to_delete: @@ -47,12 +48,12 @@ def migrate(cr, version): inherited.unlink() except Exception as e: _logger.warning(f'Error deleting inherited view: {e}') - + # Check if this view inherits from another if view.inherit_id: _logger.info(f'View {xml_id} inherits from {view.inherit_id.xml_id}') view.inherit_id = False - + # Now delete the view itself view.unlink() _logger.info(f'Successfully deleted view: {xml_id}') From 0c3dcffeb33af53e4300000e3992c78759c2e35f Mon Sep 17 00:00:00 2001 From: DanielAPereyraB Date: Mon, 19 Jan 2026 13:14:01 -0400 Subject: [PATCH 2/7] feat(l10n_do_banks): add migration script to update stock.picking views for analytic_distribution --- .../pre-fix-oca-stock-analytic-view.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py diff --git a/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py b/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py new file mode 100644 index 000000000..501fdafc7 --- /dev/null +++ b/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py @@ -0,0 +1,33 @@ +import logging + +from odoo import api, SUPERUSER_ID +from odoo.addons.base.maintenance.migrations import util + +_logger = logging.getLogger(__name__) + + +def _update_views(env): + views = env["ir.ui.view"].search( + [ + ("model", "=", "stock.picking"), + ("arch_db", "ilike", "analytic_account_id"), + ] + ) + for view in views: + new_arch = view.arch_db.replace( + "analytic_account_id", "analytic_distribution" + ) + if new_arch != view.arch_db: + view.write({"arch_db": new_arch}) + _logger.info("Updated view %s (%s)", view.name, view.id) + + +def migrate(cr, version): + del version + + if not util.module_installed(cr, "stock_analytic"): + _logger.info("stock_analytic not installed; skipping view fix.") + return + + env = api.Environment(cr, SUPERUSER_ID, {}) + _update_views(env) From 302a855dfbb78eabfcbe6e47601ea3a709efa837 Mon Sep 17 00:00:00 2001 From: DanielAPereyraB Date: Mon, 19 Jan 2026 13:20:34 -0400 Subject: [PATCH 3/7] ref(l10n_do_banks): optimize view update process by executing SQL directly instead of using ORM --- .../pre-fix-oca-stock-analytic-view.py | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py b/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py index 501fdafc7..4dd8bd5e8 100644 --- a/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py +++ b/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py @@ -1,25 +1,20 @@ import logging -from odoo import api, SUPERUSER_ID from odoo.addons.base.maintenance.migrations import util _logger = logging.getLogger(__name__) -def _update_views(env): - views = env["ir.ui.view"].search( - [ - ("model", "=", "stock.picking"), - ("arch_db", "ilike", "analytic_account_id"), - ] +def _update_views(cr): + cr.execute( + """ + UPDATE ir_ui_view + SET arch_db = replace(arch_db, 'analytic_account_id', 'analytic_distribution') + WHERE model = 'stock.picking' + AND arch_db ILIKE '%%analytic_account_id%%' + """ ) - for view in views: - new_arch = view.arch_db.replace( - "analytic_account_id", "analytic_distribution" - ) - if new_arch != view.arch_db: - view.write({"arch_db": new_arch}) - _logger.info("Updated view %s (%s)", view.name, view.id) + _logger.info("Updated %s stock.picking views.", cr.rowcount) def migrate(cr, version): @@ -29,5 +24,4 @@ def migrate(cr, version): _logger.info("stock_analytic not installed; skipping view fix.") return - env = api.Environment(cr, SUPERUSER_ID, {}) - _update_views(env) + _update_views(cr) From b4f8e3cec7984ce55fa4b291254eefc4d3984cd5 Mon Sep 17 00:00:00 2001 From: DanielAPereyraB Date: Mon, 19 Jan 2026 13:26:26 -0400 Subject: [PATCH 4/7] fix(l10n_do_banks): update SQL query to handle JSONB type for stock.picking views --- .../17.0.1.0.0/pre-fix-oca-stock-analytic-view.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py b/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py index 4dd8bd5e8..37be58344 100644 --- a/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py +++ b/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py @@ -9,9 +9,13 @@ def _update_views(cr): cr.execute( """ UPDATE ir_ui_view - SET arch_db = replace(arch_db, 'analytic_account_id', 'analytic_distribution') + SET arch_db = replace( + arch_db::text, + 'analytic_account_id', + 'analytic_distribution' + )::jsonb WHERE model = 'stock.picking' - AND arch_db ILIKE '%%analytic_account_id%%' + AND arch_db::text ILIKE '%%analytic_account_id%%' """ ) _logger.info("Updated %s stock.picking views.", cr.rowcount) From b91cccbd51734acba8aaec6e0ff70a3eec6550a9 Mon Sep 17 00:00:00 2001 From: DanielAPereyraB Date: Mon, 19 Jan 2026 13:31:59 -0400 Subject: [PATCH 5/7] fix(l10n_do_banks): update SQL query to replace 'analytic_account_id' with 'analytic_distribution' and include 'analytic_tag_ids' in stock.picking views --- .../17.0.1.0.0/pre-fix-oca-stock-analytic-view.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py b/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py index 37be58344..8353c5dd6 100644 --- a/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py +++ b/src/l10n_do_banks/17.0.1.0.0/pre-fix-oca-stock-analytic-view.py @@ -10,12 +10,19 @@ def _update_views(cr): """ UPDATE ir_ui_view SET arch_db = replace( - arch_db::text, - 'analytic_account_id', + replace( + arch_db::text, + 'analytic_account_id', + 'analytic_distribution' + ), + 'analytic_tag_ids', 'analytic_distribution' )::jsonb WHERE model = 'stock.picking' - AND arch_db::text ILIKE '%%analytic_account_id%%' + AND ( + arch_db::text ILIKE '%%analytic_account_id%%' + OR arch_db::text ILIKE '%%analytic_tag_ids%%' + ) """ ) _logger.info("Updated %s stock.picking views.", cr.rowcount) From a08e770ea54ce1c31911633f584a06df8755b430 Mon Sep 17 00:00:00 2001 From: DanielAPereyraB Date: Mon, 19 Jan 2026 13:56:56 -0400 Subject: [PATCH 6/7] ref(l10n_do_banks): add additional modules to the uninstall process --- src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py b/src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py index 4ab2d8cc2..faf3d56e1 100644 --- a/src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py +++ b/src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py @@ -148,6 +148,9 @@ def uninstall_modules(cr): 'stock_inventory_chatter', 'cecomsa_account_followup', 'odoo_document_invoice_report', + 'payroll_dynamic_xls_report', + 'purchase_analytic_global', + 'purchase_discount' ] _logger.info(f'Starting uninstall process for {len(modules_to_uninstall)} modules.') From 52dbcf2129c0df2aeb3fb4167c8a1edcd2d41655 Mon Sep 17 00:00:00 2001 From: DanielAPereyraB Date: Sat, 31 Jan 2026 18:25:57 -0400 Subject: [PATCH 7/7] ref(l10n_do_banks): remove unnecessary modules from the uninstall process --- src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py b/src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py index faf3d56e1..be78fde09 100644 --- a/src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py +++ b/src/l10n_do_banks/17.0.1.0.0/pre-modules-uninstall.py @@ -148,13 +148,11 @@ def uninstall_modules(cr): 'stock_inventory_chatter', 'cecomsa_account_followup', 'odoo_document_invoice_report', - 'payroll_dynamic_xls_report', - 'purchase_analytic_global', 'purchase_discount' ] _logger.info(f'Starting uninstall process for {len(modules_to_uninstall)} modules.') - + uninstalled_count = 0 not_installed_count = 0 failed_count = 0 @@ -175,7 +173,7 @@ def uninstall_modules(cr): f'Failed to uninstall module {module_name}: {str(e)}', exc_info=True ) - + _logger.info( f'Uninstall process completed. ' f'Uninstalled: {uninstalled_count}, '