Hola Gente,

Aqui va como lo hago:

*------------------------------------------------------------------------------*
* ConsultaPadronAFIP()                                                         *
*     Recibe: cCuit --------> String con el CUIT/DNI a consultar               *
*             lVer == .t. --> Visulualiza datos en pantalla                    *
*                     .f. --> Solo obtener la data (por Default)               *
*      cConstancia == .t. --> Solicita Constancia (PDF) del CUIT indicado      *
*                     .f. --> NO solicita Constancia (por Default)             *
* Nota: Si cCUIT es un CUIT y lVer == .f. , la función carga un array privado  *
*       llamado: aPadronAFIP[]                                                 
* 
*---------------------------------------------------------------- 23-09-2015 
--*                                                                            
Function ConsultaPadronAFIP(cCuit,lVer,cConstancia)
Local    cCUIT_URL       :='https://soa.afip.gob.ar/sr-padron/v2/persona/'
Local cDNI_URL        :='https://soa.afip.gob.ar/sr-padron/v2/personas/'
Local cConstancia_URL :='https://soa.afip.gob.ar/sr-padron/v1/constancia/'
Local oPadron, cTip:='', cResp:='', nLen:=0, hRes, cMsg:='', hData, hDir, 
aDNIs:={}
Local nCuit:='99999999999', cDoc:='Sin identificar', cEstado:='', cNombre:='', 
cTipDoc:='', nDoc:=''
Local cDirec:='', cLocal:='', cCP:='', nProv:='00', cTipo:=''

Default lVer        to .f.
Default cConstancia to .f.

#include "HBCompat.ch"
#INCLUDE 'hbxml.ch'                                                             
                                                                                
                                                                                
                                  
#include "Fileio.ch"

*** Filtro el String de CUIT/DNI ***
cCuit:=AllTrim(StrTran(cCuit,'-',''))
If Len(cCuit)<6 .or. Len(cCuit)>11
  MsgStop('CUIT/CUIL/DNI: '+cCuit+chr(13)+'erroneo !!!','Verifique...') ; 
Return .f.
EndIf
If Len(cCuit)<11
  cTip:='D'
Else
  cTip:='C'
EndIf

*** Si solicita Constancia de Inscripción ***
If cTip == 'C' .and. cConstancia == .t.
  URLInternet(cConstancia_URL + cCuit) ; Return .t.
EndIf

*** Creo y Válido el objeto de conexión ***
oPadron:=Win_OleCreateObject('MSXML2.XMLHTTP')
If Empty(oPadron)
  oPadron:=Nil ; MsgExclamation('NO se pudo acceder al Servidor de la 
AFIP','Verificaciones de conexión...') ; Return .f.
EndIf

*** Consulto al Servidor de la AFIP ***
TRY                                                                             
                                                                                
                                                                                
                                      
  If cTip == 'C'   //CUIT...
    If cConstancia == .f.
          oPadron:Open('GET', cCUIT_URL + cCuit, .F.)       ; oPadron:Send()
        Else
      *MsgStop(cConstancia_URL + cCuit)
          *oPadron:Open('GET', cConstancia_URL + cCuit, .F.)
      *oPadron:setRequestHeader( 'Accept', 
'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' )
      *oPadron:setRequestHeader( 'Accept-Language', 
'es-AR,es;q=0.8,en-US;q=0.5,en;q=0.3' )
      *oPadron:setRequestHeader( 'Accept-Encoding', 'gzip, deflate' )
      *oPadron:setRequestHeader( 'Content-Type', 'application/octet-stream' )
      *oPadron:setRequestHeader( 'Connection', 'Keep-Alive' )
      *oPadron:Send()
        EndIf
    ElseIf cTip == 'D'   //DNI...
      oPadron:Open('GET', cDNI_URL + cCuit, .F. ) ; oPadron:Send()
    Else
      oPadron:=Nil ; MsgStop('¡¡ CUIT/DNI no válido !! ','Verifique...') ; Break
    EndIf
CATCH
  oPadron:=Nil ; MsgStop('¡¡ ERROR !! '+Chr(13)+'Controle conexión a Internet y 
Reintente...','Verifique conexión...') ; Return .f.
END
cResp:=oPadron:ResponseText

*** Si el status es diferente a 200, ocurrió algún error de conectividad con el 
WS ***
If oPadron:Status <> 200
  MsgStop('¡¡ ERROR !! '+Chr(13)+'Status:'+AllTrim(Str(oPadron:Status))+' 
'+oPadron:StatusText,'Error Enlace AFIP...')
  oPadron:=Nil ; Return .f.
EndIf
*** Solicito una Constancia de AFIP ***
*If cTip == 'C' .and. cConstancia == .t.
*  fh:=fcreate('ok-constancia-20227327406-2015-09-23.pdf')
*  if fh<0
*    Ferase(GetCurrentFolder()+'\ok-constancia-20227327406-2015-09-23.pdf')
*    msgexclamation("Handle create?",'1')
*    return .f.
*  endif
*  fwrite(fh, cResp)
*  fclose(fh)
*  MsgStop('ok-constancia-20227327406-2015-09-23.pdf fue creado')
*  oPadron:=Nil ; Return .t.
*EndIf

*** Grabo la Respuesta ***
MemoWrit('ConsultaPadron.txt',cResp)

*** Visualizo en pantalla la Respuesta ***
*MsgStop(cResp,'Respuesta AFIP...')   //ACTIVAR para hacer DEBUGGER!!!!

*** Decodifico jSon (java) ***
nLen:=HB_JsonDecode(cResp , @hRes)                          //AFIP devuelve un 
archivo en formato Java jSON
If !HB_HGET(hRes,'success')
  oPadron:=Nil ; MsgStop('¡¡ ERROR !!. NO existe persona Fisica/Juridica con 
ese N°...','Verifique CUIT/CUIL/DNI...') ; Return .f.
EndIf  

If cTip == 'C'  //Ingreso CUIT...
  *** Leo el Hash DATA ***
  hData:=HB_HGETDEF(hRes,'data',.f.)
  If Valtype(hData) == 'H'
    nCuit  :=AllTrim(Str(HB_HGETDEF(hData,'idPersona',99999999999)))            
//N° de CUIT
    cDoc   :=HB_HGETDEF(hData,'tipoClave','Sin identificar')                    
//CUIT/DNI/CUIL
    cTipo  :=HB_HGETDEF(hData,'tipoPersona','')                                 
//ACTIVO o INACTIVO
    cEstado:=HB_HGETDEF(hData,'estadoClave','')                                 
//FISICA o JURIDICA
    cNombre:=HB_HGETDEF(hData,'nombre','')                                      
//Apellido y Razon Social
    cTipDoc:=HB_HGETDEF(hData,'tipoDocumento','')                               
//DNI, LC, etc
    nDoc   :=HB_HGETDEF(hData,'numeroDocumento','')                             
//N° de documento
    *** Leo el Hash DOMICILIOFISCAL ***
    hDir:=HB_HGETDEF(hData,'domicilioFiscal',.f.)
    If Valtype(hDir) == 'H'
      cDirec:=HB_HGETDEF(hDir,'direccion','')                                   
//Calle, Nro. Piso, etc
      cLocal:=HB_HGETDEF(hDir,'localidad','')                                   
//Localidad (no se nombra cuando es Capital)
      cCP   :=HB_HGETDEF(hDir,'codPostal','')                                   
//Codigo postal (8 caracteres)
      nProv :=AllTRim(Strzero(HB_HGETDEF(hDir,'idProvincia',0),2))              
//N2 Obtener descripciones a través del recurso /parametros/v1/provincias
    Endif
  EndIf
  If lVer
    *** Elijo SOLO ver los datos de consulta ***
    cMsg:='Razon Social: '+cNombre+' ['+cEstado+']'+chr(13)
    cMsg+=cDoc+' '+nCuit+' ['+cTipo+']'+chr(13)
    cMsg+='Doc: '+cTipDoc+' '+nDoc+chr(13)
    cMsg+='Domicilio: '+cDirec+chr(13)
    cMsg+=cLocal+' CP:'+cCP
    MsgStop(cMsg,'Respuesta servidor AFIP...')
  Else
    *** Cargo array privado aPadronAFIP ***
    aPadronAFIP[1] :=nCuit 
    aPadronAFIP[2] :=cDoc
    aPadronAFIP[3] :=cTipo
    aPadronAFIP[4] :=cEstado
    aPadronAFIP[5] :=cNombre
    aPadronAFIP[6] :=cTipDoc
    aPadronAFIP[7] :=nDoc
    aPadronAFIP[8] :=cDirec
    aPadronAFIP[9] :=cLocal
    aPadronAFIP[10]:=cCP
    aPadronAFIP[11]:=nProv
  EndIf
Else   //Ingreso DNI
  *** Leo el Hash DATA ***
  hData:=HB_HGETDEF(hRes,'data',.f.)
  If Valtype(hData) == 'A'
    cMsg:='CUIT/CUIL:'+chr(13)
    For n=1 to Len(hData)
      cMsg+=AllTrim(Str(hData[n]))+chr(13)
    Next
    MsgStop('El DNI ingresado generó:'+chr(13)+chr(13)+cMsg+chr(13)+;
            'Puede utilizar este CUIT/CUIL para consultar datos 
fiscales','Respuesta servidor AFIP...')
  ELse
    MsgStop('El DNI ingresado generó un ERROR !!!','Respuesta servidor AFIP...')
  EndIf
EndIf
*HB_HGET( <hsTable>, <Key> ) -> <Value> 
*hb_hGetDef( aHash, Key, DefaultVal )
Return .t.

Saludos,
Sergio Castellari




From: Ing César Luque 
Sent: Tuesday, April 26, 2016 11:27 PM
To: GUFA List Member 
Subject: [GUFA] Responder: Consultar CUIT

Sergio

Aguardamos tu colaboraciòn.

Saludos.- 

Cèsar Luque 

From: Sergio Castellari -mvl- 
Sent: Tuesday, April 26, 2016 6:38 PM
To: GUFA List Member 
Subject: [GUFA] Responder: Consultar CUIT

Siiii se puede.  AFIP tiene un ws para consultar el estado. Incluso podes 
obtener el pdf de constancia de inscripción. 
Ahora no estoy con la compu,  pero si me acuerdo cuando llegue,  te paso como 
lo hago.
Además,  también podes enviar un dni y obtener el cuit desde la afip 

Saludos, Sergio Castellari 

Enviado desde mi teléfono inteligente Sony Xperia™



---- Sergio . escribió ----


Amigos, hay forma de consultar ONLINE si un CUIT de un cliente está en regla 
con AFIP ?



Saludos


Responder a