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)

batuzail 15-07-2021 12:43:09

Cita:

Empezado por Galaxian (Mensaje 541830)
Ten en cuenta que ese error también lo puede ocasionar un problema en el XML. Echa un vistazo a los encabezados de la respuesta. A mí, en una ocasión, me dijo tan claro lo que pasaba que no me lo creía.

Gracias Glaxian, el error era por el nombre del cliente que contenia un acento :-(, limpiando acentos y otros carácteres me ha funcionado con Chilckat

Galaxian 15-07-2021 12:51:42

Cita:

Empezado por batuzail (Mensaje 541824)
:mad::mad::mad::mad::mad: El error era pq el nombre del cliente tenía un acento. ya podia ir probando cosas



Saludos

Precisamente para eso sirve la conversión a UTF8. Si algo con acentos lo conviertes a UTF8 antes de firmar no hay problemas.

Neftali [Germán.Estévez] 15-07-2021 12:56:44

Cita:

Empezado por batuzail (Mensaje 541827)
Alguna función para calcular el CRC8 para VB6?


Revisa mensajes anteriores del hilo. Hay varios códigos en varios lenguajes.
Si no también tienes una DLL que puedes llamarla para calcularlo.
Es este mensaje concretamente: http://clubdelphi.com/foros/showpost...&postcount=606

Eric Mtz 15-07-2021 13:19:42

Socorro
 
AYUDA: Necesito a alguien que haya logrado cruzar el corredor de Kessel en menos de 12 parsecs.
Estoy seriamente desesperado así que intentaré documentar mi situación lo mejor que pueda.

Estoy pausado con el envío del 140 de BATUZ desde hace una maldita eternidad, he visto lunas pasar sin lograr avances, así que recurro a vosotros para mendigar un poco de sensatez.

Os pongo en situación, hace ya un tiempo que he logrado realizar envíos exitosos a BATUZ con el modelo 240, así que todo el tema pre-envío de construir, almacenar, encadenar, comprimir, parsear y todas las gilipolleces que se les han podido ocurrido a batuz están correctamente implementadas.

El tema es que adapté las clases relacionadas con el 240 al 140, eso incluye la clase donde van insertadas las facturas, la cabecera del propio envío y hasta la clase a la que parseo la respuesta. Pues aún así y tras decenas de comprobaciones me devuelve un “Error 505” vamos que el servidor me manda a freír puñetas sin mirar tan siquiera el contenido del envío.

Supongo que detecta algo mal dentro de la propia solicitud pero de verdad que ya no sé que hacer, a mi juicio solo hay dos cosas que juegan un papel importante a la hora de ser rechazados por el servidor (¡Ojo! rechazados, ni siquiera devuelto con errores) una es el certificado y la otra es la información de la cabecera del envío.

CABECERA:
Lo único que cambié en la cabecera frente al 240 es el campo de "eus-bizkaia-n3-data" que tal y como indican en la documentación les he añadido el nombre y los apellidos.
(Creo que sobra decirlo pero en las pruebas uso datos reales)

Código:

request.Headers["Accept-Encoding"] = "gzip";
request.Headers["Content-Encoding"] = "gzip";
request.ContentType = "application/octet-stream";
request.Headers["eus-bizkaia-n3-version"] = "1.0";
request.Headers["eus-bizkaia-n3-content-type"] = "application/xml";
request.Headers["eus-bizkaia-n3-data"] = "{\"con\": \"LROE\", \"apa\": \"1.1\", \"inte\": {\"nif\": \"00000000N\",\"nrs\":\"Perico\",\"ap1\": \"De los\",\"ap2\": \"Palotes\"},\"drs\": {\"mode\": \"140\",\"ejer\": \"2021\"}}";

CERTIFICADO:
Preparaos que vienen curvas, probé con varios DNIs electrónicos, de autónomos y todo por si acaso fuera ese el error, solicité mi propio certificado de persona física y hasta con los certificados de pruebas que me han recomendado en éste foro, TODOS ME HAN DEVUELTO "Error 505"!!

Ando perdidísimo, no se si el error está en el certificado o he insertado en algún momento el correcto y hay algún otro dato mal, o si BATUZ me tiene manía... Ya no sé nada, al menos con el 240 el servidor me decía cosas como "El modelo está mal introducido" o "Faltan datos en tal sitio" pero ahora me rechazan cual leproso sin mirarme ni a la cara, ayuda, estoy a un par de envíos incorrectos de enviar un mensaje a batuz... pero de esos con la cara encapuchada y la voz distorsionada.

thinkows 15-07-2021 13:46:33

Cita:

Empezado por batuzail (Mensaje 541827)
Alguna función para calcular el CRC8 para VB6?


Gracias

La función ....


Function TicketSI_CRC8(Huella As String)

Dim crc As Byte
Dim CRCtable1() As Variant
Dim i As Integer
Dim Data() As Byte
Dim Longitud As Integer

Data = StrConv(Huella, vbFromUnicode)
Longitud = UBound(Data()) + 1


crc = 0
CRCtable1 = Array( _
&H0, &H7, &HE, &H9, &H1C, &H1B, &H12, &H15, &H38, &H3F, &H36, &H31, &H24, &H23, &H2A, &H2D, &H70, &H77, &H7E, &H79, &H6C, &H6B, &H62, &H65, &H48, &H4F, &H46, &H41, &H54, &H53, &H5A, &H5D, _
&HE0, &HE7, &HEE, &HE9, &HFC, &HFB, &HF2, &HF5, &HD8, &HDF, &HD6, &HD1, &HC4, &HC3, &HCA, &HCD, &H90, &H97, &H9E, &H99, &H8C, &H8B, &H82, &H85, &HA8, &HAF, &HA6, &HA1, &HB4, &HB3, &HBA, &HBD, _
&HC7, &HC0, &HC9, &HCE, &HDB, &HDC, &HD5, &HD2, &HFF, &HF8, &HF1, &HF6, &HE3, &HE4, &HED, &HEA, &HB7, &HB0, &HB9, &HBE, &HAB, &HAC, &HA5, &HA2, &H8F, &H88, &H81, &H86, &H93, &H94, &H9D, &H9A, _
&H27, &H20, &H29, &H2E, &H3B, &H3C, &H35, &H32, &H1F, &H18, &H11, &H16, &H3, &H4, &HD, &HA, &H57, &H50, &H59, &H5E, &H4B, &H4C, &H45, &H42, &H6F, &H68, &H61, &H66, &H73, &H74, &H7D, &H7A, _
&H89, &H8E, &H87, &H80, &H95, &H92, &H9B, &H9C, &HB1, &HB6, &HBF, &HB8, &HAD, &HAA, &HA3, &HA4, &HF9, &HFE, &HF7, &HF0, &HE5, &HE2, &HEB, &HEC, &HC1, &HC6, &HCF, &HC8, &HDD, &HDA, &HD3, &HD4, _
&H69, &H6E, &H67, &H60, &H75, &H72, &H7B, &H7C, &H51, &H56, &H5F, &H58, &H4D, &H4A, &H43, &H44, &H19, &H1E, &H17, &H10, &H5, &H2, &HB, &HC, &H21, &H26, &H2F, &H28, &H3D, &H3A, &H33, &H34, _
&H4E, &H49, &H40, &H47, &H52, &H55, &H5C, &H5B, &H76, &H71, &H78, &H7F, &H6A, &H6D, &H64, &H63, &H3E, &H39, &H30, &H37, &H22, &H25, &H2C, &H2B, &H6, &H1, &H8, &HF, &H1A, &H1D, &H14, &H13, _
&HAE, &HA9, &HA0, &HA7, &HB2, &HB5, &HBC, &HBB, &H96, &H91, &H98, &H9F, &H8A, &H8D, &H84, &H83, &HDE, &HD9, &HD0, &HD7, &HC2, &HC5, &HCC, &HCB, &HE6, &HE1, &HE8, &HEF, &HFA, &HFD, &HF4, &HF3 _
)

For i = 0 To Longitud - 1
crc = CRCtable1((crc Xor Data(i)) And &HFF)
Next

TicketSI_CRC8 = Format(crc And &HFF, "000")

End Function

thinkows 15-07-2021 13:50:21

D E L U J O
 
Cita:

Empezado por Galaxian (Mensaje 541809)
Las librerías Chilkat también tienen su propia clase REST. Aquí tiene un ejemplo en C++ que no debería costarte demasiado "trasplantarlo" a VB6:

NOTAS:
El JSON y el XML ya están creados y cargados en la variable string "jsn" y "xml" respectivamente.
El certificado en un objeto del tipo CkCert llamado "Certificado.
Para más claridad he quitado el control de errores.



Muy agradecido compañero!!!!

batuzail 15-07-2021 14:47:16

Cita:

Empezado por thinkows (Mensaje 541835)
La función ....


Function TicketSI_CRC8(Huella As String)

Dim crc As Byte
Dim CRCtable1() As Variant
Dim i As Integer
Dim Data() As Byte
Dim Longitud As Integer

Data = StrConv(Huella, vbFromUnicode)
Longitud = UBound(Data()) + 1


crc = 0
CRCtable1 = Array( _
&H0, &H7, &HE, &H9, &H1C, &H1B, &H12, &H15, &H38, &H3F, &H36, &H31, &H24, &H23, &H2A, &H2D, &H70, &H77, &H7E, &H79, &H6C, &H6B, &H62, &H65, &H48, &H4F, &H46, &H41, &H54, &H53, &H5A, &H5D, _
&HE0, &HE7, &HEE, &HE9, &HFC, &HFB, &HF2, &HF5, &HD8, &HDF, &HD6, &HD1, &HC4, &HC3, &HCA, &HCD, &H90, &H97, &H9E, &H99, &H8C, &H8B, &H82, &H85, &HA8, &HAF, &HA6, &HA1, &HB4, &HB3, &HBA, &HBD, _
&HC7, &HC0, &HC9, &HCE, &HDB, &HDC, &HD5, &HD2, &HFF, &HF8, &HF1, &HF6, &HE3, &HE4, &HED, &HEA, &HB7, &HB0, &HB9, &HBE, &HAB, &HAC, &HA5, &HA2, &H8F, &H88, &H81, &H86, &H93, &H94, &H9D, &H9A, _
&H27, &H20, &H29, &H2E, &H3B, &H3C, &H35, &H32, &H1F, &H18, &H11, &H16, &H3, &H4, &HD, &HA, &H57, &H50, &H59, &H5E, &H4B, &H4C, &H45, &H42, &H6F, &H68, &H61, &H66, &H73, &H74, &H7D, &H7A, _
&H89, &H8E, &H87, &H80, &H95, &H92, &H9B, &H9C, &HB1, &HB6, &HBF, &HB8, &HAD, &HAA, &HA3, &HA4, &HF9, &HFE, &HF7, &HF0, &HE5, &HE2, &HEB, &HEC, &HC1, &HC6, &HCF, &HC8, &HDD, &HDA, &HD3, &HD4, _
&H69, &H6E, &H67, &H60, &H75, &H72, &H7B, &H7C, &H51, &H56, &H5F, &H58, &H4D, &H4A, &H43, &H44, &H19, &H1E, &H17, &H10, &H5, &H2, &HB, &HC, &H21, &H26, &H2F, &H28, &H3D, &H3A, &H33, &H34, _
&H4E, &H49, &H40, &H47, &H52, &H55, &H5C, &H5B, &H76, &H71, &H78, &H7F, &H6A, &H6D, &H64, &H63, &H3E, &H39, &H30, &H37, &H22, &H25, &H2C, &H2B, &H6, &H1, &H8, &HF, &H1A, &H1D, &H14, &H13, _
&HAE, &HA9, &HA0, &HA7, &HB2, &HB5, &HBC, &HBB, &H96, &H91, &H98, &H9F, &H8A, &H8D, &H84, &H83, &HDE, &HD9, &HD0, &HD7, &HC2, &HC5, &HCC, &HCB, &HE6, &HE1, &HE8, &HEF, &HFA, &HFD, &HF4, &HF3 _
)

For i = 0 To Longitud - 1
crc = CRCtable1((crc Xor Data(i)) And &HFF)
Next

TicketSI_CRC8 = Format(crc And &HFF, "000")

End Function




Gracias ^\||/, ya latenía casi hecha, estaba teniendo algún problema al intentar usar &HFFF,

rci 16-07-2021 11:26:28

Nuevo servicio SUBSANAR en julio
 
Buenas, antes de irme de vacaciones e intentar olvidarme de ticketBAI hasta la vuelta, os comunico que desde Gipuzkoa me han contestado esto:


Cita:

Egun on, Buenos días

Para los casos en los que se requiera enviar la misma factura con modificaciones, está previsto que a lo largo de julio se publique la especificación de un servicio que servirá para este propósito, junto con la normativa que explicará en qué casos es admisible esta modificación.

Un saludo,
Saludos y muchas gracias a todos.


Que os vayan bien las vacaciones cuando las hagáis!:D

ARPE1 16-07-2021 11:36:17

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 540603)
Nosotros hemos tenido este error.
Es debido (al menos en nuetro caso) a problemas en la codificación.
Normalmente en el paso entre la firma del XML y el envío.

Revisad si el contenido de lo que habéis firmado (justo después de firmar) es lo mismo que estáis enviando. Sobre todo revisad si en la razón social o en alguno de las cadenas que enviáis hay caracteres extraños (con acentos, tildes,...).

A veces el resultado del envío lo grabamos en fichero o trabajamos con Streams y sin darnos cuenta la codificación cambia. Revisad entre UTF8, UTF8 BOM y ANSI.

Revisad por ejemplo si estáis utilizando Streams, que la clase TStream en la creación posee opciones de codificación.

Al final nosotros acabamos comparando el contenido en cada paso (Editor Hexadecimal) y nos dimos cuenta de que el character Ó (de la razón social) al realizar la firma con los SBB se estaba cambiando (cofidicación implícita).

NOTA: Ahora estoy probando con esta empresa... :cool::cool::D:D.

Hola, estamos intentando enviar el fichero a Guipúzcoa y no hay manera. La factura la graba en el sistema, ya que si volvemos a enviar el mismo fichero nos devuelve que ya está registrada. Pero la primera vez nos retorna error con el siguiente mensaje: "El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)"
Toda la pinta tiene que es por lo que indicas arriba ya que si enviamos el mismo fichero con la aplicación SOAPUI todo es correcto. Usamos los componentes INDY (versión 10.6) que trae delphi (versión 10.2) para hacer el envío. Al final ¿con qué componentes o de qué manera haces el envío para que no modifique el fichero en el proceso?

Gracias de antemano

Neftali [Germán.Estévez] 16-07-2021 11:46:33

Cita:

Empezado por ARPE1 (Mensaje 541852)
¿con qué componentes o de qué manera haces el envío para que no modifique el fichero en el proceso?

Aunque el mensaje diga eso, no te fies, no es que los componentes modifiquen el fichero en el envío.
Lo normal es que en algún punto del proceso, desde que generamos el fichero y lo firmamos, hasta que lo enviamos, sin querer estamos modficando la codificación.
A veces simplemente es al usar TStreams o grabar en disco y recuperar.

Revisad los pasos que estáis haciendo desde la firma hasta el envío y si en algún punto la codificación cambia, no porque lo hagáis expresamente, sino porque se esté haciendo sin daros cuenta.

En cuanto a los envíos en los mensajes del foro puedes ver que hay varios componentes que se están utilizando. En este mensaje tienes (en la parte inferior) un resumen de los diferentes componenetes que se usa para enviar:
https://www.clubdelphi.com/foros/sho...&postcount=436

* Opcion1: TNetHTTPClient
* Opción2: TRESTClient + TRESTRequest + TRESTResponse
* Opcion3: TsbxHTTPClient (SecureBlackBox)
* Opción4: Utilizando commandos CURL
* Opción5: Utilizando las Indy + OpenSSL
* ...

skatologiko 16-07-2021 12:08:46

¿Alguien puede poner un ejemplo de algún archivo XML de anulación?

ARPE1 16-07-2021 12:10:45

¡Qué rapidez! Gracias.

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 541853)
Lo normal es que en algún punto del proceso, desde que generamos el fichero y lo firmamos, hasta que lo enviamos, sin querer estamos modficando la codificación.
A veces simplemente es al usar TStreams o grabar en disco y recuperar.

Revisad los pasos que estáis haciendo desde la firma hasta el envío y si en algún punto la codificación cambia, no porque lo hagáis expresamente, sino porque se esté haciendo sin daros cuenta.

Hemos probado a enviar el fichero firmado generado directamente con funciones como:
Código Delphi [-]
IdHTTP1.Post(URL, SourceFile, ResponseStream);
o esta
Código Delphi [-]
sbxHTTPClient1.PostFile(URL, FileName);

En teoría así evitamos lo que comentas de cambio de codificaciones al cargar el fichero con Streams y compañía. El resultado es el mismo. Lo sorprendente es que si ese fichero lo enviamos con el programa SoapUI lo acepta sin problemas. Hemos "intentado" crear un LOG con los datos que se envían y comparado byte a byte con el nuestro y son idénticos.

Cita:

En cuanto a los envíos en los mensajes del foro puedes ver que hay varios componentes que se están utilizando. En este mensaje tienes (en la parte inferior) un resumen de los diferentes componenetes que se usa para enviar:
https://www.clubdelphi.com/foros/sho...&postcount=436
Hemos probado todas las opciones y no hay manera, cada una nos falla en un punto diferente. Con la que más hemos conseguido es con las INDY del propio Delphi.

Gracias de nuevo de antemano.

b4aronDeLaBirr4 16-07-2021 12:22:01

Al no haber empezado con Batuz pues lo único que pruebes con el "sello_entidad_act.p12" de desarrollo de Izenpe (link) porque no te puedo ayudar con mucho más sorry...

tejano 16-07-2021 13:24:32

1 Archivos Adjunto(s)
Cita:

Empezado por skatologiko (Mensaje 541854)
¿Alguien puede poner un ejemplo de algún archivo XML de anulación?

Es un proceso algo similar a la emisión, crear la cabecera, codificar el xml del archivo ticketbai de la emisión en base 64, comprimirlo en gz y enviar la anulación.

sEngine 16-07-2021 13:27:42

Asegurate de enviarlo asi



Código Delphi [-]
idhttp1.Request.ContentType := 'application/xml; charset=utf-8"';


Cita:

Empezado por ARPE1 (Mensaje 541855)
¡Qué rapidez! Gracias.


Hemos probado a enviar el fichero firmado generado directamente con funciones como:
Código Delphi [-]IdHTTP1.Post(URL, SourceFile, ResponseStream);

o esta
Código Delphi [-]sbxHTTPClient1.PostFile(URL, FileName);


En teoría así evitamos lo que comentas de cambio de codificaciones al cargar el fichero con Streams y compañía. El resultado es el mismo. Lo sorprendente es que si ese fichero lo enviamos con el programa SoapUI lo acepta sin problemas. Hemos "intentado" crear un LOG con los datos que se envían y comparado byte a byte con el nuestro y son idénticos.


Hemos probado todas las opciones y no hay manera, cada una nos falla en un punto diferente. Con la que más hemos conseguido es con las INDY del propio Delphi.

Gracias de nuevo de antemano.


tejano 16-07-2021 13:34:31

1 Archivos Adjunto(s)
Cita:

Empezado por tejano (Mensaje 541857)
Es un proceso algo similar a la emisión, crear la cabecera, codificar el xml del archivo ticketbai de la emisión en base 64, comprimirlo en gz y enviar la anulación.

Perdona, se me olvidaba el fichero de anulación, esta firmado, hay que firmarlo al igual que el de la emisión.

Neftali [Germán.Estévez] 16-07-2021 13:54:16

1 Archivos Adjunto(s)
Cita:

Empezado por skatologiko (Mensaje 541854)
¿Alguien puede poner un ejemplo de algún archivo XML de anulación?


En los ejemplos de Batuz creo que tienes varios XML de anulación. Los ficheros enviados y las diferentes respuestas, tanto para TicketBAI como para Batuz.
https://www.batuz.eus/fitxategiak/Ba...os/Ejemplos.7z

ARPE1 16-07-2021 13:55:51

Sí, así lo tenemos pero no hay manera.

Código Delphi [-]
   ... 
    wXML := 'prueba.xsig';
    wURL := 'https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta';
    idhttp1.Request.ContentType := 'application/xml; charset=utf-8';
    IdHTTP1.Request.BasicAuthentication := False;
    wCer := 'CERT_TEST.pfx';
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile := wCer;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile  := wCer;

    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode   := sslmClient;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1_2; // sslvSSLv23; //sslvTLSv1_1;
    wML.Position := 0;
    Try
      IdHTTP1.Post(wURL, wXML, wMR);
      wMR.Position := 0;
      memo1.Lines.LoadFromStream(wMR, TEncoding.UTF8);
      label1.Caption := IntToStr(IdHTTP1.Response.ResponseCode) + ': ' + IdHTTP1.Response.ResponseText;
    Except
      On E:Exception do
        memo1.Lines.Add(E.Message);
    End;

Gracias por la respuesta.

batuzail 19-07-2021 08:03:04

Cita:

Empezado por ARPE1 (Mensaje 541861)
Sí, así lo tenemos pero no hay manera.

Código Delphi [-] ... wXML := 'prueba.xsig'; wURL := 'https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta'; idhttp1.Request.ContentType := 'application/xml; charset=utf-8'; IdHTTP1.Request.BasicAuthentication := False; wCer := 'CERT_TEST.pfx'; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile := wCer; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile := wCer; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmClient; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1_2; // sslvSSLv23; //sslvTLSv1_1; wML.Position := 0; Try IdHTTP1.Post(wURL, wXML, wMR); wMR.Position := 0; memo1.Lines.LoadFromStream(wMR, TEncoding.UTF8); label1.Caption := IntToStr(IdHTTP1.Response.ResponseCode) + ': ' + IdHTTP1.Response.ResponseText; Except On E:Exception do memo1.Lines.Add(E.Message); End;


Gracias por la respuesta.

Hola, a mi me pasaba lo mismo me volví loco con la codificación utf-8, al final el problema era que el nombre del cliente tenía un acento, limpia de carácteres un poco raros todos los strings y prueba, yo tras hacer eso puedo enviar sin problema.


Suerte

ARPE1 19-07-2021 08:14:37

Hola, ya hemos revisado eso también y efectivamente el acento lo tiene la propia firma ("CN=AC Representación") y no somos capaces de quitarlo ya que si lo hacemos entonces salta que el certificado ha sido modificado. Lo hemos intentado limpiar en el evento OnFormatText del componente TElXMLSigner de SecureBlackBox, sin resultado. De hecho por eso empezamos esta pregunta citando el caso de Neftali ya que no solo lo resolvió si no que está probando con una empresa llamada "áéíóúÁÉÍÓÚÜçÇñÑ€~#@". ¡Tela! :)

Un saludo y gracias por las respuestas.

Galaxian 19-07-2021 08:51:50

Cita:

Empezado por batuzail (Mensaje 541890)
Hola, a mi me pasaba lo mismo me volví loco con la codificación utf-8, al final el problema era que el nombre del cliente tenía un acento, limpia de carácteres un poco raros todos los strings y prueba, yo tras hacer eso puedo enviar sin problema.

Cita:

Empezado por ARPE1 (Mensaje 541891)
Hola, ya hemos revisado eso también y efectivamente el acento lo tiene la propia firma ("CN=AC Representación") y no somos capaces de quitarlo ya que si lo hacemos entonces salta que el certificado ha sido modificado. Lo hemos intentado limpiar en el evento OnFormatText del componente TElXMLSigner de SecureBlackBox, sin resultado. De hecho por eso empezamos esta pregunta citando el caso de Neftali ya que no solo lo resolvió si no que está probando con una empresa llamada "áéíóúÁÉÍÓÚÜçÇñÑ€~#@". ¡Tela! :)

Los dos casos se resuelven codificando el XML de ANSI a UTF8 ANTES de firmarlo. He hecho multitud de pruebas y todas han sido aceptadas. Es más, varios de mis clientes que ya están haciendo las "pruebas de campo" tienen, a su vez, clientes cuyo nombre contiene acentos y/o eñes y ningún problema.

ARPE1 19-07-2021 10:09:02

Cita:

Empezado por Galaxian (Mensaje 541892)
Los dos casos se resuelven codificando el XML de ANSI a UTF8 ANTES de firmarlo. He hecho multitud de pruebas y todas han sido aceptadas. Es más, varios de mis clientes que ya están haciendo las "pruebas de campo" tienen, a su vez, clientes cuyo nombre contiene acentos y/o eñes y ningún problema.

Hola y muchas gracias por la respuesta. He llegado a un momento en el que dudo de todo, así que creo que eso también lo he probado. Entre otras formas de esta, ya no sé si será correcta o no:

Código Delphi [-]
  slXML := TStringList.Create;
  Try
    slXML.LoadFromFile('test_TBAI.xml');
    slXML.SaveToFile('test_TBAI_utf8.xml', TEncoding.UTF8);
  Finally
    slXML.Free;
  end;

Haciendo ese paso previo (también probado con la clase "TUTF8NoBOMEncoding" que indicaba un delphiano de este mismo foro) la respuesta es:

Código:

<Codigo>002</Codigo>
<Descripcion>Error: El fichero de alta TicketBAI no cumple el esquema XSD. No se ha podido procesar el mensaje. Detalle del error: Content is not allowed in prolog.</Descripcion>

Un saludo

Noe277 19-07-2021 11:46:31

Cita:

Empezado por ARPE1 (Mensaje 541893)
Hola y muchas gracias por la respuesta. He llegado a un momento en el que dudo de todo, así que creo que eso también lo he probado. Entre otras formas de esta, ya no sé si será correcta o no:

Código Delphi [-]
  slXML := TStringList.Create;
  Try
    slXML.LoadFromFile('test_TBAI.xml');
    slXML.SaveToFile('test_TBAI_utf8.xml', TEncoding.UTF8);
  Finally
    slXML.Free;
  end;

Haciendo ese paso previo (también probado con la clase "TUTF8NoBOMEncoding" que indicaba un delphiano de este mismo foro) la respuesta es:

Código:

<Codigo>002</Codigo>
<Descripcion>Error: El fichero de alta TicketBAI no cumple el esquema XSD. No se ha podido procesar el mensaje. Detalle del error: Content is not allowed in prolog.</Descripcion>

Un saludo

Da igual que lo intentes codificar si tiene caracteres inválidos para la codificación te va a poner otra.
Es mejor que conviertas previamente los caracteres raros. Yo tenia problemas con esto porque lo genero lo guardo y luego lo vuelvo a leer y en ese me momento me cambia la codificación como tenga cosas raras.



Código:

  'Ñ ñ
    Texto = Replace(Texto, "Ñ", "Ñ")
    Texto = Replace(Texto, "ñ", "ñ")
   
    'Á á
    Texto = Replace(Texto, "Á", "Ã")
    Texto = Replace(Texto, "á", "á")
   
    'É é
    Texto = Replace(Texto, "É", "É")
    Texto = Replace(Texto, "é", "é")
   
    'Í í
    Texto = Replace(Texto, "Í", "Ã")
    Texto = Replace(Texto, "í", "Ã*")
   
    'Ó ó
    Texto = Replace(Texto, "Ó", "Ó")
    Texto = Replace(Texto, "ó", "ó")
   
    'Ú ú
    Texto = Replace(Texto, "Ú", "Ú")
    Texto = Replace(Texto, "ú", "ú")
   
    'Ü ü
    Texto = Replace(Texto, "Ü", "Ü")
    Texto = Replace(Texto, "ü", "ü")
   
    'ª
    Texto = Replace(Texto, "ª", "ª")
   
    'º
    Texto = Replace(Texto, "º", "º")
   
       
   
    '&
    Texto = Replace(Texto, "&", "&amp;")
   
    Texto = Replace(Texto, "ç", "ç")
    Texto = Replace(Texto, "Ç", "Ç")
   
    'ö
    Texto = Replace(Texto, "ö", "ö")
    Texto = Replace(Texto, "Ö", "Ö")
   
   
    Texto = Replace(Texto, "´", "´")


NVS 19-07-2021 11:59:48

QR en CR8.5
 
Cita:

Empezado por batuzail (Mensaje 541770)
Te recomiendo los componentes de Chilkat para generar los xml y para realizar el envío, lo estoy haciedo sobre VB6, y ya consigo enviar a Gipuzkoa, en Bizkaia me da error 400 y 415, creo que es algo de cabeceras que tendré que descubrir.
Yo uso CR8.5 y para generar el QR encontre un dll que lo genera y permite guardarlo como imagen, ya que la versión de CR no permite crear QR.


Si necesitas ayuda te puedo pasar ejemplos para el envío.


Saludos

Hola,

Yo también uso CR8.5 para los formatos de facturas, ¿¿¿me podrias decir cómo haces para meter el QR???

Muchas gracias!

keys 19-07-2021 12:29:21

Mi profecia se hace realidad. :D

https://web.bizkaia.eus/es/web/area-...%2Fes%2Finicio

Con permiso del moderador me cago en toooo

HerensugeBeltz 19-07-2021 12:49:15

Aplazamiento de Batuz (Bizkaia)
 
Acabo de recibir este correo:

Kaixo,

Aplazamiento en la obligatoriedad de Batuz y nuevos incentivos para su implantación voluntaria.

Tras recabar las aportaciones de colegios profesionales y asociaciones empresariales y de la asesoría fiscal, la Hacienda Foral considera conveniente flexibilizar el plazo establecido para la adopción obligatoria de Batuz, trasladándolo hasta el 1 de enero de 2024, y estableciendo una compensación de hasta el 15% en IRPF o Sociedades para los autónomos, microempresas y pymes que implanten Batuz en 2022 o 2023. Para más información pulse aquí.

Agur bat.

Neftali [Germán.Estévez] 19-07-2021 12:53:19

Cita:

Empezado por keys (Mensaje 541896)
Con permiso del moderador me cago en toooo

Permiso concedido.

b4aronDeLaBirr4 19-07-2021 12:59:41

Nuevo correo (Gipuzkoa)
 
También tenemos noticias de Gipuzkoa:

Estimado/as Señores/as

La Ley 10/1982 de Normalización del Uso del Euskera establece que todos los ciudadanos y ciudadanas vascas tienen derecho a expresarse en euskera en todos los ámbitos de la vida social. En desarrollo de este derecho que la ley reconoce a la ciudadanía, el Decreto 123/2008 reguló los derechos lingüísticos de las personas consumidoras y usuarias, entre otros, en su artículo 5, establece que determinadas entidades (como, por ejemplo, prestadoras de servicios universales de interés general o análogos, grandes establecimientos, financieras o de crédito y promotoras de edificación) deben garantizar que los escritos o comunicaciones dirigidas a las personas consumidoras y usuarias se realicen en euskera, así como las facturas o justificantes de las operaciones realizadas.

Dado que el sistema de facturación TicketBAI será obligatorio a partir del 1 de enero de 2022 (según el calendario de implantación), las instituciones promotoras del proyecto (las Diputaciones Forales y el Gobierno Vasco) consideramos muy importante impulsar que los programas que se inscriban en el Registro de software TicketBAI sean adaptados, para que el ticket o factura que recibirá el cliente esté en euskera. Así, además de respetar el derecho lingüístico reconocido a los clientes, prestaremos un mejor servicio a través del sistema TicketBAI.

La Diputación Foral de Gipuzkoa ofrece el apoyo necesario a los desarrolladores de software TicketBAI, así como a las entidades que están realizando la labor de difusión, aportando en los dos idiomas oficiales los contenidos de la plantilla de la factura que genera el sistema.

También tienen a su disposición el buzón de correo electrónico [email protected] donde pueden dirigirse para solicitar nuestra ayuda, en caso de cualquier duda o dificultad.

Hay una gran demanda en nuestra sociedad de herramientas que permitan vivir y trabajar en euskera, por lo que animamos a todos los desarrolladores de software a que contemplen esta posibilidad en sus herramientas informáticas, para lo cual contarán con todo el apoyo de esta administración.

Reciban un cordial saludo

thinkows 19-07-2021 13:02:24

Aplazamiento BATUZ
 
Tocate la seta y baila !!!!! alguien sabe algo de GUIPUZKOA y ARABA ???? :cool::cool::cool:

Galaxian 19-07-2021 13:04:56

Cita:

Empezado por ARPE1 (Mensaje 541893)
Hola y muchas gracias por la respuesta. He llegado a un momento en el que dudo de todo, así que creo que eso también lo he probado. Entre otras formas de esta, ya no sé si será correcta o no:

Código Delphi [-]
  slXML := TStringList.Create;
  Try
    slXML.LoadFromFile('test_TBAI.xml');
    slXML.SaveToFile('test_TBAI_utf8.xml', TEncoding.UTF8);
  Finally
    slXML.Free;
  end;

Haciendo ese paso previo (también probado con la clase "TUTF8NoBOMEncoding" que indicaba un delphiano de este mismo foro) la respuesta es:

Código:

<Codigo>002</Codigo>
<Descripcion>Error: El fichero de alta TicketBAI no cumple el esquema XSD. No se ha podido procesar el mensaje. Detalle del error: Content is not allowed in prolog.</Descripcion>

Un saludo

No puedo ayudarte mucho con SBB porque yo uso Chilkat, pero haz lo siguiente:
Comprueba si la función slXML.LoadFromFile tiene un parámetro para establecer la codificación.
Vuelve a leerlo tras codificarlo y comprueba que está bien codificado.

Eric Mtz 19-07-2021 13:10:46

¡¡¡Los disgustos de uno en uno!!!, si alguien tiene mas boletines que publicar que primero lo suavice dando el pronóstico del tiempo, gracias.

sEngine 19-07-2021 13:30:14

Entonces de momento solo hay que preocuparse por Guipuzkoa no? Genial!

keys 19-07-2021 13:32:59

Cita:

Empezado por sEngine (Mensaje 541904)
Entonces de momento solo hay que preocuparse por Guipuzkoa no? Genial!

Depende de tus clientes. Ya que es opcional hasta el 2024

Neftali [Germán.Estévez] 19-07-2021 14:01:25

Cita:

Empezado por thinkows (Mensaje 541901)
Tocate la seta y baila !!!!! alguien sabe algo de GUIPUZKOA y ARABA ???? :cool::cool::cool:

Guipuzkoa sin novedad, Álava, como hemos comentado anteriormente, habrá noticias a partir de Septiembre.
Pero tiene pinta de que Álava será bastante similar a Guipuzkoa (y si son listos "aprenderán" de lo que está pasando con BATUZ) .

b4aronDeLaBirr4 19-07-2021 14:22:01

Problema comprobación Factura
 
Buenas!

Estoy trabajando con Gipuzkoa en la generación del QR de la factura y, previamente, construyo la URL que es la siguiente:

Código PHP:

https://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-90112131B-190721-LBImAaA4toCrJ-184&s=tr&nf=6666&i=365.80&cr=142 

Genero el QR y ya sea por url o código, me lleva a la pantalla de verificación de TBAI , introduzco el captcha pero me dice lo siguiente:

"Ezin izan da fakturaren egoera zehaztu - No se ha podido determinar el estado de la factura."

Alguna sugerencia?

thinkows 19-07-2021 15:52:04

Pruebas Guipuzkoa
 
Tienes que cambiar la URL,la que tienes es la de producción cambia a esta y te funcionará

"//tbai.prep.gipuzkoa.eus/qr/"

b4aronDeLaBirr4 19-07-2021 17:07:03

Funciona! Muchas gracias!

StCebria 19-07-2021 18:25:03

Hola a todos. Descubrí el fin de semana este foro y me ha costado un montón de horas pasar por todas las páginas, pero ha valido la pena.
Estoy acabando el desarrollo del TBAI y ya sudaba tinta negra pensando en el LROE y entonces veo esta noticia de hoy respecto del aplazamiento de BATUZ y, perdonad mi ignorancia en la lectura entre líneas del comunicado, pero, alguien tiene claro si el aplazamiento hasta 2024 se refiere solo a LROE o también a TBAI? Gracias y un saludo!

angelito37 19-07-2021 18:28:21

Os ha llegado un email de BATUZ ?
 
Aplazamiento en la obligatoriedad de Batuz y nuevos incentivos para su implantación voluntaria.

Tras recabar las aportaciones de colegios profesionales y asociaciones empresariales y de la asesoría fiscal, la Hacienda Foral considera conveniente flexibilizar el plazo establecido para la adopción obligatoria de Batuz, trasladándolo hasta el 1 de enero de 2024, y estableciendo una compensación de hasta el 15% en IRPF o Sociedades para los autónomos, microempresas y pymes que implanten Batuz en 2022 o 2023. Para más información pulse

Esto es extensivo a las otras provincias o solo es para Bizcaia ?

Neftali [Germán.Estévez] 20-07-2021 08:30:29

Cita:

Empezado por StCebria (Mensaje 541912)
...perdonad mi ignorancia en la lectura entre líneas del comunicado, pero, alguien tiene claro si el aplazamiento hasta 2024 se refiere solo a LROE o también a TBAI?

Cita:

Empezado por angelito37 (Mensaje 541913)
Esto es extensivo a las otras provincias o solo es para Bizcaia ?

El Mail es de Vizcaya y se refiere sólo a Batuz (LROE).
Los plazos para TicketBAI (Guipuzcoa y Álava) siguen como estaban.


La franja horaria es GMT +2. Ahora son las 18:17:59.

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