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 21-09-2021 09:41:47

Hola a todos.

Creo que se aproximan cambios en los formatos de los ficheros xml. Si os fijais en la actualización de las validaciones que acaba se sacar Gipuzkoa, en la página 15 habla de una clave 17.

Cita:

VALIDACIONES PARA OPERACIONES DE LA CLAVE DE RÉGIMEN 17 · OSS/IOSS

Si la ClaveRegimenIVAOpTranscendencia igual a ·17·, para el bloque Sujeta NoExenta solo se permite el tipo de no exenta ·S1·

Todo para el tema de las operaciones OSS, que se ha añadido recientemente al SII. Por supuesto la clave 17 no existe en la descripción del XML de TicketBAI.

Un Saludo.:cool:

chuski1212 21-09-2021 10:29:06

Hola buenas a todos,

Estoy trabajando en el sistema de pruebas de Guipuzkoa y para cada envio obtengo el error 010 Posible error de encadenamiento.

Se supone que si una factura tiene los datos requeridos de la anterior, esta bien encadenada no? Aunque la anterior no estuviese encadenada correctamente.

Al empezar las pruebas hace semanas no estaba enviando el encadenamiento, puede ser este el problema? De ser asi, ahora no se cual es la primera desde la que tengo que seguir la cadena.

Alguien tiene alguna idea al respecto?

Muchisimas gracias!!

juramisa 21-09-2021 10:30:50

Entorno de pruebas Gipuzkoa
 
Cita:

Empezado por HerensugeBeltz (Mensaje 542966)
Hola Juramisa,
Te adjunto el código que uso yo. Los envíos de prueba van bien (es en C++Builder). En mi caso tuve problemas con el método SendFile y tuve que usar PostBytes. XMLOrigen es el fichero XML firmado y grabado en disco.

Código:

..  {
    sbxHTTPClient1->TLSAutoValidateCertificates= true;
    sbxHTTPClient1->TLSVersions= TsbxConstants::csbTLS12;
    sbxHTTPClient1->ReqParamsContentType= L"application/xml;charset=UTF-8";
    sbxHTTPClient1->ReqParamsAcceptCharset= L"UTF-8";
    sbxHTTPClient1->ReqParamsAccept= L"*/*";
    sbxHTTPClient1->ReqParamsHTTPVersion= TsbxHTTPClientReqParamsHTTPVersions::chvHTTP11;
    sbxHTTPClient1->TLSRenegotiationAttackPreventionMode= TsbxHTTPClientTLSRenegotiationAttackPreventionModes::crapmAuto;
    sbxHTTPClient1->Config(L"UseSystemCertificates=true");
    // Cambio el timeout por defecto
  // SocketDNSTotalTimeout (0): The timeout (in milliseconds) for the whole resolution process
  // SocketTimeout (60000): The maximum period of waiting, in milliseconds, after which the socket operation is considered unsuccessful.
    sbxHTTPClient1->SocketDNSTotalTimeout= 2000;
    sbxHTTPClient1->SocketTimeout= 2500;
..
  }


Muchisimas gracias, ha funcionado a la primera.

Me has salvado.

Os dejo como quedan los envío con SecureBlackBox desde Delphi


Código Delphi [-]
  procedure GuardarRespuesta(const Fichero: string; Respuesta: TBytes);
  var
    stream: TBytesStream;
  begin
    stream := TBytesStream.Create(Respuesta);
    try
      stream.SaveToFile(Fichero);
    finally
      stream.Free;
    end;
  end;
  function bintostr(const bin: array of byte): string;
  const
    HexSymbols = '0123456789ABCDEF';
  var
    i: integer;
  begin
    SetLength(Result, 2 * Length(bin));
    for i := 0 to Length(bin) - 1 do
    begin
      Result[1 + 2 * i + 0] := HexSymbols[1 + bin[i] shr 4];
      Result[1 + 2 * i + 1] := HexSymbols[1 + bin[i] and $0F];
    end;
  end;

procedure p_envio_TicketBai
var 
  la_respuesta : IXMLTicketBaiResponse;

begin
  try
  el_fichero_a_enviar := 'ruta y nombre fichero ticketbai';


if FileExists(el_fichero_a_enviar) then
  WebBrowser1.Navigate(el_fichero_a_enviar);
if FileExists(el_fichero_a_enviar) then
begin

  sbxHTTPClient1.TLSSettings.AutoValidateCertificates := True;
  CertificateStorage := TsbxCertificateStorage.Create(nil);
  if CertificateStorage.Opened then
    CertificateStorage.Close(True);
  CertificateStorage.Open('system://currentuser@localhost/?store=MY');
  encontrado := False;
  sbxHTTPClient1.ClientChain.Clear;
  for i := 0 to CertificateStorage.Certificates.Count - 1 do
  begin
    cert := CertificateStorage.Certificates[i];
    if bintostr(cert.SerialNumber) = mi_certificadoID.Caption then
    begin
      sbxHTTPClient1.ClientChain.Add(cert);
      encontrado := True;
    end;
  end;
  if not encontrado then
  begin
    Application.MessageBox('Firma no encontrada', 'Proceso de firma', MB_OK + MB_ICONWARNING + MB_DEFBUTTON2);
    Exit;
  end;

  sbxHTTPClient1.RequestParameters.ContentType := 'application/xml;charset=UTF-8';
  sbxHTTPClient1.RequestParameters.AcceptCharset := 'UTF-8';
  sbxHTTPClient1.RequestParameters.Accept := '*/*';
  sbxHTTPClient1.RequestParameters.HTTPVersion := TsbxHTTPClientReqParamsHTTPVersions.chvHTTP11;
  sbxHTTPClient1.TLSSettings.RenegotiationAttackPreventionMode := TsbxHTTPClientTLSRenegotiationAttackPreventionModes.crapmAuto;
  sbxHTTPClient1.Config('UseSystemCertificates=true');
  sbxHTTPClient1.SocketSettings.DNSTotalTimeout := 2000;
  sbxHTTPClient1.SocketSettings.Timeout := 2500;
  otros_parametros := 'Accept-Encoding: ' + #13#10
                    + 'Content-Encoding: ' ;
  sbxHTTPClient1.RequestParameters.CustomHeaders := otros_parametros;

  case rg_Entorno.ItemIndex of
    0: sbxHTTPClient1.PostFile(la_url_GI_alta_pruebas, el_fichero_a_enviar);
    1: sbxHTTPClient1.PostFile(la_url_GI_alta, el_fichero_a_enviar);
  end;
  if sbxHTTPClient1.OutputBytes = nil then
    Exit;
  FicheroRespuesta := el_fichero_a_recibir;
  GuardarRespuesta(FicheroRespuesta,sbxHTTPClient1.OutputBytes);

  if FileExists(el_fichero_a_recibir) then
    wbRecepcion.Navigate(el_fichero_a_recibir);
  // Cabecera
  {$REGION Cabecera}
  XMLDocument1 := TXMLDocument.Create(nil);

  XMLDocument1.Active := False;
  XMLDocument1.XML.Clear;
  XMLDocument1.LoadFromFile(el_fichero_a_recibir);

  XMLDocument1.Active := True;

  XMLDocument1.XML.Text := StringReplace(XMLDocument1.XML.Text, 'ns2:TicketBai', 'TicketBai', [rfReplaceAll, rfIgnoreCase]);
  XMLDocument1.XML.Text := StringReplace(XMLDocument1.XML.Text, 'xmlns:ns2', 'xmlns', [rfReplaceAll, rfIgnoreCase]);

  la_respuesta := GetTicketBaiResponse(XMLDocument1);
  .......

elguille 21-09-2021 10:40:06

Cita:

Empezado por chuski1212 (Mensaje 542974)
Hola buenas a todos,

Estoy trabajando en el sistema de pruebas de Guipuzkoa y para cada envio obtengo el error 010 Posible error de encadenamiento.

Se supone que si una factura tiene los datos requeridos de la anterior, esta bien encadenada no? Aunque la anterior no estuviese encadenada correctamente.

Al empezar las pruebas hace semanas no estaba enviando el encadenamiento, puede ser este el problema? De ser asi, ahora no se cual es la primera desde la que tengo que seguir la cadena.

Alguien tiene alguna idea al respecto?

Muchisimas gracias!!

Mientras estuve haciendo pruebas recibia este error pero a la primera que rellene los datos de la factura anterior correctamente deje de recibirlos, fijate que envias solo los primeros 100 caracteres de SignatureValue.
Código PHP:

        <EncadenamientoFacturaAnterior>
            <
SerieFacturaAnterior>A2022</SerieFacturaAnterior>
            <
NumFacturaAnterior>0416</NumFacturaAnterior>
            <
FechaExpedicionFacturaAnterior>13-09-2021</FechaExpedicionFacturaAnterior>
            <
SignatureValueFirmaFacturaAnterior>bC6lFn1GmPEVsqriytT+2gN6/WMq48nYRceoCRlptLqTQZjAmIO7AHqSofqKvnLWmAM1KHrrc2bVtHvYHHrosTTrEciXIl2ZI6P9</SignatureValueFirmaFacturaAnterior>
        </
EncadenamientoFacturaAnterior


JoseLeeTo 21-09-2021 10:53:25

Pruebas con Alava
 
Hola a tod@s;

Estoy intentando realizar las primeras pruebas con Alava, y como había poca o ninguna diferencia con Guipuzcoa, ha sido más o menos rápido.

Pero me devuelve un error muy genérico, algo así como que "se han producido uno o varios errores". Me suena a los típicos errores de "caída" de servidor.

¿Alguien ha podido realizar alguna prueba con Alava? ¿Sabéis si los servidores están caidos o algo así?

Muchas gracias.
Un saludo.

ermendalenda 21-09-2021 11:02:36

Cita:

Empezado por Sistel (Mensaje 542903)
Hola ermendalenda,

Pienso que cómo nombres las series de facturas es tema tuyo.
(Aunque hay que tratar de cumplir, en lo que se pueda, con el Reglamento de Facturación)
TicketBAI sólo se encarga de recibir las facturas que le envíes, comprobar que tengan datos correctos, que vayan encadenadas y firmadas.
Con eso controlan el posible fraude fiscal en facturación (que es su función).
De la organización de las series de facturas ya te encargas tú.

Saludos

Tenias razón, el asesor no le ha dado mucha importancia a la serie de las rectiticativas simplificadas, dice que si en el fichero va marcada y en el ticket va indicado no son tan tiquismiquis mientras se puedan saber cuales son cada una.
Gracias

HerensugeBeltz 21-09-2021 11:03:43

Hola Juramisa,
Olvida el timeout. Ese timeout tan corto no lo uso en los envíos de facturas, sólo lo hago para probar si el servicio está activo enviando un xml vacío.


Código:

  ...
    // Cambio el timeout por defecto
  // SocketDNSTotalTimeout (0): The timeout (in milliseconds) for the whole resolution process
  // SocketTimeout (60000): The maximum period of waiting, in milliseconds, after which the socket operation is considered unsuccessful.
 
  -- Sólo para probar que el servicio esté activo enviando un xml vacío --
    sbxHTTPClient1->SocketDNSTotalTimeout= 2000;
    sbxHTTPClient1->SocketTimeout= 2500;

    sbxHTTPClient1->PostBytes(endPoint, cnt);
  ...


ermendalenda 21-09-2021 11:06:42

Cita:

Empezado por chuski1212 (Mensaje 542974)
Hola buenas a todos,

Estoy trabajando en el sistema de pruebas de Guipuzkoa y para cada envio obtengo el error 010 Posible error de encadenamiento.

Se supone que si una factura tiene los datos requeridos de la anterior, esta bien encadenada no? Aunque la anterior no estuviese encadenada correctamente.

Al empezar las pruebas hace semanas no estaba enviando el encadenamiento, puede ser este el problema? De ser asi, ahora no se cual es la primera desde la que tengo que seguir la cadena.

Alguien tiene alguna idea al respecto?

Muchisimas gracias!!

A mi me pasó, en mi caso era que aunque el encadenamiento (de la firma) estaba bien tenia la serie escrita un pelín diferente un guión en vez de un punto respecto a la enviada anterior.
Comprueba también Serie anterior y número anterior y si no está exacto da el mismo error que si mandas mal la firma anterior..

keys 21-09-2021 11:37:29

Cita:

Empezado por JoseLeeTo (Mensaje 542977)
Hola a tod@s;

Estoy intentando realizar las primeras pruebas con Alava, y como había poca o ninguna diferencia con Guipuzcoa, ha sido más o menos rápido.

Pero me devuelve un error muy genérico, algo así como que "se han producido uno o varios errores". Me suena a los típicos errores de "caída" de servidor.

¿Alguien ha podido realizar alguna prueba con Alava? ¿Sabéis si los servidores están caidos o algo así?

Muchas gracias.
Un saludo.

Hola, yo estoy enviando sin problemas a Alava, sólo hemos cambiado la dirección de gipuzkoa por la de alava y funciona correctamente. No se si os habéis dado de alta para poder hacer pruebas en alava.

Sistel 21-09-2021 12:12:32

Cita:

Empezado por ermendalenda (Mensaje 542978)
Tenias razón, el asesor no le ha dado mucha importancia a la serie de las rectiticativas simplificadas, dice que si en el fichero va marcada y en el ticket va indicado no son tan tiquismiquis mientras se puedan saber cuales son cada una.
Gracias

Hola ermendalenda,

¡Perfecto!
Por una vez coincidimos asesores e informáticos en algo :D

Saludos

iMia 21-09-2021 13:17:09

Cita:

Empezado por keys (Mensaje 542981)
Hola, yo estoy enviando sin problemas a Alava, sólo hemos cambiado la dirección de gipuzkoa por la de alava y funciona correctamente. No se si os habéis dado de alta para poder hacer pruebas en alava.

yo si me di de alta ayer...
tengo ya código de pruebas, aunque no es del todo necesario, ya que antes que me lo diesen, envié una factura y estado 00, aunque con avisos... (puse el mensaje más arriba...)
¿has tenido los problemas con la respuesta que puse más arriba? les envié un mensaje con esos problemas.. ¿lo habrán resuelto?
tambien he tenido problemas con el codigo QR que no me envía a ningun sitio... solo 404...

keys 21-09-2021 13:21:54

Yo estoy enviando sin problemas. Lo del código QR yo creo que no lo tienen operativo. Por cierto estan retornando en el estado "0", no "00". Por lo menos a mi.

iMia 21-09-2021 13:34:42

Cita:

Empezado por keys (Mensaje 542990)
Yo estoy enviando sin problemas. Lo del código QR yo creo que no lo tienen operativo. Por cierto estan retornando en el estado "0", no "00". Por lo menos a mi.

Sí, retornan 0 en vez de 00, y la fecha del mensaje está en formato que no cumple su xsd... está en formato yyyy-MM-dd cuando debería ser dd-MM-yyyy . Ya lo comenté ayer (http://www.clubdelphi.com/foros/show...postcount=1507), cuando hice la prueba...

JoseLeeTo 21-09-2021 13:47:43

Cita:

Empezado por keys (Mensaje 542981)
Hola, yo estoy enviando sin problemas a Alava, sólo hemos cambiado la dirección de gipuzkoa por la de alava y funciona correctamente. No se si os habéis dado de alta para poder hacer pruebas en alava.

Si, si. Me dí ayer de alta, y tengo ya licencia de pruebas.
No sé, es muy raro. Creo que no llega ni a enviar, ya que en el "Post" salta una excepción controlada. Solo me ocurre con Alava.

Los datos que utilizo son estos, además de la licencia:

URL de alta: https://pruebas-ticketbai.araba.eus/...I/v1/facturas/
Hash: iOgvkX7/yHIDRRiPy/LYQ0UUn7QV8/11D1BFbs8yMuQ=
ID: https://ticketbai.araba.eus/tbai/sinadura/

¿Veis algo raro o me he comido algún valor?.

Muchas gracias.
Saludos.

keys 21-09-2021 14:05:12

Cita:

Empezado por JoseLeeTo (Mensaje 542994)
Si, si. Me dí ayer de alta, y tengo ya licencia de pruebas.
No sé, es muy raro. Creo que no llega ni a enviar, ya que en el "Post" salta una excepción controlada. Solo me ocurre con Alava.

Los datos que utilizo son estos, además de la licencia:

URL de alta: https://pruebas-ticketbai.araba.eus/...I/v1/facturas/
Hash: iOgvkX7/yHIDRRiPy/LYQ0UUn7QV8/11D1BFbs8yMuQ=
ID: https://ticketbai.araba.eus/tbai/sinadura/

¿Veis algo raro o me he comido algún valor?.

Muchas gracias.
Saludos.

Eso es lo que yo estoy poniendo y sin problemas. Mira que no sea algo del sistema que utilizas para enviar al copiar y pegar el de Gipuzkoa.

aflores1 21-09-2021 14:51:14

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 542940)
Pocos datos.
¿Qué servicio? ¿Qué hare o qué utiliza?
En estos casos lo mejor es utilizar un LOG.

Cita:

Empezado por ermendalenda (Mensaje 542936)
Lo mismo estoy espeso, por que es Lunes:confused:, pero no entiendo muy bien que servicio y que respuesta.
La firma, el envio...? como haces ese servicio, faltan datos.

Perdón si no me expliqué bien, en local hago el envío del xml a Guipuzkoa y recibo una respuesta pero cuando he instalado la aplicación en el servidor la respuesta me la devuelve vacía.

ermendalenda 21-09-2021 16:19:58

58
Cita:

Empezado por aflores1 (Mensaje 542996)
Perdón si no me expliqué bien, en local hago el envío del xml a Guipuzkoa y recibo una respuesta pero cuando he instalado la aplicación en el servidor la respuesta me la devuelve vacía.

Pueden ser mil cosas te digo algunas:
Sí haces la respuesta a un fichero comprueba permisos de escritura de la carpeta.
Comprueba firewall y antivirus que no haya bloqueado la conexión.
Comprueba conexión a Internet desde ese servidor por si tienes problemas de configuración de Red dns, pasarela...para ello puedes escribir la URL del envío directamente en un navegador a ver si te da alguna repuesta, si es Windows 10 ejecuta lo con permisos de administrador.
Comprueba que la ejecución del ejecutable tenga los permisos necesarios. Si lo haces con php comprueba que este actualizado.

JoseLeeTo 21-09-2021 16:30:05

Cita:

Empezado por keys (Mensaje 542995)
Eso es lo que yo estoy poniendo y sin problemas. Mira que no sea algo del sistema que utilizas para enviar al copiar y pegar el de Gipuzkoa.

Solucionado. Era tema de Firewall. Para las otras haciendas, todo OK, pero para esta por lo que sea, estaba cortado.

Gracias.

JoseLeeTo 21-09-2021 16:35:20

Detalle de Lineas de Factura
 
Buenas!.

Una pregunta.
En el detalle de la factura (Guipuzcoa o Alava), ¿la cantidad que debe de aparecer en el nodo ImporteUnitario, ¿debe de ser el importe SIN IVA o con IVA?
Me están avisando de errores de esta índole.
"Total de la factura, no coincide con la suma del desglose"... y efectivamente (como pongo más abajo), la factura asciende a "19.12" ... y la suma de las líneas, no es 19.12.... ¿también es por el IVA? ¿Hay que tener en cuenta IRPF?

<DetallesFactura>
<IDDetalleFactura>
<DescripcionDetalle>CONCEPTO1</DescripcionDetalle>
<Cantidad>1.00</Cantidad>
<ImporteUnitario>6.01</ImporteUnitario>
<ImporteTotal>6.01</ImporteTotal>
</IDDetalleFactura>


<IDDetalleFactura>
<DescripcionDetalle>CONCEPTO2</DescripcionDetalle>
<Cantidad>1.00</Cantidad>
<ImporteUnitario>6.01</ImporteUnitario>
<ImporteTotal>6.01</ImporteTotal>
</IDDetalleFactura>


<IDDetalleFactura>
<DescripcionDetalle>CONCEPTO3</DescripcionDetalle>
<Cantidad>1.00</Cantidad>
<ImporteUnitario>6.01</ImporteUnitario>
<ImporteTotal>6.01</ImporteTotal>
</IDDetalleFactura>
</DetallesFactura>

<ImporteTotalFactura>19.12</ImporteTotalFactura>


Muchas gracias.

Un saludo.
Jose.

ermendalenda 21-09-2021 16:40:53

Cita:

Empezado por JoseLeeTo (Mensaje 543001)
Buenas!.

Una pregunta.
En el detalle de la factura (Guipuzcoa o Alava), ¿la cantidad que debe de aparecer en el nodo ImporteUnitario, ¿debe de ser el importe SIN IVA o con IVA?
Me están avisando de errores de esta índole.
"Total de la factura, no coincide con la suma del desglose"... y efectivamente (como pongo más abajo), la factura asciende a "19.12" ... y la suma de las líneas, no es 19.12.... ¿también es por el IVA? ¿Hay que tener en cuenta IRPF?

<DetallesFactura>
<IDDetalleFactura>
<DescripcionDetalle>CONCEPTO1</DescripcionDetalle>
<Cantidad>1.00</Cantidad>
<ImporteUnitario>6.01</ImporteUnitario>
<ImporteTotal>6.01</ImporteTotal>
</IDDetalleFactura>


<IDDetalleFactura>
<DescripcionDetalle>CONCEPTO2</DescripcionDetalle>
<Cantidad>1.00</Cantidad>
<ImporteUnitario>6.01</ImporteUnitario>
<ImporteTotal>6.01</ImporteTotal>
</IDDetalleFactura>


<IDDetalleFactura>
<DescripcionDetalle>CONCEPTO3</DescripcionDetalle>
<Cantidad>1.00</Cantidad>
<ImporteUnitario>6.01</ImporteUnitario>
<ImporteTotal>6.01</ImporteTotal>
</IDDetalleFactura>
</DetallesFactura>

<ImporteTotalFactura>19.12</ImporteTotalFactura>


Muchas gracias.

Un saludo.
Jose.

Qué raro que iva estas aplicando?
Bueno lo primero el I porte unitario es sin iva y sin descuentos y el total de cada línea con iva, así como el totaltotal que tb es con iva.
Pero 19 y pico no coincide con ninguno de los tipos impositivos a no se que quieras aplicar un recargo de equivalencia sobre un artículo al tipo reducido o quee simplemente como es una prueba no has tenido en cuenta nada y lo has hecho sin intentar cuadrar nada.
El IRPF tengo entendió que es hacienda quien se lo repercute al cliente. No el que emite la factura.


La franja horaria es GMT +2. Ahora son las 23:24:19.

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