django-afip icon indicating copy to clipboard operation
django-afip copied to clipboard

Soporte para obtener los XMLs desde el admin.

Open erebodino opened this issue 8 months ago • 3 comments
trafficstars

Abro este hilo a modo de debate.

Hoy por la mañana me encontré con un problema de ARCA y veo que ellos son el problema, pero en la consulta ellos te piden que obtengas los XMLs de request y response, teniendo en cuenta que el envió de información lo maneja django afip, quizás sea útil para eventos futuros poder obtener los XMLs. No estoy muy familiarizado con la librería que se encarga de de enviar y recibir los request/response, pero viendo en history quizás sea factible.

Comentenme que opinan o si existe quizás una forma mas directa sin tener que modificar la librería.

erebodino avatar Mar 10 '25 18:03 erebodino

Me parece útil poder exportar los XML de request/response. Alguna vez estuve en tu misma situación y tuve que usar el HistoryPlugin, pero fue apilando código así nomás en tests.

Como sería el flujo completo para exportar XMLs? Desde una interfaz web? Desde una shell? Esta última me parece más flexible porque podemos loggear fácilmente cualquier secuencia de XMLs.

django-admin shell (o manage.py shell) me parece la más flexible, aunque un poquito más laboriosa de usar:

  • Usamos django-admin shell para tener una consola de Python con django activado.
  • django_afip.clients.get_client toma un parámetro opcional history: HistoryPlugin. Usamos este cliente para hacer requests guardando el historial en memoria.
  • django_afip.Receipt.validate() toma un parámetro opcional client, para usar uno pasado explícitamente como parámetro en vez de crear uno internamente.
  • Hacemos las llamadas necesarias desde esa consola (e.g.: django_afip.models.Receipt.objects.get(pk=123).validate_receipt(client)).
  • Analizamos el history que pasamos por parámetro para extraer todo lo que haga falta.

WhyNotHugo avatar Mar 20 '25 11:03 WhyNotHugo

Concuerdo, me parece una forma bastante directa y simple de obtener todo. Si no entendí mal: podríamos hacer que el request/response se guarden en archivos o directamente se impriman en el shell y de ahí uno los trabaja.

Si bien se me ocurre otra idea adicional que es crear un nuevo método para el admin validate_xml u otro nombre, que nos hace todo el proceso sin tener que seleccionar todo. Pero creo que es demasiado trabajo por el poco uso que puede tener.

erebodino avatar Mar 20 '25 14:03 erebodino

podríamos hacer que el request/response se guarden en archivos o directamente se impriman en el shell y de ahí uno los trabaja.

tal cual

Si bien se me ocurre otra idea adicional que es crear un nuevo método para el admin validate_xml u otro nombre, que nos hace todo el proceso sin tener que seleccionar todo.

Para implementar eso igualmente necesitarías todos los cambios de arriba para poder usar el HistoryPlugin.

WhyNotHugo avatar Mar 20 '25 17:03 WhyNotHugo