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 22-11-2019 14:36:57

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 534533)
Bueno, una vez generados los XML ya sólo tienes que coger datos de la anterior factura.
A priori parece fácil (si todo es ideal), luego llegarán los problemas cuando pasan "cosas" que se salen de lo normal.

Si si obtener el valor si es más o menos facil. El problema es que eso te hace que no solo no puedes modificar una factura, sino que tampoco puedes modificar todas las facturas siguientes a esa, ya que eso hace que cambie el fichero de todas las facturas siguientes.

Neftali [Germán.Estévez] 25-11-2019 11:49:40

Cita:

Empezado por keys (Mensaje 534534)
Si si obtener el valor si es más o menos facil. El problema es que eso te hace que no solo no puedes modificar una factura, sino que tampoco puedes modificar todas las facturas siguientes a esa, ya que eso hace que cambie el fichero de todas las facturas siguientes.


Correcto.

Justo eso es lo que están buscando, que una vez generada no modifiques nada.
La única solición es generar una factura ractificativa de la anterior, que volverá a subir como las demás.

NOTA IMPORTANTE: Estas modificaciones sólo afectan a los campos "importantes" de la factura (los que van añadidos en el XML) que no son todos. Por ejemplo, si quieres modificar la "dirección del cliente" o su "teléfono" puedes hacerlo. Como ese campo no va en el XML puedes modificarlo sin problemas.

Sistel 26-11-2019 10:30:08

Hola,

He buscado (pero no he encontrado) módulos de TicketBAI para aplicaciones estandar de comercio online (Prestashop, Woocommerce de Wordpress, Magento, ...)
¿Alguien está desarrollando módulos para estas aplicaciones?
Gracias por adelantado

Saludos

elcharlie 26-11-2019 10:51:50

Una pregunta, cuanto os tardaron los de Lantik en enviaros los certificados? Llevo desde el Jueves de la semana pasada esperando y todavía no me han respondido...

elcharlie 26-11-2019 10:53:00

Cita:

Empezado por Sistel (Mensaje 534587)
Hola,

He buscado (pero no he encontrado) módulos de TicketBAI para aplicaciones estandar de comercio online (Prestashop, Woocommerce de Wordpress, Magento, ...)
¿Alguien está desarrollando módulos para estas aplicaciones?
Gracias por adelantado

Saludos

No es mi caso, un saludo

keys 26-11-2019 11:07:01

Cita:

Empezado por elcharlie (Mensaje 534588)
Una pregunta, cuanto os tardaron los de Lantik en enviaros los certificados? Llevo desde el Jueves de la semana pasada esperando y todavía no me han respondido...

Ami me tardaron unos 15 días.

Sistel 26-11-2019 11:08:42

Ayer pedí documentación a ticketbai@ticketbai.eus
Todo lo que me enviaron coincide con lo que ya hay publicado en el primer mensaje de este hilo.
Salvo un documento más que dice:

Criterio de Ampliación de cara a la Implantación Definitiva del Proyecto TicketBAI
De la experiencia adquirida en el desarrollo del piloto y teniendo en cuenta las observaciones
recibidas en el mismo, se pone en conocimiento a los participantes que, en la implantación
definitiva del sistema, se admitirá la firma del fichero xml TicketBAI, además de con el
certificado de dispositivo, con otros tipos de certificados electrónicos, facilitando la solución a
las diversas arquitecturas de software.

(No puedo subirlo al foro porque sólo se me admite subir ficheros PDF de hasta 283,1 KB)

elcharlie 26-11-2019 11:15:36

Cita:

Empezado por keys (Mensaje 534590)
Ami me tardaron unos 15 días.

Me has dejado loco, 15 dias? que pasada? Gracias por la info.

Neftali [Germán.Estévez] 26-11-2019 11:29:13

Cita:

Empezado por Sistel (Mensaje 534591)
Ayer pedí documentación a ticketbai@ticketbai.eus
Todo lo que me enviaron coincide con lo que ya hay publicado en el primer mensaje de este hilo.
Salvo un documento más que dice:

Criterio de Ampliación de cara a la Implantación Definitiva del Proyecto TicketBAI
De la experiencia adquirida en el desarrollo del piloto y teniendo en cuenta las observaciones
recibidas en el mismo, se pone en conocimiento a los participantes que, en la implantación
definitiva del sistema, se admitirá la firma del fichero xml TicketBAI, además de con el
certificado de dispositivo, con otros tipos de certificados electrónicos, facilitando la solución a
las diversas arquitecturas de software.

(No puedo subirlo al foro porque sólo se me admite subir ficheros PDF de hasta 283,1 KB)


Ya lo he encontrado y lo subo aquí con el enlace en el hilo original donde están el resto de documentos.
Gracias.

Sistel 28-11-2019 17:49:58

Parece que, a pesar de que por la nota aclaratoria última, se va a permitir que se firme el XML de la factura con cualquier certificado instalado en la máquina que emite la factura, por ahora, no parece que se vaya a eximir de la instalación del certificado de dispositivo en toda máquina que emita facturas.
Se va a exigir que se pueda hacer una verificación presencial de dicho certificado de dispositivo.
Y quieren disponer de un mapa de los dispositivos de cada empresa o negocio.

Para obtener el certificado de dispositivo se necesita un código único que identifique cada dispositivo.
Y la primera idea que han tenido es que dicho código sea el ID de la CPU.
Esto, con procesadores Intel y AMD, vale.
Pero nosotros tenemos una red de clientes con TPVs basados en microordenadores Raspberry Pi.
Éstos tienen una CPU Broadcom BCM2837 que no tiene ninguna identificación única (al menos yo no he sido capaz de encontrarla).
Todos tienen la misma ID de CPU.
Así que no hay un código único que identifique, unívocamente, cada CPU.
He propuesto a los de TicketBAI que se pueda utilizar la MAC de red que sí es única.
Veremos que contestan.

Y por los emails intercambiados con los chicos de TicketBAI me da la impresión de que tampoco han tenido en cuenta las tiendas online.
Me han llegado a decir:
El dispositivo emisor de la factura siempre se considera el cliente, aunque hablemos de un cliente ligero (como un navegador). Por lo tanto, el número de serie que identifique al dispositivo en el fichero TicketBAI tendrá que ser siempre el del cliente.
Les he tenido que aclarar que, en el caso de los comercios online, el visitante-cliente lo hace con su propio navegador y no se le puede instalar nada (aparte de una humilde cookie) y sólo se dispone, como datos de su dispositivo, del nombre de su navegador y de la IP desde donde hace la compra.
Espero que lo reconsideren y se den cuenta del error y de que, en este caso, el que emite (y debe firmar) la factura es el servidor.

También les he planteado el tema de que muchas tiendan online están en un servicio de hosting en el que no pueden obtener identificador de CPU ni instalar certificado de dispositivo.
Y, por otro lado, puede que compartan dirección IP con otros comercios online instalados en el mismo servidor.
A ver qué se les ocurre para identificar y certificar el dispositivo en este caso.

Perdonad por el ladrillo que os he metido.

Sistel 28-11-2019 18:12:42

Sobre los certificados:
Llamé a IZENPE para preguntar los precios y períodos de validez que tendrán los certificados para cumplir con TicketBAI.
Me remitieron al email de TicketBAI.
Les consulté y me contestaron:
- Certificados de dispositivo
Se estima que 5 años. Este plazo aún no es definitivo. El coste de los certificados de dispositivo no se ha decidido.
- Certificados de aplicación
- Certificados de firma de código
Con respecto a estos certificados lo que se va a requerir es un certificado de la empresa fabricante del software siguiendo los usos normales del mercado.
El certificado de la empresa fabricante se relaciona con el requisito de autoría del software y no aplica a la fase piloto. En la primera quincena de diciembre les enviaremos cómo funcionará en la implantación definitiva el requisito de autoría de software.


Lo de "se va a requerir es un certificado de la empresa fabricante del software siguiendo los usos normales del mercado" no me deja tranquilo.
¿Alguien me puede aclarar a qué se pueden referir?

Sistel 28-11-2019 18:18:32

Respecto a los certificados, me da la impresión de que van a tirar, en exclusiva, de IZENPE.
A mí, particularmente, no me gustan los certificados de IZENPE, además de que siempre me han parecido caros.
A todos nuestros clientes siempre les gestionamos los certificados de FNMT que son más fáciles de obtener, más baratos y funcionan mejor.

He escrito email a FNMT, con la documentación de TicketBAI, preguntándoles si van a disponer de certificados de los tipos exigidos para TicketBAI.
Estoy a la espera de que me contesten.
Os mantendré al día.

elcharlie 29-11-2019 09:14:29

Cita:

Empezado por Sistel (Mensaje 534619)
Respecto a los certificados, me da la impresión de que van a tirar, en exclusiva, de IZENPE.
A mí, particularmente, no me gustan los certificados de IZENPE, además de que siempre me han parecido caros.
A todos nuestros clientes siempre les gestionamos los certificados de FNMT que son más fáciles de obtener, más baratos y funcionan mejor.

He escrito email a FNMT, con la documentación de TicketBAI, preguntándoles si van a disponer de certificados de los tipos exigidos para TicketBAI.
Estoy a la espera de que me contesten.
Os mantendré al día.

Gracias por la info, nosotros también estamos a la espera de que nos respondan cómo hacemos con los certificados de maquinas de los clientes que se conectan por terminal server. Yo creo que no lo tienen muy bien estudiado, la verdad.

keys 29-11-2019 10:22:07

Cita:

Empezado por Sistel (Mensaje 534616)
Parece que, a pesar de que por la nota aclaratoria última, se va a permitir que se firme el XML de la factura con cualquier certificado instalado en la máquina que emite la factura, por ahora, no parece que se vaya a eximir de la instalación del certificado de dispositivo en toda máquina que emita facturas.
Se va a exigir que se pueda hacer una verificación presencial de dicho certificado de dispositivo.
Y quieren disponer de un mapa de los dispositivos de cada empresa o negocio.

Si es así como tu dices, ¿para que sirve el certificado de la maquina?, ya que según la nota permiten firmar con cualquier otro el fichero. Yo creo que no será necesario certificar la máquina, pero si tener un id unico de la maquina en el fichero (Por cierto a mi me dijeron que abriera la cpu para mirar el número de serie, ya que no eran capaces de sacar ese número por código). Pero Bueno el tiempo lo dira.

Por otra parte no creo que sea algo exclusivo de IZENPE, nosotros por ejemplo estamos haciendo el envío con un certificado de la FNMT y según la nota, ese mismo certificado servirá para firmar el XML.

Otra cosa será el certificado de la aplicacion, pero como de este tampoco se sabe nada. El tiempo lo dira.

SALUDOS

elcharlie 29-11-2019 11:01:44

Buenas a todos, estoy probando a enviar información al web service y estoy teniendo problemas, haber si alguien me puede decir que estoy haciendo mal. Me he creado un programilla de pruebas donde leo el contenido del fichero de una factura firmada en Base 64 y lo envío, pero siempre me da error "Los elemento esperados son <{}ticketBai>. Es cierto que en el contenido de fichero solo esta la factura en base 64, pero también he probado a enviarlo con
Código:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <VerificarTicketBaiRequest xmlns="https://ptbai.ticketbai.eus">
            <ticketBai xmlns="">contenido en Base 64</ticketBai>
        </VerificarTicketBaiRequest>
    </Body>
</Envelope>

y nada el mismo error. Realmente no sé como es la estructura a enviar, me estoy haciendo un lío la verdad.

Os pongo el código fuente del procesillo que uso, por si me podéis decir algo.

Código:

procedure TFrmMain.ButtonEnviarServiceClick(Sender: TObject);
var
  HTT_PRIO: THTTPRIO;
  Envio: VerificarTicketBaiRequest;
  Respuesta: VerificarTicketBaiResponse;
begin
  try
    HTT_PRIO := THTTPRIO.Create(nil);       
    Envio := [TFile.ReadAllBytes(EdtFileBase64.text)];
    Respuesta := B4PT.GetptbaiSOAP(False, 'https://ticketbai.eus/B4PT000MWeb/B4PT?wsdl', HTT_PRIO).verificarTicketBai(Envio);
    ShowMessage(Respuesta[0].codigoSeguimiento);
  except on E: Exception do
    ShowMessage(e.ToString);
  end;
end;


keys 29-11-2019 11:19:22

¿Has probado a enviar ese fichero con la herramienta que proponen ellos? SoapUi

elcharlie 29-11-2019 11:20:14

Cita:

Empezado por keys (Mensaje 534624)
¿Has probado a enviar ese fichero con la herramienta que proponen ellos? SoapUi

Si, desde su herramienta me lo envía.

keys 29-11-2019 11:34:25

Yo no he conseguido enviarlo directamente como tu estas haciendo. Lo que hacemos es en el evento OnBeforeExecute generar otro fichero en BASE64 y enviarlo.

Código Delphi [-]
var
  ss:TFileStream;
  i : Integer;
  NficheroTemp : STring;
  ListaFichero : TStringList;
  Base64: TBase64Encoding;
  Salida : Ansistring;
begin

  //FIChero es el fichero original 
  NficheroTemp :=  Copy(Fichero, 1 , Length(Fichero) - 4) + 'TMP.XML';

  
  ListaFichero := TStringList.Create;
  ListaFichero.LoadFromFile(Fichero);
  Base64 := TBase64Encoding.Create;
  Salida := Base64.Encode(ListaFichero.Text);
  Base64.Destroy;
  ListaFichero.Clear;

  ListaFichero.Add('');

  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add(salida);

  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');

  if FileExists(NficheroTemp) then
   System.SysUtils.DeleteFile(NficheroTemp);

  ListaFichero.SaveToFile(NficheroTemp);
  ListaFichero.Destroy;


  SOAPRequest.Size := 0;
  ss := TFileStream.Create(NFicheroTemp, System.SysUtils.fmOpenRead);
  SOAPRequest.Position := 0;
  SOAPRequest.CopyFrom( ss, ss.Size);
  ss.Free;
  SOAPRequest.Position := 0;

  if FileExists(NficheroTemp) then
   System.SysUtils.DeleteFile(NficheroTemp);

elcharlie 29-11-2019 12:09:42

Cita:

Empezado por keys (Mensaje 534627)
Yo no he conseguido enviarlo directamente como tu estas haciendo. Lo que hacemos es en el evento OnBeforeExecute generar otro fichero en BASE64 y enviarlo.

Código Delphi [-]
var
  ss:TFileStream;
  i : Integer;
  NficheroTemp : STring;
  ListaFichero : TStringList;
  Base64: TBase64Encoding;
  Salida : Ansistring;
begin

  //FIChero es el fichero original 
  NficheroTemp :=  Copy(Fichero, 1 , Length(Fichero) - 4) + 'TMP.XML';

  
  ListaFichero := TStringList.Create;
  ListaFichero.LoadFromFile(Fichero);
  Base64 := TBase64Encoding.Create;
  Salida := Base64.Encode(ListaFichero.Text);
  Base64.Destroy;
  ListaFichero.Clear;

  ListaFichero.Add('');

  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add(salida);

  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');
  ListaFichero.Add('');

  if FileExists(NficheroTemp) then
   System.SysUtils.DeleteFile(NficheroTemp);

  ListaFichero.SaveToFile(NficheroTemp);
  ListaFichero.Destroy;


  SOAPRequest.Size := 0;
  ss := TFileStream.Create(NFicheroTemp, System.SysUtils.fmOpenRead);
  SOAPRequest.Position := 0;
  SOAPRequest.CopyFrom( ss, ss.Size);
  ss.Free;
  SOAPRequest.Position := 0;

  if FileExists(NficheroTemp) then
   System.SysUtils.DeleteFile(NficheroTemp);



Gracias por la info, he creado un proceso BeforeExecute y ya va. Sí en verdad es como el SII, pero ni lo he analizado bien, estoy atontado. Muchas gracias estaba bloqueado.
Os pongo el proceso entero por si os vale de algo.

Código:

procedure TFrmMain.BeforeExecute(const MethodName: string;
  SOAPRequest: TStream);
var
  ss:TFileStream;
begin
    SOAPRequest.Size:=0;
    ss:=TFileStream.Create(RutaFicheroEnvio, fmOpenRead);
    SOAPRequest.Position := 0;
    SOAPRequest.CopyFrom( ss, ss.Size);
    ss.Free;
    SOAPRequest.Position := 0;
end;

procedure TFrmMain.ButtonEnviarServiceClick(Sender: TObject);
var
  HTT_PRIO: THTTPRIO;
  Envio: VerificarTicketBaiRequest;
  Respuesta: VerificarTicketBaiResponse;
  ArchivoDestino: String;
begin
  try
    ArchivoDestino := ExtractFilePath(EdtRutaFicheroXML.Text) + StringReplace(ExtractFileName(EdtRutaFicheroXML.Text), ExtractFileExt(EdtRutaFicheroXML.Text), '', [rfReplaceAll, rfIgnoreCase])
      + 'Base64' + ExtractFileExt(EdtRutaFicheroXML.Text);

    RutaFicheroEnvio := ArchivoDestino;

    HTT_PRIO := THTTPRIO.Create(nil);
    HTT_PRIO.OnBeforeExecute := BeforeExecute;

    SetLength(Envio, 1);
    Envio[0] := TFile.ReadAllBytes(RutaFicheroEnvio);
    Respuesta := B4PT.GetptbaiSOAP(False, 'https://ticketbai.eus/B4PT000MWeb/B4PT?wsdl', HTT_PRIO).verificarTicketBai(Envio);

    ShowMessage(Respuesta[0].codigoSeguimiento);
  except on E: Exception do
    ShowMessage(e.ToString);
  end;
end;


keys 03-12-2019 10:49:38

Recien recibido de TicketBai

Estimados participantes en el piloto TicketBAI:

Les escribimos para informales de que en el mes de noviembre ha finalizado la fase piloto en el proyecto TicketBAI.

Agradecemos enormemente su participación en esta fase del proyecto. Gracias a sus aportaciones, hemos podido revisar las especificaciones del mismo con el fin de que se adapte lo mejor posible a los diferentes modelos de negocio.

Les informamos de los siguientes pasos del proyecto:

• A mediados de diciembre se remitirá a los participantes la documentación definitiva del proyecto TicketBAI, a la vista de las conclusiones obtenidas en el piloto.

• Además, se informará de los canales que cada Administración abrirá para comunicar las novedades relativas a la implantación del sistema TicketBAI y para que las empresas formulen las dudas de todo tipo que tengan. En estos nuevos canales se inscribirá de forma automática a todos los participantes en el piloto TicketBAI. Para formular consultas sobre el sistema definitivo habrá que esperar a la apertura de estos nuevos canales.

• De momento, se mantiene abierto el buzón TicketBAI pero no se atenderá a nuevas consultas. Se podrán registrar nuevas empresas para acceder a la información definitiva del proyecto.

¡Muchas gracias!


La franja horaria es GMT +2. Ahora son las 20:36:15.

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