Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-12-2019
pablog2k pablog2k is offline
Miembro
 
Registrado: may 2017
Posts: 241
Poder: 10
pablog2k Va por buen camino
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....

Última edición por pablog2k fecha: 19-12-2019 a las 13:56:00.
Responder Con Cita
  #2  
Antiguo 19-12-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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)...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 03-05-2021 a las 13:59:12.
Responder Con Cita
  #3  
Antiguo 23-12-2019
bilbur bilbur is offline
Miembro
 
Registrado: dic 2019
Posts: 62
Poder: 7
bilbur Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 23-12-2019
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por bilbur Ver Mensaje
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.
Responder Con Cita
  #5  
Antiguo 24-12-2019
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.234
Poder: 24
keys Va por buen camino
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'
Responder Con Cita
  #6  
Antiguo 26-12-2019
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 193
Poder: 14
elcharlie Va por buen camino
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;
Responder Con Cita
  #7  
Antiguo 30-12-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por keys Ver Mensaje
Hola a todos. Buscando por internet y haciendo pruebas pongo el código para Delphi. Para los dos ejemplos funciona.
Cita:
Empezado por elcharlie Ver Mensaje
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).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 30-12-2019 a las 15:57:41.
Responder Con Cita
  #8  
Antiguo 31-12-2019
xamminf xamminf is offline
Miembro
 
Registrado: ene 2017
Posts: 216
Poder: 10
xamminf Va por buen camino
Cita:
Empezado por pablog2k Ver Mensaje
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 ?
Responder Con Cita
  #9  
Antiguo 31-12-2019
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.234
Poder: 24
keys Va por buen camino
A la hora de firmar el fichero se pone la fecha y la hora.
Responder Con Cita
  #10  
Antiguo 31-12-2019
xamminf xamminf is offline
Miembro
 
Registrado: ene 2017
Posts: 216
Poder: 10
xamminf Va por buen camino
Cita:
Empezado por keys Ver Mensaje
A la hora de firmar el fichero se pone la fecha y la hora.

Pues no sé... entonces...
Habrá que trabajar con albaranes... where available... claro está...
No puede uno estar haciendo facturas como si borradores fuera y luego rectificativas...
Responder Con Cita
  #11  
Antiguo 31-12-2019
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.234
Poder: 24
keys Va por buen camino
Cita:
Empezado por xamminf Ver Mensaje
Pues no sé... entonces...
Habrá que trabajar con albaranes... where available... claro está...
No puede uno estar haciendo facturas como si borradores fuera y luego rectificativas...
De eso se trata, que una vez que generas una factura no la puedas modificar.
Responder Con Cita
  #12  
Antiguo 31-12-2019
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por xamminf Ver Mensaje
Pues no sé... entonces...
Habrá que trabajar con albaranes... where available... claro está...
No puede uno estar haciendo facturas como si borradores fuera y luego rectificativas...
Es lo que tratan de perseguir.

Saludos
Responder Con Cita
  #13  
Antiguo 02-01-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por xamminf Ver Mensaje
Habrá que trabajar con albaranes... where available... claro está...
No puede uno estar haciendo facturas como si borradores fuera y luego rectificativas...

Es como si trabajaras con "facturas proforma".
En tu sistema puedes crear, modificar y borrar facturas, pero cuando emites la factura "definitiva" y se la envías al cliente, es cuando empieza todo el proceso que hemos descrito.
En ese punto la única opción de modificación, como comentas, son las rectificativas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #14  
Antiguo 02-01-2020
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Es como si trabajaras con "facturas proforma".
En tu sistema puedes crear, modificar y borrar facturas, pero cuando emites la factura "definitiva" y se la envías al cliente, es cuando empieza todo el proceso que hemos descrito.
En ese punto la única opción de modificación, como comentas, son las rectificativas.
Hay un tema oscuro que no entiendo en qué casos se puede emplear:
Punto 6.5 "Anulación de una factura" del documento de Especificaciones.

Saludos
Responder Con Cita
  #15  
Antiguo 02-01-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.234
Poder: 24
keys Va por buen camino
Cita:
Empezado por Sistel Ver Mensaje
Hay un tema oscuro que no entiendo en qué casos se puede emplear:
Punto 6.5 "Anulación de una factura" del documento de Especificaciones.

Saludos
Yo creo que eso lo han dejado por ejemplo si yo emito una factura y la envío a TicketBai, pero luego me doy cuenta que me he equivocado de cliente, en ese caso no puedo enviarsela al cliente y menos generar una rectificativa, ya que el cliente me va a mandar a donde yo se. En ese caso anulo la factura, no la borro, ya que una factura enviada a TicketBai no la puedo borrar.

Es decir cuando yo emito y envio una factura a TBAI y por lo que sea esta incorrecta y no hay forma de generar una rectificativa.

De todas formas podían dar un poco más de información.

Última edición por keys fecha: 02-01-2020 a las 11:15:37.
Responder Con Cita
  #16  
Antiguo 02-01-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Sistel Ver Mensaje
Hay un tema oscuro que no entiendo en qué casos se puede emplear:
Punto 6.5 "Anulación de una factura" del documento de Especificaciones.

A ver si esto aclara dudas.
Cuándo puedo anular una factura
Los motivos por los que una empresa puede realizar una cancelación de invoice o e factura, pueden ser, entre otros:
  • No se ha recibido el producto, aunque se haya pagado.
  • No se ha llevado a cabo un servicio, aunque se haya abonado
  • Directamente cuando un producto ha sido devuelto
Solo es factible anular una factura si ha sido recién enviada y no está incluida en un trimestre contable ya cerrado. Es decir: no tienen el IVA liquidado. En este caso, cancelamos la factura y emitimos una nota de crédito.

===> Extraído de aquí
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #17  
Antiguo 31-12-2019
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por xamminf Ver Mensaje
¿ Y cómo sabrán que no se manda después ? ¿ Lleva datos de stamp impresión el .xml ?
Lleva fecha de factura.

Saludos
Responder Con Cita
  #18  
Antiguo 07-01-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por xamminf Ver Mensaje
¿ Y cómo sabrán que no se manda después ? ¿ Lleva datos de stamp impresión el .xml ?

La factura incluye fecha y hora. Supongo que simplemente hay que compararla con la fecha y hora del envío.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3716 19-01-2026 20:01:34
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 05:29:26.


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
Copyright 1996-2007 Club Delphi