Ajustes/correcciones 17/4/2026 de la APP de TPV
1. La APP usa UTF8 en la impresión del Tiquet.
-
Cuando la APP decodifica el campo
posfacimp_contenido_printdesde base64 a string, está interpretando el string en UTF8, y esto provoca que se rompan las secuencias de escape del QR. -
Preguntando a Gemini, nos da esta respuesta:
La Solución en Vue (Javascript)
Para que Vue no corrompa el binario, no puedes usar strings. Debes manejar los datos como un Uint8Array. Aquí tienes cómo debes hacer la conversión en tu frontend:
JavaScript
// Supongamos que 'base64Data' es el string que recibes de PHP
const base64Data = "PT09PT09..."; // El que me pasaste
// 1. Decodificar base64 a un string de bytes "crudos"
const binaryString = window.atob(base64Data);
// 2. ¡ESTE ES EL PASO CRUCIAL!
// Crear un array de bytes reales (8 bits sin signo)
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
// 3. Enviar a la impresora o guardar el archivo
// Si usas un Blob para descargar el fichero de test:
const blob = new Blob([bytes], { type: 'application/octet-stream' });
// Si usas un plugin de impresión, asegúrate de pasarle el 'bytes.buffer'
// o el 'Uint8Array', NUNCA el string decodificado.
¿Por qué fallaba Vue?
Si estabas haciendo algo como const data = atob(base64Data), Javascript crea un string donde el byte 148 se interpreta como un carácter especial. Al enviarlo a la impresora (que espera bytes puros), el sistema operativo o el navegador dicen: "Este carácter no existe en ASCII, toma un signo de interrogación (?)".
2. Menú minimizado para la Certificación del programa en la Agencia Tributaria Portuguesa.
- Para certificar el programa en Portugal, necesitamos que el menú de la APP sea solo lo imprescindible para conseguirla, para evitar que se alarge innecesariamente la fase de testing de la certificación. Una vez certificado, no es problema que el programa haga más cosas, ya que no necesitará pasar ampliaciones de la certificación.
- Las opciones del menú mínimas son las siguientes:
- Inicio
- Ventas
- Proceso de ventas
- Histórico de ventas
- Ficheros
- Clientes
- Utilidades
- Descargar SAF-T/PT
- Fin
- Este menú lo podemos activar si tenemos un indicador en el local-storage (minifiedMenu, por ejemplo) activado a 1
3. Clientes.
- La opción del menú de
Ficheros-Clientes, no hace nada - Debe aparecer un listado de los últimos clientes creados, y poder consultarlos
- No debe permitir modificarlos
11. Base de datos de Certificación.
- Para pasar la auditoría de la Certificación, montaremos una base de datos en el servidor de desarrollo mínima con los siguientes datos:
- 4 ó 5 facturas
- 4 ó 5 clientes
- 2 ó 3 devoluciones
- formas de cobro relacionadas con "vales devolución" desactivadas
12. Auditoría de Certificación.
- Para presentar la Certificación es necesario ir con un ordenador portatil y una impresora de tiquets, para poder ver el resultado final del tiquet con el QR impreso
- Debe ir un representante legal de la empresa que certifica, en principio será el representante legal de Minit Spain en Portugal, que es su Gestor en Portugal
- Habrá que planificar una reunión con el Gestor de Portugal, junto con Ricardo, para concretar los detalles de la presentación de la Certificación