[FIX] l10n_ar_demo: Fix use documents issue in demo data#810
[FIX] l10n_ar_demo: Fix use documents issue in demo data#810feg-adhoc wants to merge 1 commit intoingadhoc:16.0from
Conversation
8440d10 to
6006676
Compare
There was a problem hiding this comment.
Pull request overview
Este PR corrige problemas en la carga de datos demo del módulo l10n_ar_demo al agregar journals de retenciones faltantes y mejorar la robustez del hook de carga de datos demo. El problema ocurría porque los journals de retención normalmente se crean automáticamente cuando l10n_ar_account_withholding está instalado durante la aplicación del chart template, pero no se creaban en el escenario de datos demo.
Cambios clave:
- Agrega journals de retenciones para las tres empresas demo (RI, Exento, Monotributo)
- Mejora el hook de carga demo con validación de idempotencia y manejo temporal de constraints
- Renombra parámetro
moduleamodule_namepara claridad
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
l10n_ar_demo/demo/account_journal_demo.xml |
Nuevo archivo que crea journals de retenciones para las empresas demo |
l10n_ar_demo/__manifest__.py |
Referencia el nuevo archivo de datos demo |
l10n_ar_demo/__init__.py |
Mejora el hook de carga con validación de idempotencia, documentación y manejo de constraints |
Comments suppressed due to low confidence (1)
l10n_ar_demo/manifest.py:22
- Se agregan nuevos datos demo (
account_journal_demo.xml) y se modifica el código de carga de datos (__init__.py). Según las reglas del proyecto, esto requiere un bump de versión (por ejemplo, de16.0.1.0.0a16.0.1.1.0).
'version': "16.0.1.0.0",
| return | ||
|
|
||
| # Desactivar constraints problemáticas temporalmente durante la carga inicial | ||
| # Esto es necesario porque los archivos demo de l10n_ar tienen problemas de orden |
There was a problem hiding this comment.
Acceder directamente al registro (env.registry['account.journal']) para modificar métodos de clase es un patrón frágil. Si el modelo no existe o hay un error tipográfico en el nombre, fallará silenciosamente. Considera agregar validación: if 'account.journal' not in env.registry: _logger.warning('account.journal not found'); return.
| # Esto es necesario porque los archivos demo de l10n_ar tienen problemas de orden | |
| # Esto es necesario porque los archivos demo de l10n_ar tienen problemas de orden | |
| if 'account.journal' not in env.registry: | |
| _logger.warning('account.journal not found in registry; skipping demo data load') | |
| return |
| orig_check1 = AccountJournal.check_use_document | ||
| orig_check2 = AccountJournal._check_afip_configurations |
There was a problem hiding this comment.
Si check_use_document o _check_afip_configurations no existen como atributos en el modelo, esta asignación fallará con AttributeError. Considera usar getattr(AccountJournal, 'check_use_document', None) para manejar casos donde estos métodos no existan en versiones diferentes del módulo.
| finally: | ||
| f.close() | ||
| for demo_data in info.get('demo', []): | ||
| _logger.info('Loading %s', (demo_data)) |
There was a problem hiding this comment.
El parámetro demo_data está envuelto en una tupla innecesaria (demo_data). Debería ser simplemente demo_data o demo_data, si se pretende una tupla. La sintaxis actual funciona porque los paréntesis no crean tuplas por sí solos.
| _logger.info('Loading %s', (demo_data)) | |
| _logger.info('Loading %s', demo_data) |
| f = tools.file_open(manifest_file, mode='rb') | ||
| try: | ||
| info = ast.literal_eval(tools.pycompat.to_text(f.read())) | ||
| finally: | ||
| f.close() |
There was a problem hiding this comment.
Considera usar context manager (with tools.file_open(...) as f:) en lugar de try/finally manual para manejar el cierre del archivo. Esto es más idiomático en Python y garantiza el cierre incluso si ocurre una excepción durante ast.literal_eval.
| f = tools.file_open(manifest_file, mode='rb') | |
| try: | |
| info = ast.literal_eval(tools.pycompat.to_text(f.read())) | |
| finally: | |
| f.close() | |
| with tools.file_open(manifest_file, mode='rb') as f: | |
| info = ast.literal_eval(tools.pycompat.to_text(f.read())) |
6006676 to
c0828b4
Compare
c0828b4 to
8eb07a1
Compare

No description provided.