TimeTracker

TimeTracker v3.4

Manual de Usuario — Guía Completa

Versión 3.4 · 2026 · © Jaime Albo Sánchez-Bedoya

📋 Índice de Contenidos

💻 Programa de Escritorio
📱 APP Móvil TimeTracker
⏰ Control Horario y Gestión RRHH
🛠 Resolución de Problemas y Errores Comunes

1 Introducción — Qué es TimeTracker

TimeTracker v3.4 es una herramienta profesional de control de tiempo y facturación por proyectos diseñada para autónomos, técnicos de campo y pequeñas empresas.

El programa aparece como un panel flotante siempre visible. Puedes controlarlo mientras trabajas en otras aplicaciones.

Estructura de archivos

Archivo / CarpetaFunciónCriticidad
TimeTracker.exeEjecutable principal
license.datLicencia activada y datos de hardware🔴 CRÍTICO
data.jsonToda la configuración, historial y datos🔴 CRÍTICO
backups/Copias de seguridad automáticasMuy importante
Facturación/Facturas, albaranes y partes generadosImportante
logs/Registros del sistema para soporte técnicoInformativo

2 Requisitos e Instalación

ComponenteRequisito
Sistema OperativoWindows 10 / 11 (64 bits)
Espacio en disco~50 MB
RAM512 MB mínimo
PermisosUsuario estándar (Admin solo para inicio automático con Windows)

Instalación

  1. Copie la carpeta completa del programa a una ubicación permanente, por ejemplo C:\TimeTracker\.
  2. Haga doble clic en TimeTracker.exe. En el primer arranque se crean automáticamente: backups/, REPORTES/, Partes/, Informes mensuales/, Control Horario/ y logs/.
  3. Se genera data.json con la configuración inicial.
⚠️ Importante — Ubique la carpeta en una ruta sin acentos ni espacios (ej. C:\TimeTracker). No distribuya el ejecutable solo; copie siempre la carpeta completa.

3 Primer Uso — Configuración Inicial

⛔ MUY IMPORTANTE — Completa estos pasos en orden antes de empezar a usar el programa. Sin licencia activa, las funciones de facturación estarán bloqueadas.
  1. Activar la licencia: ⚙️ → Licencia de Software → introduce el código → pulsa ACTIVAR AHORA.
  2. Reiniciar el programa: Cierra y vuelve a abrir TimeTracker para que la licencia y todos los módulos carguen correctamente.
  3. Datos de empresa: ⚙️ → Licencia de Software✏️ Editar datos de usuario. Rellena nombre, NIF/CIF, dirección, CP, ciudad, teléfono, email.
  4. Logotipo: ⚙️ → Licencia de Software🖼️ Cambiar logo. Acepta PNG, JPG, BMP. Se redimensiona automáticamente.
  5. Precio/hora: ⚙️ → Facturación → configura el precio por hora por defecto y el IVA aplicable.
  6. Primera empresa: ⚙️ → Empresas (CSV) → añade al menos un cliente.
  7. Copia de seguridad: Guarda una copia de license.dat y data.json en lugar seguro.
⚠️ Precio/hora a 0€ — Si no configuras el precio/hora, todos tus albaranes saldrán con importe 0€. Confíguralo antes de crear servicios facturables.
💡 Licencia de hardware — El código de licencia está vinculado a tu equipo concreto (CPU, disco y tarjeta de red). No funcionará en otro ordenador diferente.

4 Configuración Completa

Accede a toda la configuración haciendo clic en ⚙️ en la barra superior. Encontrarás estas pestañas:

PestañaFunción principal
GeneralApariencia, inactividad, exportar/importar datos, arranque con Windows
Empresas (CSV)Crear, editar y eliminar empresas cliente; importar desde Excel
Dpto/Usuario (CSV)Gestionar contactos y departamentos por empresa
PartesVer, generar y gestionar partes de trabajo y informes PDF
FacturaciónPrecio/hora, IVA, IBAN, desplazamientos, estados de facturación
Licencia de SoftwareActivación, datos de empresa, logotipo, generación de QR para APP
Copia de SeguridadBackup ZIP completo con cifrado AES-256, historial y ayuda integrada
Control HorarioFichajes, incidencias, jornada, Excel gestoría, PDF legal
📱 QR para APP — En la pestaña Licencia de Software, el botón Generar QR para APP crea un código que el técnico puede escanear con el móvil para activar la App y cargar los datos de empresa automáticamente.

5 Pantalla Principal — Vista General

ZonaDescripción
Barra SuperiorIcono + título TimeTracker v3.4 + botón ❓ Manual + ⚙️ Configuración + — Minimizar + ✕ Cerrar
LED de Estado🟢 Trabajando / 🟡 Pausa / 🔴 Detenido
Barra de AvisoEstado actual con colores pulsantes: TRABAJANDO / EN PAUSA / TIEMPO DETENIDO
Barra de TotalesTotal trabajo | Total pausas | Facturable — Botones rápidos Excel 🟢 diario, 🔵 mensual, ⏸ Pausa, ▶ Reanudar
Área Central (Flow)Tarjetas de empresa con reloj, botón de iniciales, filtro de búsqueda y desplegable de clientes
Registro de ActividadHistorial cronológico del día. Botón ➕ para registros manuales
Pie / FirmaCopyright + grip de redimensión

6 Uso Diario del Programa

El flujo habitual de trabajo es: Iniciar cronómetro → trabajar → Pausar (si necesario) → Detener al terminar → Generar parte (opcional) → Facturar. Las siguientes secciones detallan cada paso.

ℹ️ Siempre visible — El programa permanece encima del resto de ventanas. Esto es intencional para que puedas controlarlo mientras trabajas.

7 Cómo Iniciar y Detener el Tiempo

Iniciar un cronómetro

  1. Localiza la tarjeta de la empresa en el panel principal.
  2. Selecciona el departamento/usuario en el desplegable (usa el campo 🔍 Filtrar para buscar rápidamente).
  3. Haz clic en el botón circular con las iniciales de la empresa.
  4. En el diálogo Iniciar Seguimiento, escribe el motivo del trabajo (con autocompletado) e indica si es facturable (SÍ/NO).
  5. Pulsa ▶ Iniciar. El botón se iluminará con borde dorado pulsante.

Detener

Haz clic de nuevo en el mismo botón circular. El sistema guarda automáticamente en data.json, actualiza los reportes Excel y muestra la sesión en el Registro de Actividad.

⚠️ Un cronómetro a la vez — Si inicias otra empresa con un cronómetro activo, el anterior se detiene automáticamente. El cambio de cliente en el desplegable mientras se cronometra realiza un switch automático sin perder tiempo.

8 Sistema de Pausas

Con el cronómetro activo, pulsa ⏸ en la barra de controles. Elige el tipo de pausa o escribe un motivo libre:

IconoTipoIconoTipo
Descanso🍴Comida
👥Reunión📞Llamada
✉️Emails🔧Técnico
Esperando Info🎓Formación
🚗DesplazamientoNo especificado

Para reanudar, pulsa ▶. Los tipos de pausa son personalizables en ⚙️ → General → Editar Pausas.

9 Sistema de Inactividad Inteligente (Smart Idle)

TimeTracker monitoriza la actividad del teclado y ratón para proteger tus registros:

SituaciónAcción automática
Cronómetro activo + sin actividad >10 minPausa automática con motivo Inactividad (Sistema >10m)
Programa parado/pausado + actividad detectadaRecordatorio visual: «Tiempo parado — ¿deseas reanudar?» con opciones de delay (1, 3, 5 min)
2 horas continuas trabajandoAviso toast naranja de salud (levantarse, estirar)
Pausa >15 minNotificación de pausa prolongada

10 Registro de Actividad (Historial Vivo)

Panel inferior de la pantalla principal. Muestra en tiempo real todas las sesiones del día con: hora inicio–fin, estado, empresa, cliente y motivo. Código de colores:

ColorSignificado
VerdeSesión activa (en curso)
NaranjaPausa activa
RojoRegistro manual añadido
Blanco/NegroRegistro automático finalizado

Doble clic en cualquier registro para editarlo. Las sesiones consecutivas de la misma empresa y motivo se agrupan automáticamente.

11 Añadir Registros Manuales

Pulsa ➕ en la cabecera del Registro de Actividad para añadir tiempo pasado que no se cronómetró.

CampoDescripción
FechaFormato dd/mm/aaaa. Por defecto, la fecha actual.
Hora Inicio / Hora FinFormato HH:MM. La hora de fin debe ser posterior al inicio.
Empresa / ClienteDesplegables sincronizados; el de cliente se actualiza según la empresa.
MotivoCon autocompletado predictivo basado en registros anteriores.
¿Es facturable?SÍ / NO.

Al guardar, la entrada se añade al historial y se regeneran los Excel automáticamente.

12 Edición de Datos — Historial vs Servicio

⛔ Lee esto con atención — Hay dos formas distintas de editar un registro. Usar la incorrecta puede causar inconsistencias en la facturación.

📋 Editar Historial

Dónde: Pantalla principal → Registro de Actividad → doble clic

Modifica: motivo, facturable, materiales (texto libre), observaciones, desplazamiento

Uso: Correcciones rápidas del día

🔧 Editar Servicio

Dónde: Facturación → Editar Historial → botón 🛠️ Editar Servicio

Modifica: precio/hora, materiales con cantidades, desplazamiento por km, observaciones avanzadas

Uso: Preparar el servicio para facturar

ℹ️ Regla general — Usa Editar Historial para datos básicos del día. Usa Editar Servicio cuando vayas a generar un albarán o factura.

13 Regeneración de Partes Word

Cuando generas un parte y posteriormente modificas el servicio desde Facturación → Editar Historial, al volver a pulsar Generar Parte Word del Servicio Seleccionado el sistema detecta si ya existe un parte previo:

SituaciónDiálogoResultado
Primera generaciónNinguno — directoNuevo archivo con número nuevo
Parte existe en disco«¿Actualizar o crear nuevo?»Sí → actualiza · No → número nuevo · Cancelar → nada
Parte registrado pero archivo borrado«¿Regenerar?»Sí → regenera con datos actuales
  1. Generas el parte → se crea ACME_SL_20260507_0001.docx.
  2. Añades materiales en Facturación → Editar Historial → Editar Servicio.
  3. Vuelves a Partes → pulsas Generar Parte Word → eliges .
  4. El mismo archivo se sobreescribe con los materiales. El número de parte no cambia.
🛡️ Escritura segura — Se usa un archivo temporal que luego se reemplaza de forma atómica. Nunca quedará un parte a medio escribir.

14 Borrar un Servicio desde Partes

En la pestaña Partes, haz clic derecho sobre un servicio y selecciona 🗑️ Borrar servicio. Solo disponible para estados PENDIENTE y NO FACTURABLE.

Estado¿Borrable?Acción
PENDIENTE / NO FACTURABLE✅ SíBorrado directo con confirmación
ALB. BORRADOR / ALBARANADO / FACTURADO / BLOQUEADO❌ NoRevertir primero a PENDIENTE desde Facturación
⚠️ Irreversible — Se elimina el registro del JSON, las pausas vinculadas y el archivo DOCX/PDF. Haz copia de data.json antes si tienes dudas.

15 Módulo de Facturación

Accede desde ⚙️ → Facturación. Usa el botón ? (esquina superior derecha) para la ayuda contextual completa.

EstadoSignificado
PENDIENTETiempo registrado, sin albaranar
ALB. BORRADOREn revisión; precios congelados
ALBARANADOAlbarán emitido con número oficial
FACTURADOFactura externa generada (Holded / FACe)
NO FACTURABLETrabajo sin coste económico
BLOQUEADOCiclo cerrado e inmutable

Flujo albarán

  1. Selecciona un servicio PENDIENTE → pulsa ✅ Revisar (Borrador).
  2. Revisa importes en el diálogo Editar Servicio.
  3. Pulsa 🧾 Generar Albarán. Se asigna número único y se crea DOCX.
ℹ️ Agrupación — Selecciona varios servicios del mismo cliente para agruparlos en un solo albarán.

16 Materiales por Línea

En Editar Servicio el grid de materiales permite añadir componentes estructurados con Referencia, Descripción, Cantidad y Precio unitario. El total se calcula automáticamente y se incluye en el albarán. Al importar desde la App Móvil, los materiales con cantidades se cargan como filas individuales.

17 Desplazamiento por KM

En Editar Servicio, activa el interruptor Desplazamiento por KM. Introduce los kilómetros; el sistema multiplica por el coste/km configurado en ⚙️ → Facturación. El importe se suma al servicio y aparece desglosado en el albarán. También puedes marcar el desplazamiento como facturable o no facturable.

18 Exportaciones Excel, PDF, Holded y FACe

ExportaciónDóndeFormato
Albarán WordFacturación → Generar Albarán.docx en Facturación/
Informe PDF mensualPartes → Generar Informe PDF.pdf con gráficas y KPIs
Excel gestoría RRHHControl Horario → Exportar Excel.xlsx columnas dinámicas
Holded (JSON)Facturación → Exportar HoldedJSON compatible Holded API
FACe (XML)Facturación → Exportar FACeFacturae XML v3.2.2
Empresas / Clientes⚙️ → General → Exportar Excel.xlsx reimportable

19 Reportes Excel Automáticos

Se generan automáticamente al iniciar/detener tiempo, cada 5 minutos y al cerrar. Incluyen 4 hojas:

HojaContenido
RegistrosFecha, empresa, cliente, motivo, horas, facturable, materiales. Fórmula SUBTOTAL.
PausasDetalle de pausas con duración decimal.
DashboardTablas resumen y gráficas circulares de distribución.
FacturaciónHoras facturables por empresa y cliente con fórmula SUM.
⚠️ Excel abierto — Si el archivo está abierto en Excel, el sistema guarda una copia con sufijo _COPIA_XXXX.xlsx y muestra un aviso naranja.

20 Copias de Seguridad y Recuperación

El sistema usa escritura atómica (.tmp → reemplazar) para proteger data.json ante cierres abruptos o cortes de luz.

CuándoArchivo
Al arrancar (si no existe del día)backups/backup_YYYY-MM-DD.json
Cada 15 minutosbackups/backup_auto_YYYY-MM-DD.json
Al cerrarbackups/backup_cierre_YYYY-MM-DD.json

Recuperar datos

  1. Abre backups/. Localiza el más reciente.
  2. Copia el data.json actual por precaución.
  3. Renombra el backup como data.json y colócalo en la raíz del programa.
  4. Reinicia el programa.

20b Copia de Seguridad ZIP con Contraseña

La pestaña Copia de Seguridad (⚙️ → Copia de Seguridad) genera un archivo .zip portable con todos los datos del programa: configuración, historial de servicios, facturas, partes de trabajo, empresas y archivos de soporte. Permite restaurar el programa a su estado exacto en cualquier momento.

  1. Abre ⚙️ y ve a la pestaña Copia de Seguridad.
  2. Decide si quieres protegerla: marca Proteger con contraseña AES-256 e introduce una clave. Usa el botón 👁 (ojo) para comprobar visualmente lo que escribes.
  3. Pulsa el botón verde 💾 Crear Copia de Seguridad Ahora.
  4. Elige dónde guardar el ZIP (recomendado: disco externo, pendrive o nube — nunca dentro de la carpeta del programa).
  5. Espera a que la barra de progreso complete al 100%. Aparecerá un mensaje de confirmación con el tamaño del archivo.
⛔ Contraseña AES-256 — El cifrado AES-256 no tiene puerta trasera. Si olvidas la contraseña, será imposible recuperar el contenido. Guárdala siempre en un lugar seguro (gestor de contraseñas o en papel en lugar protegido).
⚠️ Windows Explorer no soporta AES-256 — Si proteges el ZIP con contraseña, Windows no podrá abrirlo. Necesitas 7-Zip (gratuito, 7-zip.org), WinRAR, Bandizip o PeaZip. Las copias sin contraseña sí se abren con Windows Explorer.

Cómo Restaurar una Copia

  1. Cierra el programa TimeTracker completamente antes de empezar.
  2. Localiza el archivo ZIP de la copia de seguridad.
  3. Si tiene contraseña: clic derecho sobre el ZIP → 7-Zip → Extraer aquí → introduce la contraseña.
  4. Extrae el contenido sobre la carpeta de instalación del programa, reemplazando los archivos existentes.
  5. Abre TimeTracker. Todos los datos habrán sido restaurados.
🛡️ Precaución antes de restaurar — Antes de sobreescribir, puedes generar una nueva copia del estado actual del programa como medida de seguridad adicional.

Verificación SHA-256

Cada copia registra automáticamente un código SHA-256 (huella digital del archivo). Si el ZIP se corrompe durante la copia o el almacenamiento, el hash será diferente, permitiéndote detectar archivos dañados antes de intentar restaurar. El código aparece en el historial y también puede comprobarse con cualquier herramienta SHA-256 online.

Acciones sobre el Historial

Al hacer clic en cualquier fila del historial se activan dos botones adicionales:

BotónFunción
📂 Abrir CarpetaAbre el Explorador de Windows en la carpeta donde está guardado ese archivo ZIP. Si la carpeta ya no existe, lo indica con un aviso informativo sin producir ningún error.
🗑 Eliminar EntradaElimina esa línea del historial. Si el archivo ZIP existe en el disco, pregunta si también quieres borrarlo físicamente. Si no existe, simplemente elimina la línea sin mostrar errores.
🔑 Contraseña por entrada — Al seleccionar una fila del historial, el campo de contraseña en la parte superior muestra automáticamente la contraseña utilizada para esa copia concreta. Al cambiar de fila, se actualiza. Esto facilita recordar qué clave usar al restaurar.

Resolución de Problemas (Backup ZIP)

ProblemaSolución
El archivo ZIP no se creaAsegúrate de tener permisos de escritura en la carpeta destino. Prueba guardar en Documentos o el Escritorio.
Aviso «Ubicación Poco Segura»Estás intentando guardar la copia dentro de la propia carpeta del programa. Elige una ruta distinta (Pendrive, Documentos, nube).
Windows no puede abrir el ZIPSi tiene contraseña AES-256, Windows Explorer no lo soporta. Instala 7-Zip (gratuito) y úsalo para extraer.
7-Zip pide contraseña incorrectaComprueba mayúsculas/minúsculas. La contraseña es sensible a ellas. Usa el botón 👁 para ver lo que escribiste.
El archivo .exe no está en la copiaEs normal. El ejecutable está en uso mientras el programa corre. Todos los datos críticos (JSON, facturas, partes, empresas) sí están incluidos.
Error al descomprimir (Restaurar)Cierra completamente TimeTracker antes de extraer el contenido del ZIP sobre la carpeta de instalación.
Olvidé la contraseñaEl cifrado AES-256 no tiene puerta trasera. Sin la contraseña, el contenido es irrecuperable.

21 Sistema de Diagnóstico y Logs

ArchivoContenidoCuándo consultarlo
logs/timetracker.logActividad completa: arranques, guardados, generaciones, erroresSi algo no funciona
logs/timetracker_errors.logSolo errores y avisos críticosCuando el programa falla o se cierra solo

Exportar diagnóstico

  1. ⚙️ → Licencia de Software → 📋 Exportar Diagnóstico.
  2. El sistema genera un archivo comprimido con los logs.
  3. Envía ese archivo al soporte para resolución rápida.
ℹ️ Rotación automática — Máximo 5 MB por archivo. Al llenarse se crea uno nuevo; se conservan hasta 5 copias históricas.

22 Licencia y Activación del Programa

ModoCaracterísticas
Sin licenciaMáximo 20 registros. Barra parpadeante [VERSIÓN DE PRUEBA].
Licencia temporal60 días completos. Muestra días restantes. Clave de 11 caracteres.
Licencia completaUso ilimitado permanente. Vinculada al hardware. Clave de 10 caracteres.
  1. ⚙️ → pestaña Licencia de Software.
  2. Introduce el código de activación → pulsa ACTIVAR AHORA.
  3. Cierra y vuelve a abrir el programa para que todos los módulos carguen correctamente.
⚠️ Vinculada al hardware — La licencia está ligada a tu equipo. Cambiar el PC requiere nueva activación. Guarda siempre una copia de license.dat.

23 Cómo Actualizar el Programa

  1. Descarga la nueva versión desde el portal de clientes.
  2. Haz copia de seguridad de data.json y license.dat.
  3. Sustituye únicamente el archivo TimeTracker.exe. No muevas ni borres el resto.
  4. Ejecuta el nuevo .exe. La estructura de datos se actualiza automáticamente si es necesario.
⛔ Nunca reinstales desde cero — Solo sustituye el .exe para mantener intactos data.json y license.dat.

24 Bandeja del Sistema (Tray Icon)

25 Apariencia: Color, Opacidad y Escala

ControlFunciónRango
🎨 Color de fondoColor del panel principal. El texto se adapta automáticamente.Selector de color
Slider OpacidadTransparencia de la ventana. Cambios en tiempo real.30–100%
Slider EscalaTamaño de tarjetas, botones y fuentes. Sin reinicio.50–120%
↩️ RestablecerVuelve a los valores por defecto.

📱 APP Móvil TimeTracker

Instalación y Primer Uso

La App Móvil de TimeTracker es una PWA (Progressive Web App): no requiere instalación desde ninguna tienda. Funciona directamente desde el navegador del móvil.

  1. En el móvil, abre el navegador y accede a la URL proporcionada con tu licencia.
  2. El navegador puede pedir permiso para almacenamiento persistente: acepéptalo.
  3. En Chrome/Android: menú → Añadir a pantalla de inicio. En Safari/iOS: Compartir → Añadir a inicio.
  4. La App quedará como icono en tu pantalla. Fúncionará completamente sin conexión.
ℹ️ Instalación recomendada — Instalar como PWA desde la pantalla de inicio activa el almacenamiento persistente, que impide que el sistema operativo borre tus datos al liberar memoria.

Importar desde App Móvil (ZIP / JSON)

Los registros creados en la App se exportan y se importan en el programa de escritorio. El formato de exportación es un archivo ZIP que incluye tanto los datos de los trabajos como los partes firmados en HTML:

  1. En la App: pestaña 📤 ExportarDescargar Trabajos. Se descarga un archivo timetracker_AAAA-MM-DD.zip.
  2. Transfiere el archivo al PC (correo, USB, nube...).
  3. En el escritorio: ⚙️ → General → sección Importación desde Android (JSON / ZIP) → botón 📂 Seleccionar JSON o ZIP de Android.
  4. Selecciona el archivo ZIP (o JSON si es una exportación antigua) y pulsa 📥 IMPORTAR DATOS ANDROID.
  5. El sistema importa todos los registros vinculándolos automáticamente con empresas y clientes. Los duplicados se detectan por ID y no se crean dos veces.
  6. Si el ZIP incluye partes firmados, se guardan automáticamente en Partes/AAAA/MM-mes/.
FormatoContenidoCuándo usarlo
.zip (recomendado)registros.json + carpeta partes/ con los HTML firmadosExportaciones desde la versión actual de la App
.json (compatibilidad)Solo los datos de los registros, sin partes HTMLExportaciones antiguas o migración de datos
Campo importadoComportamiento
materiales_detalleSe carga como filas individuales en el grid de materiales
materialesSolo si no existe materiales_detalle. Texto libre en una sola fila.
kmSe pre-rellena en el campo KM; el usuario activa el desplazamiento
tiempo_totalSe usa para mostrar la duración exacta registrada en el móvil (incluyendo pausas descontadas)
observacionesSiempre como texto plano
⚠️ Tooltip informativo — Al pasar el ratón sobre el botón de selección de archivo, aparece un texto explicativo sobre los formatos soportados.

Partes Firmados desde la App Móvil

Cuando el técnico genera un parte desde la App Móvil y el cliente lo firma en pantalla, el sistema conserva una cópia sellada del documento original tal y como fue entregado al cliente. Este documento se incluye en el ZIP al exportar y se guarda en el escritorio al importar.

Flujo completo del parte firmado

  1. El técnico finaliza el servicio en la App y pulsa Enviar / Guardar Parte.
  2. El cliente firma en la pantalla del móvil.
  3. Se genera el parte en HTML con la firma, el QR y todos los datos incrustados. Ese documento se guarda internamente en la App (IndexedDB) y se descarga al dispositivo.
  4. Al exportar desde la App, el ZIP incluye la carpeta partes/ con los archivos EMPRESA_2026-000001.html.
  5. Al importar el ZIP en el escritorio, los archivos HTML se copian automáticamente a Partes/AAAA/MM-mes/ y la fila correspondiente en la pestaña Partes muestra el icono 📝 indicando que el parte está disponible.
  6. Un doble clic sobre esa fila abre el parte original en el navegador, exactamente como lo recibió el cliente.
⛔ Fidelidad del documento — El parte guardado es el documento exacto que recibió y firmó el cliente: con su firma, el logotipo, el QR y el formato visual del momento de la entrega. No se regenera posteriormente; por tanto, no puede verse afectado por cambios futuros en la configuración de la empresa, el logotipo o el formato del parte.
ℹ️ Compatibilidad con partes anteriores — Los partes generados antes de esta funcionalidad no disponen de archivo HTML en la App. Solo los partes generados con la versión actual de la App quedan sellados automáticamente. Los partes generados desde el escritorio siguen guardando el archivo .docx en la carpeta Partes/ como siempre.

Protección de Almacenamiento

La App monitoriza continuamente el espacio usado en el almacenamiento local del móvil:

Nivel de usoAvisoAcción recomendada
Menos del 70%Ninguno — todo normal
70%–89%⚠️ Banner amarilloExportar y eliminar registros antiguos
90% o más🔴 Banner rojo (crítico)Exportar datos inmediatamente

El banner muestra el porcentaje de uso, una barra de progreso y un botón para cerrarlo (no vuelve a aparecer en 24 horas). La comprobación ocurre al abrir la App, cada 5 minutos y tras guardar cada registro.

🔐 Almacenamiento persistente — Al iniciar, la App solicita automáticamente a Chrome/Safari que marque los datos como persistentes: el sistema operativo no los borrará aunque necesite liberar memoria.

Funcionamiento Offline

La App está diseñada para funcionar completamente sin conexión a internet. Todos los registros se guardan en el almacenamiento local del móvil. No se requiere conexión para iniciar servicios, registrar tiempo, añadir materiales ni exportar el JSON. La conexión solo es necesaria para la primera carga de la App.

Activación mediante QR

En lugar de introducir el código de licencia manualmente, el técnico puede escanear el QR generado desde el programa de escritorio:

  1. En el escritorio: ⚙️ → Licencia de SoftwareGenerar QR para APP.
  2. El QR aparece en pantalla con el código cifrado (HMAC-SHA256).
  3. En la App móvil: pestaña ⚙️ Configuración → botón Escanear QR.
  4. Apunta la cámara al QR. La App activa la licencia y carga los datos de empresa automáticamente.
✅ Sin escritura manual — El QR carga: licencia, nombre de empresa, CIF, dirección, CP, ciudad, teléfono, email y web — todo en un solo escaneo.

Validación de Código Postal y Ciudad

El campo CP y Ciudad de la configuración de la App se rellena automáticamente al escanear el QR, combinando correctamente el código postal y la ciudad configurados en el escritorio:

CP en escritorioCiudad en escritorioResultado en la App
29001Málaga29001 Málaga
29001San Roque29001 San Roque
29001Vélez-Málaga29001 Vélez-Málaga
29001(vacía)29001
(vacío)MálagaMálaga

Los QR generados con versiones antiguas del escritorio (que solo incluían el CP) son retrocompatibles. Si el campo quedó incorrecto, edítalo manualmente en ⚙️ → campo CP y Ciudad.

Sincronización y Transferencia de Datos

El flujo completo de sincronización entre la App y el escritorio es:

  1. App: registra servicios en campo → pestaña Exportar → Descargar JSON Trabajos.
  2. Transfiere el archivo al PC.
  3. Escritorio: ⚙️ → General → Importar JSON de App Móvil.
  4. Los registros importados aparecen en el módulo de Facturación como PENDIENTES.
  5. Desde Facturación, genera albaranes y facturas con los datos de la App.
⚠️ Liberar espacio — Tras importar al escritorio, vuelve a la App → Lista → Eliminar todo para liberar espacio en el móvil.

Acceso Rápido a Clientes: Llamada y Ubicación

En la lista de registros guardados, cada tarjeta de cliente muestra dos botones de acción rápida que permiten contactar o localizar al cliente sin salir de la App:

BotónIconoFunciónRequisito
Llamar📞Abre la marcación telefónica del móvil con el número del cliente precargado. Solo tienes que pulsar Llamar.Teléfono configurado en ese cliente
Ubicación📍Abre la dirección del cliente en Google Maps (o la app de mapas predeterminada del móvil), listo para navegar.Dirección configurada en ese cliente
ℹ️ Configuración de clientes — Los datos de teléfono y dirección de cada cliente se configuran en el programa de escritorio → ⚙️ → Empresas (CSV) y se sincronizan a la App mediante el QR.
💡 Uso típico — Abre el parte en curso → pulsa 📍 para navegar hasta el cliente o pulsa 📞 para llamar y confirmar la visita — todo sin cambiar de aplicación.

Dictado por Voz en la App Móvil

Los campos de texto del formulario de parte (trabajo realizado y observaciones) disponen de un botón de dictado por voz que permite rellenarlos hablando, sin necesidad de escribir en el teclado del móvil.

  1. Pulsa el icono de micrófono 🎤 situado junto al campo de texto.
  2. La primera vez, el navegador solicitará permiso para acceder al micrófono: acéptalo.
  3. Habla con normalidad. El texto reconocido se inserta automáticamente en el campo.
  4. El reconocimiento se detiene solo al terminar de hablar. Puedes volver a pulsar el botón para añadir más texto.
ℹ️ Idioma — El reconocimiento se realiza en español de forma predeterminada. Requiere conexión a internet en el momento del dictado (la transcripción la realiza el motor del sistema operativo o del navegador).
⚠️ Compatibilidad — El dictado por voz está disponible en Chrome para Android y en Safari para iOS. En navegadores sin soporte a la Web Speech API, el botón no aparece.

Controles en Cortina de Notificaciones

Cuando el cronómetro está activo y el técnico minimiza o cierra la App, el sistema operativo muestra automáticamente una notificación persistente en la cortina de notificaciones y, si el dispositivo lo permite, en la pantalla de bloqueo. Desde esa notificación se pueden controlar directamente:

AcciónEfecto en la App
PausarPausa el cronómetro. La notificación desaparece. El tiempo en pausa no se contabiliza en la duración del parte.
PararDetiene completamente el cronómetro y reabre la App para que el técnico guarde o descarte el trabajo.
Tocar la notificaciónReabre la App en primer plano sin modificar el estado del cronómetro.

Comportamiento detallado

⚠️ Permiso de notificaciones — La primera vez que inicias el cronómetro, la App solicita permiso para enviar notificaciones. Acepéptalo para activar los controles en la cortina. Sin ese permiso, esta función no está disponible.
ℹ️ Compatibilidad — Los botones de acción en la notificación funcionan en Android 8+. En iOS, la notificación aparece en la cortina pero sin botones de acción (limitación del sistema operativo); en ese caso, gestiona el cronómetro desde dentro de la App.

Alertas de Turno y Cálculo de Tiempo Efectivo

Alertas de turno olvidado

La App detecta automáticamente cuando el cronómetro lleva activo más horas de las configuradas como jornada máxima y lanza una notificación de aviso:

SituaciónAlerta
Cronómetro activo al superar el máximo de horas de turnoNotificación: «⏱️ Llevas mucho tiempo trabajando. ¿Recuerdas parar el cronómetro?»
Cronómetro detenido desde la notificaciónConfirmación: «Tiempo detenido. Recuerda guardar tu parte de trabajo.»
💡 Configuración del turno — El número máximo de horas por turno y la hora de fin de turno se configuran en la App en ⚙️ Configuración → Control de Turno. Soporta jornada continua (ej. 06:30–15:00) y jornada partida (ej. 08:30–14:00 / 15:30–19:00).

Tiempo efectivo: sin contar las pausas

El cronómetro descuenta automáticamente todos los periodos en que estuvo pausado. El tiempo que se muestra, se exporta y se guarda en el parte corresponde exclusivamente al tiempo de trabajo real:

EscenarioTiempo registrado
Inicio 08:00 → Pausa 09:45 (15 min) → Reanuda 10:00 → Para 10:001:45:00 (no 2:00:00)
Inicio 09:00 → Sin pausas → Para 11:302:30:00
✅ Facturación correcta — Al importar el JSON en el escritorio, el tiempo facturable ya está calculado sin las pausas, por lo que el albarán reflejará las horas reales de trabajo.

⏰ Control Horario y Gestión RRHH

Configuración Inicial

Para activar el Control Horario, ve a ⚙️ → pestaña Control Horario y configura:

⚠️ Requisito — Si no configuras Nombre y DNI, la pestaña de Control Horario no será visible.

Fichaje Automático

Al abrir el programa se registra automáticamente la entrada. Al cerrarlo se registra la salida, mostrando un diálogo de confirmación. Si el programa se cierra de forma abrupta (corte de luz, cuelgue), el siguiente arranque recupera la salida usando el último heartbeat (con ±60 segundos de margen).

BotónEstadoDescripción
🟢 Fichar EntradaHabilitadoNo hay entrada abierta
🟢 Fichar EntradaDeshabilitadoYa existe una entrada abierta sin salida
🔴 Fichar SalidaHabilitadoHay una entrada abierta
🔴 Fichar SalidaDeshabilitadoNo hay ninguna entrada abierta
🔒 Protección anti-duplicados — El sistema detecta entradas abiertas incluyendo registros legacy con valor «-» como salida.

Gestión de Incidencias

Desde el panel de Control Horario, haz doble clic en cualquier día para añadir una incidencia:

TipoEjemplos¿Recuperable?
VacacionesDías de vacaciones anualesNo
Baja médicaIT, baja por enfermedadNo
Ausencia justificadaCita médica, trámite oficialSí (configurable)
Ausencia injustificadaFalta sin justificarNo
FormaciónCursos, congresos

El campo Recuperable se activa dinámicamente según el tipo seleccionado. Las incidencias recuperables se tienen en cuenta en el cálculo anual.

Estados de Registros

EstadoDescripciónEditable
🟡 BorradorRegistro en revisión. Puede modificarse.
🟢 ConfirmadoRevisado y aprobado por el trabajador.Con permiso
🔵 CerradoMes cerrado. Auditoría inmutable.No

Para cerrar un mes, todos los días deben estar en estado Confirmado. Una vez cerrado, ningún registro puede modificarse.

Horas Anuales y Jornadas

En ⚙️ → Control Horario → 🗓 Jornada: introduce las horas anuales pactadas en el contrato. El motor RRHH calcula automáticamente la jornada diaria teórica, la jornada semanal y la proyección de cumplimiento al ritmo actual.

Panel de Desvío Anual

El semáforo de desvío muestra en tiempo real la diferencia entre las horas trabajadas y las horas teóricas del periodo:

ColorSignificado
🟢 VerdeEn línea o por encima de la jornada
🟡 AmarilloDesvío moderado (<10% de la jornada semanal)
🔴 RojoDesvío significativo (>10%)
⬛ NegroMotor RRHH no disponible o sin datos suficientes

Exportación Excel para Gestoría

En Control Horario → Exportar Excel. Genera un archivo con:

PDF Legal de Control Horario

Control Horario → Generar PDF. Produce un documento conforme al artículo 34.3 del Estatuto de los Trabajadores con: datos del trabajador, empresa, periodo, detalle de fichajes por día, totales y espacio para firmas. Se guarda en Control Horario/YYYY/MM/.

⚠️ Datos requeridos — Si Nombre o DNI están en blanco, el PDF saldrá con esos campos vacíos. Complétalos en Configuración antes de generar.

Auditoría y Trazabilidad

Cada cambio en los registros de control horario queda registrado con fecha, hora y usuario que lo realizó. Los registros en estado Cerrado son completamente inmutables: ningún usuario puede modificarlos, garantizando la integridad legal del historial.

Borrado de Tramos Duplicados

Si aparece un tramo extra o duplicado (por ejemplo, por abrir el programa varias veces el mismo día en versiones antiguas), puedes eliminarlo:

  1. En Control Horario, haz doble clic en el día afectado.
  2. Selecciona el tramo sobrante en la lista de tramos del día.
  3. Pulsa el botón 🗑️ Borrar tramo.
⚠️ Solo Borrador / Confirmado — No se pueden borrar tramos de un mes en estado Cerrado.

🛠 Resolución de Problemas y Errores Comunes

Problemas Generales

ProblemaCausa probableSolución
El programa no arrancaRuta con acentos o espaciosMueve la carpeta a C:\TimeTracker
Ventana invisible / fuera de pantallaCambio de monitorClic derecho en barra de tareas → Mover
No aparecen empresas en pantalladata.json vacío o corruptoRestaura desde backups/
Error "TRIAL_LIMIT"20+ registros sin licenciaActiva licencia en ⚙️ → Licencia de Software
El programa se cierra al abrir ConfiguraciónError en módulo de configuraciónConsulta logs/timetracker_errors.log y envía diagnóstico

Control Horario

ProblemaSolución
Pestaña Control Horario no apareceConfigura Nombre y DNI en ⚙️ → Control Horario
Entrada duplicada el mismo díaDoble clic en el día → Borrar tramo sobrante
Semáforo siempre negroHoras anuales no configuradas → ⚙️ → Control Horario → Jornada
No puedo editar un día cerradoMes en estado Cerrado es inmutable por diseño legal
PDF sin nombre / DNICompleta esos campos en Configuración antes de generar

Facturación

ProblemaSolución
Albarán con importe 0€Configura precio/hora en ⚙️ → Facturación antes de crear el albarán
No puedo cambiar el estado del servicioSigue el flujo: PENDIENTE → BORRADOR → ALBARANADO
Error al generar XML FACeVerifica IBAN, NIF emisor y NIF receptor configurados correctamente

Partes

ProblemaSolución
No se genera el parte WordVerifica que existe la plantilla parte_trabajo.docx en la carpeta del programa
El parte regenerado no tiene los cambiosGuarda el servicio en Editar Servicio antes de regenerar
El informe PDF sale en blancoEl mes seleccionado no tiene servicios. Cambia el filtro de mes.

APP Móvil

ProblemaSolución
La App no carga offlineInstálala como PWA desde "Añadir a pantalla de inicio"
Datos perdidos tras actualizar navegadorExporta más frecuentemente. Instala como PWA para activar persistencia.
Banner de almacenamiento permanenteExporta y elimina registros antiguos desde la App
QR no funciona / campos vacíos tras escanearRegenera el QR desde el escritorio (⚙️ → Licencia → Generar QR para APP)
CP y Ciudad incorrectos tras escanear QREdítalos manualmente en ⚙️ → campo "CP y Ciudad"
El botón 📞 no lanza la llamadaEl cliente no tiene teléfono configurado en el escritorio o el móvil no tiene aplicación de teléfono.
El botón 📍 no abre el mapaEl cliente no tiene dirección configurada, o el móvil no tiene app de mapas instalada.
No aparecen los botones Pausar/Parar en la notificaciónComprueba que has concedido permiso de notificaciones a la App. En iOS no están disponibles (limitación del sistema).
La notificación no aparece al cerrar la AppInicia el cronómetro y asegúrate de que el permiso de notificaciones está concedido. En algunos ROMs (MIUI, DokeOS) puede ser necesario activar «Mostrar siempre» en los ajustes de la app del navegador.
El tiempo guardado no coincide con el tiempo de relojEs correcto: la App descuenta los periodos en pausa y guarda solo el tiempo efectivo de trabajo.

Licencias

ProblemaSolución
Código no válidoVerifica el código exacto. La App convierte automáticamente a mayúsculas.
Licencia caducadaContacta con soporte para renovación
Licencia no reconocida tras cambiar PCSolicita reactivación al soporte (licencia vinculada al hardware)

Exportaciones Excel / PDF

ProblemaSolución
"Excel bloqueado"Cierra el archivo en Excel. El sistema guardó una copia _COPIA_XXXX.xlsx.
Gráficas vacías en el DashboardInsuficientes datos en el mes. Añade más registros.

Sincronización y QR

ProblemaSolución
JSON importado no aparece en FacturaciónComprueba que las empresas del JSON coinciden con las del escritorio (por ID o nombre)
Cámara no abre al escanear QRConcede permiso de cámara al navegador del móvil

Copias de Seguridad

ProblemaSolución
Carpeta backups/ vacíaSe genera en el primer arranque. Ejecuta el programa una vez.
Backup con datos vacíosFue creado antes de registrar datos. Usa el más reciente.
No hay backup de hoyUsa backup_auto_... o backup_cierre_...

Diagnóstico y Logs

ProblemaSolución
Carpeta logs/ no existeSe crea en el primer arranque.
Log vacíoEl error ocurrió antes del último arranque. Revisa timetracker_errors.log.
No encuentro exportar diagnóstico⚙️ → Licencia de Software → sección "Soporte"