Factura Electronica Argentina - XML de la AFIP

Factura Electronica Argentina - XML de la AFIP

Postby Marcelo Roggeri » Thu Jul 16, 2015 9:50 pm

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
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 325
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: Factura Electronica Argentina - XML de la AFIP

Postby Marcelo Roggeri » Thu Jul 16, 2015 11:19 pm

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>

 
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 325
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: Factura Electronica Argentina - XML de la AFIP

Postby horacio » Fri Jul 17, 2015 12:34 am

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. )
 
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Factura Electronica Argentina - XML de la AFIP

Postby Marcelo Roggeri » Fri Jul 17, 2015 12:39 am

Hola Horacio, muchas gracias ahí lo miro y veo que puedo hacer.
Saludos
Marcelo
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 325
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: Factura Electronica Argentina - XML de la AFIP

Postby Enrrique Vertiz » Fri Jul 17, 2015 12:56 am

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
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 24.02, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 519
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: Factura Electronica Argentina - XML de la AFIP

Postby MarioG » Sat Jul 18, 2015 12:49 pm

Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: Factura Electronica Argentina - XML de la AFIP

Postby Marcelo Roggeri » Tue Jul 21, 2015 2:59 pm

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
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 325
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 50 guests