Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-02-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cómo extraer datos de la respuesta

Creo que hasta ahora nadie ha tratado este tema.

Ya he conseguido enviar facturas emitidas y recibidas sin problema, y también capturo la respuesta del WS. Pero cuando ésta se recibe, en formato XML, cómo debe de hacerse el parsing para extraer el resultado de cada factura, para saber si ha sido aceptada o rechazada, y en este último caso, cuál es la causa de la no admisión, con el fin de comunicarlo al usuario y tomar las medidas que haga falta. Visualmente es muy fácil de determinar leyendo la respuesta, pero ¿cómo automatizar ese proceso?

Alguien que tenga la amabilidad de publicar un poco de código, supongo que con las clases TXMLDocument y/o IXMLDocument, pues el uso de Node y ChildNodes, es bastante liado.

Muchas gracias.

Saludos,
Responder Con Cita
  #2  
Antiguo 23-02-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.030
Poder: 22
keys Va por buen camino
Hola. Al llamar a la funcion GetssiSoap este devuelve una respuesta según el tipo de envío que se este realizando. Por ejemplo lo siguiente es un envio de facturas Emitidas. El orden de las respuestas es la misma que las que se envían.

Código Delphi [-]
      var 
      resultado : RespuestaLRFacturasEmitidas;

      resultado := GetsiiSOAP(true, '', nil).SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);

       //mostrar los resultados devueltos por la llamada
       for i := low(resultado.RespuestaLinea) to High(resultado.RespuestaLinea) do
        begin

          with resultado.RespuestaLinea[i] do
            begin                           
                    case EstadoRegistro of
                      EstadoRegistroType.Correcto : begin //LA FACTURA ES CORRECTA                                                                  
                                                                     REsultado.CSV;
                                                                    
                                                              end;
                      EstadoRegistroType.AceptadoConErrores : begin                                                                
                                                                                   REsultado.CSV;
                                                                                   DescripcionErrorRegistro; //Descripcion del resultado devuelto
                                                              end;
                      EstadoRegistroType.Incorrecto : begin
                                                       
                                                       CodigoErrorRegistro;
                                                        DescripcionErrorRegistro; //Descripcion del resultado devuelto
                                                      end;
                    end; //cASE
                    
                
         end; //fOR

Busca en los mensajes anteriores que hay un ejemplo entero de envío y se trata esto.

Un Saludo.
Responder Con Cita
  #3  
Antiguo 23-02-2017
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Poder: 18
Nasca Va por buen camino
Nuevo documento publicado:

http://www.agenciatributaria.es/stat...ondiciones.pdf

Es interesante a efectos técnicos.

Aunque tampoco dice mucho más de lo que ya se sabía a través de los WSDL.

Última edición por Nasca fecha: 23-02-2017 a las 17:43:41.
Responder Con Cita
  #4  
Antiguo 24-02-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por keys Ver Mensaje
Hola. Al llamar a la funcion GetssiSoap este devuelve una respuesta según el tipo de envío que se este realizando. Por ejemplo lo siguiente es un envio de facturas Emitidas. El orden de las respuestas es la misma que las que se envían. Busca en los mensajes anteriores que hay un ejemplo entero de envío y se trata esto.
Hola keys:

Muchas gracias por tu respuesta.

Con toda seguridad será de gran utilidad para la mayoría, aunque en mi caso, dado que envío un XML ya creado y cerrado, y recibo una respuesta también en formato XML, tendré que trabajarme un parsing manual para extraer el estado de cada factura y guardarlo en disco para conocimiento del usuario. Ya sé que Delphi tiene el TXMLDocument y los ChildNodes y demás, pero me inclino por meter la respuesta en un TStringList y analizarla línea a línea. Nada del otro mundo.

Gracias de nuevo, y saludos cordiales,
Responder Con Cita
  #5  
Antiguo 24-02-2017
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Poder: 18
Nasca Va por buen camino
Cita:
Empezado por CMB Ver Mensaje
Ya sé que Delphi tiene el TXMLDocument y los ChildNodes y demás, pero me inclino por meter la respuesta en un TStringList y analizarla línea a línea. Nada del otro mundo.
Yo también me inclino por esa opción. Es mas manual pero se mantiene un mejor control y se reducen las dependencias.
De todas formas miraré si hay algún parser que lo simplifique sin dependencias, que se compile en la propia aplicación. Si alguno conoce alguno le agradecería referencias.

Miraré:
https://github.com/Fr0sT-Brutal/awes...hi#xmljsonyaml
Responder Con Cita
  #6  
Antiguo 24-02-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por Nasca Ver Mensaje
Yo también me inclino por esa opción. Es mas manual pero se mantiene un mejor control y se reducen las dependencias. De todas formas miraré si hay algún parser que lo simplifique sin dependencias, que se compile en la propia aplicación. Si alguno conoce alguno le agradecería referencias.
A falta de parser, yo estoy pensando en meter las líneas del XML de respuesta en un TStringList. A partir de ahí, ir buscando los tags que son clave (<siiR:EstadoEnvio>, <siiR:EstadoRegistro>, <siiR:CSV>, <siiR:CodigoErrorRegistro>, <siiR: DescripcionErrorRegistro>) y asociar los valores que contengan con el número de factura que se encuentra en <sii:NumSerieFacturaEmisor>. Luego meter los valores hallados en el registro correspondiente del fichero de facturas, con el fin de que el usuario disponga de esa información. Si la factura ha sido aceptada, o lo ha sido con errores, o rechazada explicando por qué...

Si alguien tuviese una idea mejor se le agradecería.

Saludos,

Última edición por CMB fecha: 24-02-2017 a las 16:29:20. Razón: Error en TStringList
Responder Con Cita
  #7  
Antiguo 24-02-2017
paquimd paquimd is offline
Miembro
 
Registrado: feb 2017
Posts: 15
Poder: 0
paquimd Va por buen camino
Yo estoy haciendolo en c#. Ya me conecto pero no soy capaz de enviar el xml. ¿podríais pasarme un xml válido? O incluso orientarme en c#.

Gracias
Responder Con Cita
  #8  
Antiguo 24-02-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por paquimd Ver Mensaje
Yo estoy haciendolo en c#. Ya me conecto pero no soy capaz de enviar el xml. ¿podríais pasarme un xml válido? O incluso orientarme en c#.
Aquí tienes un ejemplo de XML para facturas emitidas. Es válido, pero tendrás que poner nombres y NIF reconocidos por la AEAT donde hay letras repetidas.

Y en este documento, distribuido por la AEAT, tienes varios ejemplos más: SII_Descripcion_ServicioWeb_v0.5_es_es.pdf

Código:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
    <soapenv:Header/>
    <soapenv:Body>
        <siiLR:SuministroLRFacturasEmitidas>
            <sii:Cabecera>
                <sii:IDVersionSii>0.5</sii:IDVersionSii>
                <sii:Titular>
                    <sii:NombreRazon>AAAAAAAAAAAAAAAAAAAA</sii:NombreRazon>
                    <sii:NIF>XXXXXXXXX</sii:NIF>
                </sii:Titular>
                <sii:TipoComunicacion>A0</sii:TipoComunicacion>
            </sii:Cabecera>
            <siiLR:RegistroLRFacturasEmitidas>
                <sii:PeriodoImpositivo>
                    <sii:Ejercicio>2017</sii:Ejercicio>
                    <sii:Periodo>02</sii:Periodo>
                </sii:PeriodoImpositivo>
                <siiLR:IDFactura>
                    <sii:IDEmisorFactura>
                        <sii:NIF>XXXXXXXXX</sii:NIF>
                    </sii:IDEmisorFactura>
                    <sii:NumSerieFacturaEmisor>99103</sii:NumSerieFacturaEmisor>
                    <sii:FechaExpedicionFacturaEmisor>15-02-2017</sii:FechaExpedicionFacturaEmisor>
                </siiLR:IDFactura>
                <siiLR:FacturaExpedida>
                    <sii:TipoFactura>F1</sii:TipoFactura>
                    <sii:ClaveRegimenEspecialOTrascendencia>01</sii:ClaveRegimenEspecialOTrascendencia>
                    <sii:ImporteTotal>5.69</sii:ImporteTotal>
                    <sii:DescripcionOperacion>COMPRA-XXXXXX</sii:DescripcionOperacion>
                    <sii:Contraparte>
                        <sii:NombreRazon>BBBBBBBBBBBBBBBBBBBB</sii:NombreRazon>
                        <sii:NIF>YYYYYYYYY</sii:NIF>
                    </sii:Contraparte>
                    <sii:TipoDesglose>
                        <sii:DesgloseFactura>
                            <sii:Sujeta>
                                <sii:NoExenta>
                                    <sii:TipoNoExenta>S1</sii:TipoNoExenta>
                                    <sii:DesgloseIVA>
                                        <sii:DetalleIVA>
                                            <sii:TipoImpositivo>21.00</sii:TipoImpositivo>
                                            <sii:BaseImponible>4.70</sii:BaseImponible>
                                            <sii:CuotaRepercutida>0.99</sii:CuotaRepercutida>
                                        </sii:DetalleIVA>
                                    </sii:DesgloseIVA>
                                </sii:NoExenta>
                            </sii:Sujeta>
                        </sii:DesgloseFactura>
                    </sii:TipoDesglose>
                </siiLR:FacturaExpedida>
            </siiLR:RegistroLRFacturasEmitidas>
            <siiLR:RegistroLRFacturasEmitidas>
                <sii:PeriodoImpositivo>
                    <sii:Ejercicio>2017</sii:Ejercicio>
                    <sii:Periodo>02</sii:Periodo>
                </sii:PeriodoImpositivo>
                <siiLR:IDFactura>
                    <sii:IDEmisorFactura>
                        <sii:NIF>XXXXXXXXX</sii:NIF>
                    </sii:IDEmisorFactura>
                    <sii:NumSerieFacturaEmisor>99101</sii:NumSerieFacturaEmisor>
                    <sii:FechaExpedicionFacturaEmisor>14-02-2017</sii:FechaExpedicionFacturaEmisor>
                </siiLR:IDFactura>
                <siiLR:FacturaExpedida>
                    <sii:TipoFactura>F1</sii:TipoFactura>
                    <sii:ClaveRegimenEspecialOTrascendencia>01</sii:ClaveRegimenEspecialOTrascendencia>
                    <sii:ImporteTotal>275.00</sii:ImporteTotal>
                    <sii:DescripcionOperacion>COMPRA-XXXXXX</sii:DescripcionOperacion>
                    <sii:Contraparte>
                        <sii:NombreRazon>CCCCCCCCCCCCCCCCCCCC</sii:NombreRazon>
                        <sii:NIF>ZZZZZZZZZ</sii:NIF>
                    </sii:Contraparte>
                    <sii:TipoDesglose>
                        <sii:DesgloseFactura>
                            <sii:Sujeta>
                                <sii:NoExenta>
                                    <sii:TipoNoExenta>S1</sii:TipoNoExenta>
                                    <sii:DesgloseIVA>
                                        <sii:DetalleIVA>
                                            <sii:TipoImpositivo>10.00</sii:TipoImpositivo>
                                            <sii:BaseImponible>250.00</sii:BaseImponible>
                                            <sii:CuotaRepercutida>25.00</sii:CuotaRepercutida>
                                        </sii:DetalleIVA>
                                    </sii:DesgloseIVA>
                                </sii:NoExenta>
                            </sii:Sujeta>
                        </sii:DesgloseFactura>
                    </sii:TipoDesglose>
                </siiLR:FacturaExpedida>
            </siiLR:RegistroLRFacturasEmitidas>
        </siiLR:SuministroLRFacturasEmitidas>
    </soapenv:Body>
</soapenv:Envelope>
Responder Con Cita
  #9  
Antiguo 25-02-2017
bartag bartag is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 11
Poder: 0
bartag Va por buen camino
Cita:
Empezado por paquimd Ver Mensaje
Yo estoy haciendolo en c#. Ya me conecto pero no soy capaz de enviar el xml. ¿podríais pasarme un xml válido? O incluso orientarme en c#.

Gracias
Yo estoy haciendo también pruebas en VB/C# y me estoy encontrando con campos que no aparecen (por ejemplo 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.Contraparte.NIF' lo he tenido que crear y también todos los relacionados con 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.TipoDesglose.desgloseFactura...').

Alguien ha tenido el mismo problema? Veo que a los que utilizan Delphi les funciona perfectamente en ese aspecto. Ya no sé si es un problema del lenguaje utilizado o de los cambios que está realizando la Administración...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco keys Internet 4170 Hace 1 Semana 17:29:05
AEAT envio de datos vía Webservice problemas con WSDL CelsoO Internet 11 09-10-2019 20:03:41
webService Soap de la Administración Digital Española notific@ apicito Internet 3 31-01-2017 11:25:28
Error en Webservice funcion envio de sms webmasterplc Delphi para la web 5 25-07-2013 20:10:29
Problemas con envío de XML a un WebService davidvamo Internet 1 13-02-2007 15:49:20


La franja horaria es GMT +2. Ahora son las 20:02:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi