Page 1 of 1
Factura Electronica Argentina - XML de la AFIP
Posted:
Thu Jul 16, 2015 9:50 pm
by Marcelo Roggeri
Hola buenas tardes, el contenido de un archivo XML que me devuelve la AFIP, al consultar un rango de facturas aprobadas, lo que necesito es parsear el mismo para extraer los datos de los comprobantes.
He estado viendo en el foro y se me ocurrio primero grabar el contenido en un archivo XML pero no lo pude hacer, de esta manera:
MemoWrit( "comprobantesAfip.xml",wsfev1:XmlResponse)
y luego intentar parsear el archivo de la forma que dicen algunos colegas en este foro.
Cualquier ayuda es bienvenida.
Gracias
Marcelo
Re: Factura Electronica Argentina - XML de la AFIP
Posted:
Thu Jul 16, 2015 11:19 pm
by Marcelo Roggeri
Bueno ya logre guardar el archivo XML había que indicarle la ruta
MemoWrit( "c:\ruta\comprobantesAfip.xml",wsfev1:XmlResponse)
Ahora la idea es parsear este archivo para cual pido ayuda.
- Code: Select all Expand view
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<FECompConsultarResponse xmlns="http://ar.gov.afip.dif.FEV1/">
<FECompConsultarResult>
<ResultGet>
<Concepto>1</Concepto>
<DocTipo>80</DocTipo>
<DocNro>123456667449</DocNro>
<CbteDesde>1</CbteDesde>
<CbteHasta>1</CbteHasta>
<CbteFch>20150709</CbteFch>
<ImpTotal>2144.1</ImpTotal>
<ImpTotConc>0</ImpTotConc>
<ImpNeto>1821.25</ImpNeto>
<ImpOpEx>0</ImpOpEx>
<ImpTrib>0</ImpTrib>
<ImpIVA>322.85</ImpIVA>
<FchServDesde /><FchServHasta />
<FchVtoPago />
<MonId>PES</MonId>
<MonCotiz>1</MonCotiz>
<Iva><AlicIva>
<Id>5</Id>
<BaseImp>1253.46</BaseImp>
<Importe>263.23</Importe>
</AlicIva><AlicIva>
<Id>4</Id>
<BaseImp>567.79</BaseImp>
<Importe>59.62</Importe>
</AlicIva></Iva>
<Resultado>A</Resultado>
<CodAutorizacion>12345673167388</CodAutorizacion>
<EmisionTipo>CAE</EmisionTipo>
<FchVto>20150719</FchVto>
<FchProceso>20150709182717</FchProceso>
<PtoVta>4</PtoVta>
<CbteTipo>1</CbteTipo>
</ResultGet>
</FECompConsultarResult>
</FECompConsultarResponse>
</soap:Body>
</soap:Envelope>
Re: Factura Electronica Argentina - XML de la AFIP
Posted:
Fri Jul 17, 2015 12:34 am
by horacio
Te mando toda la rutina que yo utilizo para emitir facturas electrónicas. Hay una rutina para leer archivos xml. Fijate si te sirve
- Code: Select all Expand view
Aadd( aRespuesta, aText[ nIdx ] )
End
ElseIf( c_ServicioLlamado = 'TA' )
If( aText[ nIdx, 1 ] == 'generationTime' .or. ;
aText[ nIdx, 1 ] == 'expirationTime' .or. ;
aText[ nIdx, 1 ] == 'token' .or. ;
aText[ nIdx, 1 ] == 'sign' )
Aadd( aRespuesta, aText[ nIdx ] )
End
ElseIf( c_ServicioLlamado = 'FECAESolicitar' )
If( aText[ nIdx, 1 ] == 'Resultado' .or. ;
aText[ nIdx, 1 ] == 'Reproceso' .or. ;
aText[ nIdx, 1 ] == 'CAE' .or. ;
aText[ nIdx, 1 ] == 'CAEFchVto' .or. ;
aText[ nIdx, 1 ] == 'Code' .or. ;
aText[ nIdx, 1 ] == 'Msg' )
Aadd( aRespuesta, aText[ nIdx ] )
End
End
Next
Return( aRespuesta )
//----------------------------------------------------------------------------//
*: TimeFMT Devuelve la fecha y hora recibida en forma de texto
//----------------------------------------------------------------------------//
Static Function TimeFMT( dt, n_Horas )
Local c := ''
Local cFechaHora := ''
dt := dt + ( n_Horas / 24 )
c := hb_TToS( dt )
cFechaHora := SubStr( c, 01, 4 ) + '-' + SubStr( c, 05, 2 ) + '-' + SubStr( c, 07, 2 ) + ;
'T' + ;
SubStr( c, 09, 2 ) + ':' + SubStr( c, 11, 2 ) + ':' + SubStr( c, 13, 2 ) // + '-' + '03:00'
Return( cFechaHora )
//----------------------------------------------------------------------------//
*: MuestroRespuesta :
*: Muestra informaci¢n recibida del WS correspondiente :
*: Estado: OK (funcionando) :
//----------------------------------------------------------------------------//
Function MuestroRespuesta( a_Respuesta )
Local nIdx := 0
Cls
If( !Empty( a_Respuesta ) )
? 'COMIENZA LA VISUALIZACION DE LA RESPUESTA'
?
For nIdx := 1 to Len( a_Respuesta )
? a_Respuesta[ nIdx, 01 ], a_Respuesta[ nIdx, 02 ]
Next
?
? 'FINALIZO LA VISUALIZACION DE LA RESPUESTA'
? 'PRESIONE CUALQUIER TECLA PARA CONTINUAR'
Else
? '****************************************************'
? ' HUBO ALGUN TIPO DE ERROR, NO HAY NADA PARA MOSTRAR '
? '****************************************************'
End
//Inkey( 0, 128 ) // 128 para que si muevo el mouse no me saque del inkey
Return( .t. )
Re: Factura Electronica Argentina - XML de la AFIP
Posted:
Fri Jul 17, 2015 12:39 am
by Marcelo Roggeri
Hola Horacio, muchas gracias ahí lo miro y veo que puedo hacer.
Saludos
Marcelo
Re: Factura Electronica Argentina - XML de la AFIP
Posted:
Fri Jul 17, 2015 12:56 am
by Enrrique Vertiz
Saludos Marcelo
En los ejemplos de FWH esta el XmlReader.prg, ahi esta un ejemplo practico de como recorrer el XML e ir tomando los valores segun cada TAG, aqui lo adjunto, espero te sirva
#include "FiveWin.ch"
function Main()
local hFile := FOpen( "test.xml" )
Local oXmlDoc := TXmlDocument():New( hFile )
Local oXmlIter := TXmlIterator():New( oXmlDoc:oRoot ), oTagActual
while .T.
oTagActual = oXmlIter:Next()
If oTagActual != nil
MsgInfo( oTagActual:cName, oTagActual:cData )
HEval( oTagActual:aAttributes, { | cKey, cValue | MsgInfo( cKey, cValue ) } )
Else
Exit
Endif
End
FClose( hFile )
return nil
Re: Factura Electronica Argentina - XML de la AFIP
Posted:
Sat Jul 18, 2015 12:49 pm
by MarioG
Re: Factura Electronica Argentina - XML de la AFIP
Posted:
Tue Jul 21, 2015 2:59 pm
by Marcelo Roggeri
Gracias por la ayuda Horacio, Enrique y Mario.
Para recorrer los nodos se utiliza el método next() por lo que vi y para volver al primer nodo hay algún método?
Saludos