Capturando el listado de grandes contribuyentes de AFIP

15 de mayo de 2024 por
Gustavo Orrillo
| Sin comentarios aún
 

El día de ayer un cliente me pidió capturar en forma automática el listado de grandes contribuyentes de AFIP (el que indica cuando una empresa debe facturar con facturas de crédito o no). 

Filoquin (se llama Martín y su apellido es desconocido para mí) lo hizo posible. Me pasó una URL

https://servicioscf.afip.gob.ar/FCEServicioConsulta/api/fceconsulta.aspx/getGrandesEmpresas

que da como respuesta una lista con diccionarios que tiene el CUIT de los grandes contribuyentes. Esa URL y la librería requests me permitieron desarrollar un script que actualiza los contactos y le agrega el tag "Gran contribuyente". Veamos como es el script

#!/usr/bin/python3
from xmlrpc import client
import requests

url = 'http://127.0.0.1:8069'
common = client.ServerProxy('{}/xmlrpc/2/common'.format(url))
res = common.version()

dbname = 'dbname'
user = 'admin'
pwd = 'admin-pwd'
uid = common.authenticate(dbname, user, pwd, {})

models = client.ServerProxy('{}/xmlrpc/2/object'.format(url))

res = requests.get('https://servicioscf.afip.gob.ar/FCEServicioConsulta/api/fceconsulta.aspx/getGrandesEmpresas')

result = res.content.decode('UTF-8')
cadena = result[:result.find(']')+1]
lista = eval(cadena)
for item in lista:
cuit = item.get('Cuit')
print(cuit)
partner_ids = models.execute_kw(dbname,uid,pwd,'res.partner',
​'search',[[['vat','=',str(cuit)]]])
if partner_ids:
for partner_id in partner_ids:
vals = {
'category_id': [(6,0,[2])]
}
return_id = models.execute_kw(dbname,uid,pwd,'res.partner',
​'write',[[partner_id],vals])
print(return_id)


Como pueden ver, el script primero captura el listado de grandes contribuyentes y los convierte en una lista de Python

res = requests.get('https://servicioscf.afip.gob.ar/FCEServicioConsulta/api/fceconsulta.aspx/getGrandesEmpresas')

result = res.content.decode('UTF-8')
cadena = result[:result.find(']')+1]
lista = eval(cadena)

Y luego recorre los elementos de la lista, buscando los partners que coinciden con el CUIT informado

for item in lista:
cuit = item.get('Cuit')
print(cuit)
partner_ids = models.execute_kw(dbname,uid,pwd,'res.partner',
​ ​ ​ ​'search',[[['vat','=',str(cuit)]]])
if partner_ids:

Y si encuentra el CUIT, le reemplaza los tags del contacto con la etiqueta "Gran contribuyente" (que tiene ID 2)

vals = {
'category_id': [(6,0,[2])]
}
return_id = models.execute_kw(dbname,uid,pwd,'res.partner',
​ ​ ​write',[[partner_id],vals])
print(return_id)

Lo cual brinda un resultado como el siguiente:



No es un script que sea precisamente una best-practice, pero les da una idea de que se puede hacer con la información del listado de grandes contribuyentes 

De vuelta, gracias Filoquin por el dato

Gustavo Orrillo 15 de mayo de 2024
Compartir
Archivar
Identificarse dejar un comentario