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)

Maska10 26-12-2023 09:32:05

Cita:

Empezado por nincillo (Mensaje 553696)
Hola de nuevo.
Tras hacer la importación del wsdl, relleno todos los apartados a los que tengo acceso, pero comparando con los ejemplos de los xml publicados, veo que hay una "parte" a la que no tengo acceso, o al menos no se como hacerlo.

Yo el xml resultando lo obtengo en el evento HTTPRIO1BeforeExecute.

Y lo que obtengo con datos de prueba es:

Código:

  <?xml version="1.0" ?>
- <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>
- <AltaFactuSistemaFacturacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd">
- <RegistroAltaFacturas>
+ <RegistroFacturacion>
- <IDFactura xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
- <IDEmisorFactura>
  <NIF>3333333</NIF>
  </IDEmisorFactura>
  <NumSerieFacturaEmisor>23/123456</NumSerieFacturaEmisor>
  <FechaExpedicionFacturaEmisor>31/12/23</FechaExpedicionFacturaEmisor>
  </IDFactura>
  <NombreRazonEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" />
  <TipoRegistroSIF xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">S0</TipoRegistroSIF>
  <TipoFactura xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">F1</TipoFactura>
  <TipoRectificativa xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">S</TipoRectificativa>
- <FacturasRectificadas xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
- <IDFacturaRectificada>
  <NumSerieFacturaEmisor>3333/222</NumSerieFacturaEmisor>
  <FechaExpedicionFacturaEmisor>15/12/232</FechaExpedicionFacturaEmisor>
  </IDFacturaRectificada>
  </FacturasRectificadas>
- <ImporteRectificacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
  <BaseRectificada>11</BaseRectificada>
  <CuotaRectificada>10</CuotaRectificada>
  <CuotaRecargoRectificado>0</CuotaRecargoRectificado>
  </ImporteRectificacion>
  <FechaOperacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">01/01/2023</FechaOperacion>
  <DescripcionOperacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">vneta de mercaderías</DescripcionOperacion>
  <FacturaSimplificadaArticulos7.2_7.3 xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">N</FacturaSimplificadaArticulos7.2_7.3>
  <FacturaSinIdentifDestinatarioArticulo6.1.d xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">N</FacturaSinIdentifDestinatarioArticulo6.1.d>
  <Macrodato xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">N</Macrodato>
  <EmitidaPorTercerosODestinatario xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">D</EmitidaPorTercerosODestinatario>
- <Tercero xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
  <NombreRazon>Nombre de la contraparte</NombreRazon>
  <NIF>eerererer</NIF>
- <IDOtro>
  <CodigoPais>SA</CodigoPais>
  <IDType>02</IDType>
  <ID>dddd</ID>
  </IDOtro>
  </Tercero>
+ <Desglose xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
- <DetalleDesglose>
  <ClaveRegimen>01</ClaveRegimen>
  <CalificacionOperacion>S1</CalificacionOperacion>
  <OperacionExenta>E0</OperacionExenta>
  <TipoImpositivo>21</TipoImpositivo>
  <BaseImponibleOimporteNoSujeto>123</BaseImponibleOimporteNoSujeto>
  <BaseImponibleACoste>111</BaseImponibleACoste>
  <CuotaRepercutida>100</CuotaRepercutida>
  <TipoRecargoEquivalencia>0</TipoRecargoEquivalencia>
  <CuotaRecargoEquivalencia>0</CuotaRecargoEquivalencia>
  </DetalleDesglose>
- <DetalleDesglose>
  <ClaveRegimen>01</ClaveRegimen>
  <TipoImpositivo>10</TipoImpositivo>
  <BaseImponibleOimporteNoSujeto />
  <CuotaRepercutida>200</CuotaRepercutida>
  </DetalleDesglose>
  </Desglose>
  <ImporteTotal xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">123,45</ImporteTotal>
+ <EncadenamientoRegistroAnterior xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
- <IDEmisorFacturaRegistroAnterior>
  <NIF>nif emisor anterior</NIF>
  </IDEmisorFacturaRegistroAnterior>
  <NumSerieFacturaRegistroAnterior>3344</NumSerieFacturaRegistroAnterior>
  <FechaExpedicionFacturaRegistroAnterior>30/12/2023</FechaExpedicionFacturaRegistroAnterior>
  <HuellaRegistroAnterior>ddd3333gggvbbbb</HuellaRegistroAnterior>
  </EncadenamientoRegistroAnterior>
+ <SistemaInformatico xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
  <NombreRazon>Programitas del campo S.l.</NombreRazon>
  <NIF>ddddd</NIF>
- <IDOtro>
  <IDType>02</IDType>
  <ID />
  </IDOtro>
  <NombreSistemaInformatico />
  <IdSistemaInformatico>3333</IdSistemaInformatico>
  <Version>0.1</Version>
  <NumeroInstalacion>1</NumeroInstalacion>
  <TipoUsoPosibleSoloVerifactu>N</TipoUsoPosibleSoloVerifactu>
  <TipoUsoPosibleOtros>S</TipoUsoPosibleOtros>
  <TipoUsoPosibleMultiOT>S</TipoUsoPosibleMultiOT>
  </SistemaInformatico>
  <FechaGenRegistro xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" />
  <HoraGenRegistro xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" />
  <HusoHorarioGenRegistro xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">01</HusoHorarioGenRegistro>
  <NumRegistroAcuerdoFacturacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">OJO</NumRegistroAcuerdoFacturacion>
  </RegistroFacturacion>
- <DatosControl>
  <Huella xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">HUella</Huella>
  <TipoHash xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">01</TipoHash>
  <Incidencia xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">N</Incidencia>
  </DatosControl>
  </RegistroAltaFacturas>
  </AltaFactuSistemaFacturacion>
  </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>

Pero en el ejemplo de xml que tienen publicado veo que antes del nodo <RegistroAltaFacturas> hay metido un nodo Cabecera que en mi captura anterior no aparece.

Código:

<sum:AltaFactuSistemaFacturacion>
<sum1:Cabecera>
<sum1:IDVersion>1.0</sum1:IDVersion>         
<sum1:ObligadoEmision>
              <sum1:NombreRazon>XXXXX</sum1:NombreRazon>
              <sum1:NIF>XXXXX</sum1:NIF>
            </sum1:ObligadoEmision>
            <sum1:TipoRegistroAEAT>T0</sum1:TipoRegistroAEAT>
        </sum1:Cabecera>
        <sum:RegistroAltaFacturas>
....

Y ahí es donde me estoy pegando cabezazos con ello y no consiguo avanzar.
E importado los wsd y entonces en ellos si llego a esa "cabecera", pero lo que luego no consigo es como añadirle las facturas y menos hacer la llamada SOAP, ya que me exige que el parámetro sea del tipo ArrayOf_FacturasEmiitidasType.

A ver si alguien me puede pegar un empujón.

Muchas gracias y Felices Fiestas!!!

A ver, te explico en base a mi experiencia con Ticket Bai Vizcaya (digo Vizcaya porque parece que es el que más se asemeja a VeriFactu) .. creo que no han explicado bien la funcionalidad, el ejemplo XML (donde aparece el nodo de la cabecera) es el XML del envio donde puedes (o debes) enviar múltiples registros de alta, en concreto desde 1 hasta 1000. Sin embargo la importación del WSD te genera el XML del registro de alta único, es decir, una factura.

Por tanto debes generar un XML para cada factura/ticket (con el WSD) y luego enviarlos en bloque con el formato del XML de ejemplo (el que trae el nodo de la Cabecera).

Ahora pensarás, joer pues meto un envío por cada factura y listo .. pues no, porque leyendo un poco la descripción del servicio, en las respuestas te enviarán unos valores de registros mínimos y segundos a esperar para el siguiente envío (supongo que para no saturar servidores) ... por tanto habrá que enviarlos en bloque si o si.

En cualquier caso esto es lo que yo entiendo, la documentación no es del todo clara.

xamminf 26-12-2023 10:20:27

Cita:

Empezado por Maska10 (Mensaje 553700)
A ver, te explico en base a mi experiencia con Ticket Bai Vizcaya (digo Vizcaya porque parece que es el que más se asemeja a VeriFactu) .. creo que no han explicado bien la funcionalidad, el ejemplo XML (donde aparece el nodo de la cabecera) es el XML del envio donde puedes (o debes) enviar múltiples registros de alta, en concreto desde 1 hasta 1000. Sin embargo la importación del WSD te genera el XML del registro de alta único, es decir, una factura.

Por tanto debes generar un XML para cada factura/ticket (con el WSD) y luego enviarlos en bloque con el formato del XML de ejemplo (el que trae el nodo de la Cabecera).

Ahora pensarás, joer pues meto un envío por cada factura y listo .. pues no, porque leyendo un poco la descripción del servicio, en las respuestas te enviarán unos valores de registros mínimos y segundos a esperar para el siguiente envío (supongo que para no saturar servidores) ... por tanto habrá que enviarlos en bloque si o si.

En cualquier caso esto es lo que yo entiendo, la documentación no es del todo clara.


Buenos días y Feliz Navidad a todos

100% que el envio se hace en bloques de maximo de 1000
Ahora bien, el modelo de esto que pudiera ser mas parecido pudiera ser que sea el envio del SII, que ya se hace tb en bloques según se explica en https://www.agenciatributaria.es/sta...ervicioWeb.pdf

A diferencia de las forales, o al menos es mi experiencia, los envios a la agencia central son bastante seguros y rara vez está caído el servidor con lo cual son minimos (en el SII al menos) los problemas derivados del envio en bloques

ermendalenda 26-12-2023 13:34:14

Cita:

Empezado por sglorka (Mensaje 553678)
Veo que nadie hacer referencia a los registros de eventos que vienen definidos en la hoja de Excel https://www.agenciatributaria.es/sta...23-12-20).xlsx

¿ Qué os parece ?

Buff vaya tela
Habrá que dejarse esto tambén programado para mi los "L2" son los importantes, por que de trazabilidad, no voy a hacer procesos, ya que se presupone que va todo ok:

01 Instalación o puesta en marcha inicial del sistema informático. 02 Inicio del funcionamiento del sistema informático como sistema VERI*FACTU. 03 Fin del funcionamiento del sistema informático como sistema VERI*FACTU. 04 Lanzamiento del proceso de detección de anomalías en los registros de facturación. 05 Detección de anomalías en la integridad, inalterabilidad y trazabilidad de registros de facturación. 06 Lanzamiento del proceso de detección de anomalías en los registros de eventos. 07 Detección de anomalías en la integridad, inalterabilidad y trazabilidad de registros de eventos. 08 Restauración de copia de seguridad. 09 Exportación de registros de facturación generados en un periodo. 10 Exportación de registros de eventos generados en un periodo. 11 Registro resumen de eventos

ermendalenda 26-12-2023 13:58:48

Cita:

Empezado por ermendalenda (Mensaje 553706)
Buff vaya tela
Habrá que dejarse esto tambén programado para mi los "L2" son los importantes, por que de trazabilidad, no voy a hacer procesos, ya que se presupone que va todo ok:

01 Instalación o puesta en marcha inicial del sistema informático. 02 Inicio del funcionamiento del sistema informático como sistema VERI*FACTU. 03 Fin del funcionamiento del sistema informático como sistema VERI*FACTU. 04 Lanzamiento del proceso de detección de anomalías en los registros de facturación. 05 Detección de anomalías en la integridad, inalterabilidad y trazabilidad de registros de facturación. 06 Lanzamiento del proceso de detección de anomalías en los registros de eventos. 07 Detección de anomalías en la integridad, inalterabilidad y trazabilidad de registros de eventos. 08 Restauración de copia de seguridad. 09 Exportación de registros de facturación generados en un periodo. 10 Exportación de registros de eventos generados en un periodo. 11 Registro resumen de eventos

Tengo dudas, si en sistemas Verifactu (Siempre envio), no es obligatorio los registros de eventos, pero hay un evento que dice " 02 Inicio del funcionamiento del sistema informático como sistema VERI*FACTU." y otro " 03 Fin del funcionamiento del sistema informático como sistema VERI*FACTU."...?
supongo que son excepciones y esos sí hay que enviarlos.

nincillo 26-12-2023 17:39:01

Cita:

Empezado por Maska10 (Mensaje 553700)
A ver, te explico en base a mi experiencia con Ticket Bai Vizcaya (digo Vizcaya porque parece que es el que más se asemeja a VeriFactu) .. creo que no han explicado bien la funcionalidad, el ejemplo XML (donde aparece el nodo de la cabecera) es el XML del envio donde puedes (o debes) enviar múltiples registros de alta, en concreto desde 1 hasta 1000. Sin embargo la importación del WSD te genera el XML del registro de alta único, es decir, una factura.

Por tanto debes generar un XML para cada factura/ticket (con el WSD) y luego enviarlos en bloque con el formato del XML de ejemplo (el que trae el nodo de la Cabecera).

Ahora pensarás, joer pues meto un envío por cada factura y listo .. pues no, porque leyendo un poco la descripción del servicio, en las respuestas te enviarán unos valores de registros mínimos y segundos a esperar para el siguiente envío (supongo que para no saturar servidores) ... por tanto habrá que enviarlos en bloque si o si.

En cualquier caso esto es lo que yo entiendo, la documentación no es del todo clara.

Perdón que siga preguntando, pero es por saber si al final tendré que pasar de la importación del "wsdl", (no del wsd) y hacer el envío de otra manera.

Me explico lo que te he entendido que tengo que hacer:
- Genero un xml por cada factura según voy facturando.
- Cada "x" facturas o cada "y" tiempo tendré que hacer el envío de las facturas que tenga pendiente hasta ese momento y para ese momento es cuando ya monto el xml "conjunto" con los datos de la cabecera más los datos de cada una de las facturas. Hasta ahí ¿correcto?.

Pero entonces, al importar el wsdl, que es el que incorpora la llamada getsfSoap, resulta que lo que hay que pasarle es una array de facturas.
Código:

SetLength(arrayFacturas, 1);
    arrayFacturas[0] := regFactura;
    result := GetsfSOAP(true, '', HTTPRIO1).AltaFactuSistemaFacturacion(ArrayFacturas);

-

Y con esa llamada me genera el xml con el detalle de las facturas, pero sin el famoso apartado de "cabecera".

Con lo cual o algo me estoy perdiendo, o al final voy a tener que pasar de él y hacerlo todo a mano como hice en su momento para enviar al SII.

Gracias por vuestra paciencia.

Maska10 27-12-2023 09:18:45

Cita:

Empezado por nincillo (Mensaje 553710)
Perdón que siga preguntando, pero es por saber si al final tendré que pasar de la importación del "wsdl", (no del wsd) y hacer el envío de otra manera.

Me explico lo que te he entendido que tengo que hacer:
- Genero un xml por cada factura según voy facturando.
- Cada "x" facturas o cada "y" tiempo tendré que hacer el envío de las facturas que tenga pendiente hasta ese momento y para ese momento es cuando ya monto el xml "conjunto" con los datos de la cabecera más los datos de cada una de las facturas. Hasta ahí ¿correcto?.

Hasta ahí correcto, ojo, bajo mi criterio eh, yo lo voy a hacer así y cuando se publiquen los servidores de pruebas o mas documentación ya veremos las respuestas.

Cita:

Empezado por nincillo (Mensaje 553710)
Perdón que siga preguntando, pero es por saber si al final tendré que pasar de la importación del "wsdl", (no del wsd) y hacer el envío de otra manera.

Pero entonces, al importar el wsdl, que es el que incorpora la llamada getsfSoap, resulta que lo que hay que pasarle es una array de facturas.
Código:

SetLength(arrayFacturas, 1);
    arrayFacturas[0] := regFactura;
    result := GetsfSOAP(true, '', HTTPRIO1).AltaFactuSistemaFacturacion(ArrayFacturas);

-

Y con esa llamada me genera el xml con el detalle de las facturas, pero sin el famoso apartado de "cabecera".

Con lo cual o algo me estoy perdiendo, o al final voy a tener que pasar de él y hacerlo todo a mano como hice en su momento para enviar al SII.

Gracias por vuestra paciencia.

Yo lo voy a hacer a mano seguramente, tanto la cabecera como el pie final.

ermendalenda 27-12-2023 10:12:24

Cita:

Empezado por nincillo (Mensaje 553677)
Del link que puso un poco más arriba @keys.

El primero de los link que aparecen en esa pagins, es un pdf que tiene los wsdl, wsd, etc.

gracias
me pongo ya a ello

antoine0 28-12-2023 09:47:22

Cita:

Empezado por ermendalenda (Mensaje 553707)
Tengo dudas, si en sistemas Verifactu (Siempre envio), no es obligatorio los registros de eventos, pero hay un evento que dice " 02 Inicio del funcionamiento del sistema informático como sistema VERI*FACTU." y otro " 03 Fin del funcionamiento del sistema informático como sistema VERI*FACTU."...?
supongo que son excepciones y esos sí hay que enviarlos.

En un sistema no-Veri*factu pero que ha funcionado en algún momento en modo Veri*factu, los registros de eventos no son opcionales. Esta obligación es de aplicación para todo el tiempo, sin distinguir entre el periodo de funcionamiento en un modo u otro. Por tanto, un sistema que puede funcionar en los dos modos debe registrar los cambios de modo, con la fecha-hora en que se producen (y estas fechas son importantes para interpretar correctamente los registros de facturación).

Lo que no tengo claro es si entre los dos eventos 02 y 03, es decir durante el periodo de tiempo que ha funcionado en modo Veri*factu, pueden o deben estar más registros de eventos.

Tampoco tengo claro si un sistema solo-Veri*factu debe tener un registro de eventos con exactamente dos eventos (un 01 y un 02), correctamente encadenados y firmados. O incluso si estos dos registros pueden «venir de fábrica», por ejemplo creados por el programa de instalación inicial de la base de datos.

Pero los eventos están en versión 0.3 según la hoja de Excel, habrá aclaraciones ulteriores.

newtron 28-12-2023 11:54:08

Hola a tod@s.


Estoy echando un vistazo a esto y no me importa el fichero wsdl en mi Delphi 2007, a ver si alguien me puede dar luz. Hago lo siguiente:


- Inserto un objeto HTTPRIO
- Pulso en Component-Import WSDL

- Pongo la url del wsdl: https://prewww2.aeat.es/static_files...cturacion.wsdl
y pulso next-next-finish


Después de esto (que es lo que he hecho siempre para el tema sii si mal no recuerdo) me da este mensaje:





¿Alguien me puede decir por dónde van los tiros?


Gracias y un saludo.

antoine0 28-12-2023 12:01:09

husos horarios
 
En las descripciones de mensajes veo que están previstos husos horarios, con exactamente 3 posibilidades: 01 (GMT, Canarias en invierno), 02 (CET/BST, península en invierno o Canarias en verano) y 03 (CEDT, península en verano); una codificación fuera de estándar, poco acertada y demasiado restrictiva, diría yo. Visto los ejemplos, es una cosa que han añadido después del 29/10 :cool: Es un campo obligatorio en la fecha-hora de generación del registro, con la descripción (en el Excel) siguiente
Cita:

Huso horario que está usando el sistema informático de facturación en el momento de generación del registro de facturación.
¿Hay una cosa parecida en alguno de los Ticket*BAI?

Neftali [Germán.Estévez] 28-12-2023 12:10:59

1 Archivos Adjunto(s)
Cita:

Empezado por newtron (Mensaje 553728)
- Inserto un objeto HTTPRIO
- Pulso en Component-Import WSDL
- Pongo la url del wsdl: https://prewww2.aeat.es/static_files...cturacion.wsdl
y pulso next-next-finish

Después de esto (que es lo que he hecho siempre para el tema sii si mal no recuerdo) me da este mensaje:
¿Alguien me puede decir por dónde van los tiros?


Yo lo he hecho con Delphi 11.3 y con la 10.2.3 y me ha funcionado sin problemas.

Adjunto las units generadas (por si sirve).

Neftali [Germán.Estévez] 28-12-2023 12:11:55

Aprovecho que se ha publicado documentación para actualizar el primer hilo del mensaje con los últimos cambios y documentos.

Además se ha habilitado una nueva sección dentro del FTP del club, donde se irán copiando/almacenando los documentos, para tenerla accesible en cualquier momento. No sólo tiene que ser documentación "oficial"; Si se cree conveniente que otros documentos, códigos o información pueden ser útiles, también se pueden incorporar (basta con que aviséis a algún moderador o a mi mismo).
https://terawiki.clubdelphi.com/Otro...LeyAntifraude/

Neftali [Germán.Estévez] 28-12-2023 12:42:54

Cita:

Empezado por antoine0 (Mensaje 553729)
En las descripciones de mensajes veo que están previstos husos horarios, con exactamente 3 posibilidades: 01 (GMT, Canarias en invierno), 02 (CET/BST, península en invierno o Canarias en verano) y 03 (CEDT, península en verano)
...
¿Hay una cosa parecida en alguno de los Ticket*BAI?


Que yo sepa y recuerde no.

nincillo 28-12-2023 13:10:25

Cita:

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


Estoy echando un vistazo a esto y no me importa el fichero wsdl en mi Delphi 2007, a ver si alguien me puede dar luz. Hago lo siguiente:


- Inserto un objeto HTTPRIO
- Pulso en Component-Import WSDL

- Pongo la url del wsdl: https://prewww2.aeat.es/static_files...cturacion.wsdl
y pulso next-next-finish


Después de esto (que es lo que he hecho siempre para el tema sii si mal no recuerdo) me da este mensaje:





¿Alguien me puede decir por dónde van los tiros?


Gracias y un saludo.

Hola, eso mismo ya lo comenté yo unos cuantos post más atrás. Te pongo link al primero de los post, pero luego seguí poniendo cosas según iba descubriendo cosas.

El link es: https://www.clubdelphi.com/foros/sho...&postcount=933

Creo que al final el motivo era porque las urls eran https, pero nadie me lo "confirmó/rebatió". A ver si ahora entre los dos lo conseguimos descifrar...

nincillo 28-12-2023 13:17:10

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 553731)
Yo lo he hecho con Delphi 11.3 y con la 10.2.3 y me ha funcionado sin problemas.

Adjunto las units generadas (por si sirve).

¿Al intentar compilar el proyecto a ti también te da un error que que las cadenas no pueden tener más de 255 caracteres o algo así?

Gracias.

newtron 28-12-2023 13:28:31

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 553731)
Yo lo he hecho con Delphi 11.3 y con la 10.2.3 y me ha funcionado sin problemas.

Adjunto las units generadas (por si sirve).


Gracias Germán, seguro que me vienen bien. Mi preocupación es que mi Delphi 10.1 no sea compatible o algo así y eso si que será un problema.


A ver si alguien que use esta versión me puede decir algo.


Gracias y un saludo.

Neftali [Germán.Estévez] 28-12-2023 13:30:16

Cita:

Empezado por nincillo (Mensaje 553735)
¿Al intentar compilar el proyecto a ti también te da un error que que las cadenas no pueden tener más de 255 caracteres o algo así?


Si, no había compilado el proyecto.
Con los archivos generados también me da ese error:

[dcc32 Error] SistemaFacturacion.pas(1599): E2056 String literals may have at most 255 elements

Simplemente edita el fichero SistemaFacturacion.pas y divide esa cadena en 2.
Es decir, donde hay algo como esto y falla:

Código Delphi [-]
 InvRegistry.RegisterMethodInfo(TypeInfo(sfSOAP), 'AltaFactuSistemaFacturacion', '',
                                 '[ReturnName="RespuestaLinea", RequestNS="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd", ResponseNS="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/RespuestaSuministro.xsd"]', IS_OPTN or IS_UNBD);

Pon esto:
Código Delphi [-]

 InvRegistry.RegisterMethodInfo(TypeInfo(sfSOAP), 'AltaFactuSistemaFacturacion', '',
      '[ReturnName="RespuestaLinea",  RequestNS="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/' + 
     'es/aeat/tike/cont/ws/SuministroLR.xsd",   ResponseNS="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplic' + 
     ' aciones/es/aeat/tike/cont/ws/RespuestaSuministro.xsd"]',  IS_OPTN or IS_UNBD);
Lo he partido en varios trozos para que se vea bien.

newtron 28-12-2023 13:30:23

Cita:

Empezado por nincillo (Mensaje 553734)
Hola, eso mismo ya lo comenté yo unos cuantos post más atrás. Te pongo link al primero de los post, pero luego seguí poniendo cosas según iba descubriendo cosas.

El link es: https://www.clubdelphi.com/foros/sho...&postcount=933

Creo que al final el motivo era porque las urls eran https, pero nadie me lo "confirmó/rebatió". A ver si ahora entre los dos lo conseguimos descifrar...


Pues no sé qué decirte pero me extrañaría que fuera por el https porque las de la aeat también lo son y ahí en su día no tuve grandes problemas aunque si es cierto que con las últimas versiones si que los he tenido.


Saludos.

nincillo 28-12-2023 13:44:26

Cita:

Empezado por newtron (Mensaje 553736)
Gracias Germán, seguro que me vienen bien. Mi preocupación es que mi Delphi 10.1 no sea compatible o algo así y eso si que será un problema.


A ver si alguien que use esta versión me puede decir algo.


Gracias y un saludo.

Me suena que ya lo intenté yo y si que hay incompatibilidades.

newtron 28-12-2023 14:04:54

Ok, se me ha ocurrido probar a importar el fichero desde un Delphi Berlin que tengo en un portátil y me ha funcionado correctamente por lo que deduzco que debe de ser un problema de mi Delphi local. Seguiré mirando a ver qué averiguo.


Gracias y un saludo.

nincillo 28-12-2023 15:21:44

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 553737)
Si, no había compilado el proyecto.
Con los archivos generados también me da ese error:

[dcc32 Error] SistemaFacturacion.pas(1599): E2056 String literals may have at most 255 elements

Simplemente edita el fichero SistemaFacturacion.pas y divide esa cadena en 2.
Es decir, donde hay algo como esto y falla:

Código Delphi [-]
 InvRegistry.RegisterMethodInfo(TypeInfo(sfSOAP), 'AltaFactuSistemaFacturacion', '',
                                 '[ReturnName="RespuestaLinea", RequestNS="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd", ResponseNS="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/RespuestaSuministro.xsd"]', IS_OPTN or IS_UNBD);

Pon esto:
Código Delphi [-]

 InvRegistry.RegisterMethodInfo(TypeInfo(sfSOAP), 'AltaFactuSistemaFacturacion', '',
      '[ReturnName="RespuestaLinea",  RequestNS="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/' + 
     'es/aeat/tike/cont/ws/SuministroLR.xsd",   ResponseNS="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplic' + 
     ' aciones/es/aeat/tike/cont/ws/RespuestaSuministro.xsd"]',  IS_OPTN or IS_UNBD);
Lo he partido en varios trozos para que se vea bien.

Si, gracias. Ya me había sugerido esa solución otro compañero en este mismo hilo

Era por asegurarme que siguiera pasando lo mismo.

Y el otro problema que tengo es con el elemento CABECERA, que como ya comenté anteriormente en éste hilo, no consigo acceder a él para meter los datos correspondientes. Sólo puedo meter el array con las facturas a enviar, pero seguro que al hacer el envío me lo darán para atrás por no tener la cabecera.
¿Será que se les ha olvidado definirlo?

ermendalenda 28-12-2023 15:27:16

Cita:

Empezado por antoine0 (Mensaje 553729)
En las descripciones de mensajes veo que están previstos husos horarios, con exactamente 3 posibilidades: 01 (GMT, Canarias en invierno), 02 (CET/BST, península en invierno o Canarias en verano) y 03 (CEDT, península en verano); una codificación fuera de estándar, poco acertada y demasiado restrictiva, diría yo. Visto los ejemplos, es una cosa que han añadido después del 29/10 :cool: Es un campo obligatorio en la fecha-hora de generación del registro, con la descripción (en el Excel) siguiente

¿Hay una cosa parecida en alguno de los Ticket*BAI?

Me podrias indicar donde has visto esas posibilidades, solo he enonctrado estas en el xsd y no hacen referencia a invierno, verano...


- <simpleType name="HusoHorarioGenRegistroType">
- <restriction base="string">
- <enumeration value="01">
- <annotation>
<documentation xml:lang="es">GMT+0</documentation>

</annotation>


</enumeration>


- <enumeration value="02">
- <annotation>
<documentation xml:lang="es">GMT+1</documentation>

</annotation>


</enumeration>


- <enumeration value="03">
- <annotation>
<documentation xml:lang="es">GMT+2</documentation>

</annotation>


</enumeration>


</restriction>


</simpleType>

Neftali [Germán.Estévez] 28-12-2023 15:46:55

Cita:

Empezado por nincillo (Mensaje 553742)
Y el otro problema que tengo es con el elemento CABECERA, que como ya comenté anteriormente en éste hilo, no consigo acceder a él para meter los datos correspondientes. Sólo puedo meter el array con las facturas a enviar, pero seguro que al hacer el envío me lo darán para atrás por no tener la cabecera.
¿Será que se les ha olvidado definirlo?


Según la unit que se genera al importar el WSDL no existe esa parte.
¿Exactamente cuando dices cabecera a qué te refieres?

He visto que en el EXCEL con los diseños de registro hay 3 de alta (DR=Diseño Registro):
  • DR Alta.VERIFACTU
  • DR Alta.Requerimiento
  • DR Alta.C-E
En los 2 primeros sí aparece una sección de Cabecera, pero no en el tercero.
¿?¿?¿?¿

Neftali [Germán.Estévez] 28-12-2023 16:06:57

1 Archivos Adjunto(s)
Cita:

Empezado por nincillo (Mensaje 553742)
Y el otro problema que tengo es con el elemento CABECERA, que como ya comenté anteriormente en éste hilo, no consigo acceder a él para meter los datos correspondientes. Sólo puedo meter el array con las facturas a enviar, pero seguro que al hacer el envío me lo darán para atrás por no tener la cabecera.
¿Será que se les ha olvidado definirlo?


Me respondo a mi mismo.
He descargado el XSD desde aquí.
Lo he subido al FTP junto al resto de la documentación.

Importándolo en un proyecto de Delphi (XML Data Binding) y con un poco de código:

Código Delphi [-]
procedure TForm3.Button2Click(Sender: TObject);
var
  fAlta:IXMLSistemaFacturacionAltaFact;
begin

  fAlta := NewFacturaAlta;
  fAlta.Cabecera.IDVersion := '1.0';
  fAlta.Cabecera.ObligadoEmision.NombreRazon := 'EMPRESA PRUEBAS';
  fAlta.Cabecera.ObligadoEmision.NIF := '11111111H';
  fAlta.Cabecera.TipoRegistroAEAT := 'S0';

  ...

  var sXML:string;
  fAlta.OwnerDocument.SaveToXML(sXML);
  Memo1.Lines.Text := sXML;

end;

Se genera la parte de la cabecera sin problemas...

Código PHP:

<?xml version="1.0"?>
<FacturaAlta xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
    <Cabecera>
        <IDVersion>1.0</IDVersion>
        <ObligadoEmision>
            <NombreRazon>EMPRESA PRUEBAS</NombreRazon>
            <NIF>11111111H</NIF>
        </ObligadoEmision>
        <TipoRegistroAEAT>S0</TipoRegistroAEAT>
    </Cabecera>
</FacturaAlta>

Os adjunto el fichero generado.

nincillo 28-12-2023 17:14:16

Yo en el ejemplo que estaba haciendo para comparar con el wsdl del SII tengo esto código Delphi:

Código:

procedure TForm2.Button1Click(Sender: TObject);
var
  LRfacturasEmitidas : SuministroLRFacturasEmitidas;
  LRFacturaEmitida0, LRFacturaEmitida1 : LRfacturasEmitidasType;
  result : RespuestaLRFacturasEmitidas;
  arrayFacturas : Array_Of_LRfacturasEmitidasType;

begin

  LRfacturasEmitidas := SuministroLRFacturasEmitidas.Create;
  LRfacturasEmitidas.Cabecera := CabeceraSii.Create;
    LRfacturasEmitidas.Cabecera.Titular := PersonaFisicaJuridicaESType.Create;
      LRfacturasEmitidas.Cabecera.Titular.NombreRazon := 'NombreRazon';
      LRfacturasEmitidas.Cabecera.Titular.NIF := '10855497A';


  // genero las diferentes facturas
  SetLength(arrayFacturas, 2);

  LRFacturaEmitida0 := LRfacturasEmitidasType.Create;
  LRFacturaEmitida0.PeriodoImpositivo := PeriodoImpositivo.Create;
    LRFacturaEmitida0.PeriodoImpositivo.Ejercicio := '23';
    LRFacturaEmitida0.PeriodoImpositivo.Periodo := TipoPeriodoType._02;
  arrayFacturas[0] := LRFacturaEmitida0;

  LRFacturaEmitida1 := LRfacturasEmitidasType.Create;
  LRFacturaEmitida1.PeriodoImpositivo := PeriodoImpositivo.Create;
    LRFacturaEmitida1.PeriodoImpositivo.Ejercicio := '24';
    //LRFacturaEmitida.PeriodoImpositivo.Periodo := TipoPeriodoType._01;
  arrayFacturas[1] := LRFacturaEmitida1;


  LRfacturasEmitidas.RegistroLRFacturasEmitidas := arrayFacturas;



    try

      result := GetsiiSOAP(false, 'https://prewww1.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP', HTTPRIO1).SuministroLRFacturasEmitidas(LRfacturasEmitidas);
      ShowMessage('Estado envio: ' + result.RespuestaLinea[0].DescripcionErrorRegistro);
    finally

    end;
end;

Y me funciona correctamente, y puedo acceder al LRfacturasEmitidas.Cabecera sin problema.

Sin embargo, el de VeriFactu no encuentro el equivalente al SuministroLRFacturasEmitidas del SII.

Estoy revisando el wsdl por dentro y me he dado cuenta de una cosa quizás puedas ser la causa de no encontrar lo que estoy buscando.

En la parte superior del wsdl aparece:
Código:

// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL    : https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl
//  >Import : https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl>0
//  >Import : https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SuministroInformacion.xsd
//  >Import : https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SuministroLR.xsd
//  >Import : https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/RespuestaSuministro.xsd
// Encoding : UTF-8
// Version  : 1.0
// (22/12/2023 10:00:16 - - $Rev: 112483 $)
// ************************************************************************ //

Mientras que luego en el resto del wsdl las urls siempre hacen referencia a: https://www2.agenciatributaria.gob.e.../tike/cont/ws/.... y resulta que esas páginas no existen a día de hoy. Podrá ser eso o estaré diciendo tonterías...

Si yo accedo a https://prewww2.aeat.es/static_files...nformacion.xsd hay si tengo un nodo CABECERA que quizás sea el que estoy buscando, pero el problema es que luego, en el resto del documento, la referencia se hace a: https://www2.agenciatributaria.gob.e...nformacion.xsd y esa url no funciona.

PD. Acabo de ver que mientras escribía mi post, @Neftali había editado el suyo, pero por si acaso pudiera servir de algo, lo posteo.

nincillo 28-12-2023 17:18:52

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 553745)
Me respondo a mi mismo.
He descargado el XSD desde aquí.
Lo he subido al FTP junto al resto de la documentación.

Importándolo en un proyecto de Delphi (XML Data Binding) y con un poco de código:

Código Delphi [-]
procedure TForm3.Button2Click(Sender: TObject);
var
  fAlta:IXMLSistemaFacturacionAltaFact;
begin

  fAlta := NewFacturaAlta;
  fAlta.Cabecera.IDVersion := '1.0';
  fAlta.Cabecera.ObligadoEmision.NombreRazon := 'EMPRESA PRUEBAS';
  fAlta.Cabecera.ObligadoEmision.NIF := '11111111H';
  fAlta.Cabecera.TipoRegistroAEAT := 'S0';

  ...

  var sXML:string;
  fAlta.OwnerDocument.SaveToXML(sXML);
  Memo1.Lines.Text := sXML;

end;

Se genera la parte de la cabecera sin problemas...

Código PHP:

<?xml version="1.0"?>
<FacturaAlta xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
    <Cabecera>
        <IDVersion>1.0</IDVersion>
        <ObligadoEmision>
            <NombreRazon>EMPRESA PRUEBAS</NombreRazon>
            <NIF>11111111H</NIF>
        </ObligadoEmision>
        <TipoRegistroAEAT>S0</TipoRegistroAEAT>
    </Cabecera>
</FacturaAlta>

Os adjunto el fichero generado.

Ante todo, muchas gracias por tu paciencia.
Esto a base de pegarme cabezazos todo el fin de semana, ya lo había conseguido encontrar, pero entonces me atascaba en el momento de querer hacer el envío, ya que en el método GetsfSOAP requiere que sea un objeto de tipo Array_Of_RespuestaExpedidaType y no se como "calzarle" el cabecera.

Código:

try
    SetLength(arrayFacturas, 1);
    arrayFacturas[0] := regFactura;
    result := GetsfSOAP(true, '', HTTPRIO1).AltaFactuSistemaFacturacion(ArrayFacturas);


newtron 28-12-2023 17:40:58

Germán.


Sigo tus instrucciones del XML Data Binding pero solo me genera dos archivos, uno .pas y otro .xdb. ¿El fichero .xsd cómo se genera?


Gracias y un saludo.

Neftali [Germán.Estévez] 28-12-2023 17:53:04

1 Archivos Adjunto(s)
Cita:

Empezado por newtron (Mensaje 553749)
Sigo tus instrucciones del XML Data Binding pero solo me genera dos archivos, uno .pas y otro .xdb. ¿El fichero .xsd cómo se genera?

El XSD es el fichero de esquema. Te lo deben dar.
Se descarga desde aquí y lo he copiado aquí en el FTP.

nincillo 28-12-2023 17:54:09

Cita:

Empezado por newtron (Mensaje 553749)
Germán.


Sigo tus instrucciones del XML Data Binding pero solo me genera dos archivos, uno .pas y otro .xdb. ¿El fichero .xsd cómo se genera?


Gracias y un saludo.

El .xsd, que yo sepa, como mucho lo tendrás que guardar una vez abierto en el navegador. ¿Te refieres a eso?

newtron 28-12-2023 18:13:13

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 553750)
El XSD es el fichero de esquema. Te lo deben dar.
Se descarga desde aquí y lo he copiado aquí en el FTP.


Gracias Germán.



Cita:

Empezado por nincillo (Mensaje 553751)
El .xsd, que yo sepa, como mucho lo tendrás que guardar una vez abierto en el navegador. ¿Te refieres a eso?


Efectivamente. Entiendo que el fichero .xsd solo se usa para generar el .pas


Seguimos probando.


Gracias a los dos.

Neftali [Germán.Estévez] 28-12-2023 18:44:20

El problema con el que me he topado yo es que falta la URL del servicio.
Cuando se importa el WSDL, en la función principal hay estos datos:
Código Delphi [-]

function GetsfSOAP(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): sfSOAP;
const
  defWSDL = 'https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl';

  defURL  = 'xxxxxxxxxx';    <==================================

  defSvc  = 'sfService';
  defPrt  = 'SistemaFacturacion';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin

¿Se me escapa algo o nos quedamos aquí parados?

nincillo 28-12-2023 19:10:57

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 553754)
El problema con el que me he topado yo es que falta la URL del servicio.
Cuando se importa el WSDL, en la función principal hay estos datos:
Código Delphi [-]

function GetsfSOAP(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): sfSOAP;
const
  defWSDL = 'https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl';

  defURL  = 'xxxxxxxxxx';    <==================================

  defSvc  = 'sfService';
  defPrt  = 'SistemaFacturacion';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin

¿Se me escapa algo o nos quedamos aquí parados?

En lo que a pruebas "reales" de envío se trata, me temo que sí.

Yo lo que estoy es generando el xml en el evento HTTPRIO1BeforeExecute para ver lo que estoy enviando y ahi es donde me temo que falta el famoso <cabecera>
Código:

procedure TForm2.HTTPRIO1BeforeExecute(const MethodName: string;
  SOAPRequest: TStream);
var
  sTmp                                  : TStringList;
  nFile : string;
begin

  sTmp:=TStringList.Create;
  SOAPRequest.Position := 0;
  sTmp.LoadFromStream(SOAPRequest);
  nFile := ExtractFilePath(Application.ExeName) + 'VeriFactu_PeticionEnviada.xml';
  sTmp.SaveToFile(nFile);
  WebBrowser1.Navigate(nFile);
  //sTmp.SaveToStream(SOAPRequest);
  // blaa blaa...
end;

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>
<AltaFactuSistemaFacturacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd">
<RegistroAltaFacturas>
<RegistroFacturacion>
...
</RegistroFacturacion>
<DatosControl>
<Huella xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">HUella</Huella>
<TipoHash xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">01</TipoHash>
<Incidencia xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">N</Incidencia>
</DatosControl>
</RegistroAltaFacturas>
</AltaFactuSistemaFacturacion>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


antoine0 29-12-2023 11:17:23

Cita:

Empezado por ermendalenda (Mensaje 553743)
Me podrias indicar donde has visto esas posibilidades, solo he enonctrado estas en el xsd y no hacen referencia a invierno, verano...

tldr: es interpretación mía.
Son las tres posibilidades traducidas al castellano y a las abreviaciones usuales; GMT+0 es el huso horario GMT (Greenwich Mean Time) de Gran Bretaña y Canarias en invierno; GMT+1 es el huso horario del horario de verano en Gran Bretaña (BST, British Summer Time) y en Canarias, y también es el horario de invierno en el continente (CET, Continental o Central Europe Time) y entonces de la península (menos Portugal); y GMT+2 es el horario de verano en el continente (CEDT, Continental o Central Europe Daylight Time).
Todo esto, pendiente de posible cambios legislativos en las alternancias en los horarios de verano, por tanto es un poco mejor quedarse con GMT+x que poner «horario de invierno».

Sin embargo, el problema lo veo en las exportaciones, donde hay dos fechas distintas pero tal como se ve en el registro de eventos solo hay un huso horario; y me teme que habrá cosas “interesantes” cuando el periodo será los meses de marzo (sobrará una hora del 1 de abril) u octubre (faltará una hora al final del mes)... :rolleyes:

newtron 29-12-2023 13:46:16

Hola a tod@s.


Dándole vueltas a este tema se me ocurren mil problemas que vamos a tener a la hora de enviar los datos y uno de ellos es que el NIF y nombre del cliente sean válidos. Imagino que si se intenta subir una factura con un nif erróneo el servidor chillará y la devolverá como no válida y a partir de ahí no sé cómo actuar, sobre todo si el cliente ya no está y no hay forma de comprobar y corregir ese dato.


Se puede hacer una consulta mediante webservice para confirmar que el nif+nombre es correcto pero estoy pensando en que se necesita hacer la llamada con un certificado válido y me temo que los clientes no van a instalar certificados en todos los posibles terminales de la red y que usen el programa. ¿Qué se os ocurre al respecto? porque ando un poco perdido con este asunto.


Gracias y un saludo.

ermendalenda 29-12-2023 13:58:42

Cita:

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


Dándole vueltas a este tema se me ocurren mil problemas que vamos a tener a la hora de enviar los datos y uno de ellos es que el NIF y nombre del cliente sean válidos. Imagino que si se intenta subir una factura con un nif erróneo el servidor chillará y la devolverá como no válida y a partir de ahí no sé cómo actuar, sobre todo si el cliente ya no está y no hay forma de comprobar y corregir ese dato.


Se puede hacer una consulta mediante webservice para confirmar que el nif+nombre es correcto pero estoy pensando en que se necesita hacer la llamada con un certificado válido y me temo que los clientes no van a instalar certificados en todos los posibles terminales de la red y que usen el programa. ¿Qué se os ocurre al respecto? porque ando un poco perdido con este asunto.


Gracias y un saludo.

Hola
Va a haber varios escenarios. Nif, nie, cifs..
Los códigos de identificacion españoles tienen algoritmo de comprobación y son verificables, como bien dices por webservice con un certificado, los extranjeros se los comen todos si los ponen en id_otro
Por tanto, si no instalas un certificado, que además esté vigente, sólo puedes comprobar con el algoritmo y además te pueden decir nombres erroneos, es muy frecuente en los autonomos ypor erro4, que el cliente te de un nombre xomerxial de empresa con un cif.
Que yo sepa, las verificaciones que suelen hacer es solo que el cif b
Nif(español) cumple el algoritmo(numero de caracteres y cálculo de letra/s)
Otra cosa es que hagan, posteriormente, comprobaciones, pero es raro que sancionen por eso.

ermendalenda 29-12-2023 14:02:46

Cita:

Empezado por antoine0 (Mensaje 553760)
tldr: es interpretación mía.
Son las tres posibilidades traducidas al castellano y a las abreviaciones usuales; GMT+0 es el huso horario GMT (Greenwich Mean Time) de Gran Bretaña y Canarias en invierno; GMT+1 es el huso horario del horario de verano en Gran Bretaña (BST, British Summer Time) y en Canarias, y también es el horario de invierno en el continente (CET, Continental o Central Europe Time) y entonces de la península (menos Portugal); y GMT+2 es el horario de verano en el continente (CEDT, Continental o Central Europe Daylight Time).
Todo esto, pendiente de posible cambios legislativos en las alternancias en los horarios de verano, por tanto es un poco mejor quedarse con GMT+x que poner «horario de invierno».

Sin embargo, el problema lo veo en las exportaciones, donde hay dos fechas distintas pero tal como se ve en el registro de eventos solo hay un huso horario; y me teme que habrá cosas “interesantes” cuando el periodo será los meses de marzo (sobrará una hora del 1 de abril) u octubre (faltará una hora al final del mes)... :rolleyes:

Yo veo que el uso horario de España, según interpreto, es el 2. No creo que tengan que ver las estaciones ni los cambios horarios de cada país.
Saludos

antoine0 29-12-2023 14:36:24

Cita:

Empezado por newtron (Mensaje 553763)
Dándole vueltas a este tema se me ocurren mil problemas que vamos a tener a la hora de enviar los datos y uno de ellos es que el NIF y nombre del cliente sean válidos. Imagino que si se intenta subir una factura con un nif erróneo el servidor chillará y la devolverá como no válida y a partir de ahí no sé cómo actuar, sobre todo si el cliente ya no está y no hay forma de comprobar y corregir ese dato.

Con el SII hemos tenido problemas parecidos y recuerdo (pero de esto hay años) algunas facturas han sido «parcialmente aceptadas» cuando el nombre del cliente no era lo que esperaba Hacienda. Me parece que el mecanismo prevé un caso parecido, dónde después de recibir esta respuesta de aceptación parcial, tienes más tiempo para ir a buscar el cliente y pedirle su nombre correcto, o alternativamente comprobar por ensayos sucesivos como está registrado exactamente en Hacienda usando el portal de Hacienda (nos ha pasado un par de veces con clientes del este de Asia donde el orden de los nombres y apellidos puede variar, luego era intentar varias combinaciones), luego registrar un registro de corrección (tipo S1, alta sustitutiva) y pasarlo a Hacienda.
Creo que es la forma correcta de hacerlo; con la condición que Hacienda te acepte parcialmente el registro inicial.

De hecho, aparentemente con este mecanismo de alta sustitutiva se puede «cambiar» un montón de datos de la factura, tanto en el destinatario como en los importes. Mmmm.

antoine0 29-12-2023 15:35:54

¿Alguien sabe lo que hay que rellenar en el campo <FechaExpedicionFacturaRegistroAnterior> de tipo "fecha" para el primer registro?
He visto que los campos <NumSerieFacturaRegistroAnterior> y <HuellaRegistroAnterior> tienen tamaño mínima de 0 caracteres, por tanto pueden quedar vacíos para tal caso (que está identificado en el RDL, 10.1.ñ). Pero el tipo "fecha" solo acepta cadenas de 10 caracteres con dígitos y guiones, y debe haber algún valor mágico...

newtron 29-12-2023 16:44:51

Entiendo que estáis haciendo pruebas generando los registros aunque sin enviarlos.


¿Habéis averiguado algo en relación al registro de cabecera+lineas?


Saludos.

nincillo 29-12-2023 17:46:37

Cita:

Empezado por newtron (Mensaje 553769)
Entiendo que estáis haciendo pruebas generando los registros aunque sin enviarlos.


¿Habéis averiguado algo en relación al registro de cabecera+lineas?


Saludos.

He estado revisando pruebas de Agosto del 22 y en la versión 0,1 si que existía la cabecera.


La franja horaria es GMT +2. Ahora son las 22:03:06.

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