Skip to content

[WIP] l10n_ar_edi_ux: WIP adapt update from padron to generic wizard#786

Open
jue-adhoc wants to merge 1 commit intoingadhoc:19.0from
adhoc-dev:19.0-t-60236-jue
Open

[WIP] l10n_ar_edi_ux: WIP adapt update from padron to generic wizard#786
jue-adhoc wants to merge 1 commit intoingadhoc:19.0from
adhoc-dev:19.0-t-60236-jue

Conversation

@jue-adhoc
Copy link
Contributor

No description provided.

Copilot AI review requested due to automatic review settings November 13, 2025 23:29
@roboadhoc
Copy link
Contributor

Pull request status dashboard

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Este PR adapta el módulo l10n_ar_edi_ux para usar un wizard genérico de actualización de partners desde padrón, migrando de una implementación independiente a una basada en herencia del módulo partner_autocomplete_wizard. Los cambios principales incluyen la refactorización de modelos transitorios para usar herencia en lugar de definición completa, actualización de vistas XML para heredar de vistas base, y simplificación del código eliminando lógica que ahora se maneja en el módulo padre.

Cambios clave:

  • Refactorización de wizards para usar _inherit en lugar de _name, delegando funcionalidad base al módulo partner_autocomplete_wizard
  • Simplificación de vistas XML usando herencias con xpath para personalizar solo elementos específicos de Argentina
  • Eliminación de código duplicado y movimiento de lógica específica de AFIP/ARCA a métodos especializados

Reviewed Changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
l10n_ar_edi_ux/__manifest__.py Agrega dependencia a partner_autocomplete_wizard, cambia installable a True, y declara archivo de vista (duplicado)
l10n_ar_edi_ux/wizards/res_partner_update_from_padron_wizard.py Refactoriza wizards para heredar de modelos base, implementa métodos específicos de Argentina, y elimina código genérico movido al padre
l10n_ar_edi_ux/wizards/res_partner_update_from_padron_wizard_view.xml Convierte vista completa a herencia usando xpath, actualiza nomenclatura de AFIP a ARCA, y comenta acción/menú originales
l10n_ar_edi_ux/views/res_partner_view.xml Elimina vista completa que contenía botón de actualización desde AFIP
l10n_ar_edi_ux/models/res_partner.py Simplifica modelo eliminando lógica de conexión AFIP (movida a otro archivo) y renombra método de actualización
l10n_ar_edi_ux/models/__init__.py Agrega importaciones para l10n_ar_afipws_connection y res_partner

)

def get_partner_data(self, partner):
"""Implementación específica para AFIP"""
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

El comentario en español tiene un error ortográfico: "Implementación" debe llevar tilde, pero además dice "AFIP" cuando debería decir "ARCA" para mantener consistencia con los cambios en las vistas XML (línea 7 del archivo XML cambió "AFIP" a "ARCA").

Suggested change
"""Implementación específica para AFIP"""
"""Implementación específica para ARCA"""

Copilot uses AI. Check for mistakes.
"demo/res_partner_demo.xml",
],
"installable": False,
"installable": True,
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Este PR realiza cambios estructurales significativos en modelos (cambio de _name a _inherit en los wizards), vistas XML (nueva herencia), y agrega una nueva dependencia (partner_autocomplete_wizard). Según las pautas de revisión, se debe incrementar la versión en el __manifest__.py para reflejar estos cambios estructurales. Además, dado que se está cambiando la arquitectura de modelos transitorios de definición completa a herencia, se recomienda crear un script de migración en migrations/ si existen datos o configuraciones previas que puedan verse afectadas.

Copilot generated this review using guidance from repository custom instructions.
from . import l10n_ar_boarding_permission
from . import res_config_settings
from . import res_company
from . import l10n_ar_afipws_connection
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se está importando l10n_ar_afipws_connection pero no se observa que este archivo haya sido modificado o creado en este PR. Si este archivo no existe, la importación causará un error ModuleNotFoundError al instalar o actualizar el módulo.

Suggested change
from . import l10n_ar_afipws_connection

Copilot uses AI. Check for mistakes.
<record model='ir.ui.view' id='view_base_partner_update_from_padron_ar_form'>
<field name='name'>res.partner.update.from.padron.wizard.form</field>
<field name='model'>res.partner.update.from.padron.wizard</field>
<field name='inherit_id' ref='partner_autocomplete_wizard.view_base_partner_update_from_padron_form'/>
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] El ID de la vista cambió de view_base_partner_update_from_padron_form a view_base_partner_update_from_padron_ar_form. Si existen otros módulos o vistas que heredan de este ID o lo referencian, se romperá la herencia. Además, si hay datos XML (ir.model.data) que referencian el ID antiguo, también fallarán. Se recomienda verificar dependencias y considerar un script de migración para actualizar referencias al ID antiguo.

Suggested change
<field name='inherit_id' ref='partner_autocomplete_wizard.view_base_partner_update_from_padron_form'/>
<field name='inherit_id' ref='partner_autocomplete_wizard.view_base_partner_update_from_padron_ar_form'/>

Copilot uses AI. Check for mistakes.
Comment on lines 17 to +22
"wizards/res_partner_update_from_padron_wizard_view.xml",
"views/res_partner_view.xml",
"views/account_move_view.xml",
"views/account_journal_view.xml",
"views/l10n_ar_boarding_permission_view.xml",
"wizards/res_partner_update_from_padron_wizard_view.xml",
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

El archivo wizards/res_partner_update_from_padron_wizard_view.xml está declarado dos veces en el manifest (líneas 17 y 22). Esto causará que el archivo se cargue duplicadamente durante la instalación del módulo.

Copilot uses AI. Check for mistakes.
Comment on lines +35 to +36
country_code = self.env["res.partner"].browse(self._context.get("active_ids")).country_id.code
if country_code == "AR":
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Este código puede fallar si active_ids contiene múltiples partners de diferentes países o si está vacío. El método .browse() con active_ids sin verificar si hay IDs podría fallar, y acceder a .country_id.code en un recordset con múltiples registros puede devolver múltiples valores en lugar de uno solo. Se recomienda usar .mapped('country_id.code') y verificar si hay valores únicos, o tomar solo el primer registro.

Suggested change
country_code = self.env["res.partner"].browse(self._context.get("active_ids")).country_id.code
if country_code == "AR":
active_ids = self._context.get("active_ids", [])
partners = self.env["res.partner"].browse(active_ids) if active_ids else self.env["res.partner"]
country_codes = partners.mapped("country_id.code")
# Validar que todos los partners sean de Argentina y que haya al menos uno
if country_codes and all(code == "AR" for code in country_codes):

Copilot uses AI. Check for mistakes.
Comment on lines +35 to +44
country_code = self.env["res.partner"].browse(self._context.get("active_ids")).country_id.code
if country_code == "AR":
res = super(ResPartnerUpdateFromPadronWizard, self).default_get(fields)
context = self._context
if context.get("active_model") == "res.partner" and context.get("active_ids"):
partners = self.get_partners()
if not partners:
raise UserError(_("No se encontró ningún partner con CUIT para actualizar"))
return res
return super().default_get(fields)
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La lógica del default_get no llama a super().default_get(fields) cuando country_code != "AR". Esto significa que si se omite el bloque condicional, se debe llamar al super para que otros módulos puedan ejecutar su lógica. Sin embargo, en la línea 44 se llama a super().default_get(fields) sin pasar el resultado del super anterior (línea 37), lo que podría causar que se pierdan valores por defecto establecidos en el bloque if country_code == "AR". Recomendamos una estructura más clara donde se obtenga primero res = super().default_get(fields) y luego se modifique según la condición.

Suggested change
country_code = self.env["res.partner"].browse(self._context.get("active_ids")).country_id.code
if country_code == "AR":
res = super(ResPartnerUpdateFromPadronWizard, self).default_get(fields)
context = self._context
if context.get("active_model") == "res.partner" and context.get("active_ids"):
partners = self.get_partners()
if not partners:
raise UserError(_("No se encontró ningún partner con CUIT para actualizar"))
return res
return super().default_get(fields)
res = super(ResPartnerUpdateFromPadronWizard, self).default_get(fields)
country_code = self.env["res.partner"].browse(self._context.get("active_ids")).country_id.code
if country_code == "AR":
context = self._context
if context.get("active_model") == "res.partner" and context.get("active_ids"):
partners = self.get_partners()
if not partners:
raise UserError(_("No se encontró ningún partner con CUIT para actualizar"))
return res

Copilot uses AI. Check for mistakes.
Comment on lines +88 to +89
"""Mensaje de error personalizado para AFIP"""
return f"Falló actualización AFIP: {error}"
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

El mensaje de error hace referencia a "AFIP" pero debería usar "ARCA" para mantener consistencia con los cambios realizados en las vistas XML donde se actualizó la nomenclatura de "AFIP" a "ARCA".

Suggested change
"""Mensaje de error personalizado para AFIP"""
return f"Falló actualización AFIP: {error}"
"""Mensaje de error personalizado para ARCA"""
return f"Falló actualización ARCA: {error}"

Copilot uses AI. Check for mistakes.
<record model='ir.ui.view' id='view_base_partner_update_from_padron_ar_form'>
<field name='name'>res.partner.update.from.padron.wizard.form</field>
<field name='model'>res.partner.update.from.padron.wizard</field>
<field name='inherit_id' ref='partner_autocomplete_wizard.view_base_partner_update_from_padron_form'/>
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La vista ahora hereda de partner_autocomplete_wizard.view_base_partner_update_from_padron_form pero este módulo (partner_autocomplete_wizard) no se verifica que exista en el repositorio. Si el módulo dependiente no está disponible o la vista referenciada no existe, esto causará un error durante la instalación. Asegúrate de que la dependencia esté correctamente instalada y que el XML ID sea el correcto.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants