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)

Sistel 17-12-2019 12:11:25

Cita:

Empezado por pablog2k (Mensaje 534816)
la url es esta pero no se como hacer para que ya se vea en el foro
https://subefotos.com/ver/?188fc3b19...70360aa94o.jpg

El foro tiene opción para poner imágenes adjuntas.
Pero a mí no me deja mayores de 40 KB.
Supongo que por mi nivel de usuario.

Sistel 17-12-2019 12:16:15

Cita:

Empezado por pablog2k (Mensaje 534808)
gracias Sistel. Me quedo a la espera de la imagen que vas a subir
Saludos

Hola pablog2k,

¿Te queda más claro el proceso con el gráfico?

Lo que aún no han dicho es qué plazo habrá para el envío de las facturas XML firmadas a Hacienda.
Para el SII son 4 días naturales desde la expedición de la factura.
Me imagino que para Ticketbai pondrán un plazo similar (espero).

Saludos

pablog2k 17-12-2019 13:39:48

hola,si si, muchas gracias.
ahora estoy yo(y supongo que todos) a la espera que manden los WSDL definitivos y aclaren un poco el tema de los certificados....

keys 18-12-2019 11:06:49

Hola a todos. Ayer salío la noticia sobre ticketBai en varios medios de comunicación del pais vasco.

Os pongo algunos enlaces.

https://www.deia.eus/2019/12/18/bizk...sas-desde-2021

La adaptación al sistema supondrá un desembolso económico para los contribuyentes, ya que en algunos casos tendrán que adquirir el software -que no superará los 150 euros, según los cálculos de la Diputación-

El software se podrá adquirir en el mercado, al igual que cualquier otro programa de facturación o contabilidad. Según informó el director de Hacienda, Iñaki Alonso, entre abril y noviembre, 131 empresas y desarrolladores de software trabajaron en una prueba piloto para desarrollar los procesos informáticos necesarios. En la web foral se publicará un listado de todos los desarrolladores que adecuarán su software a los requisitos del sistema, que tendrán que registrarse en Hacienda.

QUE MAJOS YA SABEN LO QUE VAMOS A COBRAR.

https://www.cope.es/emisoras/pais-va...0191217_576069

pablog2k 18-12-2019 11:19:56

yo también he flipado con la noticia :eek:
"no superará los 150€"
buenos cálculos ha hecho la diputación :confused:
en fin me río por no llorar

Neftali [Germán.Estévez] 18-12-2019 17:22:19

Cita:

Empezado por keys (Mensaje 534838)
ya que en algunos casos tendrán que adquirir el software -que no superará los 150 euros, según los cálculos de la Diputación-


Habría que ver quien a hecho ese cálculo :D:D:D:D:D:D
150€¿?¿?¿?¿?¿
Chupatintas claramente.

Sistel 18-12-2019 19:48:40

Hola,

Tenéis el resumen de la presentación que hicieron, ayer, el Diputado Foral de Hacienda y el Director de Hacienda de Bizkaia, a la prensa, en http://web.bizkaia.eus/es/web/area-d...tailView/20665
También tenéis el video completo de la presentación (42 minutos) en http://web.bizkaia.eus/es/web/area-d...tailView/20662

Me han parecido muy curiosos algunos aspectos:
- El precio que evalúan que puede costar a un comercio la implantación de Ticketbai
- El precio que piensan que vale un TPV o una impresora de tickets
- Las fuertes sanciones que se impondrán a las empresas de software que implanten software que permita la doble contabilidad.
- El nuevo registro de empresas informáticas autorizadas para implantar Ticketbai
- El nuevo modelo 240
- ...

Saludos

keys 19-12-2019 13:38:51

Acaban de enviar la información definitiva de Ticket Bai.

La hacienda de Gupizkoa ya lo tiene puesto en su pagina web.


https://www.gipuzkoa.eus/es/web/ogas...generated-id-2

Los plazos se alargan.

pablog2k 19-12-2019 13:52:29

gracias keys, vamos a echarle un vistazo

"En el caso de los/las contribuyentes guipuzcoanos/as, tan pronto se emita la factura, el programa remitirá el archivo XML-TBAI a la Hacienda Foral de Gipuzkoa, es decir, la remisión será online.
Ello conllevará que debe tenerse acceso a internet."

esto quiere decir que no se pueden enviar después? como se había planteado por aquí.
me parece un poco fuerte....

Neftali [Germán.Estévez] 19-12-2019 15:25:13

Tal como comenta [keys] han enviado la información definitiva.
Os adjunto a este mensaje los documentos definitivos y las nuevas direcciones de contacto segun las diferenyes administraciones.También enlazaré a esta información desde el hilo principal.

NOTA: Adjunto las versiones en Euskera (que no se diga)... ;);)

bilbur 23-12-2019 17:29:13

CRC8 conforme a las nuevas especificaciones técnicas de TBAI
 
Para su implementación en PHP


la función ( algoritmo o clase) para calcular el código CRC8 de comprobación está publicado en JAVA en la nueva documentación técnica de TBAI


Al intentar adaptarlo a PHP, no me devuelve los mismos códigos que en los ejemplos.


Tras investigar (google, foros PHP, etc) tengo un algoritmo que parace que funciona:


Sería este:


function crc8($data)
{

$crc8_table = array(
0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d,
0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d,
0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd,
0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd,
0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2, 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea,
0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a,
0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a,
0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a,
0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4,
0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4,
0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c, 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44,
0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34,
0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63,
0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13,
0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83,
0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3);

$data = unpack("C*",$data);
$crc = 0x0;
foreach ($data as $d)
$crc = $crc8_table[$d ^ $crc];
$crc = $crc ^ 0x0;
return str_pad(($crc & 0xff),3,"0",STR_PAD_LEFT);
}



Invocado con los dos ejemplos

$TBAIID ='TBAI-00000006Y-251019-btFpwP8dcLGAF-';
$TBAIID = utf8_encode($TBAIID);
echo $TBAIID.'<br>';
echo 'debe ser 237 y es '.crc8($TBAIID).'<br>';

Resultado = 237


$TBAIID = '--batuz.eus/QRTBAI/?id=TBAI-00000006Y-251019-btFpwP8dcLGAF-237&s=T&nf=27174&i=4.70';
$TBAIID = utf8_encode($TBAIID);
echo $TBAIID.'<br>';
echo 'debe ser 007 y es '.crc8($TBAIID).'<br>';

Resultado = 007

Espero que a alguien le sirva


Un saludo

Sistel 23-12-2019 22:46:43

Cita:

Empezado por bilbur (Mensaje 534948)
Para su implementación en PHP
la función ( algoritmo o clase) para calcular el código CRC8 de comprobación está publicado en JAVA en la nueva documentación técnica de TBAI
Al intentar adaptarlo a PHP, no me devuelve los mismos códigos que en los ejemplos.
Tras investigar (google, foros PHP, etc) tengo un algoritmo que parace que funciona:
Sería este:
...

¡¡¡ Genial !!!

Muchas gracias, me viene de perlas.

keys 24-12-2019 10:31:19

Hola a todos. Buscando por internet y haciendo pruebas pongo el código para Delphi. Para los dos ejemplos funciona.

Código Delphi [-]
 function crc8(Buffer:String;Polynom,Initial:Cardinal):Cardinal;
var
  i,j : Integer;
begin

 Result:=Initial;
 for i:=1 to Length(Buffer) do begin
   Result:=Result xor ord(buffer[i]);
   for j:=0 to 7 do begin
     if (Result and $80)<>0 then Result:=(Result shl 1) xor Polynom
     else Result:=Result shl 1;
     end;
   end;
 Result:=Result and $ff;
end;

 Crc8('TBAI-00000006Y-251019-btFpwP8dcLGAF-', $07, 0); = '237'
 Crc8('https://batuz.eus/QRTBAI/?id=TBAI-00000006Y-251019-btFpwP8dcLGAF-237&s=T&nf=27174&i=4.70', $07, 0); = '007'

elcharlie 26-12-2019 10:13:38

Hola a todos, pues yo también os dejo el código de la función de crc8 en delphi. He intentendo hacerlo lo más parecido al jemplo de Java. Espero que os sirva. Un saludo y Feliz Navidad.
Código Delphi [-]
const
  CRC8_Table: array[0..255] of Byte = (
    $00, $07, $0E, $09, $1C, $1B, $12, $15,
    $38, $3F, $36, $31, $24, $23, $2A, $2D,
    $70, $77, $7E, $79, $6C, $6B, $62, $65,
    $48, $4F, $46, $41, $54, $53, $5A, $5D,
    $E0, $E7, $EE, $E9, $FC, $FB, $F2, $F5,
    $D8, $DF, $D6, $D1, $C4, $C3, $CA, $CD,
    $90, $97, $9E, $99, $8C, $8B, $82, $85,
    $A8, $AF, $A6, $A1, $B4, $B3, $BA, $BD,
    $C7, $C0, $C9, $CE, $DB, $DC, $D5, $D2,
    $FF, $F8, $F1, $F6, $E3, $E4, $ED, $EA,
    $B7, $B0, $B9, $BE, $AB, $AC, $A5, $A2,
    $8F, $88, $81, $86, $93, $94, $9D, $9A,
    $27, $20, $29, $2E, $3B, $3C, $35, $32,
    $1F, $18, $11, $16, $03, $04, $0D, $0A,
    $57, $50, $59, $5E, $4B, $4C, $45, $42,
    $6F, $68, $61, $66, $73, $74, $7D, $7A,
    $89, $8E, $87, $80, $95, $92, $9B, $9C,
    $B1, $B6, $BF, $B8, $AD, $AA, $A3, $A4,
    $F9, $FE, $F7, $F0, $E5, $E2, $EB, $EC,
    $C1, $C6, $CF, $C8, $DD, $DA, $D3, $D4,
    $69, $6E, $67, $60, $75, $72, $7B, $7C,
    $51, $56, $5F, $58, $4D, $4A, $43, $44,
    $19, $1E, $17, $10, $05, $02, $0B, $0C,
    $21, $26, $2F, $28, $3D, $3A, $33, $34,
    $4E, $49, $40, $47, $52, $55, $5C, $5B,
    $76, $71, $78, $7F, $6A, $6D, $64, $63,
    $3E, $39, $30, $37, $22, $25, $2C, $2B,
    $06, $01, $08, $0F, $1A, $1D, $14, $13,
    $AE, $A9, $A0, $A7, $B2, $B5, $BC, $BB,
    $96, $91, $98, $9F, $8A, $8D, $84, $83,
    $DE, $D9, $D0, $D7, $C2, $C5, $CC, $CB,
    $E6, $E1, $E8, $EF, $FA, $FD, $F4, $F3);


function Calculate_CRC8(Cadena: String):String;
var
  data: TArray;
  len, i: Integer;
  crc: byte;
begin
  data := TEncoding.UTF8.GetBytes(Cadena);
  len := Length(data);
  crc := 0;

  for i := 0 to len-1 do
    crc := CRC8_Table[(crc xor data[i]) and $FF];

  Result := Format('%.*d', [3, (crc and $FF)]);
end;

Neftali [Germán.Estévez] 30-12-2019 15:54:10

Cita:

Empezado por keys (Mensaje 534962)
Hola a todos. Buscando por internet y haciendo pruebas pongo el código para Delphi. Para los dos ejemplos funciona.

Cita:

Empezado por elcharlie (Mensaje 534982)
Hola a todos, pues yo también os dejo el código de la función de crc8 en delphi. He intentendo hacerlo lo más parecido al jemplo de Java. Espero que os sirva. Un saludo y Feliz Navidad.


^\||/^\||/^\||/^\||/^\||/
Muchas gracias a ambos.

NOTA: Actualizado el mensaje original con los links a los códigos (PHP y Delphi).

bilbur 30-12-2019 20:28:01

Dispositivo de facturación
 
De la documentación técnica:


Dispositivo de facturación: dispositivo desde el que se accede a la aplicación de facturación, independientemente de que dicho dispositivo acceda a un servidor remoto para el funcionamiento de la aplicación. Por ejemplo: en una aplicación web, el número de serie será el del dispositivo que tiene instalado el navegador. No será, por tanto, el servidor remoto al que accede.


En mi caso la aplicación de facturación accede a un servidor remoto (mediante navegador).
Puede acceder al servidor una cantidad importante de dispositivos.

Mediante programación puedo acceder a la siguiente información del cliente que se conecta:
  • Serie del disco duro (problema, puede tener varios discos duros o particiones)
  • Serie de la BIOS (me sale una cadena en blanco, vacia)
  • Serie del procesador (parece correcto)
  • La IP del cliente (IP interna fija o IP por VPN también fija)
  • La MAC del cliente
No puedo acceder al ID de dispositivo del cliente (en win10 es algo así : 1055263D-F231-43D3-9DB4-D62D3D9629E0)


Mi idea es crear una tabla manual en el servidor con la MAC del cliente y la id de su dispositivo.


Antes de continuar me gustaría saber cómo solventáis vosotros este tema, no sea que esté haciendo el novato y exista una solución mejor.


Gracias

Sistel 30-12-2019 22:01:02

Cita:

Empezado por bilbur (Mensaje 535017)
De la documentación técnica:

Dispositivo de facturación: dispositivo desde el que se accede a la aplicación de facturación, independientemente de que dicho dispositivo acceda a un servidor remoto para el funcionamiento de la aplicación. Por ejemplo: en una aplicación web, el número de serie será el del dispositivo que tiene instalado el navegador. No será, por tanto, el servidor remoto al que accede.

En mi caso la aplicación de facturación accede a un servidor remoto (mediante navegador).
Puede acceder al servidor una cantidad importante de dispositivos.

Mediante programación puedo acceder a la siguiente información del cliente que se conecta:
  • Serie del disco duro (problema, puede tener varios discos duros o particiones)
  • Serie de la BIOS (me sale una cadena en blanco, vacia)
  • Serie del procesador (parece correcto)
  • La IP del cliente (IP interna fija o IP por VPN también fija)
  • La MAC del cliente
No puedo acceder al ID de dispositivo del cliente (en win10 es algo así : 1055263D-F231-43D3-9DB4-D62D3D9629E0)

Mi idea es crear una tabla manual en el servidor con la MAC del cliente y la id de su dispositivo.

Antes de continuar me gustaría saber cómo solventáis vosotros este tema, no sea que esté haciendo el novato y exista una solución mejor.

Gracias

En mi caso, se puede acceder al programa de facturación desde cualquier ordenador, smartphone o tablet conectado a Internet que se tenga a mano.
Para acceder, se utiliza cualquier navegador web simplemente autenticándose mediante usuario y contraseña.
Y, en el caso de algunos comerciales y transportistas en movilidad, pueden utilizar un PC ajeno (por ejemplo, el ordenador del cliente al que están visitando cuando ellos tienen mala conectividad de datos desde su portátil o smartphone)
Lógicamente, no se puede instalar ningún certificado ni software en los ordenadores ajenos desde los que se accede.
Y, por tanto, no hay forma de tener un certificado de dispositivo ni de obtener desde el servidor de facturación ningún identificativo fijo de dispositivo.

Lo he consultado al buzón de TicketBAI y estoy a la espera de respuesta.

Saludos

Sistel 30-12-2019 22:08:30

Por cierto, en otra consulta anterior a TicketBAI, me respondieron que en la fase piloto se había utilizado, con éxito, en algunos casos, la MAC del dispositivo para utilizarla con identificativo del dispositivo.
Supongo que se le otrogaba un certificado de dispositivo a ese identificativo de MAC.

Pero, en mi caso, no es posible porque puede ser que la conexión sea desde un dispositivo ajeno a la empresa (como he indicado antes).
Y, aparte, tampoco veo la forma de obtener la MAC del dispositivo que se conecta desde el servidor web, remoto, de facturación.

Saludos

Sistel 30-12-2019 22:25:26

En el punto 4.2.2 - Arquitecturas con firma en servidor, del documento de Política de firma, dice:

De forma complementaria, si la emisión de facturas se realiza en procesos desasistidos (batch) se
considera “arquitectura con firma en servidor”.

... En este caso, no se permite la firma con certificado de dispositivo.


El tema ahora es que tampoco se debería exigir certificado de dispositivo, en arquitecturas con firma en servidor (aunque no sean procesos desasistidos), si no es posible identificar el dispositivo desde el que se accede.

Espero respuesta de TicketBAI sobre el tema.
Les he propuesto que se pueda utilizar como identificativo del dispositivo (para la generación del código TBAI) un valor enviado mediante una cookie.

Saludos

xamminf 31-12-2019 12:37:42

Cita:

Empezado por pablog2k (Mensaje 534864)
gracias keys, vamos a echarle un vistazo

"En el caso de los/las contribuyentes guipuzcoanos/as, tan pronto se emita la factura, el programa remitirá el archivo XML-TBAI a la Hacienda Foral de Gipuzkoa, es decir, la remisión será online.
Ello conllevará que debe tenerse acceso a internet."

esto quiere decir que no se pueden enviar después? como se había planteado por aquí.
me parece un poco fuerte....

¿ Y cómo sabrán que no se manda después ? ¿ Lleva datos de stamp impresión el .xml ?


La franja horaria es GMT +2. Ahora son las 16:01:36.

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