Hola gente!,

Primero y antes que nada...DISCULPAS!! (estoy en varias listas de programación)

En la intención de ayudar al colega, ofrecí mi colaboración sin darme cuenta 
que mi ayuda fue en un lenguaje similar a Fox pero no igual. Me di cuenta al 
leer éste correo...

Soy programador independiente y si bien utilicé FOX (Gracias y saludos Rafael 
Copquin), termine eligiendo otro lenguaje xBase visual open free compatible con 
Clipper y muy parecido a Fox. 
Obviamente que si lo quieren copiar y pegar directamente en Fox, no va a 
funcionar.
Lo importante son las direcciones URLs de la AFIP y saber que devuelve un Hash 
en formato json con el formato descripto en el PRG. Deberán saber cuales son 
las instrucciones que tiene Fox, para ‘levantar’ el Hash.

Nuevamente disculpas, solo quería colaborar!!! De todas formas quedo a 
disposición de quien lo necesite.

Sergio Castellari
www.sdcinformatica.com.ar
www.facebook.com/sdcsolucionesinformaticas



From: Sergio . 
Sent: Thursday, April 28, 2016 5:27 PM
To: GUFA List Member 
Subject: [GUFA] Responder: Consultar CUIT

Idem.... no logro arrancar


El 28 de abril de 2016, 17:08, PabloC <pablo.canon...@mug.org.ar> escribió:

  Y también faltan los include



  #include "HBCompat.ch"

  #INCLUDE 'hbxml.ch'                                                           
                                                                                
                                                                                
                                    

  #include "Fileio.ch"





  From: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] On Behalf Of Walter Comito
  Sent: jueves, 28 de abril de 2016 16:48
  To: GUFA List Member <GUFA@mug.org.ar>


  Subject: [GUFA] Responder: Consultar CUIT


  NO SE QUE ESTOY HACIENDO MAL

  ME DA ERROR EN TODAS ESTAS LINEAS



  cCuit         = "20160134322"

  lVer          = .T.

  cConstancia = .T.



  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:=''











  Gracias.



  Walter Cómito

  Analista de Sistemas

   MP 0397 C.P.C.I.P.C.



  ›  walter.com...@gmail.com

           wcom...@hotmail.com



  '   +54 9 351 494.4667

           +54 9 3513.292.707



  þ www.softram.com.ar



  Q  Si no es necesario, no imprima este correo.

  Todos somos responsables por el cuidado del medio ambiente.





  NOTA DE CONFIDENCIALIDAD 
  Este mensaje (y sus anexos) es confidencial y puede contener información de 
propiedad 
  exclusiva de Walter Cómito (SRS Sistemas). Si usted ha recibido este mensaje 
por error, 
  por favor comuníquelo inmediatamente a walter.com...@gmail.com y tenga la 
amabilidad 
  de eliminarlo; no deberá copiar el mensaje ni divulgar su contenido a ninguna 
persona.

  Muchas Gracias. 



  De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de Ramon Giubi
  Enviado el: jueves, 28 de abril de 2016 12:41
  Para: GUFA List Member
  Asunto: [GUFA] Responder: Consultar CUIT



  Buenisimo…esa info no la tenia y es mejor que la otra opción que estaba 
usando.



  Gracias.



  Saludos.



  Ramon Giubi



  De: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] En nombre de Sergio D.Castellari
  Enviado el: miércoles, 27 de abril de 2016 12:53
  Para: GUFA List Member
  Asunto: [GUFA] Responder: Consultar CUIT



  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




       Libre de virus. www.avast.com 
       



Responder a