Validación de DNI

177 views
Skip to first unread message

Luis Javier Carbone

unread,
Mar 8, 2017, 2:11:52 PM3/8/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT

Buenas tardes a todos
No dispongo en la base de datos de clientes el nro de cuit de los mismos, si tengo el tipo y número de documento y mi consulta es la siguiente.
¿hay forma de validar si el nro de documento existe en afip? porque me pasa lo siguiente, los usuarios dan de alta el cliente/abonado y cuando
llega el momento de hacerle la factura mensual no puedo obtener el cae porque el documento es invalido y quisiera validarlo al darle ingreso,
o antes de solicitar el cae y que me sea rechazado.

Gracias de antemano

Romina L. Castrogiovani

unread,
Mar 8, 2017, 3:16:12 PM3/8/17
to pyaf...@googlegroups.com
Hola Luis,

Tenemos una herramienta para la consulta de padrón que podes integrar a tu sistema, te dejo documentación:


Saludos

Castrogiovani L. Romina
Sistemas Ágiles
011 4450-0716 / 153048-9211
L a V de 10 a 17hs
Skype: romina.castrogiovani

--
Proyecto PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT:
http://www.pyafipws.com.ar/ - http://www.github.com/reingart/pyafipws - http://www.sistemasagiles.com.ar/
---
Has recibido este mensaje porque estás suscrito al grupo "PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pyafipws+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a pyaf...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/pyafipws.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Luis Javier Carbone

unread,
Mar 8, 2017, 4:05:31 PM3/8/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Gracias Romina por tu respuesta, estuve viendo el padrón, pero requiere acceder por cuit, que es lo que no dispongo en la base, necesitaria validar por tipo y numero de documento.

Flavio V.

unread,
Mar 8, 2017, 9:10:35 PM3/8/17
to pyaf...@googlegroups.com
Luis, tal vez pueda serte util el codigo que mas adelante pego, lo que hace es dado un numero de DNI buscar los posibles CUIT's, digo posibles porque puede darse el caso que con numeros viejos exista mas de uno ya que se asignaba el mismo numero para femenino y masculino.

Una vez que tenes el nro de cuit ya podes obtener toda la informacion que necesitas, al menos asi me manejo en mi sistema ya que permito ingresar un CUIT o DNI de la persona.

A continuacion el codigo, por supuesto, es codigo "autocomentado", lo dejo ya que tal vez pueda serle util a alguien mas:

----- COMIENZO ----

#!/usr/bin/python
# -*- coding: utf8 -*-



import urllib2, json, sys
sys.path.insert(0, 'c:/pyafipws-master/')
from padron import *

class ErrorGenerico(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)

class ErrorNegocio(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
 
class BuscarCuit():

_public_methods_ = ['realizarConsulta']

_public_attrs_ = ['nroDni','error', 'consultaExitosa', 'coleccionCuit']

def __init__(self):
self.inicializar()

def inicializar(self):
self.nroDni=0
self.consultaExitosa=False
self.error=""

def buscarCuit(self):
self.validarDocumento()
if len(self.nroDni)==11:
self.consultaExitosa=True
self.coleccionCuit=[self.nroDni]
else:
self.realizarConsulta()

def realizarConsulta(self):
try:
response = urllib2.urlopen(URL_CONSULTA+self.nroDni)
respuesta = json.load(response)
self.procesarRespuesta(respuesta)
except urllib2.URLError, e:
self.error=str(e.reason)
except ErrorNegocio, e:
self.error=e.value
except Exception:
self.error="Error generico sin especificar"

def validarDocumento(self):
try:
val = int(self.nroDni)
if val == 0:
raise ErrorNegocio("El documento ingresado es 0, no se hace busqueda")
except ValueError:
raise ErrorNegocio("El documento ingresado no es un valor numerico valido")
def procesarRespuesta(self,jsonRespuesta):
try:
self.consultaExitosa=jsonRespuesta['success']
if not self.consultaExitosa: 
raise ErrorNegocio(str(jsonRespuesta['error']['mensaje']))
else:
self.coleccionCuit=jsonRespuesta['data']
except ErrorNegocio, e:
self.error=e.value
def getConsultaExitosa(self):
return self.consultaExitosa
def getColeccionCuit(self):
return self.coleccionCuit

def main(dni):
buscarCuit=BuscarCuit()
buscarCuit.nroDni=dni
buscarCuit.buscarCuit()
if buscarCuit.getConsultaExitosa():
resultado=buscarCuit.getColeccionCuit()
padron = PadronAFIP()
padron.Conectar()
for cuit in resultado:
ok = padron.Consultar(cuit)
if ok:
print "Nro de cuit encontrado: "+str(cuit)+" "+padron.denominacion
else:
print "Nro de cuit encontrado: "+str(cuit)+" "+"No se pudo hacer la consulta contra AFIP"
else:
print "Error en la consulta: "+buscarCuit.error
if __name__ == "__main__":
if len(sys.argv)<>2:
print "Debe ingresar como unico parametro un numero de DNI"
else:
dni=sys.argv[1]
main(dni)

--- FIN ----

Un ejemplo de invocacion:

py buscarCuit.py 5412803

Eso devuelve:

Nro de cuit encontrado: 20054128038 BARRIENTOS OSCAR
Nro de cuit encontrado: 27054128032 LLADO JUANA ISABEL

Saludos
Flavio


2017-03-08 17:48 GMT-03:00 'Luis Javier Carbone' via PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT <pyaf...@googlegroups.com>:
Gracias Romina por tu respuesta, estuve viendo el padrón, pero requiere acceder por cuit, que es lo que no dispongo en la base, necesitaria validar por tipo y numero de documento.

Luis Javier Carbone

unread,
Mar 10, 2017, 11:47:58 AM3/10/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Gracias Flavio por tu respuesta, lo voy a probar de esa manera.

Reply all
Reply to author
Forward
0 new messages