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)

Noe277 05-06-2023 14:10:29

Cita:

Empezado por MaeseKvothe (Mensaje 551644)
Yo en mi caso estoy haciendo que en caso de no poder firmarse o de cualquier otro tipo de error en alguna comprobación (error en cif por ejemplo, número ya generado, guardada una fecha posterior, etc) o proceso devuelva y avise del error en cuestión y no genere los datos. Dejo la factura con su respectiva numeración pero sin los datos TBAI y sin emitir y una vez corregido lo que sea que esté mal sólo hay que volver a intentar generar.

Si, es una opción pero en este caso se trata de un TPV que sabe dios de que manera han reinstalado las cosas. El caso es que ticket tienen que dar al cliente.

Pero igual si lo meto sin Tbai y tira millas y después que me lo regenere todo en orden.

ermendalenda 05-06-2023 16:56:18

Cita:

Empezado por Noe277 (Mensaje 551645)
Si, es una opción pero en este caso se trata de un TPV que sabe dios de que manera han reinstalado las cosas. El caso es que ticket tienen que dar al cliente.

Pero igual si lo meto sin Tbai y tira millas y después que me lo regenere todo en orden.

Hola. Depende del escenario. Por lo que veo no eres el desarrollador.
Si el instalador te lo va a arreglar PRONTO, puedes añadir la frase que indican cuando hay problemas, de que por incidencia no puedes generar el qr... o algo así. Y lo.que tú comentas después que te lo generen en orden y el cliente que te lo solicite puedas darlo con el mismo número de tiquet. La normativa tb indica que debes enviar un correo a la hacienda foral con la incidencia desde cuando la tienes y cuando la arregles otro correo

xamminf 06-06-2023 17:18:06

Cita:

Empezado por Noe277 (Mensaje 551645)
Si, es una opción pero en este caso se trata de un TPV que sabe dios de que manera han reinstalado las cosas. El caso es que ticket tienen que dar al cliente.

Pero igual si lo meto sin Tbai y tira millas y después que me lo regenere todo en orden.

Sin duda. Con tickeBAI un software de TPV se ha convertido en un "software de misión crítica"
No es lo mismo emitir facturas a partir de albaranes, tranquilamente, sin prisas, diseñando procesos, con gente de trabajo administrativa, que hacer tickets con QR a través de un TPV y con camareros como usuarios. Esperemos que la cotización del precio del software TPV haya ido en consonancia a los, cada vez mayores, requerimientos, donde el diseño es crucial para poder responder a las mil y una incidencias posibles

Ramon88 06-06-2023 17:34:58

Tengo problemas con guipuzcoa. Os funciona?

juggern 07-06-2023 05:43:44

Buenos días,

Recientemente he cogido el mantenimiento de una aplicación y quieren mirar a desarrollar todo lo del ticket bai para poder ampliarse.
Veo muchísima información, he leído algo pero al ver tantos mensajes y tanta información estoy un poco perdido.
¿Por donde me recomiendan empezar o que pasos seguir?
Hay algún documento donde se explique todo lo que hay que hacer? He visto los pasos mas o menos y creo que tengo una idea del funcionamiento, pero me gustaría poder guiarme por unos puntos para ir empezando.
Es que viendo tanta información, tantos problemas y además de fechas tan antiguas, me agobio un poco, porque me estoy incorporando muy tarde al jaleo.

Por cierto, una de las cosas que vi es que el fichero xml hay que firmarlo, esta firma, tiene que ser la firma del cliente verdad? no la firma de la empresa no?

Muchas gracias

Neftali [Germán.Estévez] 07-06-2023 08:29:20

Cita:

Empezado por juggern (Mensaje 551665)
Hay algún documento donde se explique todo lo que hay que hacer? He visto los pasos mas o menos y creo que tengo una idea del funcionamiento, pero me gustaría poder guiarme por unos puntos para ir empezando.


Yo por orden intentaría lo siguiente:

* Crear un fichero de TicketBAI (con los datos de la factura)
* Firmarlo con un certificado.
* Realizar un envío a Álava/Guipuzcoa (que es el más simple)
* Lo siguiente sería realizar un envío a Vizcaya (un poco más complejo)


A partir de ahí te quedan muchas cosas por hacer (QR, envío de modificaciones y anulaciones y un montón de libros LROE -de Vizcaya-)

xamminf 08-06-2023 10:34:37

Cuadre de los descuentos por linea o en pie de factura
 
En Gipuzkoa tengo los dos errores consecutivos de abajo en la misma respuesta. Estoy cuadrando el descuento por línea con una nueva linea donde se incluye la diferencia, pero claro, no se corresponde.
Me han mandado un .pdf con estos dos temas.
La pregunta es ¿ Cómo se debe actuar cuando una linea tiene descuento o bien una factura tiene descuento en pie de factura ?
Cita:


<Estado>00</Estado>
<Descripcion>Recibido - ALTA</Descripcion>
<Azalpena>Jasota - ALTA</Azalpena>
<ResultadosValidacion>
<Codigo>5016</Codigo>
<Descripcion>La suma de los importes indicados en el desglose Sujeto y NoExento no coincide con lo recogido en las lí*neas de detalle. Esta validación no se aplicará cuando alguna clave de régimen sea 03, 05, 06 o 09 o cuando TipoRectificativa sea I o tipo de...</Descripcion>
<Azalpena>Lotua eta salbuetsi gabea [sujeta y no exenta] banakapenean adierazitako zenbatekoen batura ez dator bat xehetasun lerroetan jasotakoarekin. Balioztapen hau ez da aplikatuko, erregimen gakoren bat 03, 05, 06 edo 09 bada edo faktura zuzentzailearen...</Azalpena>
</ResultadosValidacion>
<ResultadosValidacion>
<Codigo>5018</Codigo>
<Descripcion>El IVA calculado de alguna de las lí*neas no es un tipo aceptado. Asegúrese de haber informado del ImporteUnitario sin IVA, el ImporteTotal de la línea con IVA y de indicar siempre en euros el Descuento aplicado. Esta validación no se aplicará...</Descripcion>
<Azalpena>Lerroetako batean kalkulatutako BEZa ez da onartutako Zerga tasa [Tipo Impositivo] bat. Ziurtatu informatu direla Unitateko zenbatekoa [ImporteUnitario] BEZik gabe, lerroaren Zenbatekoa guztira [ImporteTotal] BEZarekin eta ezarritako Deskontua...</Azalpena>
</ResultadosValidacion>

Zósimo 12-06-2023 13:27:25

Bizkaia parece no responder nada
 
Desde Batuz me dicen que su servidor sí está respondiendo con cabeceras y archivo adjunto. Sin embargo a mí me sale la cadena vacía, tanto para las cabeceras como para el archivo adjunto. Este es mi código:

He probado con file_get_create sin resultados. He seguido las indicaciones dadas aquí: https://www.clubdelphi.com/foros/sho...postcount=2964. Pero tampoco consigo sacar nada del servicio REST.

Este es mi código, lo he recortado para que sea lo mínimo posible:
Cita:

$json = '{"con": "LROE", "apa": "1.1", "inte": {"nif": "'.cortar($texto,"<NIF>","</NIF>").'","nrs": "'.cortar($texto, "<ApellidosNombreRazonSocial>", "</ApellidosNombreRazonSocial>").'"},"drs": {"mode": "240","ejer": "'.$fechaFactura[2].'" }}';
Cita:

// Coprimimos el archivo
$archivoTemporal = tempnam(sys_get_temp_dir(), 'compressed');
file_put_contents($archivoTemporal, $textoCompri);

$cabeceras = [
"Accept-Encoding: gzip",
"Content-Encoding: gzip",
"Content-Length: ".filesize($archivoTemporal),
"Content-Type: application/octet-stream",
"eus-bizkaia-n3-version: 1.0",
"eus-bizkaia-n3-content-type: application/xml",
"eus-bizkaia-n3-data: ".$json
];

//echo "\n <p>Enviado con cabecera: ".implode(",", $cabeceras)."</p>";

$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_CAINFO, 'CERT.pem');//CERTIFICADO.p12

curl_setopt($curl, CURLOPT_URL, "https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena");//$direccionTB
curl_setopt($curl, CURLOPT_HTTPHEADER, $cabeceras);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_SSH_PRIVATE_KEYFILE, 'CERT.key');
curl_setopt($curl, CURLOPT_SSLCERT, 'CERT.pem');
curl_setopt($curl, CURLOPT_SSLCERTPASSWD, "Zurgaia-2007");
curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => new CURLfile($archivoTemporal)]);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($curl, CURLOPT_REFERER, "https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena");
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_VERBOSE , 1);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$respuesta = curl_exec($curl);
¿Alguien podría decirme qué hago mal? Le quedaría muy agradecido a quien pudiera ayudarme, por poco que sea.

Neftali [Germán.Estévez] 12-06-2023 13:48:55

Cita:

Empezado por Zósimo (Mensaje 551706)
Sin embargo a mí me sale la cadena vacía, tanto para las cabeceras como para el archivo adjunto. ¿Alguien podría decirme qué hago mal? Le quedaría muy agradecido a quien pudiera ayudarme, por poco que sea.

¿Ningún error o código?
Es difícil sin más información.

Zósimo 12-06-2023 13:52:40

Ningún error
 
Nada. Todo a 0 de longitud. Esto es lo que obtengo:

EFFECTIVE_URL: https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena
HEADER_SIZE: 442
HTTP_CODE: 200
PRIMARY_IP: 80.245.2.232
PRIMARY_PORT: 443
Nombre del archivo adjunto:

¿Esos 442 pueden ser la respuesta de cabecera? No logro recupararlas.

Los parámetros son:

Cita:

Array
(
[url] => https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena
[content_type] => application/xml; charset=UTF-8
[http_code] => 200
[header_size] => 442
[request_size] => 530
[filetime] => -1
[ssl_verify_result] => 20
[redirect_count] => 0
[total_time] => 0.267603
[namelookup_time] => 0.000419
[connect_time] => 0.037944
[pretransfer_time] => 0.119733
[size_upload] => 5541
[size_download] => 0
[speed_download] => 0
[speed_upload] => 20706
[download_content_length] => 0
[upload_content_length] => 5541
[starttransfer_time] => 0.119735
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 80.245.2.232
[certinfo] => Array
(
)

[primary_port] => 443
[local_ip] => 145.14.151.1
[local_port] => 62204
[http_version] => 2
[protocol] => 2
[ssl_verifyresult] => 0
[scheme] => HTTPS
[appconnect_time_us] => 119676
[connect_time_us] => 37944
[namelookup_time_us] => 419
[pretransfer_time_us] => 119733
[redirect_time_us] => 0
[starttransfer_time_us] => 119735
[total_time_us] => 267603
)

Zósimo 12-06-2023 16:24:41

¿Alguien podría indicarme un código en PDP donde se obtenga el archivo adjunto, porque no parece tener ninguno pese a que en Batuz dicen que sí

Zósimo 12-06-2023 18:47:13

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 551707)
¿Ningún error o código?
Es difícil sin más información.

Lo único que he logrado sacar de las cabeceras es HTTP_CODE: 200.

Utilizando
Cita:

$httpCabeceras = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$cabecerasRespuesta = substr($respuesta, 0, $httpCabeceras);
o bien con

Cita:

$headers = get_headers('eus-bizkaia-n3');

JBenitez 14-06-2023 10:48:36

API ticketbai
 
Buenas compañeros, acabo de unirme al foro. Qué proveedor recomendáis que dé la API ya hecha?

Sistel 15-06-2023 09:23:32

Cita:

Empezado por JBenitez (Mensaje 551725)
Buenas compañeros, acabo de unirme al foro. Qué proveedor recomendáis que dé la API ya hecha?

Hola,

Acabo de enviarte mensaje privado.

Saludos

Neftali [Germán.Estévez] 15-06-2023 09:55:25

Cita:

Empezado por Zósimo (Mensaje 551711)
$headers = get_headers('eus-bizkaia-n3');

No he hecho nada con CURL, tal vez quien lo ha usado te pueda orientar más. Las respuesta estándard de cabecera es algo así:


Cita:

Connection=Keep-Alive
Date=Tue, 13 Jun 2023 15:29:30 GMT
Keep-Alive=timeout=5, max=100
Content-Length=569
Content-Type=application/xml;charset=UTF-8
Content-Encoding=gzip
Server=JBoss-EAP/7
eus-bizkaia-n3-identificativo=72137121
X-Powered-By=Undertow/1
eus-bizkaia-n3-codigo-respuesta=
eus-bizkaia-n3-numero-registro=
eus-bizkaia-n3-tipo-respuesta=Correcto
O algo como esto:
Cita:

Connection=Keep-Alive
Date=Wed, 24 May 2023 08:12:26 GMT
Keep-Alive=timeout=5, max=100
Content-Length=0
Content-Type=application/xml; charset=UTF-8
Content-Encoding=gzip
Server=JBoss-EAP/7
eus-bizkaia-n3-identificativo=68606928
X-Powered-By=Undertow/1
eus-bizkaia-n3-mensaje-respuesta=El XML no cumple el esquema.[Linea:2 Columna:254] Error:cvc-enumeration-valid: Value '' is not facet-valid with respect to enumeration '[1.1, 1.2, 4.1, 4.2, 5.1, 5.2, 6.1, 6.2, 6.3]'. It must be a value from the enumeration.
eus-bizkaia-n3-codigo-respuesta=B4_1000001
eus-bizkaia-n3-numero-registro=
eus-bizkaia-n3-tipo-respuesta=Incorrecto
¿Puedes preguntar por parámetros como estos?

$headers = get_headers('eus-bizkaia-n3-codigo-respuesta');
$headers = get_headers('eus-bizkaia-n3-numero-registro');
$headers = get_headers('eus-bizkaia-n3-tipo-respuesta');

¿Cual es el sistema que utilizas para obtener el body de la respuesta?

mnc2 15-06-2023 13:10:08

Facturar ventas directas
 
Hola.


Tengo una cuestión que no sé si ha sido tratada en el foro.


Estoy adaptando el software para un tipo de comercio que también hace ventas directas. Esto es: sin un cliente identificable.
Por tanto, no hay nombre de cliente, DNI, etc.


En tal caso, ¿alguien sabe cómo hacer la factura TBAI para estas ventas?
O sea, ¿qué datos se ponen en el fichero XML?

keys 15-06-2023 13:15:02

Cita:

Empezado por mnc2 (Mensaje 551732)
Hola.


Tengo una cuestión que no sé si ha sido tratada en el foro.


Estoy adaptando el software para un tipo de comercio que también hace ventas directas. Esto es: sin un cliente identificable.
Por tanto, no hay nombre de cliente, DNI, etc.


En tal caso, ¿alguien sabe cómo hacer la factura TBAI para estas ventas?
O sea, ¿qué datos se ponen en el fichero XML?

Me imagino que tu cliente emite Tickets y por lo tanto no hay que identificar al cliente.

MaeseKvothe 15-06-2023 13:24:21

Cita:

Empezado por mnc2 (Mensaje 551732)
Hola.


Tengo una cuestión que no sé si ha sido tratada en el foro.


Estoy adaptando el software para un tipo de comercio que también hace ventas directas. Esto es: sin un cliente identificable.
Por tanto, no hay nombre de cliente, DNI, etc.


En tal caso, ¿alguien sabe cómo hacer la factura TBAI para estas ventas?
O sea, ¿qué datos se ponen en el fichero XML?


Es lo que llaman Factura Simplificada. En el TBAI hay un parámetro para marcarlo y no es obligatorio identificar al cliente. Si a posteriori convierten esas ventas en facturas con los datos del cliente tendrías que relacionar esa nueva factura marcando que sustituye a la simplificada.

Neftali [Germán.Estévez] 15-06-2023 14:17:37

Cita:

Empezado por mnc2 (Mensaje 551732)
Estoy adaptando el software para un tipo de comercio que también hace ventas directas. Esto es: sin un cliente identificable.
Por tanto, no hay nombre de cliente, DNI, etc.

En tal caso, ¿alguien sabe cómo hacer la factura TBAI para estas ventas?
O sea, ¿qué datos se ponen en el fichero XML?


Como te han dicho se trata de una factura simplificada o lo lo que habitualmente llamamos un ticket (cuando te tomas un café nadie te pide el DNI)
En ese caso es algo como esto:
Código:

<?xml version="1.0" encoding="utf-8"?>
<T:TicketBai xmlns:T="urn:ticketbai:emision">
    <Cabecera>
          <IDVersionTBAI>1.2</IDVersionTBAI>
    </Cabecera>
    <Sujetos>
          <Emisor>
              <NIF>NIF_EMPRESA</NIF>
              <ApellidosNombreRazonSocial>RAZON_SOCIAL_EMPREASA</ApellidosNombreRazonSocial>
          </Emisor>
          <VariosDestinatarios>N</VariosDestinatarios>
          <EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario>
    </Sujetos>
    <Factura>
          <CabeceraFactura>
              <SerieFactura/>
              <NumFactura>1</NumFactura>
              <FechaExpedicionFactura>15-06-2023</FechaExpedicionFactura>
              <HoraExpedicionFactura>14:14:45</HoraExpedicionFactura>
===>          <FacturaSimplificada>S</FacturaSimplificada>
              <FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
          </CabeceraFactura>
          <DatosFactura>
              <DescripcionFactura>Bicicleta carrera</DescripcionFactura>
              <DetallesFactura>
                    <IDDetalleFactura>
                        <DescripcionDetalle>Bicicleta carrera</DescripcionDetalle>


mnc2 15-06-2023 14:19:04

Cita:

Empezado por keys (Mensaje 551733)
Me imagino que tu cliente emite Tickets y por lo tanto no hay que identificar al cliente.

Cierto, puede emitir tiquets.


Cita:

Empezado por MaeseKvothe (Mensaje 551734)
Es lo que llaman Factura Simplificada. En el TBAI hay un parámetro para marcarlo y no es obligatorio identificar al cliente. Si a posteriori convierten esas ventas en facturas con los datos del cliente tendrías que relacionar esa nueva factura marcando que sustituye a la simplificada.

Bien, voy a mirar ese parámetro. A ver si entiendo cómo funciona.


Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 551735)
Como te han dicho se trata de una factura simplificada o lo lo que habitualmente llamamos un ticket (cuando te tomas un café nadie te pide el DNI)
En ese caso es algo como esto:

Ups! No había visto tu post.


Ok. Muchas gracias a los tres.


La franja horaria es GMT +2. Ahora son las 05:45:32.

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