Skip to content

Commit c0828b4

Browse files
committed
[FIX] l10n_ar_demo: Fix use documents issue in demo data
1 parent 5027c49 commit c0828b4

File tree

3 files changed

+70
-15
lines changed

3 files changed

+70
-15
lines changed

l10n_ar_demo/__init__.py

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
old_load_manifest = module.load_manifest
1616

1717

18-
def load_manifest(module, mod_path=None):
19-
info = old_load_manifest(module, mod_path=mod_path)
20-
if module in ['l10n_ar', 'l10n_ar_edi', 'l10n_ar_website_sale']:
18+
def load_manifest(module_name, mod_path=None):
19+
info = old_load_manifest(module_name, mod_path=mod_path)
20+
if module_name in ['l10n_ar', 'l10n_ar_edi', 'l10n_ar_website_sale']:
2121
info['demo'] = []
2222
return info
2323

@@ -26,16 +26,41 @@ def load_manifest(module, mod_path=None):
2626

2727

2828
def _load_l10n_ar_demo_data(cr):
29+
"""
30+
Carga los datos demo de l10n_ar que fueron ocultados por load_manifest.
31+
Este hook se ejecuta antes de cargar los demos de l10n_ar_demo para asegurar
32+
que las dependencias (journals, productos, partners, etc) existan.
33+
"""
2934
env = api.Environment(cr, SUPERUSER_ID, {})
30-
for module_name in ['l10n_ar', 'l10n_ar_edi', 'l10n_ar_website_sale']:
31-
_logger.info('Loading demo data from %s' % module_name)
32-
manifest_file = module.module_manifest(module.get_module_path(module_name))
33-
f = tools.file_open(manifest_file, mode='rb')
34-
try:
35-
info = ast.literal_eval(tools.pycompat.to_text(f.read()))
36-
finally:
37-
f.close()
38-
for demo_data in info.get('demo'):
39-
_logger.info('Loading %s', (demo_data))
40-
tools.convert_file(cr, module_name, demo_data, {}, 'init', True, 'demo', None)
41-
env.cr.commit()
35+
36+
# Verificar si los datos demo ya fueron cargados (para evitar recargas en upgrades)
37+
# Verificamos con company_exento que se crea en el primer archivo demo (exento_demo.xml)
38+
if env['ir.model.data'].search([('module', '=', 'l10n_ar'), ('name', '=', 'company_exento')], limit=1):
39+
_logger.info('Demo data from l10n_ar already loaded, skipping manual load')
40+
return
41+
42+
# Desactivar constraints problemáticas temporalmente durante la carga inicial
43+
# Esto es necesario porque los archivos demo de l10n_ar tienen problemas de orden
44+
AccountJournal = env.registry['account.journal']
45+
orig_check1 = AccountJournal.check_use_document
46+
orig_check2 = AccountJournal._check_afip_configurations
47+
AccountJournal.check_use_document = lambda self: None
48+
AccountJournal._check_afip_configurations = lambda self: None
49+
50+
try:
51+
for module_name in ['l10n_ar', 'l10n_ar_edi', 'l10n_ar_website_sale']:
52+
_logger.info('Loading demo data from %s' % module_name)
53+
manifest_file = module.module_manifest(module.get_module_path(module_name))
54+
f = tools.file_open(manifest_file, mode='rb')
55+
try:
56+
info = ast.literal_eval(tools.pycompat.to_text(f.read()))
57+
finally:
58+
f.close()
59+
for demo_data in info.get('demo', []):
60+
_logger.info('Loading %s', (demo_data))
61+
tools.convert_file(cr, module_name, demo_data, {}, 'init', True, 'demo', None)
62+
env.cr.commit()
63+
finally:
64+
# Restaurar constraints
65+
AccountJournal.check_use_document = orig_check1
66+
AccountJournal._check_afip_configurations = orig_check2

l10n_ar_demo/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
'data': [
4040
],
4141
'demo': [
42+
'demo/account_journal_demo.xml',
4243
'demo/account_tax_demo.xml',
4344
'demo/customer_payment_demo.xml',
4445
'demo/supplier_payment_demo.xml',
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
<data>
4+
<!-- Crear diarios de retenciones para las empresas demo -->
5+
<!-- Estos normalmente se crean por account_chart_template._create_bank_journals -->
6+
<!-- pero solo si l10n_ar_account_withholding está instalado cuando se aplica el chart template -->
7+
8+
<record id="withholding_journal_ri" model="account.journal">
9+
<field name="name">Retenciones</field>
10+
<field name="type">cash</field>
11+
<field name="company_id" ref="l10n_ar.company_ri"/>
12+
<field name="code">RET</field>
13+
</record>
14+
15+
<record id="withholding_journal_exento" model="account.journal">
16+
<field name="name">Retenciones</field>
17+
<field name="type">cash</field>
18+
<field name="company_id" ref="l10n_ar.company_exento"/>
19+
<field name="code">RET</field>
20+
</record>
21+
22+
<record id="withholding_journal_mono" model="account.journal">
23+
<field name="name">Retenciones</field>
24+
<field name="type">cash</field>
25+
<field name="company_id" ref="l10n_ar.company_mono"/>
26+
<field name="code">RET</field>
27+
</record>
28+
</data>
29+
</odoo>

0 commit comments

Comments
 (0)