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)

Zósimo 28-11-2022 10:18:15

Muchas gracias
 
Por cierto. No te he dado las gracias por el detalle de responder. Voy a probarlo

APO 29-11-2022 12:30:30

Buenos días, una pregunta sólo por confirmar que lo estoy haciendo bien. Creo que es así, pero me gustaría saber vuestra opinión:

Es referente al encadenamiento. En nuestro caso tenemos 2 puntos de venta independientes y 1 Backoffice también independiente. El encadenamiento lo estoy haciendo por 3 dispositivos distintos. Es decir, cada dispositivo encadena con la factura anterior generada por ese dispositivo. ¿Es correcto cómo lo estoy haciendo?

Muchas gracias!

bilbur 29-11-2022 12:45:09

Cita:

Empezado por APO (Mensaje 549434)
Buenos días, una pregunta sólo por confirmar que lo estoy haciendo bien. Creo que es así, pero me gustaría saber vuestra opinión:

Es referente al encadenamiento. En nuestro caso tenemos 2 puntos de venta independientes y 1 Backoffice también independiente. El encadenamiento lo estoy haciendo por 3 dispositivos distintos. Es decir, cada dispositivo encadena con la factura anterior generada por ese dispositivo. ¿Es correcto cómo lo estoy haciendo?

Muchas gracias!

Correcto y obligatorio


Un saludo

keys 29-11-2022 12:47:56

Cita:

Empezado por APO (Mensaje 549434)
Buenos días, una pregunta sólo por confirmar que lo estoy haciendo bien. Creo que es así, pero me gustaría saber vuestra opinión:

Es referente al encadenamiento. En nuestro caso tenemos 2 puntos de venta independientes y 1 Backoffice también independiente. El encadenamiento lo estoy haciendo por 3 dispositivos distintos. Es decir, cada dispositivo encadena con la factura anterior generada por ese dispositivo. ¿Es correcto cómo lo estoy haciendo?

Muchas gracias!

En principio el encadenamiento no tiene que ser por dispositivo, tiene que ser por sistema. Si cada punto de venta no tiene acceso a los otros entonces si se puede encadenar por puntos de venta y cada uno tendrá que usar una serie distinta, ya que sino dará numeros de facturas duplicados.

Por tanto depende del sistema.

bilbur 29-11-2022 12:49:06

OFF Impuesto al plástico e IIEE
 
He buscado y no he encontrado, ni aquí ni en google

¿Existe en estos foros alguno relativo a los impuestos especiales (en particular relativo al nuevo impuesto al plástico) y que se trata de cómo enviar datos contables o de existencias a la AEAT ?


Disculpad las molestias.


Un saludo

Zósimo 29-11-2022 17:54:44

¿Qué certificado espera el servicio rest?
 
Yo no encuentro el modo en que me admita el certificado de la extensión c12.

Si envío el archivo así: curl_setopt($ch, CURLOPT_CAINFO, $file); Error 01
Si quito o añado la contraseña así curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $pass); Error 01
Si meto el certificado en una variable y lo envío con CURLOPT_CAINFO; Error 01
Si lo limpio de retornos de carro y cualquier otra cosa; Error 01
Si lo convierto a pem y lo mando como una variable así curl_setopt($ch, CURLOPT_SSLCERT, $certi_pem); no responde nada, nada en absoluto.

Por supuesto he probado también a quitar y poner la clave, quitar y poner la llave privada, indicar el tipo de certificado...

¿Alguien podría decirme qué espera el servidor? Porque cuando lo hago por archivo no lo reconoce y cuando lo hago como variable en formato pem no responde.

Muchas gracias por vuestra ayuda

Irreo 29-11-2022 18:02:41

Cita:

Empezado por Zósimo (Mensaje 549439)
Yo no encuentro el modo en que me admita el certificado de la extensión c12.

¿Has probado lo que te puse en este post?:

https://www.clubdelphi.com/foros/sho...postcount=3579

Un saludo.

Zósimo 29-11-2022 18:11:42

Por supuesto y no soy capaz.
¿Qué metes en $appConfig["certificate"]?

Irreo 29-11-2022 18:34:08

Cita:

Empezado por Zósimo (Mensaje 549441)
Por supuesto y no soy capaz.
¿Qué metes en $appConfig["certificate"]?

Ah ok, es que te veía insistiendo en lo de CURL, por si acaso...

En esa variable tengo la ruta al fichero PEM:

$appConfig = $_SERVER["DOCUMENT_ROOT"]."/certs/XXXXX.pem";

edari 30-11-2022 07:47:14

Factura simplificada clientes varios
 
Buenos días,


A ver si me podéis sacar de una duda. Es en relación a las facturas que en mis tiempos se llamaban de "clientes varios" clientes que p.e. iban a comprar algo al almacén y les hacían una factura sin nif. Tengo un cliente que hacía mucha de este tipo.


Yo tengo programado la opción de FacturaSimplificada = S pero no consigo la forma de que subir una factura sin tener un cif real.


Hago la consulta a Hacienda y me dice...




Cita:

En relación con su consulta le indico que, la factura simplificada se identificará con la clave "S" en el campo "Factura simplificada" y además se deberán recoger los datos identificativos del destinatario de la operación (por lo menos el NIF del mismo o, en su caso, otro número identificativo).

...lo que viene a indicar que nanay



El caso es que el asesor del cliente, también con su parte de razón, me dice...


De alguna manera se tiene que poder hacer porque tú cuando vas a un bar y te imprimen un ticket no te piden el dni obviamente


Sabéis alguno como tendría que subir a Ticket Bai este tipo de clientes? Yo en mis pruebas subo el valor S1 en el campo TipoNoExenta como un cliente "normal"



Puede ser por ahí la cosa?


Gracias de nuevo

APO 30-11-2022 08:10:48

Cita:

Empezado por edari (Mensaje 549446)
Buenos días,


A ver si me podéis sacar de una duda. Es en relación a las facturas que en mis tiempos se llamaban de "clientes varios" clientes que p.e. iban a comprar algo al almacén y les hacían una factura sin nif. Tengo un cliente que hacía mucha de este tipo.


Yo tengo programado la opción de FacturaSimplificada = S pero no consigo la forma de que subir una factura sin tener un cif real.


Hago la consulta a Hacienda y me dice...







...lo que viene a indicar que nanay



El caso es que el asesor del cliente, también con su parte de razón, me dice...


De alguna manera se tiene que poder hacer porque tú cuando vas a un bar y te imprimen un ticket no te piden el dni obviamente


Sabéis alguno como tendría que subir a Ticket Bai este tipo de clientes? Yo en mis pruebas subo el valor S1 en el campo TipoNoExenta como un cliente "normal"



Puede ser por ahí la cosa?


Gracias de nuevo


Buenos días,

Creo que el error está en que estás enviando la sección <Destinatarios>, cuando en las facturas simplificadas no se debe rellenar.
Nosotros hemos realizado varias consultas y hemos alucinado con las respuestas. A veces lían más que otra cosa...

Saludos.

keys 30-11-2022 08:15:10

Cita:

Empezado por edari (Mensaje 549446)
Buenos días,


A ver si me podéis sacar de una duda. Es en relación a las facturas que en mis tiempos se llamaban de "clientes varios" clientes que p.e. iban a comprar algo al almacén y les hacían una factura sin nif. Tengo un cliente que hacía mucha de este tipo.


Yo tengo programado la opción de FacturaSimplificada = S pero no consigo la forma de que subir una factura sin tener un cif real.


Hago la consulta a Hacienda y me dice...







...lo que viene a indicar que nanay



El caso es que el asesor del cliente, también con su parte de razón, me dice...


De alguna manera se tiene que poder hacer porque tú cuando vas a un bar y te imprimen un ticket no te piden el dni obviamente


Sabéis alguno como tendría que subir a Ticket Bai este tipo de clientes? Yo en mis pruebas subo el valor S1 en el campo TipoNoExenta como un cliente "normal"



Puede ser por ahí la cosa?


Gracias de nuevo

Hola logicamente se pueden emitir tickets sin identificar al destinatario. Te pongo un ejemplo de cabecera de factura simplificada.

Código PHP:

<Sujetos>
  <
Emisor>
    <
NIF>CIF EMISOR</NIF>
    <
ApellidosNombreRazonSocial>NOMBRE EMISOR</ApellidosNombreRazonSocial>
  </
Emisor>

  <
EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario>
</
Sujetos>
<
Factura>
 <
CabeceraFactura>
   <
NumFactura>00002962</NumFactura>
   <
FechaExpedicionFactura>30-11-2022</FechaExpedicionFactura>
   <
HoraExpedicionFactura>08:08:46</HoraExpedicionFactura>
   <
FacturaSimplificada>S</FacturaSimplificada
   
<FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
 </
CabeceraFactura>
 <
DatosFactura>
  ...
  ... 


pablog2k 30-11-2022 08:17:02

Hola, se me ha adelantado keys, creo que te refieres a los tickets de toda la vida (vamos cualquier tienda tipo todo a 100, chinos...etc), donde no se identifica al destinatario.
Nosotros lo subimos así y ningún problema: (iba a adjuntar el código pero el de keys es igual que el mío).
Por lo demás, es una sujeta no exenta, vamos los mismos nodos en la parte de DatosFactura que una factura donde si se identifica al destinatario

APO 30-11-2022 08:17:26

Cita:

Empezado por keys (Mensaje 549436)
En principio el encadenamiento no tiene que ser por dispositivo, tiene que ser por sistema. Si cada punto de venta no tiene acceso a los otros entonces si se puede encadenar por puntos de venta y cada uno tendrá que usar una serie distinta, ya que sino dará numeros de facturas duplicados.

Por tanto depende del sistema.

Gracias keys por la respuesta.

En nuestro caso los 2 puntos de venta comparten la misma base de datos, usamos una serie para las facturas simplificadas y otra serie para las facturas completas. Pero hemos hecho pruebas de encadenando sin diferenciar por dispositivo, y no nos da ningún aviso de encadenamiento. ¿Consideras que sería necesario encadenar diferenciando por dispositivo?

En el Backoffice ya estamos encadenando por dispositivo. Gracias!

keys 30-11-2022 08:35:16

Cita:

Empezado por APO (Mensaje 549450)
Gracias keys por la respuesta.

En nuestro caso los 2 puntos de venta comparten la misma base de datos, usamos una serie para las facturas simplificadas y otra serie para las facturas completas. Pero hemos hecho pruebas de encadenando sin diferenciar por dispositivo, y no nos da ningún aviso de encadenamiento. ¿Consideras que sería necesario encadenar diferenciando por dispositivo?

En el Backoffice ya estamos encadenando por dispositivo. Gracias!

Te pongo lo que me contesto hacienda sobre este tema.
Cita:

En TicketBAI cada factura debe de identificar la factura anterior. El cumplimiento del requisito de encadenamiento depende de la forma de funcionamiento del sistema de facturación. Si un mismo dispositivo emite facturas de diferentes series, el requisito de encadenamiento debe identificar la factura anterior expedida, con independencia de la serie (por ejemplo, a una factura de una serie ordinaria le puede preceder una factura rectificativa de otra serie).

No obstante, si existen diferentes dispositivos de facturación, los cuales sólo expiden facturas dentro de una serie específica para cada dispositivo, el encadenamiento se produce dentro de cada serie, ya que el sistema de facturación funciona de este modo.
Nuestro sistema tambien comparte la base de datos, por lo que para evitar que cada dispositivo tenga una serie distinta las encadenamos todas como si fuera un único sistema independientemente de la serie.

Yo no me fiaría de los avisos de encadenamiento que dan las haciendas.

edari 30-11-2022 08:51:36

Gracias APO y keys...era eso!!


Sigo alucinando con el servicio de atención de Hacienda...madre mía :eek:




Mersi ^\||/





Cambiando de tema y yendo a lo que estáis hablando de los errores de encadenamiento me he encontrado algún caso de que mandas p.e. 30 facturas, las imprimes todos juntas y la factura 22 te da un error de validación de xml (por ejemplo por estas cosas que tenía con los clientes varios)...como ni siquiera ha llegado a subir a hacienda luego cuando arreglo el error y vuelvo a subir la factura 22 da error de encadenamiento al saltar de la 21 a la 23 que se imprimieron en la primera pasada y la 22 subirse al final del todo el proceso.



Espero que no se pongan muy tikis mikis con esto.

HerensugeBeltz 30-11-2022 11:40:25

Listado de URLs Zuzendu de Gipuzkoa en preproducción
 
Nota para el administrador: las URLS de Zuzendu de Gipuzkoa (preproducción) que figuran al inicio del foro son incorrectas.
Las correctas son:
Alta: https://tbai-z.prep.gipuzkoa.eus/sarrerak/zuzendu-alta
Baja: https://tbai-z.prep.gipuzkoa.eus/sarrerak/zuzendu-baja

Es decir, es tbai-z.prep en lugar de tbai.prep

rcarteaga 30-11-2022 11:48:32

Envio de XML a Alava
 
Buenos días (no se si estoy repitiendo el mensaje, si es asi disculpas)
La empresa se decidio a ultima hora a meterse en este ajo y yo estoy ya de los nervios.
Hago el envio a ALAVA, ya quité avisos, pero siempre recibo el aviso "error en verificacion de firma", compruebo el fichero con Izenpe y me da correcto. Parece ser que a ellos les llega cambiado.
He leido por el foro que puede ser problema de que la forma de enviarlo haga algún cambio en el fichero. a pesar de que no he puesto acentos ni simbolos ni nada raro.
Paso la forma en que hago mi envío, en VB6
¿Es correcto?
¿cómo lo haceis? tambien me sirve en vb.net

Dim domSolicitud As DOMDocument
Dim objHTTP As XMLHTTPRequest
Dim URL As String
Set objHTTP = New XMLHTTPRequest
Set domSolicitud = New DOMDocument
If domSolicitud.loadXML(sbXml.GetAsString) Then

URL = "pruebas-ticketbai.araba.eus/TicketBAI/v1/facturas"(modificado por que no me permite poner urls)
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "Content-type", "application/xml;charset=UTF-8"
objHTTP.send domSolicitud.xml
End if

Zósimo 30-11-2022 12:48:54

El servidor de Guipuzkua no responde nada
 
Pues a mí el servidor de Guipuzkua sigue sin responderme nada. Absolutamente nada.

Estoy haciéndolo tal como se me ha dicho y verificando con la documentación de PHP.
- En "local_cert" meto "CERTIFICADO.p12" (están en el mismo directorio que los otros archivos).
- En "passphrase" la clave para ese mismo certificado.
- En "cafile" nuevamente el certificado.
- En "capath" la ruta absoluta al directorio donde está el certificado

Lo demás no lo he tocado salvo el apartado "content" donde meto el XML.

He comprobado que se genere el vector correctamente.

hago el $context = stream_context_create($opts);

y por último $haciendaResult = file_get_contents('https://tbai-z.prep.gipuzkoa.eus/sarrerak/alta', false, $context);

Lo que obtengo cuando hago var_dump($haciendaResult); es "bool(false)"

Como ya llevo tiempo peleando con esto, he convertido la clave privada del c12 a pem, pero cuando la mando en lugar del certificado el mismo resultado. Se supone que algo tendría que responder.

Según me han contestado en Diputación los certificados PFX son igualmente válidos que los pem. ¿he comprendido mal y la respuesta del servidor no está en "$haciendaResult"?

Muchas gracias por vuestra ayuda.

Por si acaso mi código:

$opts = array(
"ssl" => array(
"local_cert" => $file,
"passphrase" => $pass,
"allow_self_signed" => true,
"cafile" => $file,
"capath" => $camino,
"verify_peer" => false
),
"http" => array (
"method" => "POST",
"ignore_errors" => true,
"timeout" => 9,
"header" => "Accept-language: es\r\n"."Content-type: application/xml;charset=UTF-8\r\n",
"content" => $texto
)
);
var_dump($opts);

$context = stream_context_create($opts);
var_dump($context);

$haciendaResult = file_get_contents('https://tbai-z.prep.gipuzkoa.eus/sarrerak/alta', false, $context);
var_dump($haciendaResult);

echo "\n La Dipiutación respondió: ".$haciendaResult;

Irreo 30-11-2022 17:10:15

Cita:

Empezado por Zósimo (Mensaje 549455)
Pues a mí el servidor de Guipuzkua sigue sin responderme nada. Absolutamente nada.

Estoy haciéndolo tal como se me ha dicho y verificando con la documentación de PHP.

Buenas,

Ánimo, yo creo que estás cerca.

Para el envío yo estoy usando certificados en formato PEM. En su día recuerdo que con ese código me estuve peleando bastante, hasta que di con la combinación de parámetros y valores correcta.

Por si te sirve, te paso las instrucciones que usé en el servidor para convertir el certificado a PEM desde la consola SSH:

(te irá pidiendo contraseña actual del certificado, o la nueva que quieres poner, según el caso)

openssl pkcs12 -in TITXXXX.pfx -out TIT.nokey.pem -nokeys
openssl pkcs12 -in TITXXXX.pfx -out TIT.withkey.key
openssl rsa -in TIT.withkey.key -out TIT.key
cat TIT.nokey.pem TIT.key > TITXXXX.pem

Al final el fichero que uso es el último fusionado usando "cat" (TITXXXX.pem)

Suerte!


La franja horaria es GMT +2. Ahora son las 16:25: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