Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco (https://www.clubdelphi.com/foros/showthread.php?t=94264)

keys 12-02-2024 13:24:35

Gracias.

No me acordaba lo de que había que pasarlo a hexadecimal. Tampoco lo voy a cambiar mientras funcione el anterior, sólo era por tenerlo preparado por si algún día deja de funcionar el anterior. :rolleyes:

softtron 14-02-2024 00:50:46

Hola a todos, soy nuevo en el foro. Por circunstancias de la vida necesito aprender de vosotros para poder adaptar un software. Llevo semanas leyendo y probando. He aprendido mucho de vosotros, muchas gracias, pero me tropiezo con algunas dudas y me quedo estancado. Me veo obligado a preguntar. Me lleváis años de ventaja, pero quizás mis dudas sean compartidas por otros en mi situación a estas alturas. Voy a intentar desarrollar una interface en python para conseguir la adaptación que necesito. Entiendo que este es un foro enfocado principalmente a Delphi pero creo que las dudas y las soluciones adoptadas pueden servir para otros lenguajes.
Pues mi duda donde me quedo estancado es muy básica creo. A la hora de firmar el xml de una factura, no encuentro información detallada sobre que entra exactamente en el xml a firmar. He tomado para comenzar el ejemplo de factura en h ttp s://w eb. araba. eus que como todos sabréis comienza así:

<?xml version="1.0" encoding="UTF-8"?>
<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:xsi="h t t p://www .w3. org/2001/XMLSchema-instance" xsi:schemaLocation="ht tp://www w3. org/2001/XMLSchema ticketbai.xsd">
<Cabecera>
...
y entiendo que la factura termina en ... </HuellaTBAI>

luego en este xml de ejemplo ya se continua con <ds:Signature ... que creo haber entendido se trata ya de la firma que se añade.

Si hasta aquí lo he entendido bien, entonces busco y busco sobre como se genera el valor que hay unas líneas mas abajo
<ds:DigestValue>/j7C3YYEt9b1T0E4p6mUo9rtdiLxNXKnR6eKQB1KlSQ=</ds:DigestValue>
pero eso es lo que no encuentro
Duda 1: El primer caracter del xml que se debe incluir en la firma y el último, son <?xml version ... y ... </HuellaTBAI> los extremos?

Duda 2: Como no se exactamente si esos son los extremos del xml a firmar, no se si el codigo python que empleo funciona bien o no, los pasos que sigue el codigo es primero calcular el hash utilizando SHA-256, eso me da una cadena hexadecimal, que creo se debe firmar con la clave privada y luego codificar en base64 el hash firmado. Pero nunca consigo obtener el valor <ds:DigestValue>/j7C3YYEt9b1T0E4p6mUo9rtdiLxNXKnR6eKQB1KlSQ=</ds:DigestValue>, haga lo que haga obtengo otros.
Yo debería conseguir ese mismo valor de DigestValue tomando ese mismo ejemplo de factura xml, verdad?
Gracias a quien me lea y agradecería mucho un poco de luz en esto, no se si lo estoy entendiendo mal y no es así.

josevalle 14-02-2024 01:14:55

Hola:

El xml termina con: </T:TicketBai>

Y el programa de firma añade lo de signature, etc...

<Version>1.02</Version>
</Software>
</HuellaTBAI>
</T:TicketBai>

Yo tampoco utilizo Delphi, escribo el xml como fichero de texto, firmo con afirma, genero el Qr con Simplecodegenerator (freeware),
con base64 lo convierto y lo envio a la diputación con curl. Todo lo hago con bats. Lo tengo funcionando en Bizkaia y Alava.

Doc Corrupto 15-02-2024 14:21:43

Tengo una duda, si envio una factura a ticketbai y por el motivo que sea no obtengo respuesta (problema servidor, etc...) la factura queda entregada, de que manera puedo consultar si una factura se encuentra en ticketbai? Ya que puede ser que le de a enviar y de un error de que esa factura ya existe en el sistema. Hay algún endpoint para verificar el estado de una factura? Si no es asi, como gestionais esta parte?

Saludos

Neftali [Germán.Estévez] 15-02-2024 15:30:49

Cita:

Empezado por Doc Corrupto (Mensaje 554485)
si envio una factura a ticketbai y por el motivo que sea no obtengo respuesta (problema servidor, etc...) la factura queda entregada, de que manera puedo consultar si una factura se encuentra en ticketbai? Ya que puede ser que le de a enviar y de un error de que esa factura ya existe en el sistema. Hay algún endpoint para verificar el estado de una factura? Si no es asi, como gestionais esta parte?


Manualmente puedes hacerlo por ejemplo escaneando el QR o utilizando la web de consulta (ahora no recuerdo si todas la tienen).
De forma "automática" siempre puedes volver a enviarla y detectar el error de factura duplicada.
No hay que yo recuerde servicio de consulta.

tejano 15-02-2024 16:23:56

Fecha de expedicion y fecha de factura
 
Buenas tardes, no sé si sabéis responderme sobre estos temas de las fechas. Estamos recibiendo facturas de diferentes empresas de las haciendas forales y que creo que están haciendo lo que quieran con la fecha de expedición.

Creo que la fecha de expedición es lo que antiguamente llamábamos Fecha de factura y que esta debe ser siempre la fecha del día en la que hacemos la factura. Hemos recibido una factura con fecha de factura = 31/01/2024 y fecha de expedición = 02/02/2024.

Actualmente creo que solo existen 2 fechas, la fecha de expedición y la fecha del devengo, que es la fecha en la que nos devengamos el IVA. Puede haber otras fechas, pero sin demasiada importancia.

Si me lo podéis aclarar os lo agradezco.

Gracias

Doc Corrupto 15-02-2024 16:44:48

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 554486)
Manualmente puedes hacerlo por ejemplo escaneando el QR o utilizando la web de consulta (ahora no recuerdo si todas la tienen).
De forma "automática" siempre puedes volver a enviarla y detectar el error de factura duplicada.
No hay que yo recuerde servicio de consulta.

de forma automática no existe ningún endpoint no? :mad:

gracias por la respuesta ^\||/

tejano 15-02-2024 17:58:53

Cita:

Empezado por Doc Corrupto (Mensaje 554492)
de forma automática no existe ningún endpoint no? :mad:

gracias por la respuesta ^\||/

Yo cuando envío la factura, viene un fichero de respuesta y verifico ese fichero.

Si quieres ir un nivel por encima, en Vizcaya que es con la que trabajo, puedes hacer una consulta en la hacienda y verificar que existe ya ese documento.

Existe el capítulo de consulta de facturas. Nosotros lo utilizamos para "cuadrar" nuestro IVA, contabilidad y emisión de facturas entre la DFB y nuestros datos.

Saludos

Neftali [Germán.Estévez] 15-02-2024 18:07:06

Cita:

Empezado por tejano (Mensaje 554494)
en Vizcaya que es con la que trabajo, puedes hacer una consulta en la hacienda y verificar que existe ya ese documento.
Existe el capítulo de consulta de facturas.

El problema es que en los otros no.
Aquí como cada uno va por libre... :(

keys 16-02-2024 08:33:03

Cita:

Empezado por tejano (Mensaje 554488)
Buenas tardes, no sé si sabéis responderme sobre estos temas de las fechas. Estamos recibiendo facturas de diferentes empresas de las haciendas forales y que creo que están haciendo lo que quieran con la fecha de expedición.

Creo que la fecha de expedición es lo que antiguamente llamábamos Fecha de factura y que esta debe ser siempre la fecha del día en la que hacemos la factura. Hemos recibido una factura con fecha de factura = 31/01/2024 y fecha de expedición = 02/02/2024.

Actualmente creo que solo existen 2 fechas, la fecha de expedición y la fecha del devengo, que es la fecha en la que nos devengamos el IVA. Puede haber otras fechas, pero sin demasiada importancia.

Si me lo podéis aclarar os lo agradezco.

Gracias

Hola, sólo hay dos fechas. Fecha de expedición (Fecha en la que se emite la factura, día actual) y fecha de operación (Fecha de devengo), La fecha de devengo tiene que ser igual o inferior a la fecha de emisión de la facturas.

Me consta que hay aplicaciones que dejan poner en la fecha de expedición un día que no es el actual (el sistema se lo traga), pero eso no es correcto y no se sé si algún día les darán problema en Hacienda (tienen la fecha de firma). De hecho Alava ha incorporado un aviso (016) que indica si la fecha de expedición es anterior de la fecha del día.

Hacienda dice esto :
Cita:



¿Qué se debe indicar en los campos “Fecha expedición factura” y “Hora expedición factura”?

Se refiere a la fecha y hora de en la que se ha expedido la factura a través del sistema TicketBAI, independientemente de que en su caso no se haya generado la impresión física de la misma.


Sin cambios

¿Cuándo debe cumplimentarse el campo “Fecha operación”?

Deberá cumplimentarse el campo "Fecha operación" cuando la fecha de realización de la operación sea distinta a la fecha de expedición de la factura.

Ejemplo: la empresa "A" vende mercancías a otra empresa el 3 de julio de 2022, documentando la operación en factura de fecha 1 de agosto de 2022. En este caso, se consignará el campo "Fecha expedición factura" con valor 1 de agosto de 2022 y el campo “Fecha operación” con valor 3 de julio de 2022.



HerensugeBeltz 16-02-2024 08:44:40

Cita:

Empezado por tejano (Mensaje 554488)
Buenas tardes, no sé si sabéis responderme sobre estos temas de las fechas. Estamos recibiendo facturas de diferentes empresas de las haciendas forales y que creo que están haciendo lo que quieran con la fecha de expedición.

Creo que la fecha de expedición es lo que antiguamente llamábamos Fecha de factura y que esta debe ser siempre la fecha del día en la que hacemos la factura. Hemos recibido una factura con fecha de factura = 31/01/2024 y fecha de expedición = 02/02/2024.

Actualmente creo que solo existen 2 fechas, la fecha de expedición y la fecha del devengo, que es la fecha en la que nos devengamos el IVA. Puede haber otras fechas, pero sin demasiada importancia.

Si me lo podéis aclarar os lo agradezco.

Gracias

Debéis indicar como fecha de operación 31/01/2024 y como fecha de expedición 02/02/2024. En caso de existir una única fecha, esta sería la fecha de expedición y se asume misma fecha de operación.

Doc Corrupto 17-02-2024 00:26:58

Cita:

Empezado por tejano (Mensaje 554494)
Yo cuando envío la factura, viene un fichero de respuesta y verifico ese fichero.

Si quieres ir un nivel por encima, en Vizcaya que es con la que trabajo, puedes hacer una consulta en la hacienda y verificar que existe ya ese documento.

Existe el capítulo de consulta de facturas. Nosotros lo utilizamos para "cuadrar" nuestro IVA, contabilidad y emisión de facturas entre la DFB y nuestros datos.

Saludos

claro, me refiero a los casos en los que no se recibe la respuesta, nos ha pasado en algún caso aislado entre miles de facturas entregadas, el problema es que enviamos la petición, no recibimos la respuesta por el motivo que sea, fallo en servidores, o lo que sea, y claro al no recibir la respuesta nosotros en nuestro sistema no creamos la factura final para que se entienda, si la queremos volver a enviar, nos dice que esa factura ya existe.

No me entra en la cabeza que no tengan un endpoint para verificar el estado de una factura

edari 19-02-2024 10:45:37

Buenos días,


Conocéis alguna página que valide un código QR y te diga el nivel de corrección del error?


Gracias

Sistel 19-02-2024 11:18:43

Cita:

Empezado por edari (Mensaje 554524)
Conocéis alguna página que valide un código QR y te diga el nivel de corrección del error?

Hola,

Cualquier app para smartphone que escanee códigos QR, te permitirá conectar desde un QR de TicketBAI con la Hacienda Foral correspondiente para comprobar los datos de una factura.
Si no te conecta es probable que el QR sea incorrecto.

Respecto al nivel de corrección de error de un QR, puedes comprobarlo directamente a ojo, mirando la esquina inferior izquierda donde aparece ese dato mediante un sencillo sistema:
https://blog.qrstuff.com/general/qr-...ror-correction

Aunque también hay herramientas para extraer ése y otros datos de un QR:
https://developer.apple.com/document...codedescriptor
Mira en concreto el dato CIQRCodeDescriptor.ErrorCorrectionLevel

Saludos

edari 19-02-2024 12:12:23

Cita:

Empezado por Sistel (Mensaje 554525)
Hola,

Cualquier app para smartphone que escanee códigos QR, te permitirá conectar desde un QR de TicketBAI con la Hacienda Foral correspondiente para comprobar los datos de una factura.
Si no te conecta es probable que el QR sea incorrecto.

Respecto al nivel de corrección de error de un QR, puedes comprobarlo directamente a ojo, mirando la esquina inferior izquierda donde aparece ese dato mediante un sencillo sistema:
https://blog.qrstuff.com/general/qr-...ror-correction

Aunque también hay herramientas para extraer ése y otros datos de un QR:
https://developer.apple.com/document...codedescriptor
Mira en concreto el dato CIQRCodeDescriptor.ErrorCorrectionLevel

Saludos


Gracias ^\||/

softtron 19-02-2024 19:28:39

Curl para el envío a TicketBAI Álava
 
Cita:

Empezado por josevalle (Mensaje 554456)
Hola:

El xml termina con: </T:TicketBai>

Y el programa de firma añade lo de signature, etc...

<Version>1.02</Version>
</Software>
</HuellaTBAI>
</T:TicketBai>

Yo tampoco utilizo Delphi, escribo el xml como fichero de texto, firmo con afirma, genero el Qr con Simplecodegenerator (freeware),
con base64 lo convierto y lo envio a la diputación con curl. Todo lo hago con bats. Lo tengo funcionando en Bizkaia y Alava.

Muchas gracias josevalle, me has ayudado mucho. Se me abren otros caminos de desarrollo. He resuelto la firma con afirma, pero el curl para el envío parece que no lo genero bien. Puedes darnos un ejemplo de un curl montado para ver que puedo estar haciendo mal? No se si en el curl deben aparecer comillas " o comilla ' o no se usan.

softtron 20-02-2024 01:14:16

Cita:

Empezado por softtron (Mensaje 554537)
Muchas gracias josevalle, me has ayudado mucho. Se me abren otros caminos de desarrollo. He resuelto la firma con afirma, pero el curl para el envío parece que no lo genero bien. Puedes darnos un ejemplo de un curl montado para ver que puedo estar haciendo mal? No se si en el curl deben aparecer comillas " o comilla ' o no se usan.

He encontrado un ejemplo, pero aun no estoy totalmente seguro. ¿Una línea de comando Curl quedaría así para el envío a Álava?:

curl.exe --tlsv1.2 --data-binary "@c:\Efactura\Factura-Alava\factura1-signed.xml" --cert-type P12 --cert c:\Efactura\Certificado\softtron.pfx:123456789 -H "Content-Type: application/xml;charset=UTF8" -X POST htt ps ://pruebas-ticketbai.araba. eus/TicketBAI/v1/facturas/ -o c:\Efactura\respuesta.xml

Entre comillas " el archivo xml que se envía y el header. Pero en otros ejemplos Curl para otras haciendas forales las comillas se usan de forma diferente.

Si alguien me puede corroborar lo que es correcto, o confirmar lo que es erróneo, se lo agradezco.

edari 20-02-2024 08:58:02

Cita:

Empezado por softtron (Mensaje 554538)
He encontrado un ejemplo, pero aun no estoy totalmente seguro. ¿Una línea de comando Curl quedaría así para el envío a Álava?:

curl.exe --tlsv1.2 --data-binary "@c:\Efactura\Factura-Alava\factura1-signed.xml" --cert-type P12 --cert c:\Efactura\Certificado\softtron.pfx:123456789 -H "Content-Type: application/xml;charset=UTF8" -X POST htt ps ://pruebas-ticketbai.araba. eus/TicketBAI/v1/facturas/ -o c:\Efactura\respuesta.xml

Entre comillas " el archivo xml que se envía y el header. Pero en otros ejemplos Curl para otras haciendas forales las comillas se usan de forma diferente.

Si alguien me puede corroborar lo que es correcto, o confirmar lo que es erróneo, se lo agradezco.

Yo lo subo siempre con curl

curl.exe --tlsv1.2 --data-binary @\FICHERO.XML --cert-type P12 --cert CERTIFICADO:PASSWORD -H "Content-Type: application/xml;charset=UTF8" -X POST https://pruebas-ticketbai.araba.eus/...I/v1/facturas/ -o FICHERORESPUESTA.XML


^\||/

Neftali [Germán.Estévez] 20-02-2024 08:59:27

Cita:

Empezado por softtron (Mensaje 554537)
...pero el curl para el envío parece que no lo genero bien. Puedes darnos un ejemplo de un curl montado para ver que puedo estar haciendo mal? No se si en el curl deben aparecer comillas " o comilla ' o no se usan.

Recordar que en el segundo mensaje de este hilo, hay una recopilación de enlaces con con diferentes códigos, en diferentes lenguajes, para las diferentes operaciones.
Ahí hay varias referencias a códigos de envío con CURL.

josevalle 21-02-2024 18:20:28

Cita:

Empezado por softtron (Mensaje 554538)
He encontrado un ejemplo, pero aun no estoy totalmente seguro. ¿Una línea de comando Curl quedaría así para el envío a Álava?:

curl.exe --tlsv1.2 --data-binary "@c:\Efactura\Factura-Alava\factura1-signed.xml" --cert-type P12 --cert c:\Efactura\Certificado\softtron.pfx:123456789 -H "Content-Type: application/xml;charset=UTF8" -X POST htt ps ://pruebas-ticketbai.araba. eus/TicketBAI/v1/facturas/ -o c:\Efactura\respuesta.xml

Entre comillas " el archivo xml que se envía y el header. Pero en otros ejemplos Curl para otras haciendas forales las comillas se usan de forma diferente.

Si alguien me puede corroborar lo que es correcto, o confirmar lo que es erróneo, se lo agradezco.

Hola: Yo fui probando con los ejemplos de este foro y cuando la respuesta fue correcta di por terminada la búsqueda.

j:\TbaiAlava\curl -X POST --connect-timeout 30 --data-binary "@j:\TbaiAlava\XML\Factura230014Fir.xml" -o "j:\TbaiAlava\XML\RespTbaiFactura230014.xml" --cert-type P12 --cert SOLDISP_2CE25029TG_CERT.p12:999999 -H "Content-Type: application/xml;charset=UTF-8" https://pruebas-ticketbai.araba.eus/...I/v1/facturas/

Es muy parecido a lo que tu dices.


La franja horaria es GMT +2. Ahora son las 22:31:56.

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