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.

Ramon88 21-09-2021 18:16:39

Cita:

Empezado por ermendalenda (Mensaje 542932)
Sí, parecen serios, estarás tratando con Juanjo.
Su Api arranca sobre un contenedor Docker (para ello necesitaras unos requisitos mínimos de sistema, memoria suficiente, S.O windows 10, linux..) le mandas la info en JSON (creo que admitenotros formatos) y te devuelven la imagen Qr, el identificador Qr y la api se encarga del control del envio.
Buena Solución si no te quieres pringar demasiado a un coste razonable y te olvidas de las actualizaciones que te haran/daran ellos mientras tengas el mantenimiento.

A mi me gusta tener el toro por los cuernos pero no descarto, si se me complica, poner la api de ellos.




No me ha parecido muy economico, por no decir nada...

Vamos por ese dinero tengo un trabajador haciéndolo... Es mi opinión.


El problema de hacerlo es el tiempo que esto implica, que antes me subia bien el XML ahora no, por que? no lo se... es una jodienda de la buenas.

ermendalenda 21-09-2021 19:03:59

Cita:

Empezado por Ramon88 (Mensaje 543003)
No me ha parecido muy economico, por no decir nada...

Vamos por ese dinero tengo un trabajador haciéndolo... Es mi opinión.


El problema de hacerlo es el tiempo que esto implica, que antes me subia bien el XML ahora no, por que? no lo se... es una jodienda de la buenas.

bueno, ya te digo que esto no es un trabajo para un mes, pero bueno, creo que en el foro hay alguien más que te puede ofrecer el servicio y además creo que no necesita tantos requisitos de sistema

Ramon88 21-09-2021 19:27:20

Bueno, intentaremos sacarlo...


Alguien tiene la clase para calcular CRC8 en .Net o c#??

ermendalenda 21-09-2021 19:42:44

Cita:

Empezado por Ramon88 (Mensaje 543009)
Bueno, intentaremos sacarlo...


Alguien tiene la clase para calcular CRC8 en .Net o c#??


En Vb cambiando poca cosa te vale para net:
Código:

Private Declare Function WideCharToMultiByte Lib "kernel32" ( _
    ByVal CodePage As Long, _
    ByVal dwFlags As Long, _
    ByVal lpWideCharStr As Long, _
    ByVal cchWideChar As Long, _
    ByVal lpMultiByteStr As Long, _
    ByVal cbMultiByte As Long, _
    ByVal lpDefaultChar As Long, _
    ByVal lpUsedDefaultChar As Long) As Long

Dim CRC8_Table As Variant
' CodePage constant for UTF-8
Private Const CP_UTF8 = 65001

''' Return byte array with VBA "Unicode" string encoded in UTF-8
Function Utf8BytesFromString(strInput As String) As Variant
    Dim nBytes As Long
    ' Catch empty or null input string
    Utf8BytesFromString = vbNullString
    If Len(strInput) < 1 Then Exit Function
    ' Get length in bytes *including* terminating null
    nBytes = WideCharToMultiByte(CP_UTF8, 0&, ByVal StrPtr(strInput), -1, 0&, 0&, 0&, 0&)
    ' We don't want the terminating null in our byte array, so ask for `nBytes-1` bytes
    Dim abBuffer() As Byte
   
    ReDim abBuffer(nBytes - 2)  ' NB ReDim with one less byte than you need
    nBytes = WideCharToMultiByte(CP_UTF8, 0&, ByVal StrPtr(strInput), -1, ByVal VarPtr(abBuffer(0)), nBytes - 1, 0&, 0&)
    Utf8BytesFromString = abBuffer
End Function


Public Function crc8(buffer As String, Polynom, Initial As Variant) As Variant
CRC8_Table = 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)
 
  Dim data As Variant
    data = Utf8BytesFromString(buffer)
  Dim alen, i As Integer
  Dim crc As Byte
  'data = Buffer ':= TEncoding.UTF8.GetBytes(Cadena);
  alen = UBound(data)
  crc = 0
   
  For i = 0 To alen
    crc = CRC8_Table((crc Xor data(i)) And &HFF)
 
Next
    crc8 = crc And &HFF



End Function


Para llamar a la función y que te devuelva en cr8:
cr8 = crc8(Cadena_enviada, 7, 0)


iNITIAL Y POLYNOM CREO QUE PUEDES OBVIARLAS

iMia 22-09-2021 08:18:50

Cita:

Empezado por iMia (Mensaje 542992)
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...

Respondo con este mensaje para que lo podáis ver y seguir.
Me han contestado de Araba.


Código:

Buenas tardes Mia,

Hemos revisado los 2 apuntes que has realizado respecto a los campos FechaRecepcion y Estado y tenéis razón en vuestra apreciación.
Ya está corregido e implantado en el entorno de Pruebas para que no vuelva a darse estos errores.

Respecto al envió repetido de la misma factura es correcto que te responda "01 - Rechazada".
El código de estado de respuesta HTTP que devolvemos cuando detectamos que una factura es duplicada es “400 - Bad request”.

En el XML de respuesta has tenido que recibir el siguiente mensaje de error:
  Código: 005
  Descripción: Fichero de alta TicketBAI ya está registrado en el sistema

Los 2 primeros temas de la fecha y el estado, Corregidos... Bien, han reaccionado bien...
El que no veo claro es la respuesta 400 si está duplicada... ¿por que es una bad request?. Eso debería ser si el mensaje que se envia está mal formado o el xml del alta está mal, si el mensaje enviado está corrupto... hasta si el certificado es incorrecto (que en este caso debería contestar otra cosa, pero bueno, se puede asumir,... ) ¿pero bad request? ¿porque si la resquest es correcta?... eso es una excepcion de comunicación, no de que en su sistema ya tienen los datos que les estoy indicando... simplemente tendrían que hacer como Gipuzkoa, devolver el mensaje que ya existe pero nunca un bad request... no lo entiendo...

De verdad que a veces pensamos con otra cosa en vez de con la cabeza...

saludos...


PD:
Tambien me han contestado sobre el tema del QR

Código:

Buenas tardes Mia,

La Consulta del QR, aún no tenemos en funcionamiento en el entorno de pruebas, está en fase de desarrollo.

En cuanto se encuentre disponible, lo comunicaremos a través de nuestra página web
 donde publicaremos la URL correspondiente a dicha consulta en el entorno de Pruebas https://web.araba.eus/es/hacienda/ticketbai

No obstante lo anterior, esperamos tenerlo disponible a lo largo de las próximas semanas.

Un saludo.


ermendalenda 22-09-2021 08:37:51

Cita:

Empezado por iMia (Mensaje 543012)
Respondo con este mensaje para que lo podáis ver y seguir.
Me han contestado de Araba.


Código:

Buenas tardes Mia,

Hemos revisado los 2 apuntes que has realizado respecto a los campos FechaRecepcion y Estado y tenéis razón en vuestra apreciación.
Ya está corregido e implantado en el entorno de Pruebas para que no vuelva a darse estos errores.

Respecto al envió repetido de la misma factura es correcto que te responda "01 - Rechazada".
El código de estado de respuesta HTTP que devolvemos cuando detectamos que una factura es duplicada es “400 - Bad request”.

En el XML de respuesta has tenido que recibir el siguiente mensaje de error:
  Código: 005
  Descripción: Fichero de alta TicketBAI ya está registrado en el sistema

Los 2 primeros temas de la fecha y el estado, Corregidos... Bien, han reaccionado bien...
El que no veo claro es la respuesta 400 si está duplicada... ¿por que es una bad request?. Eso debería ser si el mensaje que se envia está mal formado o el xml del alta está mal, si el mensaje enviado está corrupto... hasta si el certificado es incorrecto (que en este caso debería contestar otra cosa, pero bueno, se puede asumir,... ) ¿pero bad request? ¿porque si la resquest es correcta?... eso es una excepcion de comunicación, no de que en su sistema ya tienen los datos que les estoy indicando... simplemente tendrían que hacer como Gipuzkoa, devolver el mensaje que ya existe pero nunca un bad request... no lo entiendo...

De verdad que a veces pensamos con otra cosa en vez de con la cabeza...

saludos...


PD:
Tambien me han contestado sobre el tema del QR

Código:

Buenas tardes Mia,

La Consulta del QR, aún no tenemos en funcionamiento en el entorno de pruebas, está en fase de desarrollo.

En cuanto se encuentre disponible, lo comunicaremos a través de nuestra página web
 donde publicaremos la URL correspondiente a dicha consulta en el entorno de Pruebas https://web.araba.eus/es/hacienda/ticketbai

No obstante lo anterior, esperamos tenerlo disponible a lo largo de las próximas semanas.

Un saludo.


Efectivamente se llama bageza.
Error 400: cualquier error de rechazo pde la conexión/petición por parte del servidor que te rechaza que no esté contemplado.

iMia 22-09-2021 08:48:18

Cita:

Empezado por ermendalenda (Mensaje 543016)
Efectivamente se llama bageza.
Error 400: cualquier error de rechazo pde la conexión/petición por parte del servidor que te rechaza que no esté contemplado.

Es que no se coge por ningún sitio...
Si ellos han recibido y leído mi request para saber que la factura ya existe, no puede nunca un bad request...
La comunicación ha ido bien a nivel de protocolo... por lo tanto es 200 no es 400...

Bueno, les he escrito exponiendo los motivos por los que no debería ser un error 400.

A ver qué contestan, por que cambiarlo,, no tengo esperanzas que lo cambien... ya van muy pillados en tiempo como para ponerse a cambiar algo que "les" funciona (aunque sin lógica)..

tejano 22-09-2021 08:55:19

Por si alguien no lo ha recibido. Comunicación de Batuz DFB

Kaixo,
Dakizuen bezala, Batuz-en sustatutako borondatezko aldia 2022ko urtarrilaren 1ean hasiko da sistemari atxikitzen zaizkien pertsona eta erakundeentzat. Ondorioz, data horretan irekiko da Eragiketa Ekonomikoen Erregistro Liburuaren (EEEL) esparru erreala, Foru Ogasunaren web aplikaziorako nahiz Bizkaiko Foru Aldundiko sarrera masiboen zerbitzuaren bidez fitxategi informatikoak automatikoki partekatzeko.
Oraingoan, jakinarazten dizuegu urriaren erdialdetik aurrera eta abenduaren hasierara arte, proba gisa irekiko dela EEEL-ren esparru erreal hori. Helburu bikoitza dauka: batetik, zergadunak sistema berriarekin ohitzea; bestetik, softwarea garatzen duten enpresek probak egin ahal izatea sarrera masiboen zerbitzuaren esparru errealaren gainean. Edonola ere, aldi horretan egiten diren oharrak proba gisa erregistratuko dira, eta ez dute zergetan transzendentziarik izango.

Hori dela eta, https://pruesarrerak.bizkaia.eus sarreren zerbitzuaren oraingo proba esparrua 2021eko irailaren 30ean itxiko da.

Bidalketa masiboen sistemaren probak egiteko, honako esparru hauek egongo dira eskuragarri:
 EEEL-ren esparru erreala proba eran, ekoizpen ziurtagiri errealekin. URLa https://sarrerak.bizkaia.eus izango da, eta, esan bezala, 2021eko urriaren erdialdetik abenduaren hasierara arte eskuragarri egongo da.
 Proben esparru berria. Jasotako iradokizunei jarraikiz, proba ziurtagiriekin funtzionatuko du, eta azaroaren erdialdetik aurrera egongo da eskuragarri.
Esparru horiei buruzko informazio zehatza Batuz-en webgunean (www.batuz.eus) argitaratuko da, eta webgune horretako Berritasunen atalaren bidez nahiz postontzi honetatik bidalitako mezu elektroniko baten bidez jakinaraziko da.

Como sabéis, el periodo voluntario incentivado de Batuz se iniciará el 1 de enero de 2022 para las personas y entidades que se adhieran al sistema. En consecuencia, esta fecha supondrá la apertura del entorno real del Libro Registro de Operaciones Económicas (LROE), tanto para la aplicación web de la Hacienda Foral como para el intercambio automático de ficheros informáticos a través del servicio de entradas masivas de la Diputación Foral de Bizkaia.
Os escribimos ahora para informaros de que, a partir de mediados de octubre y hasta principios de diciembre, se abrirá a modo de pruebas este entorno real del LROE, con el doble objetivo de que, por un lado, las personas contribuyentes se familiaricen con el nuevo sistema, y, por otro lado, las empresas desarrolladoras de software puedan realizar pruebas sobre el entorno real del servicio de entradas masivas. En todo caso, las anotaciones que se realicen durante este periodo se registrarán a modo de prueba y no tendrán trascendencia tributaria.

Por ello, el entorno de pruebas actual del servicio de entradas https://pruesarrerak.bizkaia.eus se cerrará el próximo 30 de septiembre de 2021.

Para la realización de pruebas del sistema de envíos masivos estarán disponibles los siguientes entornos:
 Entorno real del LROE a modo de pruebas con certificados reales de producción. La URL será https://sarrerak.bizkaia.eus y, como hemos dicho, estará disponible a partir de mediados de octubre hasta principios de diciembre de 2021.
 Nuevo entorno de pruebas que, atendiendo a las sugerencias recibidas, funcionará con certificados de pruebas y estará disponible a partir de mediados de noviembre.
La información detallada de estos entornos se publicará en la web de Batuz (www.batuz.eus) y se notificará tanto a través del apartado de Novedades de dicha web como a través de un correo enviado desde este buzón.
Agur bat.

keys 22-09-2021 09:37:14

Pero no dicen si estara operativo todo el libro 140/240 o solo la parte de TicketBAI

keys 22-09-2021 10:17:20

Releyendo el mensaje que acaban de enviar de Bizkaia.

Cita:

Para la realización de pruebas del sistema de envíos masivos estarán disponibles los siguientes entornos:
Entorno real del LROE a modo de pruebas con certificados reales de producción. La URL será https://sarrerak.bizkaia.eus y, como hemos dicho, estará disponible a partir de mediados de octubre hasta principios de diciembre de 2021.
Nuevo entorno de pruebas que, atendiendo a las sugerencias recibidas, funcionará con certificados de pruebas y estará disponible a partir de mediados de noviembre.
Por lo tanto vamos a estan sin entorno de pruebas hasta mediados de noviembre (:confused:), vamos a tener que enviar al real. Si es que puedes, ya que me imagino que tendrás que tener una empresa de Bizkaia y tener un certificado real de producción como dice el mensaje.

Que majos :eek:

elcharlie 22-09-2021 12:20:17

Cita:

Empezado por keys (Mensaje 543021)
Releyendo el mensaje que acaban de enviar de Bizkaia.



Por lo tanto vamos a estan sin entorno de pruebas hasta mediados de noviembre (:confused:), vamos a tener que enviar al real. Si es que puedes, ya que me imagino que tendrás que tener una empresa de Bizkaia y tener un certificado real de producción como dice el mensaje.

Que majos :eek:

Si, la verdad es que son muy simpáticos. Yo de verdad, es que ya lo flipo con los de Lantik, o con quien se le haya ocurrido esta barbaridad... Mas difícil no nos lo pueden poner.

Noe277 22-09-2021 12:34:44

Numero de serie del equipo
 
Buenas,

Tengo una duda para solicitar un certificado de dispositivo.
El caso es que si el ordenador lo compro por piezas ¿ Cual es el numero del dispositivo ?

ermendalenda 22-09-2021 13:16:28

Cita:

Empezado por Noe277 (Mensaje 543024)
Buenas,

Tengo una duda para solicitar un certificado de dispositivo.
El caso es que si el ordenador lo compro por piezas ¿ Cual es el numero del dispositivo ?

Se supone que por ejemplo la MAC si tiene Red.

espinete 22-09-2021 13:19:36

Hola a todos.

Llevo tiempo sin entrar al foro (desde que Bizkaia anunció que posponía Batuz hasta 2023-2024). He leído todas las páginas desde entonces pero no encuentro lo que necesito. He visto muchas preguntas y respuestas sobre el código para C, PHP, .Net, etc. pero no tengo respuesta (o no he sabido encontrar) a la siguiente duda concreta...

Si Bizkaia pospone Batuz, pero no TicketBAI... ¿significa eso que solo debemos (por ahora) hacer la generación del tícketbai, firmarlo, obtener el código QR e imprimirlo en el tícket/factura?

¿Qué pasa entonces con el envío de LROE (140,240)?

En mis pruebas, hasta ahora había conseguido:
Bizkaia: generar y firmar el ticketbai, obtener el QR, generar el xml de envío (140/240), comprimirlo y enviarlo, así como las consultas y anulaciones.
Gipuzkoa/Araba: generar y firmar el ticketbai, obtener el QR y realizar el envío y consulta

Gipuzkoa y Araba sí permiten el envío del ticket en el momento de hacer la factura (no como Bizkaia que se hacía de 1000 en 1000). ¿Eso ha cambiado también? ¿Cómo y cuándo se hace el envío a Bizkaia tras los cambios de Batuz?

He leído bastante sobre problemas con el certificado de usuario, certificado de dispositivo, etc. pero sinceramente no sé cual puede ser el problema, ya que yo uso un certificado de persona física y otro de persona jurídica y siempre he podido hacer las firmas, los envíos, etc. ¿Cuándo se usa ese "certificado de dispositivo"?

Espero que puedan responder estas preguntas, ya que de verdad he estado leyendo las más de 30 páginas que hay desde que lo dejé y es muy difícil encontrar la respuesta a estas dudas.

Un saludo

Noe277 22-09-2021 14:33:49

Cita:

Empezado por ermendalenda (Mensaje 543025)
Se supone que por ejemplo la MAC si tiene Red.

Si tengo dos tarjetas de red tengo dos mac no me serviría para identificar únicamente el equipo.

si yo pongo esto en la cmd me da el numero de serie pero existen equipos en los que no.

Código:

wmic csproduct get identifyingnumber

HerensugeBeltz 22-09-2021 15:18:53

Cita:

Empezado por Noe277 (Mensaje 543024)
Buenas,

Tengo una duda para solicitar un certificado de dispositivo.
El caso es que si el ordenador lo compro por piezas ¿ Cual es el numero del dispositivo ?

En Windows, usando WMI, nosotros leemos el nº de serie de la BIOS (WIN32_BIOS) y de la placa (WIN32_BASEBOARD), siendo éste más fiable dado que en equipos OEM (montados por piezas) muchas veces no se graba el nº de serie de la BIOS. los de marca sí lo llevan.

Para cualquier duda sobre WMI os recomiendo la estupenda aplicación (Delphi) de RRUZ, Wmi Delphi Code Creator:
https://github.com/RRUZ/wmi-delphi-code-creator

HerensugeBeltz 22-09-2021 15:22:36

Cita:

Empezado por Noe277 (Mensaje 543027)
Si tengo dos tarjetas de red tengo dos mac no me serviría para identificar únicamente el equipo.

si yo pongo esto en la cmd me da el numero de serie pero existen equipos en los que no.

Código:

wmic csproduct get identifyingnumber

Código:

wmic baseboard get serialnumber

rci 22-09-2021 15:50:55

Cita:

Empezado por espinete (Mensaje 543026)
Hola a todos.

Llevo tiempo sin entrar al foro (desde que Bizkaia anunció que posponía Batuz hasta 2023-2024). He leído todas las páginas desde entonces pero no encuentro lo que necesito. He visto muchas preguntas y respuestas sobre el código para C, PHP, .Net, etc. pero no tengo respuesta (o no he sabido encontrar) a la siguiente duda concreta...

Si Bizkaia pospone Batuz, pero no TicketBAI... ¿significa eso que solo debemos (por ahora) hacer la generación del tícketbai, firmarlo, obtener el código QR e imprimirlo en el tícket/factura?

Hola Espinete,
En bizkaia se pospone la obligatoriedad de Batuz y de ticketBAI también

rci 22-09-2021 15:53:36

numero de serie es opcional?
 
Hola, veo que comentais mucho sobre el número de serie del dispositivo, pero yo tengo entendido que debido a la imposibilidad técnica de saberlo en todos los casos, es un valor que no es obligatorio y por lo tanto no lo relleno y no me he preocupado en obtenerlo.


Es así o estoy equivocado?


Muchas gracias

ermendalenda 22-09-2021 15:58:03

Cita:

Empezado por HerensugeBeltz (Mensaje 543029)
Código:

wmic baseboard get serialnumber

A ver este tema me interesa. Lo que yo haría es intentar hablar con un emisor de certificados de dispositivos por ejemplo IZENPE para que te aconseje por que lo que yo pienso puedo estar equivicado:
El certificado de dispositivo se solicita sobre un número de serie y el certificado no va a comprobar que corresponde, pero si será necesario para posibles inspecciones que garantice un número de serie único y sigo pensando que te puede servir la MAC, y si te da 2 o as seguramente puedas identificarlas por software en un orden y puedes coger siempre la primera.


La franja horaria es GMT +2. Ahora son las 18:42:12.

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