[FIX] account_withholding: no queremos contexto active_test False#851
[FIX] account_withholding: no queremos contexto active_test False#851pablohmontenegro wants to merge 1 commit intoingadhoc:16.0from
Conversation
There was a problem hiding this comment.
Pull request overview
Este PR aborda un problema relacionado con el contexto active_test=False en el módulo account_withholding, referenciado por el ticket 106338. El cambio incluye un script de pre-migración que fuerza la actualización de una vista del módulo core account para permitir que se aplique correctamente un cambio upstream de Odoo.
- Incremento de versión del módulo de 16.0.3.1.0 a 16.0.3.2.0
- Nuevo script de pre-migración que carga forzosamente la vista account_move_views.xml del módulo account de Odoo core
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| account_withholding/manifest.py | Actualiza la versión del módulo a 16.0.3.2.0 para reflejar los cambios de migración |
| account_withholding/migrations/16.0.3.2.0/pre-migration.py | Agrega script de pre-migración que fuerza la actualización de la vista account_move_views.xml del módulo account para aplicar cambios del PR upstream de Odoo #240659 |
| @openupgrade.migrate() | ||
| def migrate(env, version): | ||
|
|
||
| logger.info('Forzamos la actualización de la vista de account_move_views en módulo account para que pueda aplicarse correctamente este cambio https://github.com/odoo/odoo/pull/240659') |
There was a problem hiding this comment.
El mensaje de log menciona el PR de Odoo upstream (odoo/odoo#240659) pero no explica qué hace ese cambio ni cómo se relaciona con el título del PR actual ("no queremos contexto active_test False"). Sería útil documentar: (1) qué cambio específico trae ese PR de Odoo, (2) por qué se necesita forzar la actualización antes de aplicar los cambios de este módulo, y (3) cómo esto se relaciona con la eliminación del contexto active_test=False. Esto ayudará a futuros mantenedores a entender el propósito de esta migración.
| logger.info('Forzamos la actualización de la vista de account_move_views en módulo account para que pueda aplicarse correctamente este cambio https://github.com/odoo/odoo/pull/240659') | |
| logger.info( | |
| "Forzamos la actualización de la vista 'account_move_views' del módulo " | |
| "'account' para asegurarnos de que ya incorpora el cambio upstream de " | |
| "Odoo (PR https://github.com/odoo/odoo/pull/240659) antes de aplicar los " | |
| "cambios de este módulo. Ese PR ajusta el contexto utilizado en la vista " | |
| "base de apuntes contables para dejar de utilizar 'active_test = False'. " | |
| "Este módulo tiene como objetivo eliminar también el uso de " | |
| "'active_test = False' en sus propias vistas/herencias, por lo que es " | |
| "necesario partir de la vista estándar ya actualizada para evitar " | |
| "inconsistencias entre el comportamiento de Odoo base y las extensiones " | |
| "de este módulo durante la migración." | |
| ) |
| logger.info('Forzamos la actualización de la vista de account_move_views en módulo account para que pueda aplicarse correctamente este cambio https://github.com/odoo/odoo/pull/240659') | ||
| openupgrade.load_data(env.cr, 'account', 'views/account_move_views.xml') |
There was a problem hiding this comment.
El script de migración no incluye manejo de errores ni verificación de que la vista exista. Si el archivo 'views/account_move_views.xml' no existe en el módulo 'account' o falla la carga por cualquier razón, la migración fallará sin información clara. Se recomienda agregar un try-except con logging apropiado, o al menos verificar que el archivo exista antes de intentar cargarlo.
| logger.info('Forzamos la actualización de la vista de account_move_views en módulo account para que pueda aplicarse correctamente este cambio https://github.com/odoo/odoo/pull/240659') | |
| openupgrade.load_data(env.cr, 'account', 'views/account_move_views.xml') | |
| logger.info( | |
| "Forzamos la actualización de la vista de account_move_views en módulo " | |
| "account para que pueda aplicarse correctamente este cambio " | |
| "https://github.com/odoo/odoo/pull/240659" | |
| ) | |
| try: | |
| openupgrade.load_data(env.cr, "account", "views/account_move_views.xml") | |
| except Exception: | |
| logger.exception( | |
| "Error al cargar la vista 'views/account_move_views.xml' del módulo " | |
| "'account' durante la migración. Verifique que el archivo exista y " | |
| "sea válido." | |
| ) | |
| raise |
| @openupgrade.migrate() | ||
| def migrate(env, version): | ||
|
|
||
| logger.info('Forzamos la actualización de la vista de account_move_views en módulo account para que pueda aplicarse correctamente este cambio https://github.com/odoo/odoo/pull/240659') |
There was a problem hiding this comment.
El mensaje de log contiene una línea muy larga (más de 120 caracteres). Según PEP 8 y buenas prácticas, se recomienda dividir el mensaje en múltiples líneas para mejorar la legibilidad, especialmente cuando incluye URLs largas.
| logger.info('Forzamos la actualización de la vista de account_move_views en módulo account para que pueda aplicarse correctamente este cambio https://github.com/odoo/odoo/pull/240659') | |
| logger.info( | |
| 'Forzamos la actualización de la vista de account_move_views en módulo account para que pueda ' | |
| 'aplicarse correctamente este cambio ' | |
| 'https://github.com/odoo/odoo/pull/240659' | |
| ) |
…al pagar Llegaron 2 tickets 106105 (ticket padre) y 106338 que son de versión 16 en el que comentaron que se calculaban retenciones que no corresponden y esto sucedió aproximadamente desde que fue la caída de infraestructura el 05/12/2025 que se hizo un update de todos los módulos en bases de 16. Esto hizo que se incorpore este cambio odoo/odoo@0e9751d que tiene context="{'active_test': False}" entonces cuando se corre esto https://github.com/ingadhoc/account-payment/blob/16.0/account_withholding_automatic/models/account_payment_group.py#L90 (en método compute_withholdings) que hace un search de impuestos llega con dicho contexto y se terminan buscando impuestos que están archivados lo cual no queremos que suceda porque se terminan calculando retenciones de impuestos archivados y además crea registros de account partner tax con alícuotas en los contactos porque además hace conexión con agip, etc y eso hace que se creen registros con alícuotas en los contactos. Para solucionar la urgencia en dichos tickets lo que se hizo fue establecer "Ninguna" en el campo "Tipo" (withholding_type) de aquellos impuestos de retención que tenían establecido "Alícuota en el partner", de esa manera hace que no se calculen retenciones que no corresponden. Hice este kpi (346) "v16 #H-106338-106105-107058 impuestos archivados con campo withholding_type = 'partner_tax'" en el cual se puede ver en que bases hay impuestos inactivos que tienen el campo "withholding_type = 'partner_tax'" y que pueden tener el bug que haga que se calculen retenciones que no corresponden. También hice los prs odoo/odoo#240659 y ingadhoc#851 para solucionar el problema pero el pr de odoo da conflicto al agregarlo en una base de test y no se por que entonces lo que hice fue hacer este pr para solucionar el problema de manera definitiva que es el objetivo de este ticket.
…al pagar Llegaron 2 tickets 106105 (ticket padre) y 106338 que son de versión 16 en el que comentaron que se calculaban retenciones que no corresponden y esto sucedió aproximadamente desde que fue la caída de infraestructura el 05/12/2025 que se hizo un update de todos los módulos en bases de 16. Esto hizo que se incorpore este cambio odoo/odoo@0e9751d que tiene context="{'active_test': False}" entonces cuando se corre esto https://github.com/ingadhoc/account-payment/blob/16.0/account_withholding_automatic/models/account_payment_group.py#L90 (en método compute_withholdings) que hace un search de impuestos llega con dicho contexto y se terminan buscando impuestos que están archivados lo cual no queremos que suceda porque se terminan calculando retenciones de impuestos archivados y además crea registros de account partner tax con alícuotas en los contactos porque además hace conexión con agip, etc y eso hace que se creen registros con alícuotas en los contactos. Para solucionar la urgencia en dichos tickets lo que se hizo fue establecer "Ninguna" en el campo "Tipo" (withholding_type) de aquellos impuestos de retención que tenían establecido "Alícuota en el partner", de esa manera hace que no se calculen retenciones que no corresponden. Hice este kpi (346) "v16 #H-106338-106105-107058 impuestos archivados con campo withholding_type = 'partner_tax'" en el cual se puede ver en que bases hay impuestos inactivos que tienen el campo "withholding_type = 'partner_tax'" y que pueden tener el bug que haga que se calculen retenciones que no corresponden. También hice los prs odoo/odoo#240659 y #851 para solucionar el problema pero el pr de odoo da conflicto al agregarlo en una base de test y no se por que entonces lo que hice fue hacer este pr para solucionar el problema de manera definitiva que es el objetivo de este ticket.

Ticket: 106338