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
