![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Buenos dias
Estoy actualizando el programa que envia facturas (simples) a verifactu, que deje posteado hace tiempo en este foro desde una hoja de calculo, ahora para realizar ya el envio de pruebas. Modificado, y probado me devuelve este error: Error al realizar el envío; (ERemotableException)-<env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>env:Server</faultcode><faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2003/05/soap-envelope}Envelope</faultstring></env:Fault> efectivamente, la cabecera del XML que envia es: http://www.w3.org/2003/05/soap-envelope pero no se como cambiarlo al que me esta pidiendo: http://schemas.xmlsoap.org/soap/envelope (he tratado de alterar el XML antes del envio httprio beofre...., pero creo que habra mejor forma y tampoco lo he conseguido). ¿puede alguien ayudarme? y asi dejamos un ejemplo funcional de envio de alta y baja de facturas al entorno de pruebas. Saludos ! |
|
#2
|
|||
|
|||
|
Hola
¿Cómo configuráis el componente HTTPRIO para hacer el envío? He intentado poner "https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP" en "WSDLLocation" pero me da error al elegir el Port y Service También lo he puesto en URL con el mismo resultado. Para TicketBAI utilizaba el componente NetHTTPClient, pero el httprio no lo he usado nunca. Viendo el proyecto de ejemplo que hay en el segundo post del hilo, hay que hacerlo de esta manera:
Pero no sé donde debo indicar la url, puerto, etc. Última edición por Neftali [Germán.Estévez] fecha: 30-09-2024 a las 12:38:05. Razón: Utilizar TAG's en el código |
|
#3
|
|||
|
|||
|
Dos cosillas, la primera sobre la huella, tenéis que generarla en mayúsculas, si la generáis en minúsculas el web service dirá que la huella no es correcta.
Y la otra es que me da el siguiente error al enviar el fichero, que me lo acepta pero con errores, El valor del campo FechaHoraHusoGenRegistro no está dentro del umbral establecido sobre la fecha del sistema de la AEAT, uso este valor 2024-09-30T09:48:46+01:00 y es justo la hora en la que se generó la huella según mi ordenador, pero no termino de entender porque me da ese error, le pasa a alguien más? |
|
#4
|
||||
|
||||
|
Cita:
Ahora lo estoy modificando como digo para que funcione en el entorno de pruebas. A ver: Puedes descargar el WSDL y guardarlo en fichero. Coges el fichero, lo colocal en WSDLLocation y voila puedes elegir el puerto y servicio. Modificar la linea en el codigo a true: res:= GetsfPortTypeVerifactu(true, '', HTTPRIO1 ).RegFac .... Pero cuando envio, me dice, ponga el puerto que ponga, o lo que ponga: Error al realizar el envío; (ESOAPHTTPException)-Unable to retrieve the URL endpoint for Service/Port 'sfVerifactu'/'SistemaVerifactuPruebas' from WSDL 'c:\proyectos\VeriFactu2\SistemaFacturacion.wsdl' Puedes colocar la URL: https://prewww1.aeat.es/wlpl/TIKE-CO.../VerifactuSOAP No elegir puerto y dejar la linea del codigo a false: res:= GetsfPortTypeVerifactu(false, '', HTTPRIO1 ).RegFac .... pero entonces me devuelve: Error al realizar el envío; (ERemotableException)-<env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>env:Server</faultcode><faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2003/05/soap-envelope}Envelope</faultstring></env:Fault> y Ahi estoy parado. Como he dicho, mi intencion es modificar ese ejemplo y dejarlo funcional, a ver si alguien me da una mano. Saludos ! |
|
#5
|
|||
|
|||
|
Hola, seccion_31...
Exactamente, esos son los errores que estoy obteniendo, por eso no entendía cómo hay gente que ya ha podido hacer envíos. Quizás estén usando otro método para el envío. Quizás con el componente TNetHTTPClient se pueda hacer también, pero para eso necesitaría guardar antes el XML en un archivo. En fin, a ver si alguien lo consigue con cualquiera de los dos componentes. Gracias! Cita:
|
|
#6
|
|||
|
|||
|
nosotros estamos usando lo mismo que utilizamos para el SII (que al final es muy parecido, SOAP, WSDL...etc)
Ya jugando con el beforeexecute y afterexecute del httprio te puedes guardar el xml que se envía y el xml que se recibe de respuesta. EL objecto ARegFactuSistemaFacturacion es donde se han metido todos los nodos etc Al componente HTTPRIO1 se le ha asignado previamente el certificado con el cual se envía |
|
#7
|
|||
|
|||
|
Buenas tardes grupo,
¿alguien puede compartir un XML que medio funcione para hacer pruebas?...Estoy super atrancado con la rutina de envío ![]() Gracias!!! |
|
#8
|
|||
|
|||
|
Cita:
Código:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
<soapenv:Header/>
<soapenv:Body>
<sum:RegFactuSistemaFacturacion>
<sum1:Cabecera>
<sum1:ObligadoEmision>
<sum1:NombreRazon><![CDATA[NOMBRE EMISOR]]></sum1:NombreRazon>
<sum1:NIF>CIF EMISOR</sum1:NIF>
</sum1:ObligadoEmision>
<sum1:RemisionVoluntaria>
<sum1:Incidencia>N</sum1:Incidencia>
</sum1:RemisionVoluntaria>
</sum1:Cabecera>
<sum:RegistroFactura>
<sum:RegistroAlta>
<sum1:IDVersion>1.0</sum1:IDVersion>
<sum1:IDFactura>
<sum1:IDEmisorFactura>CIF EMISOR</sum1:IDEmisorFactura>
<sum1:NumSerieFactura>SERIE-02</sum1:NumSerieFactura>
<sum1:FechaExpedicionFactura>01-10-2024</sum1:FechaExpedicionFactura>
</sum1:IDFactura>
<sum1:NombreRazonEmisor><![CDATA[NOMBRE EMISOR]]></sum1:NombreRazonEmisor>
<sum1:Subsanacion><![CDATA[N]]></sum1:Subsanacion>
<sum1:RechazoPrevio><![CDATA[N]]></sum1:RechazoPrevio>
<sum1:TipoFactura>F1</sum1:TipoFactura>
<sum1:FechaOperacion>02-02-2024</sum1:FechaOperacion>
<sum1:DescripcionOperacion><![CDATA[1]]></sum1:DescripcionOperacion>
<sum1:Destinatarios>
<sum1:IDDestinatario>
<sum1:NombreRazon>NOMBRE DESTINATARIO</sum1:NombreRazon>
<sum1:NIF>CIF DESTINATARIO</sum1:NIF>
</sum1:IDDestinatario>
</sum1:Destinatarios>
<sum1:Desglose>
<sum1:DetalleDesglose>
<sum1:Impuesto>01</sum1:Impuesto>
<sum1:ClaveRegimen>01</sum1:ClaveRegimen>
<sum1:CalificacionOperacion>N1</sum1:CalificacionOperacion>
<sum1:BaseImponibleOimporteNoSujeto>400.00</sum1:BaseImponibleOimporteNoSujeto>
</sum1:DetalleDesglose>
<sum1:DetalleDesglose>
<sum1:Impuesto>01</sum1:Impuesto>
<sum1:ClaveRegimen>01</sum1:ClaveRegimen>
<sum1:CalificacionOperacion>N2</sum1:CalificacionOperacion>
<sum1:BaseImponibleOimporteNoSujeto>300.00</sum1:BaseImponibleOimporteNoSujeto>
</sum1:DetalleDesglose>
<sum1:DetalleDesglose>
<sum1:Impuesto>01</sum1:Impuesto>
<sum1:ClaveRegimen>01</sum1:ClaveRegimen>
<sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
<sum1:TipoImpositivo>21.00</sum1:TipoImpositivo>
<sum1:BaseImponibleOimporteNoSujeto>100.00</sum1:BaseImponibleOimporteNoSujeto>
<sum1:CuotaRepercutida>21.00</sum1:CuotaRepercutida>
<sum1:TipoRecargoEquivalencia></sum1:TipoRecargoEquivalencia>
<sum1:CuotaRecargoEquivalencia>0.00</sum1:CuotaRecargoEquivalencia>
</sum1:DetalleDesglose>
<sum1:DetalleDesglose>
<sum1:Impuesto>01</sum1:Impuesto>
<sum1:ClaveRegimen>01</sum1:ClaveRegimen>
<sum1:CalificacionOperacion>S2</sum1:CalificacionOperacion>
<sum1:TipoImpositivo>0.00</sum1:TipoImpositivo>
<sum1:BaseImponibleOimporteNoSujeto>200.00</sum1:BaseImponibleOimporteNoSujeto>
<sum1:CuotaRepercutida>0.00</sum1:CuotaRepercutida>
<sum1:TipoRecargoEquivalencia>0.00</sum1:TipoRecargoEquivalencia>
<sum1:CuotaRecargoEquivalencia>0.00</sum1:CuotaRecargoEquivalencia>
</sum1:DetalleDesglose>
<sum1:DetalleDesglose>
<sum1:Impuesto>01</sum1:Impuesto>
<sum1:ClaveRegimen>01</sum1:ClaveRegimen>
<sum1:OperacionExenta>E1</sum1:OperacionExenta>
<sum1:BaseImponibleOimporteNoSujeto>500.00</sum1:BaseImponibleOimporteNoSujeto>
</sum1:DetalleDesglose>
</sum1:Desglose>
<sum1:CuotaTotal>21.00</sum1:CuotaTotal>
<sum1:ImporteTotal>1521.00</sum1:ImporteTotal>
<sum1:Encadenamiento>
<sum1:RegistroAnterior>
<sum1:IDEmisorFactura>CIF EMISOR</sum1:IDEmisorFactura>
<sum1:NumSerieFactura>60</sum1:NumSerieFactura>
<sum1:FechaExpedicionFactura>02-02-2024</sum1:FechaExpedicionFactura>
<sum1:Huella>glLvV5cDbpf6SMTdBwqZx7Gedp4UJWYJLh3it23nnN+tXYCaxE0DIe0ZLHfJ6GZ7</sum1:Huella>
</sum1:RegistroAnterior>
</sum1:Encadenamiento>
<sum1:SistemaInformatico>
<sum1:NombreRazon><![CDATA[XXXXXXXXXXXXXXXXXXXXX]]></sum1:NombreRazon>
<sum1:NIF>XXXXXXXXXXXX</sum1:NIF>
<sum1:NombreSistemaInformatico>XXXXXXXXXXXX</sum1:NombreSistemaInformatico>
<sum1:IdSistemaInformatico>XXXXXXXX</sum1:IdSistemaInformatico>
<sum1:Version>2024.15</sum1:Version>
<sum1:NumeroInstalacion><![CDATA[2024.15]]></sum1:NumeroInstalacion>
<sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu>
<sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT>
<sum1:IndicadorMultiplesOT>N</sum1:IndicadorMultiplesOT>
</sum1:SistemaInformatico>
<sum1:FechaHoraHusoGenRegistro>2024-10-01T18:20:04+01:00</sum1:FechaHoraHusoGenRegistro>
<sum1:NumRegistroAcuerdoFacturacion></sum1:NumRegistroAcuerdoFacturacion>
<sum1:IdAcuerdoSistemaInformatico></sum1:IdAcuerdoSistemaInformatico>
<sum1:TipoHuella>01</sum1:TipoHuella>
<sum1:Huella>0A2644C9E5A755BB654B68AF3DB670D17E1FBE5E54A98567A1AB619A67F49AF1</sum1:Huella>
<xd:Signature></xd:Signature>
</sum:RegistroAlta>
</sum:RegistroFactura>
</sum:RegFactuSistemaFacturacion>
</soapenv:Body>
</soapenv:Envelope>
Código:
<tikR:RespuestaLinea>
<tikR:IDFactura>
<tik:IDEmisorFactura>XXXXXXXXXXXX</tik:IDEmisorFactura>
<tik:NumSerieFactura>SERIE-02</tik:NumSerieFactura>
<tik:FechaExpedicionFactura>01-10-2024</tik:FechaExpedicionFactura>
</tikR:IDFactura>
<tikR:EstadoRegistro>AceptadoConErrores</tikR:EstadoRegistro>
<tikR:CodigoErrorRegistro>2004</tikR:CodigoErrorRegistro>
<tikR:DescripcionErrorRegistro>El valor del campo FechaHoraHusoGenRegistro no está dentro del umbral establecido sobre la fecha del sistema de la AEAT.</tikR:DescripcionErrorRegistro>
</tikR:RespuestaLinea>
|
|
#9
|
|||
|
|||
|
Cita:
|
|
#10
|
|||
|
|||
|
Muchas gracias. Fallo mío al no ver la similitud con el SII. Aún así, me hubiera costado llegar, así que gracias.
Obtengo el siguiente error al hacer el envío, y creo que es por el tipo de SOAP que utilizo o la forma de crear el XML: <env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>env:Server</faultcode><faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2003/05/soap-envelope}Envelope</faultstring></env:Fault> No sé si habrá que hacer como con TicketBAI, que había que modificar manualmente el XML antes de enviarlo para que utilizara unos literales específicos y no el que genera Delphi? Cita:
|
|
#11
|
||||
|
||||
|
Cita:
Si, igual se puede modificar el XML antes del envio, en el evento before.... es lo que igual me toca probar, pero hay foreros que estan enviando sin mas, si fueran tan amables ¿de publicar el metodo o algun resumen?. Saludos ! |
|
#12
|
|||
|
|||
|
Yo tuve que importar el wsdl con la opción SOAP 1.2, porque con la opción "Automatic" no podía compilar.
¿Quizás sea por eso? Estoy usando Delphi 11 |
|
#13
|
|||
|
|||
|
justo me ha pasado lo mismo hace poco, probablemente os haya pasado al importar las librerías desde delphi, elegir SOAP 1.2
tenéis que ir a la librería que se os ha generado , que seguramente ponga esto: InvRegistry.RegisterInvokeOptions(TypeInfo(sfPortTypeVerifactu), ioSOAP12); y hay que cambiarlo el ioSOAP12 por ioDocument quiza hay que añadir alguna variable mas, os aconsejo hacer la importación eligiendo SOAP 1.1 de nuevo y ver las diferencias |
|
#14
|
|||
|
|||
|
http://worldtimeapi.org/api/timezone/Europe/Madrid.txt
Buenas a todos
Yo tengo implementado el curl a la worldtimeapi para intentar proteger el cambio de fecha y hora en el sistema local... Hago el típico curl "http://worldtimeapi.org/api/timezone/Europe/Madrid.txt" > fichero.TXT Yo lo tengo puesto en un proceso dentro del menú principal de mi ERP que está siempre activo y lanzándose ya que en mi cabeza sonaba como la mejor manera de protegerme para el tema de los flujos y que no cambien la fecha del ordenador... El problema es que llega un momento que la llamada se "satura" y en vez de dar los datos que tiene que dar el fichero.TXT devuelve: "Too Many Requests: please refer to our fair-use policy in the FAQs." Lo cual obviamente no es bueno... Cómo hacéis vosotros? En qué punto hacéis la llamada a ese curl? Solo en el momento de generar los xml o como yo desde el menú inicial y corriendo siempre? Y de todas maneras, más importante qué donde lo hagáis es si esta llamada con envíos grandes se va a "saturar" siempre y nos va a dar más problemas que ventajas... Puff Gracias |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Hijo de Informáticos | gluglu | Humor | 3 | 13-03-2007 11:05:35 |
| Adictos informaticos ... | Trigger | Humor | 2 | 11-10-2004 12:18:32 |
| Nosotros los Informáticos | Trigger | Humor | 1 | 10-10-2004 14:58:09 |
| Patrón de los Informáticos. | obiwuan | Varios | 20 | 10-09-2003 14:44:54 |
| Chistes Informaticos | jhonny | Humor | 2 | 11-08-2003 21:59:09 |
|