From 4dcdc50265f0d82bc0bdfd036c74a2258cf9e0ae Mon Sep 17 00:00:00 2001 From: Felipe Garcia Suez Date: Wed, 26 Nov 2025 12:58:01 -0300 Subject: [PATCH] [FIX] l10n_ar_demo: Fix use documents issue in demo data --- l10n_ar_demo/__init__.py | 55 ++++++++++++++++------ l10n_ar_demo/__manifest__.py | 1 + l10n_ar_demo/demo/account_journal_demo.xml | 29 ++++++++++++ 3 files changed, 70 insertions(+), 15 deletions(-) create mode 100644 l10n_ar_demo/demo/account_journal_demo.xml diff --git a/l10n_ar_demo/__init__.py b/l10n_ar_demo/__init__.py index 6d9097c2d..693931772 100644 --- a/l10n_ar_demo/__init__.py +++ b/l10n_ar_demo/__init__.py @@ -15,9 +15,9 @@ old_load_manifest = module.load_manifest -def load_manifest(module, mod_path=None): - info = old_load_manifest(module, mod_path=mod_path) - if module in ['l10n_ar', 'l10n_ar_edi', 'l10n_ar_website_sale']: +def load_manifest(module_name, mod_path=None): + info = old_load_manifest(module_name, mod_path=mod_path) + if module_name in ['l10n_ar', 'l10n_ar_edi', 'l10n_ar_website_sale']: info['demo'] = [] return info @@ -26,16 +26,41 @@ def load_manifest(module, mod_path=None): def _load_l10n_ar_demo_data(cr): + """ + Carga los datos demo de l10n_ar que fueron ocultados por load_manifest. + Este hook se ejecuta antes de cargar los demos de l10n_ar_demo para asegurar + que las dependencias (journals, productos, partners, etc) existan. + """ env = api.Environment(cr, SUPERUSER_ID, {}) - for module_name in ['l10n_ar', 'l10n_ar_edi', 'l10n_ar_website_sale']: - _logger.info('Loading demo data from %s' % module_name) - manifest_file = module.module_manifest(module.get_module_path(module_name)) - f = tools.file_open(manifest_file, mode='rb') - try: - info = ast.literal_eval(tools.pycompat.to_text(f.read())) - finally: - f.close() - for demo_data in info.get('demo'): - _logger.info('Loading %s', (demo_data)) - tools.convert_file(cr, module_name, demo_data, {}, 'init', True, 'demo', None) - env.cr.commit() + + # Verificar si los datos demo ya fueron cargados (para evitar recargas en upgrades) + # Verificamos con company_exento que se crea en el primer archivo demo (exento_demo.xml) + if env['ir.model.data'].search([('module', '=', 'l10n_ar'), ('name', '=', 'company_exento')], limit=1): + _logger.info('Demo data from l10n_ar already loaded, skipping manual load') + return + + # Desactivar constraints problemáticas temporalmente durante la carga inicial + # Esto es necesario porque los archivos demo de l10n_ar tienen problemas de orden + AccountJournal = env.registry['account.journal'] + orig_check1 = AccountJournal.check_use_document + orig_check2 = AccountJournal._check_afip_configurations + AccountJournal.check_use_document = lambda self: None + AccountJournal._check_afip_configurations = lambda self: None + + try: + for module_name in ['l10n_ar', 'l10n_ar_edi', 'l10n_ar_website_sale']: + _logger.info('Loading demo data from %s' % module_name) + manifest_file = module.module_manifest(module.get_module_path(module_name)) + f = tools.file_open(manifest_file, mode='rb') + try: + info = ast.literal_eval(tools.pycompat.to_text(f.read())) + finally: + f.close() + for demo_data in info.get('demo', []): + _logger.info('Loading %s', (demo_data)) + tools.convert_file(cr, module_name, demo_data, {}, 'init', True, 'demo', None) + env.cr.commit() + finally: + # Restaurar constraints + AccountJournal.check_use_document = orig_check1 + AccountJournal._check_afip_configurations = orig_check2 diff --git a/l10n_ar_demo/__manifest__.py b/l10n_ar_demo/__manifest__.py index 71787bcd7..aa67c8dd4 100644 --- a/l10n_ar_demo/__manifest__.py +++ b/l10n_ar_demo/__manifest__.py @@ -39,6 +39,7 @@ 'data': [ ], 'demo': [ + 'demo/account_journal_demo.xml', 'demo/account_tax_demo.xml', 'demo/customer_payment_demo.xml', 'demo/supplier_payment_demo.xml', diff --git a/l10n_ar_demo/demo/account_journal_demo.xml b/l10n_ar_demo/demo/account_journal_demo.xml new file mode 100644 index 000000000..ca377177c --- /dev/null +++ b/l10n_ar_demo/demo/account_journal_demo.xml @@ -0,0 +1,29 @@ + + + + + + + + + Retenciones + cash + + RET + + + + Retenciones + cash + + RET + + + + Retenciones + cash + + RET + + +