1515old_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
2828def _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
0 commit comments