Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Ley antifraude 2021 (VERIFACTU) - Programas informáticos (https://www.clubdelphi.com/foros/showthread.php?t=95235)

bmfranky 01-10-2024 21:12:58

Certificado Representante
 
Hola, alguien ha provado / conseguido enviar los registros, con un certificado de representante ?
es que ya no se si sera ese el problema.

sglorka 01-10-2024 21:14:02

Cita:

Empezado por bmfranky (Mensaje 557692)
Estoy usando el servicio generado desde el xsd.


Código:

  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(Namespace="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicacion" +
        "es/es/aeat/tike/cont/ws/SistemaFacturacion.wsdl", ConfigurationName="ServicioVerifactu.sfPortTypeVerifactu")]
    public interface sfPortTypeVerifactu {
       
        // CODEGEN: Se está generando un contrato de mensaje, ya que la operación RegFactuSistemaFacturacion no es RPC ni está encapsulada en un documento.
        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(RespuestaBaseType))]
        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(SistemaFacturacionFact))]
        Taller2024.ServicioVerifactu.RegFactuSistemaFacturacionResponse RegFactuSistemaFacturacion(Taller2024.ServicioVerifactu.RegFactuSistemaFacturacionRequest request); <-- ahora me salta el error aqui
       
        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
        System.Threading.Tasks.Task<Taller2024.ServicioVerifactu.RegFactuSistemaFacturacionResponse> RegFactuSistemaFacturacionAsync(Taller2024.ServicioVerifactu.RegFactuSistemaFacturacionRequest request);
    }


Si sabeis decirme como o donde configurar lo , agradeceria cualquier tipo de ayuda.

Prueba lo que te comenté.
Antes de iniciar el proceso de comunicación, debes activar un canal seguro con la Aeat. Ese canal seguro se activa ejecutando la instrucción

System.Net.ServicePointManager.SecurityProtocol = Tls12,
donde Tls12 es una constante que la creas como te indiqué antes.
Con esto, cualquier comunicación que realices se hará sobre un canal seguro

bmfranky 01-10-2024 22:28:24

Cita:

Empezado por sglorka (Mensaje 557698)
Prueba lo que te comenté.
Antes de iniciar el proceso de comunicación, debes activar un canal seguro con la Aeat. Ese canal seguro se activa ejecutando la instrucción

System.Net.ServicePointManager.SecurityProtocol = Tls12,
donde Tls12 es una constante que la creas como te indiqué antes.
Con esto, cualquier comunicación que realices se hará sobre un canal seguro

Hola, muchísimas gracias lo acabo de probar , ya conecta, pero ahora me da este error.


Cita:

Excepción no controlada del tipo 'System.ServiceModel.ProtocolException' en mscorlib.dll

Información adicional: El tipo de contenido text/html del mensaje de respuesta no coincide con el tipo de contenido del enlace (text/xml; charset=utf-8). Si usa un codificador personalizado, asegúrese de que el método IsContentTypeSupported se implemente correctamente. Los primeros 1024 bytes de la respuesta fueron: '<!DOCTYPE html>

<html lang="es">

<head>

<meta name="site" content="Sede"/>

<link href="/static_files/common/css/aeat.07.css" rel="stylesheet" type="text/css">

<meta title="AEATviewport" content="width=device-width, initial-scale=1.0" name="viewport">

<title>Agencia Tributaria: 403</title><meta name="ObjectId" content="84837bde849c7710VgnVCM100000dc381e0aRCRD"/><meta name="keyword" content="erro4033"/>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta name="detalle" content="errores"/>

</head>

<body>

<div id="body" data-template-id="cc1c55b3cac46710VgnVCM100000dc381e0aRCRD" class="s_Sede p_estandar t_informacion">



<header id="AEAT_header" class="header_aeat d-print-none d-app-none" >

<!-- CABECERA -->

<!--googleoff: index-->

<a class="focus-only" href="#acc-main">Saltar al contenido principal</a>

<div class="header-sup_aeat w-100">

<div class="container">

<div class="row">

<!-- CABECERA IZQUIERDA-->

<div id="topIzquie'.

richidemola 01-10-2024 22:45:00

Cita:

Empezado por unomasmas (Mensaje 557687)
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>

Este ha entrado (bueno, he cambiado algún que otro dato para anonimizarlo). Me da problemas con la etiqueta FechaHoraHusoGenRegistro

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>


Te ha pasado lo que a mi, has puesto +01:00 y es +02:00

sglorka 01-10-2024 22:54:25

Cita:

Empezado por bmfranky (Mensaje 557702)
Hola, muchísimas gracias lo acabo de probar , ya conecta, pero ahora me da este error.

Esto se puede deber a varias cosas que tendrás que ir descartando.
1- Certificado no operativo para interactuar con la Aeat
2.- Contraseña incorrecta del certificado
3.- Nif del emisor en la cabecera no registrado en la Aeat

delphiGar 01-10-2024 23:25:41

Cita:

Empezado por bmfranky (Mensaje 557697)
Hola, alguien ha provado / conseguido enviar los registros, con un certificado de representante ?
es que ya no se si sera ese el problema.

Yo lo estoy haciendo con el certificado de representante de mi empresa y va bien.

delphiGar 01-10-2024 23:28:21

Cita:

Empezado por espinete (Mensaje 557661)
Con el .pas generado al importar el WSDL como SOAP 1.2, solo tuve que añadir esta línea al .pas (gracias a pablog2k)

InvRegistry.RegisterInvokeOptions(TypeInfo(sfPortTypeVerifactu), ioLiteral);

La añadí justo después de la que viene por defecto:

InvRegistry.RegisterInvokeOptions(TypeInfo(sfPortTypeVerifactu), ioDocument);

Después de ese cambio, me daba otro error indicando que faltaba el campo "IDDestinatario", pero ese campo sí que estaba.
Lo que pasa es que en mi IDDestinatario había añadido el subnodo "IDOtro". Lo quité y ya pude hacer el envío.

Ahora bien, el envío me devuelve "Incorrecto", así que ahora tendré que ir poco a poco buscando los motivos, pero al menos el error anterior ya no me da. Supongo que ahora tendré que buscar en la respuesta (RespuestaBaseType) las causas de error que devuelve la AEAT.


Muchas gracias por compartir el arreglo que le habeis hecho al fichero generado con el Import WDSL.

delphiGar 01-10-2024 23:32:14

Cita:

Empezado por seccion_31 (Mensaje 557655)
Si, tiene pinta de eso, pero creo que ayer envie un XML sin el nodo repetido y seguia diciendo lo mismo. ... (creo), en mi opinion, o estan mal importados los WSDL, mal creados, o delphi no los puede importar bien.

Probare mañana a enviar XMLS manuales, copiando algunos de los que han remitido por aqui.

Saludos!

Buenas seccion_31, haz el cambio este en el fichero generado de SOAP, es de Espinete y plabo2k

Añade esta linea:

Código:

InvRegistry.RegisterInvokeOptions(TypeInfo(sfPortTypeVerifactu), ioLiteral);
debajo de esta:

Código:

InvRegistry.RegisterInvokeOptions(TypeInfo(sfPortTypeVerifactu), ioDocument);  // fijate que pone ioDocument y no ioSOAP12

Con esto funciona correctamente, a mi ya me deja enviar sin problema.

delphiGar 01-10-2024 23:40:02

Cita:

Empezado por ermendalenda (Mensaje 557673)
No sé si lo ha subido alguien.

Te dejo un link de una de las facturas subidas

Código:

https://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQR?nif=B04430534&numserie=A00000003&fecha=01-10-2024&importe=50.00

bmfranky 01-10-2024 23:43:48

Cita:

Empezado por sglorka (Mensaje 557705)
Esto se puede deber a varias cosas que tendrás que ir descartando.
1- Certificado no operativo para interactuar con la Aeat
2.- Contraseña incorrecta del certificado
3.- Nif del emisor en la cabecera no registrado en la Aeat

Hola, gracias por responder, de primeras tengo que solucionar que me esta serial izando el html en utf-16 y no utf-8, lo he cambiado a pelo en el string y se lo traga,pero como no esta codificado como soap, pues falla.

bmfranky 02-10-2024 00:07:29

Añadiendo al xml las cabeceras soap a pelo, meresponde esto.
Código PHP:

<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Codigo[4118].Error técnico: la dirección no se corresponde con el fichero de entrada.</faultstring><detail><callstack>Error técnico: la dirección no se corresponde con el fichero de entrada.
WSExcepcion [faultcode=null, detailMap=null, version=0, faultstring=null, faultactor=null, faultSubCode=null, reasonText=null, detail=null, nameSpaceUriDetail=null]
    at es.aeat.tike.cont.ws.xml.fe.ParserXmlCabeceraFacturasEmitidas.validaMarcaOperacionEntrada(ParserXmlCabeceraFacturasEmitidas.java:50)
    at es.aeat.tike.cont.ws.xml.comun.ParserXmlCabecera.parsear(ParserXmlCabecera.java:46)
    at es.aeat.tike.cont.ws.fe.VistaSF.parseaCabecera(VistaSF.java:65)
    at es.aeat.tike.cont.ws.VistaMaestro.inicializaParseaValidaProcesaCabecera(VistaMaestro.java:54)
    at es.aeat.tike.cont.ws.fe.VerifactuSOAP.doPost(VerifactuSOAP.java:49)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:706)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:791)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1266)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:754)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:451)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:197)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:100)
    at es.aeat.adws.jdit.imp.ws.WSFilterSrvImpl.doFilter(WSFilterSrvImpl.java:248)
    at es.aeat.adws.jdit.api.ws.WSFilter.doFilter(WSFilter.java:24)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)
    at es.aeat.adht.jdit.imp.infra.JDitFilterSrvImpl.filtroIni(JDitFilterSrvImpl.java:288)
    at es.aeat.adht.jdit.imp.infra.JDitFilterSrvImpl.doFilter(JDitFilterSrvImpl.java:101)
    at es.aeat.adht.jdit.imp.infra.JDitFilterSrvImpl.doFilter(JDitFilterSrvImpl.java:74)
    at es.aeat.adht.jdit.api.filter.JDitFilter.doFilter(JDitFilter.java:24)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:1069)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1260)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1078)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:77)
    at com.ibm.ws.webcontainer40.servlet.CacheServletWrapper40.handleRequest(CacheServletWrapper40.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:978)
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:293)
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:1260)
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.wrapHandlerAndExecute(HttpDispatcherLink.java:476)
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:435)
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:569)
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:503)
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:363)
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:330)
    at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:169)
    at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:77)
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:516)
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:586)
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:970)
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1059)
    at com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:280)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
</callstack></detail></env:Fault></env:Body></env:Envelope>


bmfranky 02-10-2024 01:21:58

Cita:

Empezado por espinete (Mensaje 557664)
ChatGPT me hizo un favor:

XSDatetime.FractionalSeconds := 0;

Con eso se elimina el .000 de la fecha/hora

Hola, me podeis decir donde colocais esto??

delphiGar 02-10-2024 07:54:15

Cita:

Empezado por bmfranky (Mensaje 557712)
Añadiendo al xml las cabeceras soap a pelo, meresponde esto.
Código PHP:

<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Codigo[4118].Error técnico: la dirección no se corresponde con el fichero de entrada.</faultstring><detail><callstack>Error técnico: la dirección no se corresponde con el fichero de entrada.
WSExcepcion [faultcode=null, detailMap=null, version=0, faultstring=null, faultactor=null, faultSubCode=null, reasonText=null, detail=null, nameSpaceUriDetail=null]
    at es.aeat.tike.cont.ws.xml.fe.ParserXmlCabeceraFacturasEmitidas.validaMarcaOperacionEntrada(ParserXmlCabeceraFacturasEmitidas.java:50)
    at es.aeat.tike.cont.ws.xml.comun.ParserXmlCabecera.parsear(ParserXmlCabecera.java:46)
    at es.aeat.tike.cont.ws.fe.VistaSF.parseaCabecera(VistaSF.java:65)
    at es.aeat.tike.cont.ws.VistaMaestro.inicializaParseaValidaProcesaCabecera(VistaMaestro.java:54)
    at es.aeat.tike.cont.ws.fe.VerifactuSOAP.doPost(VerifactuSOAP.java:49)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:706)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:791)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1266)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:754)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:451)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:197)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:100)
    at es.aeat.adws.jdit.imp.ws.WSFilterSrvImpl.doFilter(WSFilterSrvImpl.java:248)
    at es.aeat.adws.jdit.api.ws.WSFilter.doFilter(WSFilter.java:24)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)
    at es.aeat.adht.jdit.imp.infra.JDitFilterSrvImpl.filtroIni(JDitFilterSrvImpl.java:288)
    at es.aeat.adht.jdit.imp.infra.JDitFilterSrvImpl.doFilter(JDitFilterSrvImpl.java:101)
    at es.aeat.adht.jdit.imp.infra.JDitFilterSrvImpl.doFilter(JDitFilterSrvImpl.java:74)
    at es.aeat.adht.jdit.api.filter.JDitFilter.doFilter(JDitFilter.java:24)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:1069)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1260)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1078)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:77)
    at com.ibm.ws.webcontainer40.servlet.CacheServletWrapper40.handleRequest(CacheServletWrapper40.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:978)
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:293)
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:1260)
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.wrapHandlerAndExecute(HttpDispatcherLink.java:476)
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:435)
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:569)
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:503)
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:363)
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:330)
    at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:169)
    at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:77)
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:516)
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:586)
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:970)
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1059)
    at com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:280)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
</callstack></detail></env:Fault></env:Body></env:Envelope>


Ese error me lo dio a mi cuando el componenente httprio generaba el xml con una cabecera como esta en el soap:

Código:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body xmlns:NS1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd">

cuando corregi la forma de generarlo la cabecera es esta

Código:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>


delphiGar 02-10-2024 08:05:26

Cita:

Empezado por bmfranky (Mensaje 557713)
Hola, me podeis decir donde colocais esto??

Esto es para que no aparezca en FechaHoraHusoGenRegistro los milisegundos. es un objeto de Delphi.

Código Delphi [-]
registroFactura.RegistroAlta.FechaHoraHusoGenRegistro := TXSDateTime.Create;
  registroFactura.RegistroAlta.FechaHoraHusoGenRegistro.AsDateTime := Now;
  registroFactura.RegistroAlta.FechaHoraHusoGenRegistro.FractionalSeconds := 0;

pablog2k 02-10-2024 08:10:43

Cita:

Empezado por ermendalenda (Mensaje 557681)
Gracias, toda información es buena.
Te importaría probar si te deja enviar un registro como subsanacion aunque no se haya enviado?

no te deja, te dice que el registro que estás intentado subsanar no existe

Código PHP:

<tikR:EstadoRegistro>Incorrecto</tikR:EstadoRegistro>
<
tikR:CodigoErrorRegistro>3002</tikR:CodigoErrorRegistro>
<
tikR:DescripcionErrorRegistro>No existe el registro de facturación.</tikR:DescripcionErrorRegistro


newtron 02-10-2024 10:24:38

Hola a tod@s.


Se me está quedando cara de tonto con este tema porque no soy capaz de hacer la llamada de forma correcta y estoy pensando que igual es porque no se me han importado bien los .pas de los ficheros wsdl y xsd.


¿Puede alguien subir los últimos por favor?


Gracias y un saludo.

delphiGar 02-10-2024 10:48:32

1 Archivos Adjunto(s)
Cita:

Empezado por newtron (Mensaje 557724)
Hola a tod@s.


Se me está quedando cara de tonto con este tema porque no soy capaz de hacer la llamada de forma correcta y estoy pensando que igual es porque no se me han importado bien los .pas de los ficheros wsdl y xsd.


¿Puede alguien subir los últimos por favor?


Gracias y un saludo.

Aqui tienes el que estoy utilizando yo, importane que en el HTTPRIO no tengas marcado en el converter soSendUnType, ya que el .pas lleva una invocacion a ioLiteral

newtron 02-10-2024 10:50:06

Cita:

Empezado por delphiGar (Mensaje 557725)
Aqui tienes el que estoy utilizando yo, importane que en el HTTPRIO no tengas marcado en el converter soSendUnType, ya que el .pas lleva una invocacion a ioLiteral


Gracias compañero. Lo pruebo y comento.


Saludos.

newtron 02-10-2024 10:55:34

Pufffffffffffff.... me da error aquí al compilar la unidad SistemaFacturacion:


Código Delphi [-]
    FText: TByteSOAPArray;


Me temo que mi Delphi Berlin no se traga esto.

delphiGar 02-10-2024 10:57:12

Cita:

Empezado por newtron (Mensaje 557727)
Pufffffffffffff.... me da error aquí al compilar la unidad SistemaFacturacion:


Código Delphi [-]
    FText: TByteSOAPArray;


Me temo que mi Delphi Berlin no se traga esto.

Yo lo genere con Delphi 11.3

newtron 02-10-2024 10:59:04

Cita:

Empezado por delphiGar (Mensaje 557728)
Yo lo genere con Delphi 11.3


Gracias, a ver si alguien me puede poner uno con una versión inferior.

delphiGar 02-10-2024 11:04:49

1 Archivos Adjunto(s)
Cita:

Empezado por newtron (Mensaje 557727)
Pufffffffffffff.... me da error aquí al compilar la unidad SistemaFacturacion:


Código Delphi [-]
    FText: TByteSOAPArray;


Me temo que mi Delphi Berlin no se traga esto.


Te he hecho este en delphi 10.2, pruebalo

newtron 02-10-2024 11:10:31

Cita:

Empezado por delphiGar (Mensaje 557731)
Te he hecho este en delphi 10.2, pruebalo


Gracias. Este si me lo compila pero me temo que es exactamente igual que el que estaba usando por lo que el problema que tengo será otro. Sigo probando.


Saludos.

delphiGar 02-10-2024 11:20:45

Cita:

Empezado por newtron (Mensaje 557732)
Gracias. Este si me lo compila pero me temo que es exactamente igual que el que estaba usando por lo que el problema que tengo será otro. Sigo probando.


Saludos.

Que error te da o que es lo que pasa??

newtron 02-10-2024 11:22:59

Cita:

Empezado por delphiGar (Mensaje 557733)
Que error te da o que es lo que pasa??


Pues me da un access violation al hacer la llamada. Imagino que será algún objeto que no estoy inicializando/rellenando pero no lo encuentro. A ver si me aclaro un poco y comento por aquí.


Gracias y un saludo.

delphiGar 02-10-2024 11:25:45

Cita:

Empezado por newtron (Mensaje 557734)
Pues me da un access violation al hacer la llamada. Imagino que será algún objeto que no estoy inicializando/rellenando pero no lo encuentro. A ver si me aclaro un poco y comento por aquí.


Gracias y un saludo.

Seguro que es un objeto que no has inicializado, ve delimitandolo por bloques, ponte un showmessage para ver donde llega.

Tambien puede ser que este haciendole un .Free al objeto antes de enviarlo y esto tambien da error, ya que la direccion se queda en el objeto pero sin contenido.

newtron 02-10-2024 11:36:58

Vale.... He preparado un programa de envío de prueba pasando de lo que tenía y aprovechando un código que me ha enviado otro amable colega y me da este mensaje:





¿Alguna idea de lo que puede ser?

Edito: Yo estaba haciendo la llamada tal que así:

Código Delphi [-]
  res:=   GetsfPortTypeVerifactu( False, '', HTTPRIO1 ).RegFactuSistemaFacturacion( veriFactu );

pero curiosamente en el ejemplo que me han enviado lo hacen así:

Código Delphi [-]
  SistemaFacturacion.RespuestaRegFactuSistemaFacturacion(Respuesta) := SistemaFacturacion.GetsfPortTypeVerifactu(false, direccion_envio, HTTPRIO1).RegFactuSistemaFacturacion(ARegFactuSistemaFacturacion);

Asi que ahora si que estoy más despistado.

Saludos.





Gracias y un saludo.

delphiGar 02-10-2024 11:44:29

Cita:

Empezado por newtron (Mensaje 557736)
Vale.... He preparado un programa de envío de prueba pasando de lo que tenía y aprovechando un código que me ha enviado otro amable colega y me da este mensaje:





¿Alguna idea de lo que puede ser?

Edito: Yo estaba haciendo la llamada tal que así:

Código Delphi [-]
  res:=   GetsfPortTypeVerifactu( False, '', HTTPRIO1 ).RegFactuSistemaFacturacion( veriFactu );

pero curiosamente en el ejemplo que me han enviado lo hacen así:

Código Delphi [-]
  SistemaFacturacion.RespuestaRegFactuSistemaFacturacion(Respuesta) := SistemaFacturacion.GetsfPortTypeVerifactu(false, direccion_envio, HTTPRIO1).RegFactuSistemaFacturacion(ARegFactuSistemaFacturacion);

Asi que ahora si que estoy más despistado.

Saludos.





Gracias y un saludo.

Estas utilizando un certificado valido para autenticarte en la AEAT???

sglorka 02-10-2024 12:14:08

Propongo una idea para todos aquellos que no tienen certeza de si su certificado es correcto o no para operar.
Si acceden a la página de entorno de pruebas del SII, https://preportal.aeat.es/PRE-Exteri...formacion.html
pueden pulsar sobre el link "Alta Factura Emitida", entonces, se abrirá el selector de certificados y seleccionáis el vuestro.
A partir de aquí, si te deja seguir operando, es que correcto y los problemas vienen de otra parte y si no te deja seguir, te mostrará el error.
En caso de error, le mandan un correo a Verifactu y explican la incidencia

newtron 02-10-2024 12:21:52

Cita:

Empezado por delphiGar (Mensaje 557737)
Estas utilizando un certificado valido para autenticarte en la AEAT???


Si, estoy usando el mío personal. Por si acaso he hecho la prueba que propone sglorka y si que es válido.

delphiGar 02-10-2024 12:55:32

Cita:

Empezado por newtron (Mensaje 557739)
Si, estoy usando el mío personal. Por si acaso he hecho la prueba que propone sglorka y si que es válido.

En esa version de delphi se utiliza para pedir peticiones a la web los componentes de windows no los de Indy ( Se pueden habilitar ), para conectarte a la AEAT necesitas tener activado el protocolo TLS 1.2 en las opciones de Internet del panel de control, en las opciones avanzadas lo veras si esta o no habilitado.

xevi 02-10-2024 13:13:58

Estoy siguiendo con las pruebas...

Enviado un registro de una factura de fecha 06/09/2024 ahora hace pocos min. 02/10/2024
El registro pertenece a un numero de factura anterior al registro último que he enviado.
Pero como lo envio con la huella del registro anterior...
Resultado 'Correcto'

De hecho, estaría bien, pues se me puede "pasar" enviar una factura de fecha anterior. Mientras que se genere correctamente el nodo
sum1:FechaHoraHusoGenRegistro>2024-10-02T13:05:35+02:00</sum1:FechaHoraHusoGenRegistro>
y que corresponda a la fecha en que se transmite ese registro, pues vale y lo da por Ok.
Así pues, podemos emitir una factura con fecha anterior.

novatico 02-10-2024 13:37:42

Lectura QR de factura con importe negativo
 
Buenos días,
Ya estoy realizando envíos de prueba y me los está aceptado correctamente.
Igualmente en las facturas incluyo la impresión del código QR de verificación, que al leerlo me accede correctamente y me devuelve el mensaje de "Factura Encontrada", mostrándome sus datos.
Esto es así salvo en el caso de que esté consultando una factura enviada y aceptada correctamente con importe total negativo, que al hacer la consulta del QR me devuelve el mensaje:

"ERROR: El importe excede el número máximo de caracteres"

He enviado una consulta a la AEAT y me responden que lo remiten a los responsables.

No se si alguno ha hecho esa prueba, pero ya os diré.

Jose A. Blasco

espinete 02-10-2024 13:51:50

Les detallo un dato importante que me acaban de confirmar desde la AEAT, relacionado con la validación de NIFs al enviar facturas:

Cita:

Efectivamente las validaciones censales en entorno de pruebas son idénticas a las realizadas en entorno real.
La identificación de personas jurídicas se realiza en función del NIF, no considerándose la Razón Social. Sin embargo, en función de los errores de identificación que se produzcan, es posible que se establezca un criterio de similitud de nombres, por lo que debe enviarse también la Razón Social (se debe procurar la mayor concordancia posible).

Para las personas físicas el contenido debe informarse en el siguiente orden: primer apellido segundo apellido y nombre sin signos de puntuación . Se valida con los apellidos y nombre con un determinado grado de similitud. El contenido del campo nombre debe figurar lo más completo posible por su parte para que la rutina de identificación pueda encontrar el titular ya que se identifica con NIF y nombre.

Previo al envío de los ficheros XML puede comprobar si los NIF están correctamente censados en el servicio de calidad de datos identificativos de la AEAT. Está disponible en la siguiente dirección:

https://sede.agenciatributaria.gob.e...ion/G321.shtml

Las identificaciones que resulten positivas en el servicio de identificación, también serán positivas en las validaciones realizadas en el momento de la presentación de facturas.

Si aun así le persiste en algún caso el error, puede remitirnos el fichero XML de envío y el de respuesta y le detallaremos a qué es debido el error.

espinete 02-10-2024 14:23:45

No sé si la AEAT tendrá un webservice para comprobar si un NIF es válido, pero si pretenden que para poder hacer PRUEBAS, tenga que usar NIFs y nombres de personas y empresas reales, ya me dirás...

Encima lo que ponen es una web en la que puedes consultar NIFs de forma manual. Como si uno tuviera todo el tiempo del mundo para estar validando NIFs.

En fin... En vista de que no es posible enviar facturas usando el mismo NIF como emisor y como receptor... ¿cómo estáis haciendo vosotros? Estáis usando NIFs reales para el receptor?
Yo he usado mi propio NIF como nif del receptor, pero con nombre falso, y me da error: dicen que la validación del NIF va sujeta al nombre real y que debería ser lo más parecido posible.

NIFs como 11111111H no funcionan, aunque sea "válido", no lo admiten porque "no está censado"

espinete 02-10-2024 14:31:48

A lo mejor se ponen tontos con las facturas con importe negativo. Puede que te digan que no puedes hacer facturas en negativo, sino facturas rectificativas.

Ojalá no sea eso, o sea simplemente que al incluir el signo "-" en la url, los de la AEAT aún no lo hayan contemplado.

Cita:

Empezado por novatico (Mensaje 557742)
Buenos días,
Ya estoy realizando envíos de prueba y me los está aceptado correctamente.
Igualmente en las facturas incluyo la impresión del código QR de verificación, que al leerlo me accede correctamente y me devuelve el mensaje de "Factura Encontrada", mostrándome sus datos.
Esto es así salvo en el caso de que esté consultando una factura enviada y aceptada correctamente con importe total negativo, que al hacer la consulta del QR me devuelve el mensaje:

"ERROR: El importe excede el número máximo de caracteres"

He enviado una consulta a la AEAT y me responden que lo remiten a los responsables.

No se si alguno ha hecho esa prueba, pero ya os diré.

Jose A. Blasco


pablog2k 02-10-2024 14:50:45

Cita:

Empezado por espinete (Mensaje 557744)
No sé si la AEAT tendrá un webservice para comprobar si un NIF es válido, pero si pretenden que para poder hacer PRUEBAS, tenga que usar NIFs y nombres de personas y empresas reales, ya me dirás...

Encima lo que ponen es una web en la que puedes consultar NIFs de forma manual. Como si uno tuviera todo el tiempo del mundo para estar validando NIFs.

En fin... En vista de que no es posible enviar facturas usando el mismo NIF como emisor y como receptor... ¿cómo estáis haciendo vosotros? Estáis usando NIFs reales para el receptor?
Yo he usado mi propio NIF como nif del receptor, pero con nombre falso, y me da error: dicen que la validación del NIF va sujeta al nombre real y que debería ser lo más parecido posible.

NIFs como 11111111H no funcionan, aunque sea "válido", no lo admiten porque "no está censado"

yo por ejemplo he usado mi nombre completo y DNI, total si hacienda ya tiene mis datos.... :D y sin problemas

espinete 02-10-2024 14:56:44

Cita:

Empezado por pablog2k (Mensaje 557747)
yo por ejemplo he usado mi nombre completo y DNI, total si hacienda ya tiene mis datos.... :D y sin problemas

Claro, pero cuando haya que empezar a hacer pruebas variadas (facturas con recargo, sin IVA, a clientes extranjeros (nif extranjero), etc.) qué opciones nos quedan?

ermendalenda 02-10-2024 15:05:30

Cita:

Empezado por espinete (Mensaje 557745)
A lo mejor se ponen tontos con las facturas con importe negativo. Puede que te digan que no puedes hacer facturas en negativo, sino facturas rectificativas.

Ojalá no sea eso, o sea simplemente que al incluir el signo "-" en la url, los de la AEAT aún no lo hayan contemplado.


Eso no puede ser,
según el reglamento de facturaciión se podran emitir facturas normales o simplificadas con un resultado negativo siempore que en la misma factura haya productos en positivo (todos con el mismo tipo de iva) aunque el resultado sea negativo. Y verifactu no tiene el detalle de las lineas con lo cual no sabrá si estamos haciendola correctamente o no, pero debe permitir un resultado negativo para facturas con solo 1 tipo de iva.

ermendalenda 02-10-2024 15:08:47

Cita:

Empezado por espinete (Mensaje 557744)
No sé si la AEAT tendrá un webservice para comprobar si un NIF es válido, pero si pretenden que para poder hacer PRUEBAS, tenga que usar NIFs y nombres de personas y empresas reales, ya me dirás...

Encima lo que ponen es una web en la que puedes consultar NIFs de forma manual. Como si uno tuviera todo el tiempo del mundo para estar validando NIFs.

En fin... En vista de que no es posible enviar facturas usando el mismo NIF como emisor y como receptor... ¿cómo estáis haciendo vosotros? Estáis usando NIFs reales para el receptor?
Yo he usado mi propio NIF como nif del receptor, pero con nombre falso, y me da error: dicen que la validación del NIF va sujeta al nombre real y que debería ser lo más parecido posible.

NIFs como 11111111H no funcionan, aunque sea "válido", no lo admiten porque "no está censado"


Lo tienen, ya lo hemos hablado varias veces y debe haber ejemplos en el hilo.


La franja horaria es GMT +2. Ahora son las 05:46:50.

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