Manual de HorecaPOS
Este manual tiene tres partes: primero para el personal (sala), después para el encargado y por último para el administrador. Cada parte se basa en la anterior: un encargado puede hacer todo lo que hace el personal de sala, y el administrador puede hacerlo todo.
Lo que tu rol puede hacer exactamente lo configura el administrador en Ajustes → Permisos. Si no ves un botón, tu rol (todavía) no tiene permiso para ello.
Este manual también está en la caja: toca el botón © abajo a la derecha en cualquier pantalla y elige Manual, o abre http://<kassa-pc>:3000/handleiding. Consulta también la introducción y la documentación de la API.
Parte 1 · Personal
Primeros pasos
Iniciar sesión. Abre la caja en la caja, la tablet o el teléfono e introduce tu PIN (de 4 a 8 dígitos). Después verás el plano de sala.
Abrir una mesa. Toca una mesa. Una mesa libre recibe un pedido nuevo; en una mesa ocupada continúas con el pedido que ya tiene. Arriba cambias entre las salas (por ejemplo, Salón y Terraza). Para la barra usas Venta rápida y para los pedidos para llevar, Para llevar.
Pedir. Elige una categoría y toca los productos. Aparecen en el ticket a la izquierda. Si quieres, elige antes el pase (1 = enseguida, 2 y 3 esperan hasta que los marches). Toca Enviar pedido: las comandas se envían a la cocina y a la barra. Mientras no hayas tocado Enviar pedido, puedes quitar líneas sin más.
Cobrar. Toca Cobrar, elige Tarjeta / Bancontact, Efectivo o Tarjeta regalo, si quieres una propina, y confirma. Con tarjeta, el pago se inicia automáticamente en el terminal de pago. El ticket se imprime; también puedes enviarlo por e-mail.
Cerrar sesión. Cierra sesión cuando termines, para que nadie trabaje con tu nombre. Después de 8 horas se cierra la sesión automáticamente.
¿Sin internet? La caja sigue funcionando. Si arriba aparece Sin internet · tarjeta manual, cobra el importe en el propio terminal de pago y elige en la pantalla de cobro Ya pagado con tarjeta en el terminal.
Varios grupos en una misma mesa
En una misma mesa puede haber varios grupos, cada uno con su propia cuenta y su propio ticket.
- Toca una mesa: libre = pedido nuevo; un grupo = directamente ese grupo; varios grupos = primero elegir, o + Nuevo grupo (el nombre puede quedar vacío).
- En la pantalla de pedidos, arriba, está la barra de grupos: cambiar entre grupos, + Grupo, Nombre del grupo (p. ej. "García") y Dividir / mover.
- Dividir / mover: elige por línea cuántas unidades se mueven (con 3× Caña, p. ej. 1) y a qué grupo, o crea un grupo nuevo. Así mueves algo que está en la cuenta equivocada, o divides después "cada uno paga lo suyo". Si un grupo se queda vacío, desaparece.
- Varias partes a la vez: con + Otra parte deja una parte preparada y elige la siguiente (p. ej. el pescado y un Dry Martini a la mesa 2, el resto a la mesa 35). Una parte también puede ir a + Otra mesa (allí como grupo nuevo). Con Mover todo pasa de una vez. ½ divide una línea por la mitad, incluso media botella (0,667 pasa a 2 × 0,3335).
- Unir: todo lo de una o varias mesas más (o de grupos de esta mesa) en esta cuenta, de una vez.
- Bélgica: repartir o unir de una vez es un solo cambio de mesa en la caja negra, tal como exige el SPF Finanzas (UC242, UC251, UC252, UC4119bis). Si después de pedir se anula algo o se aplica un descuento a una línea ya pedida, eso va con el siguiente mensaje de esa mesa (pedido, cuenta provisional, cambio de mesa) y, si no, con la venta: la línea antigua en negativo y la nueva en positivo (UC226, UC4102, UC4104, UC4107, UC4110).
- En la pantalla de mesas, un círculo naranja indica cuántos grupos hay; el importe es el total de todos los grupos.
- El ticket de caja y la comanda de cocina muestran "Mesa 5 - grupo 2" o "Mesa 5 - García".
Dividir la cuenta al cobrar
Cobrar funciona como siempre: Todo de una vez. En la pantalla de cobro ahora también se puede dividir la cuenta, con los botones debajo de Volver y Cobrar (así siempre quedan a la vista, sin deslizar):
- Dividir a partes iguales: elige con − y + entre cuántas personas (por defecto el número de comensales, o 2 si la caja no registra comensales). La pantalla muestra el importe por persona; cada uno paga su parte con tarjeta, en efectivo o con tarjeta regalo (con propina si quiere). Tras cada parte hace la cuenta atrás ("faltan 3 personas"); el último paga exactamente el resto.
- Importe propio: alguien paga un importe fijo (p. ej. € 20); el resto queda pendiente.
- Por producto…: abre Dividir / mover para pasar productos a una cuenta aparte y cobrarla por separado (como se explica arriba).
Un pago parcial solo registra el pago; la cuenta sigue abierta y en la pantalla de pedidos aparece "ya pagado … · pendiente …". El ticket (con todos los pagos) se emite con el último pago, igual que al cobrar normalmente. El pago con tarjeta mediante la integración se hace por el importe parcial exacto. Si ya se ha pagado una parte, ya no se pueden pasar líneas a otro grupo ni añadir descuentos; solo se pueden quitar líneas si queda suficiente pendiente. Cada pago parcial queda en el registro.
Venta rápida y para llevar (sin mesa)
Arriba a la derecha en la pantalla de mesas están Venta rápida y Para llevar. Ambos abren directamente un pedido sin mesa. Venta rápida es la venta en barra (IVA de consumo en el local); Para llevar usa el tipo de IVA para llevar de cada producto. Con "Nombre del cliente" añades un nombre, que aparece en el ticket ("Para llevar – García") y arriba en la comanda. Los pedidos abiertos sin mesa aparecen bajo los botones de sala ("Sin mesa: Para llevar #12 – García"), para que los encuentres. Si vuelves sin vender nada, el pedido vacío desaparece solo.
Ambos botones se pueden activar o desactivar por negocio en Ajustes → Negocio, justo debajo del tema claro/oscuro (activado por defecto). Desactivado = botón oculto; los pedidos sin mesa que ya estén abiertos siguen visibles.
A domicilio y franjas horarias
Pedidos que usted mismo toma en la caja, por ejemplo por teléfono o en la barra, con las mismas reglas que la tienda online: zonas de reparto y un número máximo de pedidos por franja horaria. Se activa en Ajustes → Negocio → A domicilio y franjas horarias, justo debajo de los botones Venta rápida y Para llevar (desactivado por defecto).
- Botón A domicilio en la pantalla de mesas (junto a Para llevar): introduzca nombre, teléfono y dirección (con Introducción rápida de dirección activada: buscar por código postal y número). La caja busca la zona de reparto y muestra los gastos de envío, el mínimo y "gratis desde". Si la dirección está fuera de las zonas, no es posible.
- Zonas de reparto: por código postal (rangos y códigos sueltos, p. ej.
5000-5049, 5051, 5052 AB), dentro de un radio en km desde el negocio (en línea recta) o una zona en el mapa que dibujas tú mismo. El radio y la zona solo funcionan con direcciones de los Países Bajos (ubicación vía PDOK). Por zona: gastos de envío, mínimo, gratis desde y minutos extra; se aplica la primera zona que coincide empezando por arriba, así que los tipos se pueden combinar (p. ej. primero unos códigos postales, luego una zona y luego un radio para el resto). Sin zonas configuradas = reparto en todas partes, sin gastos ni mínimo. Las zonas de la tienda online se configuran aparte (gestión de la tienda). - Zona en el mapa: en una zona de reparto, elige el tipo Zona en el mapa y luego Dibujar en el mapa. Haz clic en el mapa para poner puntos (al menos 3); arrastra un punto para moverlo, haz clic en un punto para quitarlo y arrastra el círculo a mitad de un borde para añadir un punto intermedio. El mapa también muestra las zonas por radio y el negocio. Los mosaicos del mapa vienen de OpenStreetMap, por lo que el mapa necesita internet; el reparto en sí no (salvo para buscar la dirección). Si no se puede buscar la dirección, la caja lo indica en lugar de "fuera de las zonas de reparto".
- Los gastos de envío aparecen como línea "Gastos de envío" en el pedido y se recalculan tras cada cambio (gratis desde, sin productos = sin gastos), mientras no se haya pagado nada. Por debajo del mínimo no se puede cobrar; la pantalla de pedido muestra cuánto falta, con el botón Mejor para llevar (se eliminan los gastos de envío y el mínimo).
- Hora: Lo antes posible (ahora + tiempo de entrega, más los minutos extra de la zona) o una franja horaria de hoy. Si hay horarios de apertura configurados para Thuisbezorgd, también se aplican aquí.
- Máximo por franja (0 = sin máximo; franja de 5 a 60 minutos): para Para llevar y A domicilio juntos; los pedidos de la tienda online en la caja también cuentan. Si hay un máximo, Para llevar también pide una hora y las franjas completas no se pueden elegir. Dos cajas a la vez por el último hueco: solo una lo consigue.
- En la comanda aparecen dirección, nombre, teléfono y hora; en "Sin mesa" y en la parte superior de la comanda, p. ej. "A domicilio – 18:30 García".
Ampliaciones (todo desactivado por defecto; sin estos ajustes funciona exactamente como arriba):
- Horario propio para llevar y a domicilio (por día de la semana, p. ej.
16:00-21:00o11:30-14:00, 17:00-22:00; pasada la medianoche se puede:17:00-01:00; vacío = ese día cerrado). Desactivado = como antes (los horarios de Thuisbezorgd, si los hay; si no, todo el día). - Días cerrados (p. ej.
25-12-2026, 26-12-2026): esos días no hay para llevar ni a domicilio. - Pedir con antelación: de 0 (solo hoy, como antes) a 14 días. En la ventana A domicilio/Para llevar se elige primero el día; un día posterior aparece en la comanda delante de la hora.
- Alta demanda: tantos minutos extra en "lo antes posible" (caja y tienda online). También se ajusta rápido con el botón Tienda online de la barra superior.
- Direcciones belgas (código postal de 4 cifras): con un radio o una zona en el mapa, la caja busca la ubicación a través de OpenStreetMap (Nominatim; se necesitan calle y localidad).
- La tienda online sigue a la caja: la caja manda. La tienda online usa entonces las zonas de reparto, el tiempo de entrega y de recogida, la franja, el máximo por franja, el horario de apertura (si se ha configurado aquí), los días cerrados y los días de antelación de la caja, y cuenta en la franja los pedidos tomados en la caja. Desactivado = la tienda online tiene sus propios ajustes (gestión de la tienda), como antes. Activar o desactivar para llevar/a domicilio sigue siendo cosa de la tienda online.
Código: lib/bezorgen.ts, routes/bezorgen.ts, BezorgDialoog.tsx, BezorgInstellingen.tsx, BezorgKaart.tsx y lib/kaart.ts (el mapa, sin paquete adicional; el mismo código está en la tienda online como public/kaart.js).
Telefonía: reconocer al cliente en un pedido por teléfono
Ajustes → Telefonía (desactivado por defecto; al desactivarlo se conserva todo). Dos interruptores separados:
- Buscar cliente por número de teléfono en pedidos a domicilio y para llevar: escribe el número en la pantalla de reparto y la caja muestra al cliente con su dirección y sus pedidos anteriores; Copiar datos rellena el nombre, el correo y la dirección. También funciona sin centralita.
- Identificación de llamadas: cuando llama un cliente, la centralita (o el teléfono, la FRITZ!Box, el módem o el teléfono Android) envía el número. En las pantallas aparece un aviso con quién llama: nombre, dirección, los últimos pedidos (con los platos y el importe, también de la tienda online, Thuisbezorgd y las plataformas de reparto), el total y una reserva. Con Tomar pedido a domicilio o Tomar pedido para llevar se abre la pantalla de reparto con todo ya rellenado (con A domicilio y franjas horarias activados); el pedido queda vinculado a la llamada y el aviso desaparece en todas las pantallas. Botón 📞 en la barra superior: las llamadas de las últimas 24 horas. Se puede desactivar por pantalla (Mostrar avisos en esta pantalla).
Se busca en la tarjeta de cliente, los pedidos a domicilio y para llevar de la caja, la tienda online, Thuisbezorgd, las plataformas de reparto y las reservas. Los números se normalizan (+31 6 1234 5678, 0031612345678 y 06-12345678 son iguales; también números belgas).
Cómo llega el número (se pueden varios a la vez; la misma llamada cuenta una vez):
| Fuente | Para | Configuración |
|---|---|---|
| Webhook / action URL | 3CX (integración CRM), Aircall, Voys / VoIPGRID, Yeastar serie P, teléfonos con action URL para llamada entrante (Fanvil, Grandstream, Mitel 6800/6900, Snom, Yealink: funciona con cualquier centralita y operador), servicios de integración (Zapier, Make, n8n, Power Automate) | la dirección de Ajustes → Telefonía (/api/telefonie/oproep?sleutel=...&nummer=...), GET o POST, JSON, formulario o query; también a través del portal: https://<portaal>/telefonie/<kassa-id>/oproep?sleutel=... |
| Asterisk (AMI) | Asterisk, FreePBX, Issabel, VitalPBX, Grandstream UCM | dirección, puerto (5038; Grandstream UCM 7777), usuario AMI y contraseña (permisos call) |
| FRITZ!Box | FRITZ!Box con telefonía | dirección (fritz.box) y puerto 1012; activar el callmonitor una vez con #96*5* |
| Módem USB de identificación de llamadas | línea fija analógica con presentación del número | puerto serie (COM3, /dev/ttyACM0), baudios y comando de inicio (por defecto AT+VCID=1) |
| Teléfono Android | el teléfono integrado de un teléfono Android del local | app HorecaPOS en ese teléfono, Ajustes → Telefonía → Vincular este teléfono (Android 10+: elegir la app como app de identificación de llamadas) |
La respuesta contiene a quien llama, también como contact (firstname, lastname, phone, email, address) para una plantilla CRM de 3CX. Las llamadas salientes e internas no se muestran; Solo estas líneas limita a ciertas líneas o teléfonos. Las llamadas se borran tras el plazo de conservación (por defecto 30 días, RGPD). Llamada de prueba simula la llamada de un número.
Código: apps/pos-server/src/lib/telefonie.ts, routes/telefonie.ts, packages/shared/src/telefonie.ts; pantallas Telefonie.tsx, BezorgDialoog.tsx; Android android-app/native/java/Beller*.java. Registro: Telefonía.
Repartidores propios: repartos, liquidación de caja y seguimiento
Para negocios con repartidores propios. Actívelo en Ajustes → Negocio → A domicilio → Repartidores propios (desactivado por defecto). El repartidor no necesita ninguna app: usa una página en el navegador de su propio teléfono (quien quiera puede usar la app Optimum Bezorger: vea App de repartidor más abajo).
Crear un reparto. En la caja está el botón Repartos (con el número de entregas que aún deben salir más los repartos que están en camino).
- En Listos para entregar, marque los pedidos que van en el reparto. Son los pedidos a domicilio de la caja, la tienda online y Thuisbezorgd (solo entrega propia; no los que lleva un repartidor de Thuisbezorgd).
- Elija el repartidor (un empleado) y el cambio que se lleva (por defecto el importe del ajuste), y toque Crear reparto.
- Aparece un código QR. El repartidor lo escanea con su propio teléfono y ve por dirección el nombre, la dirección con un botón Cómo llegar (navegación), Llamar, la observación, la hora deseada y lo que hay que cobrar. Hay una calculadora de cambio (el cliente da 50 € → devolver 31,50 €). No hace falta iniciar sesión. Comparta el enlace solo con el repartidor: quien lo tenga ve las direcciones de este reparto. Con Código QR para el repartidor se crea un enlace nuevo; el anterior deja de funcionar.
- Toque Salir cuando el repartidor se vaya. El cambio sale del cajón (salida de efectivo, con el motivo). El cliente recibe un aviso de que el pedido está en camino:
- en un pedido de la caja por SMS y/o correo electrónico, si Mensajes al cliente está activado (véase A domicilio y franjas horarias);
- en la tienda online según lo configurado en ella (correo, SMS o notificación push);
- en Thuisbezorgd a través de Thuisbezorgd.
Si el reparto aún no ha salido, todavía se puede anular.
- En ruta, el repartidor toca por dirección Entregado, efectivo, Entregado, tarjeta (un datáfono propio) o Entregado (ya pagado). La caja lo ve al instante. Si el repartidor no puede indicarlo, también se puede hacer en la caja. De vuelta en el local, el repartidor toca Ya he vuelto al local.
Liquidación de caja. Después del reparto, toque Cobrar (permiso Gestionar cajón portamonedas):
- Por pedido, elija efectivo, tarjeta en la puerta, ya pagado o no entregado (vuelve). Lo que indicó el repartidor ya aparece rellenado.
- La caja cobra cada pedido con importe pendiente, sin nuevo ticket (el cliente ya tiene el ticket; se puede reimprimir en Tickets). Un pedido no entregado sale del reparto y queda abierto, para que pueda ir en un reparto siguiente.
- Verá lo que se espera: el cambio más lo cobrado en efectivo. Introduzca lo que entrega el repartidor, o cuéntelo por billetes y monedas (Contar por billetes y monedas). La caja muestra si cuadra, o cuánto hay de más o de menos.
- El cambio vuelve al cajón (entrada de efectivo). La diferencia queda en el reparto y en el registro, y aparece también como descuadre de caja en el informe Z.
Seguimiento (se activa aparte en el ajuste). Al pasar a en camino, el cliente recibe un enlace a una página de seguimiento en el portal. Ese enlace está en el SMS o correo electrónico, y en la tienda online en la página de estado (Sigue a tu repartidor). En la página de seguimiento aparece:
- si el pedido se está preparando, está en camino o se ha entregado;
- la hora prevista: desde la ubicación del repartidor pasando por las direcciones anteriores, si no, la hora deseada;
- cuántas direcciones van antes (sin mostrar otras direcciones);
- con El repartidor en directo en el mapa, también el repartidor, el local y la dirección propia en un mapa (OpenStreetMap). El propio repartidor activa compartir la ubicación en su teléfono (Compartir mi ubicación). La ubicación solo se envía mientras la página está abierta; la página mantiene la pantalla encendida.
Las páginas aparecen en el idioma del teléfono (todos los idiomas del portal). En la caja se ve en cada reparto cuándo se recibió la ubicación por última vez (con un enlace al mapa).
Privacidad. El portal guarda los datos de un reparto (nombres, direcciones, teléfonos, la ubicación) solo mientras dura el reparto. Al liquidar se borra todo, y si no, a las 24 horas. El cliente solo ve su propio pedido. La ubicación del repartidor solo es visible durante el reparto, y deja de serlo en cuanto el repartidor ha vuelto.
Planificación de repartos (opcional)
Actívela en Ajustes → Negocio → A domicilio → Planificación de repartos (desactivada por defecto; funciona con repartidores propios). En la ventana Repartos aparece entonces el botón Proponer repartos. La caja agrupa en repartos los pedidos que aún están por salir:
- los pedidos cercanos entre sí cuyas horas deseadas caen dentro de la franja horaria (por defecto 30 minutos) van juntos;
- hasta el número máximo de direcciones por reparto (por defecto 4), siempre que el reparto (ida, todas las direcciones y vuelta al negocio) no dure más que el máximo (por defecto 45 minutos);
- para cada reparto, el mejor orden, la distancia (km), el tiempo de trayecto de ida y vuelta y, por dirección, la llegada prevista saliendo ahora. Si es posterior a la hora deseada, aparece más tarde de lo pedido.
Con Usar este reparto se marcan esos pedidos, en ese orden; elija el repartidor y pulse Crear reparto. En un reparto que aún no ha salido, Mejor orden pone las direcciones en el orden más rápido (también en el teléfono del repartidor). Cada reparto muestra la distancia y el tiempo de trayecto.
Ajustes: direcciones por reparto, duración máxima de un reparto, la franja horaria, la velocidad del repartidor (bicicleta ~15, scooter ~25, coche ~35 km/h en ciudad) y los minutos por dirección (aparcar, llamar, cobrar; por defecto 2). Estos valores también los puede ajustar el encargado: en la ventana Repartos con el botón Configurar planificación de repartos (permiso Configurar planificación de repartos, activado por defecto para el encargado; modificable en Ajustes → Permisos). Activar o desactivar la planificación de repartos y el servicio de rutas (dirección, clave API) siguen siendo del administrador.
Distancia y tiempo de trayecto, a elegir por el administrador:
- Estimación (por defecto): distancia en línea recta por 1,35 (factor de desvío) con la velocidad del repartidor. Funciona sin internet y sin cuenta.
- OSRM: rutas por carretera mediante un servidor OSRM. Introduzca la dirección (
https://, ohttp://en la red propia). El servidor de demostración público (https://router.project-osrm.org) es solo para uso ocasional; para el uso diario, instale su propio servidor OSRM o recurra a un proveedor. - OpenRouteService: rutas por carretera con su propia clave API (gratuita en openrouteservice.org, con un límite diario). La dirección es por defecto
https://api.openrouteservice.orgy puede apuntar a un servidor propio. La clave se queda en la caja; las pantallas solo muestran que está introducida.
Con Probar se prueba el servicio. Si el servicio falla, la planificación vuelve a la estimación y lo indica. Una dirección cuya ubicación se desconoce (sin código postal y número válidos) aparece en la propuesta en sin ubicación conocida y no se planifica. La exportación de la configuración incluye los ajustes, pero no la clave.
Código: lib/ritplanning.ts.
App de repartidor (opcional)
Actívela en Ajustes → Negocio → A domicilio → App de repartidor (desactivada por defecto; funciona con repartidores propios y el portal de gestión). Cada repartidor vincula entonces su propio teléfono una sola vez, en lugar de escanear un código QR en cada reparto:
- En Teléfonos vinculados, elija el repartidor (un empleado), si quiere el nombre del teléfono, y toque Vincular teléfono.
- Aparece un código QR. El repartidor lo escanea en la app Optimum Bezorger (botón Vincular) o con la cámara del teléfono: la página se abre en el navegador. También funciona sin la app y se puede añadir a la pantalla de inicio.
- La vinculación sigue siendo válida hasta que la revoque; el teléfono deja de ver nada al instante. Una nueva vinculación para el mismo empleado sustituye a la anterior (por ejemplo, con un teléfono nuevo).
En la app o en la página aparecen todos los repartos propios (cada reparto que la caja crea para este repartidor), con los mismos botones que en un reparto: Cómo llegar, Llamar, importe a cobrar con calculadora de cambio, Entregado y Ya he vuelto al local. Se pueden activar por separado:
- Recoger pedidos uno mismo: el repartidor ve las entregas que aún no tienen reparto, marca lo que se lleva y toca Llevar. La caja crea el reparto (o los añade si ese repartidor ya tiene un reparto que aún no ha salido); el cambio estándar va con él. Lo que otro ya ha cogido ya no se puede elegir.
- Salir uno mismo: Salir en la app hace lo mismo que en la caja (cambio del cajón, los clientes reciben aviso).
- Mapa en directo: en Repartos está el botón Mapa con el negocio, todos los repartidores que están de servicio y las direcciones que aún hay que entregar. El repartidor activa y desactiva De servicio él mismo. La app transmite la ubicación también con la pantalla apagada (Android: una notificación en la barra mientras se comparte); la página web solo mientras está abierta. Sin este ajuste, la ubicación solo se comparte durante un reparto con seguimiento.
La app para Android está en Google Play y en la página de descargas del portal (/download/). Hay una versión para iPhone lista, pero no saldrá hasta que haya una cuenta de desarrollador de Apple; hasta entonces los iPhone usan la página web. En un reparto que el repartidor recogió él mismo aparece recogido por el repartidor en la app.
Código: lib/bezorgersapp.ts, en el portal src/volgen.mjs y la app en el repositorio horecapos-bezorger.
En el registro consta quién creó un reparto, lo hizo salir, lo marcó como entregado y lo liquidó, con los importes. Desactivar: sin botón Repartos; los repartos y los ajustes se conservan.
En el portal: /bezorger/<sleutel> y /volg/<code>. Código: lib/bezorgers.ts, routes/bezorgers.ts, Bezorgers.tsx y en el portal src/volgen.mjs.
Aviso por tiempo de preparación excesivo
Un pedido para llevar o a domicilio que está listo más tarde de lo prometido: la caja lo detecta, avisa y puede enviar al cliente una disculpa al momento, si se desea con un vale de descuento. Actívalo en Ajustes → Negocio → A domicilio → Aviso por tiempo de preparación excesivo (desactivado por defecto).
- Qué pedidos: para llevar y a domicilio con hora prometida, de la caja (a domicilio y franjas horarias), la tienda online y Thuisbezorgd.nl / Takeaway.com.
- Con retraso: todavía no listo ni en camino tantos minutos (por defecto 10) después de la hora prometida. Listo o en camino significa: todo listo en la pantalla de cocina, el estado listo o en camino en la tienda online o en Thuisbezorgd, el mensaje ✉ Listo / ✉ En camino al cliente, o cobrado. La caja lo comprueba cada minuto.
- Aviso: botón Con retraso en la barra superior con el número (con sonido cuando hay uno nuevo), con la hora prometida de cada pedido y cuántos minutos de retraso lleva. Un pedido desaparece solo cuando está listo o en camino, o con Resuelto; debajo aparecen los de las últimas 24 horas, con la hora en que estuvieron listos. Todo queda en el registro.
- Tienda online: la página de estado del cliente muestra que tarda más, con la nueva hora prevista.
- Con Thuisbezorgd no es posible (el cliente pertenece a Thuisbezorgd): allí solo el aviso. Se puede usar un texto propio;
{naam},{zaak},{code},{korting}y{geldig}se rellenan automáticamente. - Vale de descuento (solo con Códigos de descuento activados): con la disculpa, un código de descuento personal para el próximo pedido (p. ej.
SORRY-7K4Q2M), un importe o porcentaje, de un solo uso, válido durante un número de días, en la caja y en la tienda online. Los códigos no aparecen en la lista de Códigos de descuento. Si falla el envío, el código caduca. Con el botón de la caja, solo con el permiso Aplicar descuento. - Desactivado: los avisos y los códigos emitidos se conservan (también en la copia de seguridad); el ajuste se incluye en la exportación de la configuración.
Código: lib/telaat.ts, routes/telaat.ts, TeLaat.tsx y packages/shared/src/telaat.ts.
El botón Enviar pedido: qué hace y cuándo lo necesitas
Tocar un producto y tocar Enviar pedido son dos pasos distintos:
- Tocar un producto lo añade enseguida a la cuenta (en la lista de la izquierda) como nuevo. Solo tú lo ves: la cocina y la barra todavía no saben nada. Una línea nueva es un borrador: aún puedes quitarla o cambiar la cantidad o las opciones sin problema, sin anulación.
- Enviar pedido envía todas las líneas nuevas de una vez: las comandas van a las impresoras de cocina y barra (y a la pantalla de cocina), y las líneas pasan a enviado. A partir de ahí solo se pueden quitar con una Anulación (permiso anulación). El botón muestra cuántas líneas nuevas hay pendientes, p. ej. Enviar pedido (3); si no hay líneas nuevas, el botón está en gris.
¿Por qué dos pasos? En la mesa tomas todo el pedido (bebidas, entrante, plato principal), ajustas algo si el cliente cambia de opinión y luego lo envías de una vez a la cocina, con una comanda por estación en lugar de una por producto. Así la cocina puede empezar mucho antes de que se pague.
Qué más ocurre con Enviar pedido:
- Pases: el pase 1 va directamente a la cocina; los pases 2, 3 y 4 se envían como ESPERA y la cocina no empieza hasta que marches ese pase (ver Pases).
- Rondas: cada Enviar pedido es una ronda; en eso se basa ↻ Otra ronda.
- El stock se descuenta y se libera un grifo dosificado.
- All-you-can-eat: si es demasiado, demasiado pronto o demasiado tarde para la fórmula, la caja pregunta primero si se permite igualmente.
- Bélgica (GKS 2.0): las líneas se envían primero como pro forma a la caja negra; si eso falla, no va nada a la cocina y siguen como nuevas.
- Sin conexión: el pedido se guarda y va a la cocina en cuanto vuelve la conexión. Impresora apagada: el pedido se envía igualmente y la comanda entra en la cola de impresión (ver Impresora de cocina apagada o sin pantalla de cocina).
También puedes cobrar directamente. Si tocas Cobrar mientras todavía hay líneas nuevas en la cuenta, la caja las envía primero automáticamente, para que la cocina y la barra siempre reciban su comanda. En la barra o en pedidos para llevar no hace falta tocar antes Enviar pedido: tocas los productos y directamente Cobrar. Si ese envío automático falla (sin conexión, línea de all-you-can-eat, caja negra), la pantalla de cobro no se abre y ves el motivo.
¿Prefieres que la barra no reciba ticket cuando cobras directamente? Activa la casilla Cobro directo sin comanda en Ajustes → Negocio → Pedidos y cobro. Así, solo lo que envías con Enviar pedido llega a cocina y barra; lo que cobras directamente no genera comanda.
Botón Cobrar grande o pequeño
Con la casilla Botón "Cobrar" grande marcada, la pantalla de pedido muestra un botón Cobrar grande justo debajo de los productos pedidos: ancho, alto y con el importe, para pulsarlo rápido. Si ya se ha pagado parte de la cuenta, el botón muestra el importe pendiente. El botón pequeño de abajo junto a Enviar pedido desaparece.
Con el botón grande, los botones de la pantalla de cobro también son grandes: Cobrar (con Tarjeta, Tarjeta regalo y las demás formas de pago) y, con Efectivo, Cobrar importe exacto y Cobrar son anchos y altos, fáciles de pulsar, incluso con los dedos sucios (por ejemplo, en una carnicería). Las formas de pago son algo más grandes y los botones de propina algo más pequeños, para que todo quede en pantalla.
En una instalación nueva la casilla está desmarcada: entonces el botón pequeño abajo junto a Enviar pedido y una pantalla de cobro con botones normales. ¿Lo prefiere grande? En Ajustes → Negocio, justo debajo del tema claro/oscuro, marque la casilla Botón "Cobrar" grande. Una caja que ya estaba en uso conserva lo que tenía. La elección se aplica a todas las cajas y tabletas del negocio.
Marcar un producto como «agotado»
Cualquiera puede mantener pulsado un producto en la pantalla de pedidos (o hacer clic con el botón derecho) y elegir Agotado. El producto se vuelve gris y ya no se puede pedir en ninguna caja. Del mismo modo lo recuperas con Disponible de nuevo. Cada cambio queda en el registro. El administrador también puede seguir haciéndolo en Ajustes → Productos. El servidor de caja también rechaza un producto marcado como agotado ("Cola" está agotado), así que también desde una tablet que aún no tenía el cambio o pedidos guardados sin conexión; esa tablet muestra entonces "No se pudo enviar".
Pantalla de cocina (KDS)
Además de (no en lugar de) las impresoras de comandas, la cocina o la barra pueden usar una pantalla. Abre en una tablet/PC de la cocina http://<kassaserver>:3000/keuken, inicia sesión con un PIN y elige el puesto: son los mismos nombres que las impresoras (cocina, barra, ...), así que en la pantalla aparece exactamente lo que saldría en esa comanda. "Todo" muestra todos los puestos.
- Una comanda por pedido, la más antigua primero, con mesa/para llevar, número y cuánto tiempo lleva esperando (naranja a los 10, rojo a los 20 minutos).
- Los pases aparecen por separado; un pase que aún no se ha marchado aparece en gris como "EN ESPERA de marchar". Las anulaciones aparecen tachadas.
- Toca una línea para marcarla como lista, o Listo para toda la comanda. El personal de sala recibe entonces en la barra superior "Cocina: Mesa 5 está lista". Con Ajustes → Negocio → Pantalla de cocina → Sonido para el camarero (desactivado por defecto) la caja también emite un pitido ("ding-dong", sin archivo de sonido). El navegador solo permite sonido después del primer toque en la pantalla; sube el volumen de la tablet.
- Recuperar muestra lo que se ha marcado como listo en la última hora; así puedes recuperar lo que hayas quitado por error.
La pantalla se actualiza sola al instante. Las comandas se siguen imprimiendo; quien no use la pantalla no notará nada.
Pantalla de cocina: pasar, orden y pase
Ajustes → Impresoras → Pantalla de cocina. Cada parte se activa por separado, desactivada por defecto; al desactivarla se conserva todo.
- Pasar entre puestos, por ejemplo frío → caliente → pase. Para cada puesto configuras un puesto siguiente fijo; la comanda muestra entonces un botón → caliente (y siempre Pasar a… para elegir otro puesto). Solo pasan las líneas abiertas de ese puesto. Un puesto no necesita impresora: indica puestos como pase en Puestos sin impresora. Listo (y el aviso a sala) llega solo en el último puesto. En "Todo", una línea pasada muestra dónde está ahora. Cada paso figura en la línea y en el registro.
- Reordenar: arrastra las comandas (ratón) o muévelas con ◀ ▶ (pantalla táctil). El orden vale por puesto y para todas las pantallas de ese puesto; las comandas nuevas se añaden al final.
- Siguiente pase desde la pantalla de cocina: una comanda con un pase en espera muestra Solicitar pase 2. Sala recibe entonces "Cocina solicita el pase 2 para Mesa 5" (con sonido) y marcha como siempre; la pantalla de cocina muestra "Pase 2 solicitado · n min" hasta que se marcha el pase. O elige Marchar: la pantalla de cocina marcha entonces el pase ella misma, con la comanda "MARCHAR PASE 2", igual que el botón de la caja.
Impresora de cocina apagada o sin pantalla de cocina
La caja siempre sigue funcionando, aunque la impresora de cocina o de barra esté apagada (o sin papel, o con el cable suelto) e incluso sin pantalla de cocina:
- Enviar pedidos siempre funciona. Las líneas pasan enseguida a pedido, la cuenta cuadra y se puede cobrar con normalidad. Las impresoras reciben la orden a la vez y cada una tiene como máximo unos 4 segundos: una impresora apagada no hace esperar mucho a las demás (ni al personal de sala).
- Cola de impresión. Una comanda que no se ha podido imprimir pasa a la cola de impresión. El servidor de caja lo vuelve a intentar cada 30 segundos durante un cuarto de hora; en cuanto la impresora vuelve a funcionar, sale con IMPRESO MÁS TARDE arriba. Si la siguiente comanda en esa impresora se imprime bien, las comandas en espera salen justo detrás.
- Pasado un cuarto de hora deja de reintentarlo automáticamente; entonces aún puedes usar Reimprimir ahora.
- Pantalla de cocina. Si el pedido está en la pantalla de cocina, la cocina también lo ve allí aunque la impresora esté apagada. Quien no use pantalla de cocina no se pierde nada: la caja nunca espera al "Listo" de la cocina.
- La cola solo está en la memoria del servidor de caja (tras un reinicio queda vacía).
- También el ticket de caja: si no se imprime, el cobro se ha hecho igualmente (la caja avisa "no se pudo imprimir") y más tarde puedes imprimir una copia en Tickets.
Pases (entrante, principal...)
Los botones de pase solo aparecen cuando hacen falta: en cuanto hay un menú (producto compuesto) en el pedido, o cuando ya hay algo en el pase 2 a 4. Con productos normales, como una cola, no los ves y todo va directamente a la cocina. No hay nada que configurar.
Debajo de la lista del pedido aparece Pase 1 2 3 4. Por defecto está activo el pase 1 y todo funciona como siempre: "Enviar pedido" manda todo directamente a la cocina, sin encabezados de pase en la comanda. Si eliges el pase 2 (o superior) antes de tocar los productos:
- al pulsar "Enviar pedido" ya van a la cocina, bajo "-- Pase 2 · EN ESPERA de marchar --", para que la cocina pueda prepararse;
- en la lista del pedido aparece "Pase 2 · en espera" con un botón Marchar;
- al marchar, la cocina recibe una comanda " MARCHAR PASE 2 " con lo que hay que preparar ahora.
El pase 1 siempre sale enseguida. Si el pase 2 ya se ha marchado, un plato pedido más tarde en el pase 2 también sale enseguida.
Alérgenos por producto
Por defecto desactivado: así los alérgenos no se ven en ningún sitio. Se activa en Ajustes → Negocio → Introducir y mostrar alérgenos por producto.
- Ajustes → Productos: marca en cada producto los 14 alérgenos de la UE (gluten, crustáceos, huevos, pescado, cacahuetes, soja, leche, frutos de cáscara, apio, mostaza, sésamo, sulfitos, altramuces, moluscos). En la lista de productos aparecen las abreviaturas detrás del nombre.
- Pantalla de pedidos: en cada botón de producto aparecen en pequeño las abreviaturas (p. ej.
Gl Me), y el botón ⚠ Alérgenos de la barra de grupos muestra los alérgenos completos de cada producto de la categoría elegida, con la explicación de las abreviaturas. - Los cambios de alérgenos quedan en el registro (antiguo → nuevo). Si el ajuste está desactivado, los alérgenos introducidos antes se conservan.
Buffet libre
Por defecto desactivado. Se activa en Ajustes → Negocio → All-you-can-eat (solo el administrador). Creas una o más fórmulas, p. ej. Pescado, Carne y Sushi, cada una con:
- un nombre (aparece en el ticket: "Pescado adulto", "Pescado niño");
- un precio por adulto y por niño (IVA incluido) y el tipo de IVA (por defecto NL
LAAG, BEB); - los platos incluidos (€ 0): categorías completas y/o productos sueltos (también de otras categorías, p. ej. patatas fritas en Pescado y en Carne);
- un límite de tiempo en minutos (0 = ninguno);
- rondas: como máximo tantos platos por persona por ronda (0 = ilimitado) y como mínimo tantos minutos entre rondas (0 = ninguno);
- un suplemento por desperdicio por unidad (0 = ninguno).
Con ↑ ↓ estableces el orden. Cuenta cuando un plato pertenece a varias fórmulas: se asigna a la de más arriba que haya elegido el grupo. Eliminar quita una fórmula para las mesas nuevas; las mesas en curso conservan sus líneas de precio (allí se puede reducir el número de personas, pero no aumentarlo).
En la mesa:
- En la pantalla de pedidos, encima del ticket, está + All-you-can-eat. Elige por menú el número de adultos y niños; se puede mezclar (p. ej. 2× Pescado y 2× Carne). El precio se añade como líneas en la cuenta; estas no van a cocina. El número de comensales del grupo pasa a ser el total de participantes (si la caja registra comensales).
- La barra muestra por fórmula: personas, tiempo restante (en rojo cuando se acaba el tiempo), qué ronda es con el máximo, y cuánto falta para la siguiente ronda. Los platos incluidos aparecen en los botones como AYCE y en el ticket con la etiqueta AYCE por € 0. Todo lo que no pertenece a ninguna fórmula elegida (bebidas, postres ...) se sigue cobrando con normalidad.
- Enviar pedido: cada vez que se pulsa "Enviar pedido" con platos gratuitos cuenta como una ronda, por fórmula (solo las fórmulas de las que haya platos). Lo marcado sin conexión y enviado más tarde no se bloquea.
- Modificar: ajustar las cantidades por fórmula. Reducir personas cuenta como anulación (permiso "anulación"). Poner una fórmula a 0 (o Detener para todo) es posible mientras no haya platos de esa fórmula en la cuenta.
- Suplemento (solo si una fórmula elegida tiene suplemento por desperdicio): elige la cantidad (y la fórmula, si hay varias); "Suplemento por desperdicio × cantidad" se añade a la cuenta.
- Cobrar, dividir, los descuentos y el ticket funcionan como siempre: los precios de las fórmulas, el suplemento y las bebidas son líneas normales con su propio IVA.
- Si el administrador desactiva el buffet libre mientras hay grupos en curso, los platos que se marquen a partir de entonces vuelven a costar el precio normal; lo que ya está en la cuenta se mantiene.
- En la tienda online (opcional, desactivado por defecto): con También al pedir en la mesa mediante el código QR (tienda online), el cliente que pide en una mesa con una fórmula ve los platos incluidos como Incluido por € 0, con el estado arriba (personas, ronda, tiempo). Cada pedido es una ronda, con las mismas reglas que Enviar pedido; si son demasiados, demasiado pronto o demasiado tarde, la tienda lo rechaza al momento. Las bebidas y otros platos los paga el cliente con normalidad; todo va a la cuenta de la mesa. Desactivado = la tienda cobra los precios normales, como antes.
Tarjetas regalo
Dos interruptores en Ajustes → Negocio → Tarjetas regalo:
- Tarjeta regalo como forma de pago al cobrar: activado por defecto, como siempre. Desactivado = el botón Tarjeta regalo no aparece al cobrar (ni en Devolver dinero mediante en una devolución), y el servidor de caja rechaza los pagos con tarjeta regalo.
- Vender tarjetas regalo con saldo: desactivado por defecto. Activado:
- En la pantalla de pedido aparece el botón Tarjeta regalo: elija el importe (€ 10, 25, 50, 100 u otro importe) y deje que la caja genere un código, o escanee el código de una tarjeta preimpresa. La tarjeta se añade como línea a la cuenta (código de IVA BON: no cuenta como ventas, sin IVA, no va a cocina). Ahí también puede consultar el saldo de un cliente.
- Tras cobrar, la tarjeta queda activa y la impresora de tickets imprime una tarjeta regalo con el importe, el código y un código QR.
- Canjear: al cobrar, elija Tarjeta regalo y escanee o escriba el código (el botón Saldo muestra el saldo). El importe se descuenta del saldo. Si el saldo es inferior a la cuenta, se descuenta todo el saldo como pago parcial y el resto se paga con tarjeta o en efectivo. El saldo puede usarse en varias veces.
- Código vacío = tarjeta regalo sin código, como antes (p. ej. un vale antiguo en papel).
- Informe → Tarjetas regalo (permiso Gestionar tarjetas regalo, por defecto encargado y administrador): buscar por código, saldo pendiente, historial por tarjeta, bloquear (perdida/robada) y corregir saldo indicando un motivo. Esto queda en el registro.
- Informes: las tarjetas regalo vendidas no cuentan como ventas y aparecen por separado (Tarjetas regalo vendidas); el dinero recibido sí aparece en las formas de pago. Lo que se paga con una tarjeta regalo es venta normal (con IVA) en la forma de pago Tarjeta regalo.
- Contabilidad: las tarjetas vendidas van al haber y las canjeadas al debe de la cuenta Tarjetas regalo (saldo a favor de clientes).
- Una tarjeta regalo vendida se puede devolver mediante Tickets → Devolución, siempre que no se haya usado (saldo = valor). Tras la devolución, la tarjeta queda anulada (saldo 0, bloqueada; figura en el historial de la tarjeta). Si ya se ha usado (en parte), ponga el saldo a 0 en Informe → Tarjetas regalo y reembolse el resto por separado. No se puede aplicar descuento a una tarjeta regalo.
Saldo recargable (opcional)
Para clubes, cantinas deportivas, centros juveniles y eventos: una tarjeta regalo con saldo se convierte en un pase recargable. Se activa en Ajustes → Negocio → Saldo recargable, debajo de las tarjetas regalo (desactivado por defecto; solo funciona si Vender tarjetas regalo con saldo está activado).
- Pase o pulsera: venda una tarjeta regalo con Tarjeta preimpresa y escanee el pase (un lector NFC/RFID que funciona como teclado, o un código de barras). El número del pase pasa a ser el código; con él el cliente paga como con una tarjeta regalo.
- Recargar: pantalla de pedido → Tarjeta regalo → Recargar saldo: escanee la tarjeta regalo o el pase e introduzca el importe. Se añade como línea a la cuenta (código de IVA BON: no cuenta como ventas, sin IVA, igual que una tarjeta regalo vendida) y tras cobrar queda en el saldo. En el historial de la tarjeta figura Recargado.
- Saldo máximo por tarjeta regalo o pase (por defecto € 500, configurable hasta € 5.000).
- Devolver el resto (casilla, desactivada por defecto; permiso Gestionar cajón portamonedas): tras Consultar saldo aparece Devolver el resto. El saldo pasa a € 0 y el importe figura como dinero fuera del cajón en el informe X y Z (Tegoed terugbetaald …).
- Una recarga se puede anular mediante Tickets → Devolución mientras el saldo siga siendo al menos ese importe; la tarjeta regalo o el pase sigue siendo válido.
- Recargar en el quiosco (opcional): vea Quiosco de autoservicio.
Cheques de comida
Solo para negocios en Bélgica, desactivado por defecto: Ajustes → Negocio → Cobrar → Cheques de comida. Los cheques de comida son un beneficio salarial: el empleador los carga en una tarjeta del trabajador (Edenred, Monizze o Pluxee). El cliente paga con ella en el terminal de pago normal; no hace falta ninguna conexión con los emisores.
- Activado: al cobrar aparece el botón Cheque de comida. Elija el emisor (solo los emisores que acepta el negocio) y deje que el cliente acerque la tarjeta al terminal de pago, igual que al pagar con tarjeta. Sin conexión con el terminal de pago: el cliente paga en el propio terminal de pago y usted toca Cobrar.
- Sin propina ni cambio con cheques de comida. Si el saldo no alcanza, el cliente paga el resto de otra forma (la cuenta queda abierta hasta que todo esté pagado).
- Solo para ciertas categorías (opcional, p. ej. comida pero no alcohol): entonces con cheques de comida se puede pagar como máximo el importe de esos productos de la cuenta. La pantalla de cobro indica cuánto; el cliente paga el resto de otra forma.
- En el ticket de caja: Cheque de comida Pluxee (con el emisor detrás).
- Informe Z e informe X: una línea propia por emisor (Cheque de comida Edenred, … Monizze, … Pluxee).
- Contabilidad: una cuenta contable propia por emisor (Cheques de comida Pluxee (a cobrar) etc., por defecto 416100, 416200 y 416300), porque el dinero viene del emisor y no del banco del terminal de pago.
- Necesario: un acuerdo con cada emisor cuyos cheques acepte, y un terminal de pago que acepte estas tarjetas (consúltelo con el proveedor del terminal de pago).
Moneda extranjera
Cobrar en efectivo en otra moneda, p. ej. a turistas británicos o estadounidenses, o en zonas fronterizas con francos suizos. Desactivado por defecto: Ajustes → Negocio → Cobrar → Moneda extranjera. Añada las monedas (CHF, CZK, DKK, GBP, HUF, NOK, PLN, SEK, TRY, USD) con un tipo de cambio por moneda: cuántos euros cobra por 1 unidad (p. ej. 1 GBP = € 1,15).
- Introducido manualmente: un tipo de cambio fijo; ajústelo usted mismo cuando cambie.
- En vivo (BCE): el tipo de cambio diario del Banco Central Europeo (tipos de referencia, cada día laborable hacia las 16:00; gratis, sin cuenta). Con un recargo en porcentaje (0-20) el tipo de cambio baja en esa medida, para que el negocio no pague el cambio de su bolsillo. La caja obtiene los tipos sola si tienen más de 6 horas; Actualizar ahora los obtiene al instante. Sin internet se mantiene el último tipo de cambio.
- Activado: al cobrar aparece el botón Moneda extranjera. Elija la moneda; la caja muestra cuánto es en esa moneda. Introduzca lo que entrega el cliente: la caja lo convierte y da el cambio en euros. Si el cliente no quiere cambio, marque El cambio es propina: el cambio aparece como propina en el ticket, en Bélgica en esa moneda (GKS 2.0, UC296).
- Si el cliente entrega menos que el importe total, es una parte; el resto lo paga de otra forma.
- En el ticket de caja: la moneda, el importe y el tipo de cambio, y el cambio en euros.
- Informe X y Z: una línea propia por moneda (Moneda extranjera GBP, en euros), y en el cajón portamonedas lo que hay en el cajón en esa moneda. El cambio en euros se resta del dinero esperado en el cajón; las monedas extranjeras se cuentan aparte.
- Contabilidad: cuenta como efectivo (caja), en euros.
Botones adicionales para pedidos y cobro
Botones para lo que no todos los negocios necesitan. Todo está desactivado por defecto; actívelos botón a botón en Ajustes → Negocio → Pedidos y cobro (permiso Configurar negocio, pagos e impresoras). Desactivado = el botón no aparece en ningún lugar de la caja y el servidor de caja rechaza la acción. En los Países Bajos todo funciona sin caja negra; en Bélgica un botón solo funciona cuando esa función se ha probado con la caja negra (junto al botón se indica si aún no es así).
Al abrir una mesa:
- Registrar número de comensales: la pregunta "¿Cuántas personas?" en una mesa libre, los comensales en el plano y en la pantalla de pedidos, y los comensales en los informes. Ver Número de comensales.
Al pedir (pantalla de pedidos, para lo que toque después):
- Agrupar productos iguales (sin botón, activado de forma predeterminada): si vuelves a tocar el mismo producto (mismas opciones, aún no pedido), la cantidad aumenta en lugar de añadirse una línea nueva: 4 Cola en una línea con el precio por 4. Con − se quita uno, incluso si ya está pedido (anulación de uno). Con una nota, un asiento o para llevar sigue siendo una línea aparte; lo que ya se ha pedido sigue siendo una línea aparte (una nueva ronda).
- − y + (delante del precio en cada línea): − quita uno, + añade uno (mismo producto, opciones y nota; si Agrupar productos iguales está desactivado, una línea nueva). Aún no pedido y en 0: la línea desaparece. Ya pedido: uno menos es una anulación, esa línea queda tachada (para la cocina y los informes); uno más se convierte en una línea nueva que aún hay que pedir. Tocar el propio precio ya no quita nada. En un menú solo −.
- Para llevar (solo en el local): el cliente se lleva este producto, p. ej. una botella de agua o un postre. Esa línea recibe el IVA de para llevar (en Bélgica etiqueta C), el resto de la cuenta el IVA de consumo en el local. En el ticket aparece llevar junto a la línea.
- Asiento (en una mesa): toque varias veces para el asiento 1, 2, 3 ...; las líneas reciben ese número de asiento (también en la comanda). En Bélgica cada línea va a la caja negra con el centro de coste del asiento (CHAIR, UC4123). Una vez más tras el asiento 12 = de nuevo sin asiento.
- Devolver envase: el siguiente producto se añade con -1, p. ej. una botella o un vaso vacío (depósito). Solo es posible con productos con Retornable (depósito) (Ajustes → Productos). Si toda la cuenta es negativa (solo devolución de depósito, sin venta), Cobrar pasa a ser una devolución de dinero: en efectivo o con tarjeta (reembolsado en el propio terminal). En Bélgica como devolución (REFUND, UC4108 y UC4114).
- Canjear SPV: el cliente paga un producto o menú con un single purpose voucher (un vale para exactamente ese producto, p. ej. "1 menú all-in"). Toque Canjear SPV y después el producto en el ticket: se añade con -1 (mismo precio e IVA, en un menú con sus componentes), con SPV al lado. No va a cocina; se puede quitar sin problema. Un producto-vale se vende por adelantado como producto normal; en Ajustes → Productos marque SPV (vale). En Bélgica la línea va a la caja negra como VOUCHER en la venta (UC271).
- Descontar anticipo: vea más abajo.
- Precio abierto (sin botón, por producto): en un producto con Precio abierto la caja pregunta el precio, p. ej. el plato del día o un anticipo.
Al cobrar:
- Cobro directo sin comanda (no es un botón): por defecto, Cobrar envía primero lo que aún no se ha pedido, para que cocina y barra reciban siempre su ticket (consulta El botón Enviar pedido: qué hace y cuándo lo necesitas). Activado: lo que cobras directamente sin pulsar antes Enviar pedido no genera comanda, p. ej., en la barra, donde lo sirves tú mismo. Lo que ya se ha pedido no cambia.
- Cobrar por separado (en una mesa, en Dividir la cuenta): elija lo que paga ahora un cliente, incluso una parte de una línea (½ para media botella). Se convierte en una parte propia que cobra en el acto; el resto queda en la cuenta, sin dividir la cuenta antes ni moverla a otro grupo. Un descuento porcentual sobre todo el ticket se aplica proporcionalmente. Volver sin pagar = todo de nuevo en la cuenta. En Bélgica la venta se queda en la ubicación de la mesa, sin cambio de mesa (UC4103bis, UC4104).
- Cliente se fue sin pagar (permiso Cerrar sin pago, por defecto solo encargado y administrador): la cuenta se cierra como venta sin pago, con un motivo en el registro. En el informe X y Z y en el resumen diario aparece como No pagado (el cliente se fue); en el asiento contable va a incobrable (por defecto 4985 / 643000). En Bélgica, una venta sin pago (UC4109).
Después (Tickets):
- Corregir precio (permiso Corregir el precio de un ticket, por defecto solo encargado y administrador): el precio de un ticket cobrado no era correcto, p. ej. un 50% de descuento en lugar de un 5%. La caja crea un ticket nuevo sin mesa con las líneas del ticket antiguo devueltas (en negativo, al precio pagado entonces) y los mismos productos de nuevo al precio normal. Aplique ahí el descuento correcto y cobre la diferencia (o devuelva dinero si el precio nuevo es menor). El ticket antiguo queda como estaba; una vez por ticket, y no si ya se ha devuelto algo. En Bélgica las líneas antiguas se envían como CORRECTION (UC4116).
Código: apps/pos-server/src/lib/kassaopties.ts, routes/kassaopties.ts; pantalla KassaOpties.tsx. Registro: Ajuste modificado, SPV canjeado, Corregir ticket, No pagado.
Descontar anticipo
Un anticipo (señal, p. ej. para una fiesta o una reserva) se vende como un producto normal con Anticipo activado (Ajustes → Productos; siempre tiene precio abierto). Cree uno por tipo de IVA si el anticipo debe ir por tipo (p. ej. Anticipo comida y Anticipo bebidas), o un solo producto si es una parte del presupuesto. El cliente paga el anticipo por adelantado y recibe un ticket.
Activar: Ajustes → Negocio → Pedidos y cobro → Descontar anticipo (desactivado por defecto). En el cobro final, toque Descontar anticipo en la pantalla de pedidos e introduzca el número de ticket del anticipo. La caja añade las líneas de anticipo de ese ticket a la cuenta con una cantidad negativa (mismo producto, precio e IVA). Lo que ya se ha descontado no se puede descontar otra vez. Si el anticipo es mayor que la cuenta, el cliente recibe la diferencia (devolución de dinero). En Bélgica las líneas descontadas van a la caja negra como devolución (REFUND) (UC4110, UC4111, UC4113). Registro: Anticipo descontado.
Ticket por e-mail
Desactivado por defecto. Se activa en Ajustes → Negocio → Ticket también por correo.
SMTP_HOST=smtp.voorbeeld.nl
SMTP_PORT=587
SMTP_GEBRUIKER=kassa@voorbeeld.nl
SMTP_WACHTWOORD=...
SMTP_AFZENDER=bon@voorbeeld.nl
Reinicie la caja después de rellenarlo. A partir de entonces, en Cobrar aparece el campo Enviar también el ticket por correo (opcional): vacío = solo imprimir, como siempre; con una dirección de correo = el mismo ticket (con desglose de IVA y datos fiscales) se envía también por correo al cliente, con el nombre del negocio como remitente.
- La dirección de correo no se guarda; en el registro solo aparece "ticket N enviado a a***@dominio.es" y si se envió correctamente.
- Si el envío falla (p. ej. datos de acceso incorrectos), el ticket queda cobrado e impreso igualmente; el aviso indica qué ha fallado.
- No con un pago parcial (dividir la cuenta): el ticket se emite con el último pago, así que la dirección se introduce ahí.
- Enviar más tarde: en Tickets, cada ticket tiene el botón Enviar por correo (permiso Imprimir copia de un ticket). Envía el ticket con la marca COPIA, igual que una copia impresa (en Bélgica se registra como copia).
- No hacen falta paquetes adicionales: la caja se comunica directamente con el servidor de correo (STARTTLS en 587, TLS en 465).
Reservas
Se activa en Ajustes → Negocio → Reservas (desactivado por defecto). Ahí también se configura con cuántos minutos de antelación aparece una mesa reservada en el plano de sala (por defecto 60) y la duración estándar de una reserva (por defecto 120 minutos).
- Botón Reservas en la barra superior: resumen por día (◀ ▶), con número de reservas, personas y no presentados. + Nueva reserva: nombre, teléfono, correo, personas, fecha, hora, duración, mesa (puede indicarse más tarde) y observaciones. Las reservas las hace el personal; la reserva online no existe (todavía).
- Si ya hay una reserva en la misma mesa en esa franja horaria, la caja lo avisa; se puede pulsar "Guardar de todos modos".
- Confirmación por correo (casilla, o más tarde "Enviar por correo") si hay una dirección de correo y un servidor de correo (
SMTP_HOST, ver Ticket por correo). - En el plano de sala, una mesa libre reservada aparece en morado con "R 19:30 García (4)". Al pulsarla: "García ha llegado" abre la mesa con 4 personas y "García" como nombre de grupo; "Otros comensales" la abre normalmente.
- En el resumen: Llegado (abre la mesa; sin mesa, primero elige una), Modificar, No presentado, Cancelar y Restaurar. Todo queda en el registro.
- Reservas de plataformas online: consulta Plataformas de reservas más abajo.
Integración de caja con TheFork: mesa abierta al llegar, cuenta de vuelta
Con la API POS de TheFork, la caja trabaja junto con TheFork Manager (desactivado por defecto), además de recoger las reservas de arriba. Se activa en Ajustes → Plataformas de reservas → Integración de caja con TheFork; funciona a través del portal de gestión.
- Si pone a un cliente en Llegado o Sentado en TheFork Manager, en la caja se abre la mesa con el mismo nombre, con el número de comensales y una observación: nombre, alergias y dieta, prepago, oferta/descuento y puntos de fidelidad (Yums). Si esa mesa ya tiene un pedido abierto, se vincula. Si no hay mesa con ese nombre: un aviso, y elige la mesa en Plataformas.
- Tras el cobro, la cuenta se envía a TheFork (total y líneas con nombre, grupo de productos, cantidad e importe); TheFork pone entonces la reserva en Se ha ido. Con cobro dividido, una sola cuenta con el total. Si falla, la caja lo vuelve a intentar cada cuarto de hora (durante dos días), o con Reenviar en Plataformas.
- Vincular: la caja muestra un código de vinculación; introdúzcalo en TheFork Manager (Integraciones → caja). El ID del restaurante de TheFork (Customer-id) lo introduce el administrador, o llega automáticamente con el primer pedido.
- Casillas: abrir la mesa automáticamente, nombre, alergias y prepago como observación, cuenta a TheFork.
- Requisito: Pin Voordeel tiene la clave API de TheFork (solo para socios) y ha registrado allí la caja como POS (botón en el portal de gestión); TheFork activa la integración tras una sesión de prueba.
Documentación de TheFork: https://docs.thefork.io/POS-API/introduction
Lista de espera para clientes sin reserva
Para clientes sin reserva que esperan una mesa. Se activa en Ajustes → Negocio → Lista de espera (sin reserva) (desactivado por defecto). Solo visible si el SMS por CM.com está configurado; si no, la lista de espera no aparece en ninguna parte de la caja (ni siquiera en los ajustes). Funciona aparte de las reservas: también si están desactivadas. Ahí también está el texto del SMS (vacío = "Hallo {naam}, uw tafel bij {zaak} is klaar. Wilt u zich melden bij de bediening?"; se rellenan {naam}, {zaak} y {personen}).
- Botón Lista de espera en la barra superior, con el número de personas esperando (naranja si alguien espera). + A la lista de espera: nombre, teléfono (para el SMS), personas, el tiempo de espera indicado y una preferencia (terraza, trona).
- La lista va por orden de llegada, con cuánto tiempo lleva esperando cada uno (en rojo si tarda más de lo indicado) y arriba el número de personas esperando, comensales y la espera media de hoy.
- Si el SMS falla, se indica el motivo. Se puede enviar el SMS de nuevo.
- Sentar: elige la mesa; la caja la abre con el número de comensales (si la caja registra comensales) y el nombre como nombre del grupo (igual que con una reserva que llega).
- Se fue (se marchó o canceló) y Restaurar. Debajo de la lista aparece quién se sentó o se fue hoy, con cuánto esperó.
- Privacidad: los números de teléfono se borran después de un día; quien sigue en la lista después de 12 horas sale automáticamente. Añadir, llamar (solo con las últimas 3 cifras del número) y sentar quedan en el registro.
- ¿Por qué no en Reservas? Una reserva es para más tarde (fecha, hora, mesa por adelantado); la lista de espera es para ahora (orden, espera, SMS cuando la mesa está libre). Por eso un interruptor y un botón propios, con el mismo "abrir mesa" que en una reserva.
- En línea en la lista de espera (opcional, desactivado por defecto; solo con la tienda online): con Los clientes también pueden apuntarse ellos mismos en la tienda online, la tienda muestra Lista de espera (y hay un código QR para la puerta, en la gestión de la tienda, en Mesas y QR). El cliente introduce nombre, teléfono, personas y una preferencia, y ve su puesto en directo. En la caja aparece en la lista con en línea; llamar, sentar y se fue funcionan como siempre, y el cliente también lo ve en su teléfono (allí también puede darse de baja).
Tarjeta de cliente / puntos
Se activa en Ajustes → Negocio → Tarjeta de cliente / puntos (desactivado por defecto; entonces no se ve nada en ninguna parte). Ahí también se configura: puntos por euro (0 = solo tarjetas de sellos), tras cuántos puntos hay una recompensa y cuántos euros de descuento es esa recompensa.
- En la caja, encima del ticket, aparece "+ Tarjeta de cliente": busque al cliente por nombre o número de teléfono, o cree un cliente nuevo (nombre y, opcionalmente, teléfono y correo). Después, el nombre con el saldo de puntos aparece en el ticket.
- Canjear: con puntos suficientes, "Canjear 100 puntos: € 5 de descuento"; con una tarjeta de sellos completa, "Café gratis" (ese café debe estar en el ticket). Se convierte en una línea de descuento; cualquiera puede volver a quitarla.
- Los puntos y sellos se suman y descuentan solo al cobrar: puntos sobre el importe tras el descuento (sin tarjetas regalo vendidas), sellos por unidad de un producto con tarjeta de sellos (el producto gratis no cuenta).
- En el ticket de caja: puntos acumulados, canjeados, saldo y el estado de las tarjetas de sellos.
- Informe → Clientes (permiso Gestionar tarjeta de cliente): buscar clientes, modificar datos, corregir puntos (con motivo), historial y eliminar (RGPD: se borran nombre, teléfono y correo; el historial queda anónimo). Abajo, las tarjetas de sellos por producto (p. ej. 10 cafés = 1 gratis).
- Una devolución no anula automáticamente los puntos acumulados; corríjalos si es necesario en Informe → Clientes.
- Tarjeta de cliente con número (opcional): en Informe → Clientes → (cliente) introduzca el número de tarjeta (o escanee la tarjeta en ese campo). Con el lector de códigos de barras, al escanear esa tarjeta el cliente queda vinculado al ticket, en la caja y en el quiosco. También puede buscar por número de tarjeta en + Tarjeta de cliente.
Perfil de cliente: VIP, dietas y preferencias (opcional)
Se activa en Ajustes → Negocio → Perfil de cliente, debajo de la tarjeta de cliente (desactivado por defecto; solo funciona si la tarjeta de cliente está activada). Después:
- En la pantalla de pedidos aparece debajo del cliente vinculado "+ Perfil de cliente": marque VIP, elija las dietas (vegetariana, vegana, pescetariana, halal, kosher) y las alergias (los 14 alérgenos) y escriba las preferencias (p. ej. "mesa fija junto a la ventana", como máximo 300 caracteres). Después aparecen junto al cliente en la pantalla de pedidos, las alergias en rojo. También se puede cambiar en Informe → Clientes → (cliente) → Perfil de cliente.
- Si toca un producto con un alérgeno del cliente (vea Alérgenos por producto), la caja pregunta primero si debe añadirse de todos modos. Solo cuenta lo que se ha indicado en el producto; en caso de duda, pregunte siempre en cocina.
- Un VIP recibe una ★ en el plano de sala: en una cuenta abierta y en la reserva mostrada de ese cliente. Cuando llegan los comensales de una reserva, la caja vincula el cliente de la reserva a la cuenta.
- Las dietas y las alergias (y VIP) aparecen en la comanda para cocina y barra:
GAST: VIP · Vegetarisch · allergie: Noten. - Las dietas y las alergias son datos de salud: rellénelos solo con el consentimiento del cliente. En el registro solo consta que el perfil se ha modificado, no los datos en sí. Al eliminar el cliente también se elimina el perfil de cliente.
Favoritos / botones rápidos
Desactivado por defecto. Ajustes → Negocio → Favoritos / botones rápidos:
- Más vendidos: al principio de la barra de categorías, el botón ★ Favoritos con los 12 productos más vendidos de los últimos 14 días (se actualiza solo). La pantalla de pedido se abre en los favoritos.
- Elegir manualmente: en la pantalla de pedido, mantenga pulsado un producto (o haga clic derecho) y elija ★ Favorito (botón rápido); otra vez = quitarlo. Permiso Gestionar productos. Todas las cajas lo ven al instante.
- Marcar, opciones, menús, happy hour y "agotado" funcionan en los favoritos exactamente igual que en las categorías normales.
Otra ronda
En la pantalla de pedido aparece el botón ↻ Otra ronda (en cuanto hay algo en la cuenta, aunque todavía no se haya pedido). Un toque vuelve a añadir la última ronda (todo lo que se envió de una vez con "Enviar pedido", o lo que acaba de marcar) como líneas nuevas; después, simplemente Enviar pedido. Se aplican los precios actuales (también happy hour).
- Pulsación larga (o clic derecho): elija usted mismo. Con ◀ ▶ pasa a rondas anteriores, active/desactive cada producto (p. ej. desmarque la comida) y ajuste la cantidad con − / +. Las opciones y observaciones se incluyen.
- Los productos agotados y los menús no se incluyen (los menús se marcan aparte). También funciona sin conexión.
- Las líneas se añaden tal como aparecen en la cuenta: con Agrupar productos iguales activado, una línea por producto (2 Cola); desactivado, cada línea por separado (2 veces 1 Cola).
Tiempo en mesa en el plano de sala
Cada mesa ocupada muestra ⏱ 45m · 12m: cuánto tiempo lleva ocupada y cuánto hace que se marcó algo por última vez (mantenga pulsada la mesa, o pase el ratón por encima, para ver las horas exactas). Si lleva un rato sin pedir nada, la mesa recibe un borde naranja: conviene pasarse. Los minutos se configuran en Ajustes → Negocio → Tiempo en mesa (por defecto 20, 0 = sin borde naranja). Si aún no se ha marcado nada, cuenta desde que se abrió la mesa.
Si hay varios grupos (cuentas propias) en una mesa, aparece una línea por grupo, p. ej. G1 ⏱ 50m · 12m y García ⏱ 10m (el nombre del grupo o, si no, el número de grupo). Un grupo que lleva demasiado tiempo inactivo recibe una etiqueta naranja y la mesa un borde naranja.
Mover una mesa completa
En la pantalla de pedido está Mover mesa. Elija la zona (p. ej. Terraza) y una mesa: todos los grupos de la mesa se mueven con ella, cada uno con su propia cuenta. Si elige una mesa ocupada, las mesas se unen (se añaden los grupos). Si solo quiere mover una parte, use como antes Dividir / mover. Si todo debe ir en una sola cuenta, use Unir.
Seguir trabajando sin conexión (tablet sin wifi)
Si se pierde la conexión entre una tableta y el servidor de caja (wifi en la terraza, servidor apagado un momento), aparece una barra amarilla y la tableta sigue funcionando con las últimas mesas, productos y pedidos abiertos guardados:
- abrir mesas, marcar productos y Enviar pedido se guardan en la tableta (también si se reinicia) y aparecen en la lista de pedidos con un borde punteado ("aún no enviado");
- en cuanto vuelve la conexión, todo se envía en orden al servidor y solo entonces la comanda va a cocina. Cada envío tiene una clave, así que nada llega duplicado. Si otra persona abrió la mesa mientras tanto, los productos se añaden a ese pedido;
- cobrar, descuentos, dividir, etc. solo es posible con conexión; "Cobrar" espera hasta que todo lo de esa mesa se haya enviado.
Número de personas
Opcional y desactivado por defecto: Ajustes → Negocio → Pedidos y cobro → Registrar número de comensales. Desactivado = el menor número de toques posible: una mesa libre se abre con un solo toque, no aparecen comensales en ningún sitio, y el informe, el panel y el resumen del día no muestran comensales ni gasto por comensal.
Activado: al tocar una mesa libre, la caja pregunta cuántas personas son (botones grandes 1-8, o teclearlo; "Omitir" = 1). En el plano, una mesa ocupada muestra "3/4 pers." (personas/plazas, en amarillo si hay más personas que plazas). En la pantalla de pedidos lo cambias con el botón "3 pers." en la barra de grupos; con varios grupos, la mesa suma todos los grupos.
Sin comensales todo sigue funcionando: Dividir a partes iguales al cobrar empieza en 2, el all-you-can-eat pide él mismo el número de adultos y niños, y las reservas y la lista de espera mantienen su propio número de personas (la mesa se abre entonces sin comensales).
Registro HACCP
Todo establecimiento de hostelería debe vigilar y documentar la seguridad alimentaria: en los Países Bajos según la Hygiënecode voor de Horeca (código de higiene para la hostelería, inspección de la NVWA), en Bélgica según el autocontrol del FAVV (guía G-023). Activa el Registro HACCP en Ajustes → Leyes y normas (desactivado por defecto).
- Puntos de medición (administrador): p. ej. cámara frigorífica, congelador, mantenimiento en caliente, temperatura interna tras la cocción, enfriamiento rápido y recepción de mercancía, con un mínimo y/o máximo en °C y la frecuencia (cada día, dos veces al día, cada semana o al usar). Añadir lista estándar crea un punto de partida (refrigeración hasta 7 °C, en Bélgica hasta 4 °C; congelador hasta -18 °C; mantenimiento en caliente desde 60 °C; cocción desde 75 °C).
- Limpieza y control: tareas por día, semana (opcionalmente en un día fijo) o mes, con zona e instrucciones, p. ej. desinfectar tablas de cortar, filtros de grasa, control de plagas, comprobar el termómetro.
- Registrar (cualquiera que haya iniciado sesión): botón HACCP en la barra superior, con el número de pendientes de hoy. Introduce una temperatura o marca una tarea (Hecho o No realizado). Si una temperatura está fuera del límite, hay que añadir una medida correctora (p. ej. "puerta cerrada, producto desechado"). Los registros no se pueden modificar; un error se corrige con un registro nuevo.
- Resumen (permiso Facturación por periodo): por periodo todos los registros, el número de desviaciones y los registros omitidos por día; como CSV (Excel) o para imprimir / guardar como PDF para una inspección.
Sistema de grifos y caudalímetros
Cada tirada que comunica un ordenador de grifos o caudalímetro va a la cuenta, para que nada se "escape". Actívalo en Ajustes → Sistema de grifos (desactivado por defecto).
- Fuentes (administrador): el ordenador de tiraje o el sistema de caudalímetros. Elige la marca; la caja rellena un ajuste predefinido. De los Países Bajos y Bélgica: Van Duijnen Horeca (automatización de tiraje, Dashbar), Beconet (Multi-Tap), TapSystems, Horecatechniek Nederland, Heineken SmartDispense, WeissBeerger / AB InBev y BarTrack; además Gruber, Addimat, WMF / Hogatron (E-Protokoll), Drinkotec (ex-Hartec), , Berg, Easybar, Azbar, Scanabar, PourMyBeer, iPourIt, BeerBoard, US BeerSAVER, Bevchek, Capton/BarVision, Kegtron, Kegbot Kegboard, un "grifo inteligente" o un sistema propio. Hay cinco formas de conectar (Kegboard: consulta Tiraje dosificado y Kegboard más abajo):
- Campos:
kraan(otap,plu),ml(ocl,liter,volumeconeenheid) oporties,id(la misma tirada dos veces = se registra una vez),tijdstip,tafel,bediening; una tirada, una lista o{ "taps": [...] }. - Red (TCP): la caja se conecta al ordenador de grifos (dirección y puerto) o escucha ella misma en un puerto.
- Puerto serie: puerto COM o USB serie, 1200–115200 baudios, 8N1, 7E1 o 7O1.
- Con red y serie configuras el formato de mensaje (un mensaje por línea, o STX … ETX con control XOR opcional y ACK/NAK de vuelta) y el patrón de un mensaje, con las partes
kraanopluy opcionalmenteml,cl,liter,porties,tafel,bedieningeid(p. ej.kraan;mlo solo un PLU por vaso). Los proveedores solo dan su formato exacto a los instaladores; pregunta al proveedor del ordenador de grifos. Tirada de prueba envía una tirada igual que lo haría el ordenador de grifos.
- Campos:
- Grifos (administrador): por grifo o PLU el producto y cómo va a la cuenta: por vaso (vaso en ml; una tirada de 520 ml con vasos de 250 ml = 2 vasos; a partir del 50% cuenta como vaso) o por litro (el precio del producto es el precio por litro; en la cuenta p. ej. "Cerveza 0,33 l" por el importe correcto).
- En la cuenta: si el ordenador de grifos indica una mesa, la tirada va directamente al pedido abierto de esa mesa. Si no, aparece en Tirado: en la pantalla de pedidos aparece la barra "… tiradas sin cuenta"; elige las tiradas y pulsa En esta cuenta. Las líneas quedan directamente como pedido (no se envía comanda a la barra) y se descuenta del stock. El botón Tirado de la barra superior muestra todo lo que aún no tiene cuenta.
- Dar de baja (permiso Anulación): enjuague, rotura, degustación, personal, gratis u otros (con comentario); queda en el registro. Lo que no llega a un vaso (p. ej. enjuague) debe darse de baja.
- Resumen (permiso Ventas por periodo): por grifo lo tirado, en la cuenta, dado de baja (por motivo), anulado y pendiente, en litros, con el porcentaje vendido, y como CSV.
- Las tiradas registradas no se pueden modificar (solo procesar).
Tiraje dosificado y Kegboard
Con el tiraje dosificado, un grifo solo se abre después de que el vaso se haya marcado en la caja, y solo para esa cantidad. Así no se tira nada que no esté en el ticket. Solo funciona si el sistema de grifos está activado, y lo activas por grifo (desactivado por defecto).
- Por grifo (administrador, Ajustes → Sistema de grifos → Grifos): marca Tiraje dosificado y elige cuánto tiempo puede estar abierto el grifo tras marcar (10–600 segundos, por defecto 120). Con Kegboard también indicas el relé (electroválvula). El tiraje dosificado solo es posible por vaso.
- Marcar: al pulsar Enviar pedido (o al Cobrar directamente) la caja crea por cada línea del ticket con ese producto una liberación (número de vasos × vaso en ml) y la envía al ordenador de tiraje. El tiraje que llega después pertenece a esa línea del ticket. Por tanto, no se añade otra vez al ticket ni a Tirado. Un tiraje sin liberación va simplemente a Tirado.
- Anulación de la línea antes de tirar: el grifo se vuelve a cerrar. Una liberación que no se tira a tiempo caduca; el grifo nunca se abre más tarde.
- Liberaciones en la pantalla de pedidos (una barra encima del ticket): ver lo que está en curso, Detener y Liberar de nuevo. Liberar de nuevo solo es posible si aún no se ha tirado nada, así que nunca se libera nada de más. Liberación de prueba (administrador) libera un vaso sin ticket; queda en el registro.
- Cómo llega la liberación al ordenador de tiraje:
- Kegboard (Kegbot, código abierto, ESP32 con caudalímetros y electroválvulas; protocolo totalmente público): la caja envía un grant para los grifos con ese producto, los relés y la cantidad. La placa cierra el grifo por sí misma cuando se alcanza la cantidad o se acaba el tiempo.
- Red/serie: una orden de liberación configurable con
{kraan},{ml},{porties},{sec}y{id}(p. ej.V{kraan};{ml}), enviada en el formato de mensaje de la fuente (línea o STX … ETX con XOR). Opcionalmente hay una orden de parada. El proveedor indica la orden exacta.
- Vincular un Kegboard: en + Fuente, elija la marca Kegbot Kegboard. La placa se anuncia en la fuente; pulse Permitir (o Rechazar). La placa recibe entonces una sola vez su propia clave, que la caja guarda solo como hash. Otro dispositivo o una clave incorrecta no cambian nada en una placa vinculada; si la placa ha perdido su clave, use primero Desvincular. La fuente muestra el firmware, los medidores y los relés de la placa. Los grifos son los números de medidor (0, 1 …). Una tarjeta en la placa se rechaza: el cobro se hace en la caja. Si el sistema de tiradores está apagado, la placa guarda sus mensajes y los envía más tarde.
- En la fuente se configura tras cuántos segundos sin flujo se cierra el grifo (5–300, por defecto 30). Para cada grifo se indica el número de medidor, el relé (electroválvula) y cuánto tiempo puede quedar abierto el grifo después de marcarlo en caja.
Controlar la música desde la caja
El personal controla la música desde la pantalla táctil de la caja, así que no hace falta una pantalla aparte en la barra. Actívalo en Ajustes → Negocio → Pantallas y manejo → Controlar la música desde la caja (desactivado por defecto). Entonces aparece el botón Música en la barra superior: por fuente (p. ej. Barra y Terraza) Reproducir, Pausa, Siguiente, Anterior, Más alto, Más bajo y un control deslizante de volumen, junto con lo que suena ahora. Volver a la caja cierra el panel. Al desactivarlo, las fuentes se conservan.
- Playlist (Sonos, Bluesound y VLC): la cola con lo que suena ahora. Toca una canción para reproducirla; con Editar quitas canciones (✕), las subes o bajas (↑ ↓; Sonos y Bluesound) o vacías la playlist. Con Elegir otra música reproduces un favorito de Sonos (p. ej. una emisora o un canal de Tunify) o una lista de reproducción de Sonos, o una presintonía de BluOS.
- En una pantalla aparte: los mismos controles y la playlist en grande en
http://<kassaserver>:3000/muziek, p. ej. en un segundo monitor junto a la caja o una tableta en la barra (con la sesión ya iniciada en el mismo dispositivo; si no, con un PIN). - En una tableta o teléfono: un código QR con la dirección de esa pantalla aparte en la red del local. Un empleado lo escanea con su propia tableta o teléfono (en la red Wi-Fi del local) e inicia sesión con su propio PIN; con Cerrar sesión se vuelve a cerrar. Consulta Segunda pantalla en una tableta o teléfono.
El administrador añade las fuentes con + Fuente de música, elige cómo está conectada cada una y la prueba con Probar:
- Soundtrack (soundtrack.io): mediante la API pública, con un token API (se solicita a Soundtrack) y una zona de sonido (Cargar zonas). Reproducir, pausa, siguiente, volumen y lo que suena.
- Sonos: la dirección IP del altavoz (en un grupo: el altavoz que dirige el grupo). Funciona con todo lo que suene en el Sonos, p. ej. Tunify, Spotify o la radio.
- Bluesound (BluOS): la dirección IP del reproductor; también funciona con todo lo que suene en él, p. ej. Tunify.
- VLC en el ordenador de música: la interfaz web activada (Herramientas → Preferencias → Mostrar ajustes: Todo → Interfaz → Interfaces principales: Web, con una contraseña en Lua); la dirección IP (opcionalmente con
:poort, por defecto 8080) y la contraseña. - Ordenador de música propio (direcciones web): para un ordenador o equipo de música con una dirección web por botón; GET o POST, y
{volume}(0-100) en la dirección para el volumen. Sin dirección de Más alto/Más bajo, la caja ajusta el volumen paso a paso. - Reproductor web del servicio de música: la dirección web del reproductor web o de la página de control (p. ej. el reproductor web de Tunify o Media Tools) se abre en la caja con el botón Música; si el servicio no se puede mostrar dentro de otra pantalla, usa Abrir en una ventana aparte.
La caja se comunica con los reproductores desde el servidor, así que deben estar en la misma red que la caja (Soundtrack a través de internet). Puede controlar la música cualquiera que haya iniciado sesión; para configurarlo se necesita el permiso Configurar negocio, pagos e impresoras. El token y la contraseña no se vuelven a mostrar nunca ni aparecen en el registro; en el registro solo consta la configuración (activado/desactivado, fuentes), no cada pulsación. La exportación de la configuración solo incluye activado/desactivado (las fuentes pertenecen a un solo negocio).
Segunda pantalla en una tableta o teléfono
La música y las cámaras también pueden verse en la tableta o el teléfono propio de un empleado, como segunda pantalla junto a la caja. En la ventana Música o Cámaras está el botón En una tableta o teléfono: muestra un código QR con la dirección, p. ej. http://192.168.1.20:3000/muziek o .../camera.
- Conecta la tableta o el teléfono a la red Wi-Fi del local.
- Escanea el código QR con la cámara (o escribe la dirección en el navegador).
- Inicia sesión con tu propio PIN. Solo ves lo que tienes permitido: la música todos, las cámaras solo con el permiso Ver imágenes de cámaras.
- Listo: Cerrar sesión arriba a la derecha. Si la sesión ha caducado (p. ej. la tableta estuvo inactiva toda la noche), la pantalla vuelve a pedir el PIN.
Consejo: añade la página a la pantalla de inicio de la tableta (en el navegador: Añadir a pantalla de inicio) y se abrirá como una app.
Por eso la caja obtiene la dirección IP del PC de caja en la red (si el PC tiene varias, p. ej. Wi-Fi y cable, eliges la red). En el portal de gestión (caja a distancia) es la dirección del portal. La caja genera el código QR por sí misma, sin internet.
Vincular tabletas: con un solo botón a la tableta (opcional)
Aún más fácil: vincula una tableta una sola vez y la caja enviará la música o las cámaras a esa tableta con un solo botón. Actívalo en Ajustes → Negocio → Pantallas y manejo → Tabletas como segunda pantalla (desactivado por defecto).
- En la tableta: abre
http://<kassaserver>:3000/tablet(en el ajuste aparece En una tableta o teléfono con el código QR), inicia sesión con un PIN y ponle un nombre a la tableta, p. ej. Tableta Barra. Vincular. - En la caja: en la ventana Música o Cámaras aparece ahora el botón A Tableta Barra (con un punto verde si la tableta está encendida). Tócalo: la tableta abre esa pantalla por sí sola. Con la música se envía también la fuente elegida (p. ej. Terraza).
- En la tableta: Cerrar vuelve a la espera; Desvincular esta tableta elimina la vinculación.
Deja la página abierta en la tableta; si la tableta está apagada o en reposo, abrirá la pantalla en cuanto vuelva a encenderse. La tableta sigue con la sesión del empleado que la inició: enviar y ver las cámaras solo es posible con el permiso Ver imágenes de cámaras. En el ajuste, el administrador ve qué tabletas están vinculadas y si están encendidas, y puede cambiarles el nombre o quitarlas. La tableta guarda su propia clave; la caja solo guarda un hash de ella. Al desactivarlo, las tabletas vinculadas se conservan. En el registro consta quién vinculó, renombró o quitó una tableta.
Pantalla de llamada para llevar
Una pantalla para los clientes con En preparación a la izquierda y Listo a la derecha, con números grandes, como en una hamburguesería o un local de comida rápida. Actívela en Ajustes → Negocio → Pantallas y manejo → Pantalla de llamada para llevar (desactivada por defecto).
No hace falta vincular: en una TV con navegador (smart TV, stick o mini PC), una tableta o un segundo monitor, abra la dirección de la caja seguida de /oproep, p. ej. http://192.168.1.20:3000/oproep. En el ajuste y en la ventana Llamar están los botones En una pantalla aparte y En una tableta o teléfono (código QR con la dirección). No hace falta iniciar sesión: la pantalla solo muestra números. Toque la pantalla una vez y el navegador podrá reproducir sonido.
Qué aparece:
- pedidos para llevar de la caja, la tienda online y Thuisbezorgd (y, si se desea, también pedidos en barra sin mesa, con venta rápida) de las últimas 12 horas;
- en cuanto algo se ha enviado a cocina o barra (o el pedido online está en en preparación), el número aparece en En preparación;
- Listo se marca solo cuando la pantalla de cocina indica todo el pedido como listo o el pedido online está en listo. El número parpadea un momento y la pantalla emite un ding-dong;
- un número listo permanece los minutos configurados (por defecto 10), o hasta Recogido;
- los pedidos del quiosco (ver Quiosco de autoservicio) aparecen siempre en cuanto están pagados o se pagarán en caja, también con "comer aquí", con el número de recogida de su ticket;
- opcionalmente también pedidos para repartidores de Thuisbezorgd, Uber Eats, Deliveroo y HubRise (casilla También pedidos para repartidores …): con el número de pedido de la plataforma y el nombre de la plataforma debajo, para que el repartidor vea cuándo está listo su pedido. Recogido avisa entonces también a la plataforma de que el repartidor lo tiene (igual que en la ventana de la plataforma).
El número: en la tienda online, Thuisbezorgd y las plataformas de reparto, el número de pedido que ya tiene el cliente o el repartidor; si no, el número de recogida (1 a 999). Aparece en grande en el ticket, con la explicación de que el número saldrá en la pantalla cuando el pedido esté listo (en el idioma del ticket).
Opcional (desactivado por defecto, en el ajuste):
- Anunciar el número con voz: con un nuevo número listo, la pantalla dice p. ej. "Número 42, su pedido está listo." en el idioma elegido (neerlandés, inglés, alemán, francés, español, italiano, portugués, polaco, turco o árabe). La voz viene del navegador de la pantalla y suena distinta según el aparato; toca la pantalla una vez después de abrirla. Después del timbre, si el sonido también está activado.
- Estado del pedido en el móvil: bajo el número de recogida del ticket aparece un código QR. El cliente lo escanea, ve su número y el estado (pedido, en preparación, listo, recogido) y recibe un aviso cuando el pedido está listo. Funciona a través del portal de gestión, así que la caja debe estar conectada. No para la tienda online ni Thuisbezorgd (tienen su propio estado) ni para el quiosco (tiene su propio ajuste).
En la caja está el botón Llamar (con el número de pedidos que aún se están preparando):
- Listo marca un número como listo a mano (sin pantalla de cocina, o si es más rápido). En un pedido de la tienda online o de Thuisbezorgd el estado se actualiza también, así que el cliente también recibe un aviso.
- Volver lo devuelve a En preparación.
- Recogido lo quita de la pantalla (con Deshacer).
En el ajuste también elige si el nombre aparece junto al número (por defecto no, por privacidad) y si la pantalla emite sonido. Desactivar: sin botón Llamar y sin número de recogida en el ticket; los ajustes se conservan. En el registro consta quién marcó qué a mano como listo, volver o recogido.
Fichaje de entrada y salida
Por defecto, el fichaje está desactivado: entonces no aparece en ningún lugar de la caja (ni botón en la barra superior, ni en la pantalla de inicio de sesión, ni pestaña Horarios de trabajo). Actívelo en Ajustes → Negocio, en Fichaje de entrada y salida del personal:
- Desactivado: no usar. Si desactivas el fichaje más adelante, ya no se verá en ninguna parte, pero las horas ya fichadas se conservan (no se borra nada); si lo vuelves a activar, vuelven a aparecer.
- Activado: los empleados pueden fichar la entrada y la salida. Tras iniciar sesión, la caja pregunta si desea fichar la entrada (se puede pulsar Ahora no). En la barra superior aparece entonces Fichar entrada o Entrada fichada 17:02; púlselo para fichar la salida.
- Obligatorio: tras iniciar sesión, primero hay que fichar la entrada; si no, no se puede usar la caja. Fichar la salida cierra la sesión de inmediato.
Quien no usa la caja (p. ej. la cocina) ficha en la pantalla de inicio de sesión: pulse Fichar entrada / salida e introduzca su PIN. Alterna entre entrada y salida, sin iniciar sesión.
Con el fichaje activado, el administrador ve en Ajustes → Horarios de trabajo:
- quién tiene la entrada fichada ahora (y puede fichar la salida de alguien que lo haya olvidado);
- las horas trabajadas por empleado y periodo, con todos los turnos, y una descarga en CSV (horas también en número decimal para la nómina);
- modificar o añadir turnos (pulse un turno, o + Añadir turno). Cada cambio queda en el registro con la hora antigua y la nueva.
En Bélgica, cada fichaje de entrada y salida también se comunica a la caja negra. Si no está accesible, el fichaje no se realiza (igual que el cobro). Aún está por confirmar si esto cumple exactamente con el registro de personal belga.
Pesaje y etiquetas (báscula)
Con la báscula activada (Ajustes → Báscula), los productos pueden tener un precio por kilo. Todos los demás productos siguen siendo por unidad.
- Pesar: toque un producto con precio por kilo (el botón muestra p. ej.
12,95/kg). La ventana Pesar muestra en directo el peso de la báscula (p. ej. una Aclas OS6X, o la báscula en la que funciona la propia caja); verde = estable. Ponga el producto en la báscula y toque Añadir en cuanto el peso esté estable. El precio es precio por kilo × peso (redondeado al céntimo); el envase (tara) del producto se descuenta automáticamente. Si el producto tiene opciones, vienen después. - Varias básculas: si hay varias básculas, elija arriba en la ventana en cuál pesa. Cada caja/tableta recuerda su elección.
- A mano: sin báscula (o si se permite a mano), introduzca el peso:
0,512o1,2son kilos,512o512 gson gramos. - Etiqueta de la TS6X: escanee el código de barras de la etiqueta con el lector de códigos de barras en la pantalla de pedido (simplemente escanee, no hace falta tener nada abierto), o pulse Etiqueta y escanee o introduzca los 13 dígitos. El producto (PLU) y el peso se toman de la etiqueta. Si la etiqueta lleva un precio, la caja cobra exactamente ese precio.
- En la pantalla, el ticket de caja y la pantalla del cliente aparece el peso, p. ej.
Gehakt 6,63con debajo0,512 kg x € 12,95/kg; en la comanda0,512 kg Gehakt. Dividir, mover y devolver se hacen en kilos. - Un producto pesado solo es posible con conexión al servidor de caja (el peso llega a través del servidor de caja).
Uber Eats, Deliveroo y HubRise
Además de Thuisbezorgd.nl / Takeaway.com, también llegan a la caja los pedidos de Uber Eats (Países Bajos y Bélgica), Deliveroo (solo Bélgica; Deliveroo dejó los Países Bajos a finales de 2022) y todo lo que pasa por HubRise (entre otros Uber Eats, Deliveroo, Just Eat/Takeaway.com y apps de pedidos más pequeñas). Cada plataforma se activa por separado en Ajustes → Plataformas de reparto (desactivado por defecto; al desactivarlo se conserva todo). La pestaña muestra por plataforma en qué países opera y avisa si no opera en el país del negocio.
- Actívela y luego Iniciar sesión en Uber Eats y vincular tienda (el negocio inicia sesión con su propia cuenta de Uber Eats). Si la cuenta tiene varias tiendas, introduzca el ID de tienda (store id) y vuelva a iniciar sesión. Para ello, Uber Eats debe aprobar primero a Pin Voordeel como socio.
- Deliveroo: directo, a través del portal. Introduzca el site id (location id) y el ID de marca (brand id). Sin tablet (por defecto): la caja acepta o rechaza; con tablet: el negocio acepta en la tablet y el portal solo informa de si el pedido está en la caja.
- HubRise: la caja recoge los pedidos por sí misma (cada 20 segundos, sin portal).
- Por plataforma: aceptar automáticamente, comanda directa a cocina/barra y (Uber Eats, Deliveroo) enviar el menú automáticamente tras un cambio y Enviar menú ahora. En el menú están los productos marcados en Productos en el menú de Uber Eats y Deliveroo, con opciones; el estado agotado también se envía.
Pedidos. Un pedido se convierte en un pedido normal (bezorgen o afhalen, nombre de grupo <platform> <nummer>) con los precios de la plataforma: productos reconocidos por el ID (del menú), el código o el número PLU; desconocido = una línea suelta con el precio de la plataforma (y un aviso); gastos de envío, recargos y descuentos como líneas propias; si el total aun así no cuadra, una línea "Diferencia". La comanda va directamente a cocina/barra. Botón Plataformas en la barra superior (con el número de pedidos en curso; naranja si hay algo por aceptar): aceptar o rechazar (con motivo), en preparación, listo, en camino, entregado o recogido, cancelar y Finalizar (pagado en línea). Lo que la plataforma admite se le devuelve (Uber Eats: aceptar, rechazar, cancelar; Deliveroo: aceptar, rechazar, en preparación, listo, recogido; HubRise: todos los estados). Si el negocio reparte por su cuenta (reparto propio), el pedido aparece también en Repartos, y la salida y la entrega se envían automáticamente a la plataforma. Una cancelación de la plataforma hace caducar el pedido. Si la caja lleva más de 2 minutos sin conexión con el portal, el portal rechaza un pedido nuevo de Uber Eats y comunica a Deliveroo (con tablet) que no ha funcionado, para que el negocio lo vea en la tablet.
Código: apps/pos-server/src/lib/bezorgplatforms.ts, routes/bezorgplatforms.ts; pantallas Bezorgplatforms.tsx. Lado del portal: horecapos-portaal/src/platforms.mjs. Registro: Plataformas de reparto (activar/desactivar, ajustes, pedidos). Todo se incluye en las copias de seguridad de la caja.
Las plataformas más pequeñas de los Países Bajos y Bélgica (Homie, Hebtrek, sneleten.nl, Bistroo ...) no tienen integración de caja pública; si están en HubRise, funcionan a través de HubRise. Por lo demás: vea el backlog.
Cobro automático (sistema cerrado de gestión de efectivo)
Desactivado por defecto: el efectivo funciona como siempre. Con un sistema cerrado de gestión de efectivo, el personal no toca el dinero: el cliente o el empleado introduce el dinero en la máquina, que lo cuenta, comprueba si hay billetes falsos y devuelve el cambio.
- Máquinas con las que la caja se comunica directamente:
- CashDro (3, 4+, 5, 7, S Compact; NuKassa, KluisKassa): por red (servicio web). Active Web Integration en el CashDro y cree un usuario propio para la caja.
- Cashmatic (SelfPay 460/860/1060; en Bélgica Xpos): por red (puerto 50301) con un usuario del Cashmatic.
- Azkoyen Cashlogy (POS1000, POS1500): mediante el CashlogyConnector en un PC con Windows junto a la máquina (puerto 8092).
- CashKeeper: mediante CKMonitor en un PC con Windows (puerto 16501).
- Glory CASHINFINITY (CI-5, CI-10, CI-10X; también mediante Cikam): mediante el control (FCC) de la máquina. Todavía en beta: haga revisar la primera conexión por Glory o su distribuidor.
- Externo: otro software controla la máquina y se comunica con la caja (como Cikam, ImaCash para 25 marcas, el software de CashGuard/StrongPoint (Merlin), PayComplete (SUZOHAPP), Gunnebo SafePay o marcas francesas como CashMag).
- Máquina de prueba: sin hardware, para practicar o hacer una demostración. Con Probar conexión comprueba la dirección y el inicio de sesión. Coloque la máquina en su propia red (nunca abierta a Internet) y use un usuario propio para la caja, no un administrador.
- Cobrar con Efectivo: Pagar en la máquina de cobro inicia el pago del importe (redondeado en efectivo si está activado, más la propina; al dividir la cuenta, la parte). La pantalla muestra lo que se ha introducido y lo que se devuelve; la caja solo cobra cuando la máquina indica terminado. Cancelar = la máquina devuelve el dinero. Si la máquina no pudo devolver todo el cambio (pocas monedas), se indica cuánto hay que sacar del cajón portamonedas. Un pago correcto que aún no se ha cobrado (p. ej. tableta averiada) se recupera en ese pedido.
- Efectivo solo mediante la máquina (activado por defecto): el servidor de caja solo acepta efectivo con un pago correcto en la máquina para exactamente ese pedido y ese importe. Desactivado = también efectivo normal en el cajón.
- Cajón portamonedas (Informe → Cajón portamonedas, permiso Gestionar cajón portamonedas): Consultar contenido (por moneda y billete, en Cashmatic, Cashlogy, Glory y la máquina de prueba), Pagar con motivo (p. ej. cambio para el cajón), Recargar y Retirar excedente (el cambio se queda; en Cashmatic). Esperado en el cajón portamonedas no cuenta el dinero de la máquina (aparece aparte debajo: En la máquina de cobro), pero sí el cambio que hubo que sacar del cajón.
El botón ©
Abajo a la derecha de cada pantalla (PIN, plano de sala, pedido y cocina) hay un pequeño botón ©. Abre los datos de OptimumPOS: logotipo, dirección, teléfono, correo y sitio web. El icono está guardado localmente en la app, así que también funciona sin internet. Ese mismo icono es el icono de la app (pestaña y pantalla de inicio).
Parte 2 · Encargado
Primeros pasos
Por defecto, un encargado puede hacer todo lo que puede hacer el personal de sala y, además, entre otras cosas, aplicar descuentos, hacer devoluciones, cerrar el día, gestionar el cajón portamonedas y consultar el registro y las existencias. La mayoría está en el botón Informe:
- Situación actual (X): las ventas hasta el momento, sin cerrar el día.
- Cajón portamonedas: fondo de caja, entradas/salidas de dinero y abrir el cajón.
- Cerrar el día (Z): al final del día; después empieza un día nuevo.
- Informes Z anteriores, Ventas por periodo y Panel.
- Registro, Tarjetas regalo y Clientes.
Stock
Desactivado por defecto. Se activa en Ajustes → Negocio → Controlar existencias. Desactivado = no aparece en ningún lugar de la caja.
- Para cada producto se elige en Ajustes → Productos → (producto) → Existencias:
- No: como siempre;
- Por producto: cada venta descuenta 1 (p. ej. botellines, latas), con un nivel de aviso para "casi agotado";
- Por ingredientes: una receta, p. ej. hamburguesa = 1 panecillo + 150 g de carne + 1 loncha de queso. Cada venta descuenta los ingredientes.
- Ajustes → Existencias (permiso Gestionar existencias, por defecto encargado y administrador):
- Productos e Ingredientes: el estado, con agotado / casi agotado; filtro "solo (casi) agotado" y exportación a CSV.
- Para cada producto o ingrediente se registra Entrada (+) (entrega), Recuento (=) (la cantidad contada pasa a ser el nuevo estado) o Dar de baja (−) (rotura, caducado; motivo obligatorio).
- Crear ingredientes con unidad (ud., g, kg, ml, cl, l, ración, botella, barril) y nivel de aviso.
- Historial: todos los movimientos (venta, anulación, entrada, recuento, baja) con quién y cuándo. Las acciones de gestión también quedan en el registro.
- El descuento de existencias se produce al pulsar Enviar pedido (o al cobrar, para lo que se cobró directamente). Una anulación vuelve a sumar. Dividir y mover no descuentan dos veces. En los menús se descuentan los platos, no la línea del menú. Las devoluciones (ticket de abono) no vuelven a sumar (lo devuelto normalmente ya no se puede vender); si procede, regístrelo como entrada.
- Si las existencias están agotadas (o un ingrediente no alcanza para una vez más), el producto pasa automáticamente a agotado en todas las cajas. Cuando queda poco, el botón del producto muestra quedan N. Tras una entrada o un recuento, se puede volver a pedir de inmediato. El servidor de caja también rechaza entonces el producto ("Pils" está agotado (existencias 0)), así que también desde una tableta que aún no lo sabía.
- Las existencias pueden bajar de 0 (p. ej. dos tabletas a la vez, o pedido sin conexión); el recuento lo corrige.
- Lista de pedido: Ajustes → Existencias → Lista de pedido. Para cada producto (por producto) y cada ingrediente se configura, además del nivel de aviso, reponer hasta y el proveedor. La lista de pedido incluye todo lo que está en el nivel de aviso o por debajo (sin nivel de aviso: en 0), por proveedor, con la propuesta reponer hasta − existencias. Las cantidades se pueden ajustar y marcar o desmarcar. Después, Imprimir (impresora de tickets), Copiar (para correo o WhatsApp), Exportar (CSV) y, tras la entrega, Entregado: registrar como entrada (lo registra todo de una vez). Con la casilla de arriba también ve lo que aún no está agotado, para pedir de más.
- Opciones: en un grupo de opciones (Ajustes → Productos → Opciones) está el botón Existencias. Indique para cada opción los ingredientes por unidad, p. ej. Queso extra = 1 loncha de queso, Patatas fritas = 150 g de patatas. Si se elige la opción, esos ingredientes se descuentan por unidad (aunque el propio producto no controle existencias; con una anulación vuelven). Si un ingrediente está agotado, la opción aparece en la caja como (agotado) y no se puede elegir.
Pedir a proveedores
Desactivado por defecto. Se activa en Ajustes → Existencias → Pedir a proveedores (solo con Controlar existencias activado). Desactivado = la lista de pedido funciona como siempre.
- Proveedores (pestaña Proveedores): elija uno de la lista o cree su propio proveedor. La lista incluye mayoristas y cash & carry (Sligro, Sligro-ISPC/Sligro-M, HANOS, Makro, De Kweker, Horeca Totaal, Van Zon, zegro, Lekkerland), foodservice (Bidfood y Bidfood Belgium, Solucious, Chefs Culinar, Java, Q-Food, Agora Culinair, VHC Jongens/Kreko/Actifood, Hocras, Van Hoeckel ...), mayoristas de bebidas (De Klok, Henk Smit, Horesca, De Monnik, Hansen, Dranken Geers ...), cerveceras y refrescos (Heineken mediante Sligro, AB InBev/BEES, Alken-Maes, Haacht, Duvel Moortgat, Martens, Coca-Cola, Spadel, Grolsch, Bavaria), proveedores de frescos (Van Gelder, Driessen, FiliusKaas, Bakkers Brigade, Rungis ...), no alimentación (Bunzl, Takeaware, Supplierz), la tienda de vinos online Vinify.nl y plataformas de pedidos (Apicbase, Exact Horeko, Growzer, inOne, Cuisin.io, OrderXL). Solo aparecen los proveedores del país del negocio. Si elige uno, la forma de pedido, el archivo y las columnas ya están bien configurados; en cada proveedor se indica cómo se le hace el pedido.
- Por proveedor: número de cliente, pedir mediante:
- Correo electrónico: el pedido como correo (con tabla) a la dirección de correo de pedidos, opcionalmente una copia, con la lista de pedido como adjunto: CSV, Excel, CSV para Care4Fresh (muchos mayoristas de frescos), UBL 2.1 Order (Peppol BIS Order), EANCOM ORDERS (D96A en los Países Bajos, D01B/HO2C en Bélgica) o cXML. Las respuestas llegan a la dirección de correo del negocio.
- Archivo: la caja crea el archivo y usted lo sube a la tienda online del proveedor (p. ej. Bunzl Snel bestellen:
artikel;aantal, Takeaware:SKU,Quantity). El separador, la fila de encabezado y las columnas son configurables (artikel,ean,omschrijving,aantal,eenheid,prijs,totaal; conartikel=SKUda un nombre propio al encabezado). - Conexión (cXML): un cXML OrderRequest con número de cliente y secreto compartido a la dirección de pedidos del proveedor, como los que envían los sistemas de compras a Sligro, HANOS y Bidfood. La dirección, el número de cliente y el secreto se los facilita el proveedor (Sligro: koppelingen@sligro.nl). El secreto nunca vuelve a mostrarse en pantalla.
- En ambas conexiones también se puede usar un nombre de usuario y contraseña (Basic) y cabeceras adicionales (una por línea, p. ej.
X-Api-Key: ...). - Subida (SFTP/FTPS): la caja coloca ella misma el archivo (EANCOM, UBL, CSV, Excel ...) en una carpeta del servidor del proveedor, tal como muchos mayoristas aceptan pedidos EDI. SFTP (SSH), FTPS (explícito en el puerto 21 o implícito en el puerto 990) o, solo en la red propia, FTP. Inicio de sesión con contraseña o clave SSH (OpenSSH, PEM o PuTTY .ppk; ed25519, ECDSA o RSA). Crear clave crea un par de claves en la caja; la clave pública se la envía usted al proveedor. Probar conexión inicia sesión y busca la carpeta. La huella digital del servidor SFTP se registra en la primera conexión y después se comprueba (otro servidor no recibe la contraseña); con FTPS y un certificado propio, usted fija la huella digital del certificado. No se necesita software adicional.
- Imprimir: el pedido en la impresora de tickets, para transmitirlo por teléfono.
- Las contraseñas, claves, tokens y cabeceras nunca vuelven a mostrarse en pantalla (dejar vacío = mantener, Borrar = eliminar).
- Solicitar conexión: para un proveedor, la caja redacta un correo electrónico solicitando una conexión (cXML, EDI mediante SFTP/FTPS, UBL/Peppol o la API propia del proveedor) con los datos del negocio (nombre, dirección, número de IVA, número de cliente, GLN) y lo que se necesita; para EDI, con la clave pública. Modifique y envíe; una copia y las respuestas van al correo electrónico del negocio. La fecha de la solicitud figura en el proveedor. Para Sligro se envía a koppelingen@sligro.nl; en otro caso, introduzca la dirección de su gestor de cuenta.
- Un proveedor propio (que no está en la lista) puede hacer todo excepto lo que el propio proveedor debe ofrecer: correo electrónico, archivo e impresión funcionan siempre; una conexión o subida solo con los datos de ese proveedor.
- Días de pedido y entrega: días de pedido, hora límite, plazo de entrega (la fecha de entrega deseada en el pedido) y un importe mínimo de pedido. Automático: los días de pedido, a partir de esa hora, la caja prepara ella misma un pedido (usted lo revisa) o lo envía directamente (por correo electrónico, subida o conexión; por debajo del importe mínimo de pedido solo lo prepara). Una vez al día por proveedor.
- Por producto (Ajustes → Productos → (producto) → Existencias, en Por producto) y por ingrediente: Pedir a (el proveedor), la referencia de pedido en ese proveedor, el EAN, por envase (caja de 24 = 24), el nombre del envase y el precio de compra por envase. El nivel de aviso es el momento de pedir; Reponer hasta indica cuánto debe haber entonces.
- Órdenes de compra (pestaña Órdenes de compra):
- Propuesta de pedido por proveedor: todo lo que esté en el nivel de aviso o por debajo. Lo que ya está pedido y aún no ha llegado (en camino) se tiene en cuenta, para que no pida nada dos veces. Propuesta = reponer hasta − existencias − en camino (sin Reponer hasta: hasta el nivel de aviso), redondeada hacia arriba a envases completos. Ajuste las cantidades y Crear pedido.
- Un pedido queda primero preparado (borrador): las cantidades, las líneas libres (sin producto, p. ej. servilletas), la observación y la fecha de entrega aún se pueden modificar. Después, Enviar (de la forma del proveedor o, por una vez, de otra forma). Si falla (p. ej. el proveedor lo rechaza), se indica el motivo y puede volver a intentarlo.
- Recibido: por línea, la cantidad recibida (ya figura la cantidad pedida); las existencias aumentan por envase (2 cajas de 24 = 48), con el pedido en el historial.
- Cada archivo (CSV, Excel, UBL, EANCOM, cXML) también se puede descargar por separado.
- Enviado, error, recibido y cancelado quedan en el registro. La lista de pedido normal sigue funcionando; si un producto tiene un proveedor de la lista, aparece allí con ese nombre.
Gestión de reseñas
Leer y responder reseñas de Google y Trustpilot en la caja. Se activa en Ajustes → Fidelización y reseñas → Gestión de reseñas (desactivado por defecto; entonces no se ve nada en ninguna parte). Leer y responder en Informe → Reseñas (permiso Leer y responder reseñas, por defecto también para el encargado). Si lo desactivas, las conexiones y las reseñas se conservan.
- Después, cada negocio solo toca Conectar con Google e inicia sesión con su propia cuenta de Google del perfil de empresa. Una clave de Places también puede gestionarse de forma central (los costes corren entonces a cargo del proveedor). Trustpilot es por negocio: cada negocio tiene su propia cuenta de Trustpilot Business (la API va incluida en una suscripción de pago), de la que salen la clave, el secreto y el business user ID. En el TPV, cada opción indica "¿Quién se encarga?".
- App del proveedor (a través del portal de clientes): si la app de Google y/o la app de Trustpilot del proveedor están en el portal de clientes (consulte el README de horecapos-portaal, "Reviews: apps del proveedor"), el administrador elige App del proveedor en Inicio de sesión y claves (predeterminado en una nueva conexión si el portal tiene la app). El negocio pulsa Conectar con Google o Iniciar sesión con Trustpilot e inicia sesión con su propia cuenta; la caja espera por sí misma a que termine el inicio de sesión (cada 3 segundos, como máximo 15 minutos) y recoge los tokens una sola vez del portal. La renovación también se hace a través del portal. No se necesita client-ID, secret ni clave API en la caja; para Trustpilot sí el dominio y, para responder, el business user ID. Trustpilot público lee entonces mediante la clave del portal. Requiere
PORTAAL_URLyPORTAAL_SLEUTEL. App propia o clave API sigue funcionando como se describe a continuación. - De quién son las reseñas: permanecen en el propio Perfil de Empresa de Google y en la propia página de Trustpilot del negocio, y la caja solo las guarda en su propia base de datos. Las respuestas aparecen con el nombre del negocio. El portal solo transmite el inicio de sesión (en memoria, como máximo 15 minutos, se puede recoger una sola vez) y no guarda reseñas ni tokens; el nombre de la app del proveedor solo aparece en la pantalla de consentimiento.
- Registrarse por su cuenta: en cada plataforma hay un enlace para crear usted mismo un Perfil de Empresa de Google (business.google.com/create) o una cuenta de Trustpilot Business (business.trustpilot.com), y en Trustpilot otro a los planes (business.trustpilot.com/plans). El registro y el pago se hacen en la propia plataforma; no hay API para ello.
- Después Conectar con Google e inicia sesión con la cuenta que gestiona el Perfil de Empresa. Una ubicación en el perfil = elegida al instante; varias = se elige en la caja.
- Google Places (solo lectura): con el Place ID y una clave API de la Places API (o
GOOGLE_PLACES_API_KEY): la media, el número de reseñas y las 5 reseñas más relevantes. Así no se puede responder. - Trustpilot Business (leer y responder): clave API y secreto API de una aplicación en Trustpilot Business (Integrations → API; o
TRUSTPILOT_API_KEYyTRUSTPILOT_API_SECRET), el dominio del negocio (la caja busca la business unit) y, para responder, el business user ID de quien responde. - Trustpilot público (solo lectura): solo la clave API.
- La caja sincroniza cada 30 minutos (y justo después de conectar; Obtener ahora). La caja no guarda el correo electrónico ni el número de pedido del cliente (que envía Trustpilot).
- Informe → Reseñas: media, número por estrella, sin respuesta y sin leer; filtrar por plataforma, estrellas, sin respuesta y sin leer. Por reseña Responder (máximo 4000 caracteres; todos pueden leerlo), Editar respuesta, Eliminar respuesta y Leída. Una reseña nueva o modificada queda sin leer. En el registro aparecen review_beantwoord y review_antwoord_weg.
- Al desconectar se conservan las reseñas obtenidas.
Marketing por SMS y correo electrónico
Mensajes a clientes de la tarjeta de cliente que han dado su consentimiento. Sin tarjeta de cliente no se puede activar ninguno de los dos.
- Consentimiento por cliente y por canal: con un cliente nuevo en la caja aparecen las casillas "El cliente quiere recibir campañas por SMS" y "... por correo electrónico" (desmarcadas por defecto). En Informe → Clientes puede ver y cambiar el consentimiento (con la fecha en que se dio) y un cumpleaños (solo día y mes). Darse de baja: desmarcar las casillas y guardar.
- Menú actualizado al instante: si activa o desactiva el marketing o la tarjeta de cliente, la caja vuelve a enviar el menú a la tienda online en pocos segundos (solo si algo cambió), para que la casilla aparezca o desaparezca enseguida.
- Consentimiento a través de la tienda online: si el negocio tiene tienda online, al pagar aparece la casilla "Quiero recibir ofertas por correo electrónico/SMS" (solo los canales activados; desmarcada por defecto). Cuando llega un pedido así, la caja busca al cliente por número de teléfono (si no, por correo electrónico), lo crea si hace falta y registra el consentimiento con la fecha. Un número o una dirección que falte en un cliente existente se completa; en el registro aparece klant_toestemming con origen webshop.
- Informe → Marketing (permiso Gestionar tarjeta de cliente): arriba, cuántos clientes han dado su consentimiento para SMS y para correo electrónico.
- Campañas (puntuales): nombre, SMS o correo electrónico, (asunto,) texto con
{naam},{zaak}y{punten}, y opcionalmente solo los clientes que llevan un tiempo sin venir o tienen un mínimo de puntos. Ver muestra a cuántos clientes va, el mensaje tal como lo recibe el cliente y el número de SMS por cliente. Enviar prueba a su propio número o dirección. Después Enviar: la caja envía en segundo plano (como máximo 1000 cada vez) y cuenta lo enviado y lo fallido. Nadie recibe la misma campaña dos veces; si la caja se detiene a medias, Seguir enviando continúa con quienes aún no han recibido nada. - Enviar mediante Mailchimp o Klaviyo (con una conexión a una lista elegida, ver abajo): en una campaña por correo electrónico, en Enviar mediante elige la caja (el servidor de correo propio, como arriba), Mailchimp o Klaviyo. La caja actualiza primero la lista (bajas, puntos), crea allí una campaña para exactamente los clientes elegidos que están en la lista (Mailchimp: un grupo fijo en la audience; Klaviyo: una lista propia para la campaña) y la envía con el remitente predeterminado de la audience o de la cuenta. Mailchimp/Klaviyo rellena
{naam}y{punten}para cada cliente; el enlace de baja del servicio aparece debajo. Sin límite de 1000 cada vez y sin código de descuento personal ({code}). Si falla, la campaña queda como borrador con el aviso. La pestaña Marketing también está disponible si solo la integración está activa (entonces solo campañas mediante Mailchimp/Klaviyo; Enviar prueba funciona con el servidor de correo de la caja). Los mensajes automáticos los envía siempre la propia caja; en Mailchimp/Klaviyo se crean como Customer Journey o Flow. Clave de Klaviyo: también permisos de escritura para Campaigns y Templates (si ya inició sesión: vuelva a iniciarla). - Como notificación push mediante la tienda online (si en la gestión de la tienda online están activadas las Notificaciones push con ofertas): en Enviar por elige Notificación push (tienda online como app), con un título (máx. 60 caracteres) y un texto corto (máx. 200 caracteres; solo se rellena
{zaak}, porque la tienda online no sabe quién es el cliente). La caja envía la promoción a la tienda online a través del portal de gestión, y esta la envía a los clientes que allí activan Ofertas como notificación; al tocarla se abre el menú de la tienda. Tras unos segundos, la promoción muestra cuántas se entregaron. Máx. 3 al día, junto con lo que el local envía desde la gestión de la tienda; si no, la promoción queda como borrador con el motivo indicado. La pestaña Marketing también aparece si solo esto está activado (sin tarjeta de cliente ni email marketing). Sin código de descuento ni selección (días, puntos); para probar: en tu propio móvil, activa Ofertas como notificación en la tienda online. - Automáticos: un mensaje de cumpleaños (el día del cumpleaños, una vez al año) y "le echamos de menos" (tras tantos días sin visita, una vez cada vez que el cliente deja de venir). Activar/desactivar por mensaje; solo se envían durante el día (10:00–20:00).
- Código de descuento personal (opcional, por mensaje o promoción; solo si Códigos de descuento está activado en Ajustes → Negocio): cada cliente recibe su propio código, p. ej.
TERUG-7K4Q2M(cumpleañosJARIG-…, promociónACTIE-…), en porcentaje o un importe fijo, opcionalmente con un importe mínimo de pedido, de un solo uso, válido los días indicados tras el envío (por defecto 30) y en la caja y/o en la tienda online. Ponga{code}y{geldig}en el texto donde los quiera; si no, la caja pone debajo del mensaje "Uw kortingscode: … (10% korting, aan de kassa of in de webshop, geldig t/m …)". Ver y Enviar prueba muestran un código de ejemplo (TERUG-VOORBEELD, no funciona). Si el envío falla, el código no se crea. En la promoción se indica cuántos códigos se han emitido y usado. - Darse de baja figura debajo de cada mensaje: en un SMS "¿Darse de baja? Llame al ... o díganoslo en su próxima visita", en un correo un enlace de baja a la dirección de correo del negocio (también el botón Cancelar suscripción en Gmail y Outlook). Una respuesta al correo llega al negocio.
- Privacidad (RGPD): solo clientes con consentimiento y con número o dirección; ningún número ni dirección en el registro, pero sí por campaña cuántos se han enviado y cuántos han fallado. Si elimina a un cliente, también desaparece de la lista de envío.
- Costes: los SMS se envían a través de su propia cuenta de CM.com (más de 160 caracteres = más SMS por cliente). Gmail y otros servidores de correo tienen un límite diario; con muchos clientes, envíe por partes.
Propina por empleado
En Ajustes → Negocio → Propina (solo si "Mostrar botones de propina al cobrar" está activado) se elige cómo aparece la propina por empleado en la situación actual (X), el informe Z (ticket y correo) y Ventas por periodo (también en el CSV):
| Opción | Reparto |
|---|---|
| Desactivado (por defecto) | solo el total de propinas, como siempre |
| Cada uno su propina | propina de las cuentas que cada uno ha cobrado |
| Bote según horas | todas las propinas juntas, según las horas fichadas en ese periodo (requiere el fichaje de entrada y salida; si nadie ha fichado = a partes iguales) |
| Bote a partes iguales | todas las propinas juntas, a partes iguales entre quienes tenían la entrada fichada (sin fichaje: quien marcó o cobró algo) |
Los céntimos sueltos van a quien esté más cerca del siguiente céntimo, para que el total siempre cuadre. Es un resumen: la caja no paga nada (eso se hace con "Dinero fuera del cajón"). Los informes Z antiguos no cambian.
Informe Z por e-mail
En Ajustes → Negocio → Enviar informe Z a introduzca una sola vez la dirección de correo del administrador (varias direcciones: separadas por comas, máx. 3). Tras Cerrar el día, el informe Z se envía automáticamente a esa dirección, además del ticket impreso. Vacío = no enviar, como siempre.
- El envío se hace en segundo plano, para que un servidor de correo lento no retrase el cierre diario.
- ¿Ha fallado o lo necesita otra vez? Informe → Informes Z anteriores → (informe) → Reenviar por correo (con la marca COPIA).
Resumen del día (opcional)
Si hay una dirección en Enviar informe Z a, debajo aparece la casilla Con un breve resumen del día al principio del correo (desactivado por defecto). Activado = al principio del correo del informe Z, unas líneas en lenguaje sencillo, solo con los datos propios de la caja (sin IA, nada sale fuera):
- ventas, tickets y comensales y el gasto por ticket, frente al mismo periodo una semana antes (en porcentaje); si entonces no hubo nada, se indica;
- los 5 productos más vendidos y lo que destaca: productos de los que se vendieron al menos 3 unidades más o menos que la semana pasada;
- el número de anulaciones (frente a la semana pasada) y la hora de más actividad (tickets y ventas).
El informe Z en sí (ticket y correo) sigue exactamente igual. Vista previa de hoy muestra el resumen desde el último cierre diario hasta ahora. El resumen está en neerlandés, igual que el correo del informe Z.
Panel
Pestaña Panel en Informe (permiso Ventas por periodo), solo lectura:
- Ventas por hora en un gráfico: el día elegido (azul) junto al mismo día de la semana anterior (gris). Hoy se compara con la semana anterior hasta la misma hora, para que el porcentaje sea justo. Con ◀ ▶ o la fecha elige otro día.
- Recuadros: ventas (± % respecto a la semana anterior), tickets y media por ticket, gasto medio por comensal (solo en el local; para llevar y a domicilio no cuentan) para ese día y para el periodo elegido.
- Top 10 productos y horas punta de los últimos 7, 28 o 90 días. Horas punta es un mapa de calor día de la semana × hora (ventas medias por día abierto) con las tres horas de más actividad encima, útil para el cuadrante de turnos.
Las tarjetas regalo vendidas no cuentan como ventas, y los descuentos y cabeceras de menú no entran en el top 10 (como en los demás informes). Un día va de las 00:00 a las 24:00.
Informes adicionales
Tres pestañas adicionales en Informe, cada una se activa por separado en Ajustes → Negocio → Gestión e informes → Informes adicionales (desactivadas por defecto: entonces no hay pestaña). Requieren el mismo permiso que Ventas por periodo y son solo de lectura. Periodo: esta semana, la semana pasada, este mes, el mes pasado, los últimos 90 días, este año o personalizado (como máximo algo más de un año).
- Ingeniería de menú: por producto, cuántas veces se ha vendido (cuota del total de unidades vendidas) frente a lo que deja por unidad (margen = precio de venta sin IVA menos el coste). Cada producto recibe una clasificación: Estrella (popular y con mucho margen: dejarlo así), Caballo de batalla (popular, poco margen: subir un poco el precio o abaratar su elaboración), Rompecabezas (se vende poco, mucho margen: darle más visibilidad) y Perro (se vende poco, poco margen: quitarlo de la carta o sustituirlo). Popular = al menos el 70% de una cuota igual; mucho margen = al menos el margen medio por unidad vendida. El coste se obtiene de Apicbase (Ajustes → Recetas); si no, del precio de compra del producto (precio de compra por envase dividido entre el número de unidades por envase); y si no, de la receta de ingredientes con precio de compra (Existencias). Los productos sin coste aparecen aparte al final. Opcionalmente por categoría (
?groep=). - Promociones y códigos: por código de descuento, por campaña de Marketing (los códigos personales juntos) y por happy hour: cuántas veces se ha usado (tickets; en una happy hour también las unidades), cuánto descuento, las ventas y la media por ticket.
- Mermas: lo que se ha dado de baja de las existencias (Ajustes → Existencias, Dar de baja (−)), por motivo (mayúsculas y espacios no importan) y por producto o ingrediente, con el valor a coste; y lo que se ha anulado después de haberse enviado ya a cocina o barra, con el valor de venta y de coste.
Descuentos
Un encargado o administrador ve en la pantalla de pedido, junto al total, el botón % Descuento:
- sobre el ticket completo o sobre una línea;
- como porcentaje (10, 15, 20, 25, 50, 100% = gratis, o introducirlo) o como importe fijo;
- siempre con un motivo (Personal, Cliente habitual, Queja, Promoción, Consumo propio o escribirlo).
El descuento aparece como línea propia en el ticket ("Descuento 10%", con el motivo debajo) con el mismo tipo de IVA, para que el total y el desglose de IVA cuadren. En todo el ticket el descuento se reparte por tipo de IVA. Quitarlo: toque el importe de la línea de descuento. Si se anula una línea con descuento propio, ese descuento desaparece con ella. Si quita un producto de un ticket con descuento porcentual sobre todo el ticket, la caja vuelve a calcular ese descuento sobre lo que queda (en Bélgica UC226); un importe fijo se mantiene y se reparte de nuevo entre las líneas al cobrar. Si por un descuento del 100% no hay nada que pagar, cierre con "Cerrar (nada que pagar)". Los descuentos aparecen en el registro, y en el informe X/Z y el resumen del periodo como "de los cuales descuento". En la devolución de un ticket con descuento, el descuento se aplica proporcionalmente.
Códigos de descuento (opcional)
Códigos con descuento sobre todo el ticket, por ejemplo para una promoción (ZOMER10). Se activan en Ajustes → Negocio → Códigos de descuento (desactivado por defecto); los códigos se crean en Ajustes → Códigos de descuento (permiso Gestionar productos):
- descuento en porcentaje o importe fijo, opcionalmente con un importe de pedido mínimo, válido desde/hasta y usos máximos (vacío = ilimitado);
- por código: en la caja y/o en la tienda online (la caja envía los códigos junto con el menú; el uso cuenta para la caja y la tienda online juntas).
En la pantalla de pedido aparece el botón Código de descuento (cualquiera puede introducir un código; el negocio ha creado el código previamente). El descuento aparece en el ticket como línea "Código de descuento CODE", repartido entre los tipos de IVA; un código por ticket, y ya no si se ha pagado (en parte). Si se quita la línea o se anula el pedido, el uso deja de contar. Eliminar un código usado lo desactiva (los informes siguen cuadrando). Todo queda en el registro (Código de descuento). Código: lib/kortingscodes.ts, routes/kortingscodes.ts, Kortingscodebeheer.tsx, KortingscodeDialoog.tsx.
No aparecen en la lista de Ajustes → Códigos de descuento (sí el número por promoción, en Informe → Marketing) y se pasan a la tienda online mientras sean válidos y no se hayan usado.
Informes y cierre diario
Botón Informe en la barra superior:
- Situación actual (X): ventas, IVA, formas de pago, por categoría y el cajón portamonedas desde el último cierre diario. También se puede imprimir. No cierra nada.
- Cerrar el día (Z) (encargado o administrador): contar el cajón portamonedas (se muestra la diferencia con fondo de caja + efectivo), introducir el fondo de caja para el día siguiente y cerrar. El informe Z recibe un número correlativo, se guarda y se imprime en la impresora de tickets. No es posible mientras haya pedidos abiertos. Opcional: Contar por moneda y billete (ayuda de recuento) rellena el importe contado por usted; el recuento por moneda/billete aparece también en el informe Z. Introducir el total a mano funciona como siempre.
- Cajón portamonedas (encargado o administrador, opcional):
- Dinero fuera del cajón (ingreso en el banco, gasto, propina pagada) o dinero en el cajón (cambio) con importe y motivo. El cajón se abre y sale un ticket con línea para firmar, para guardarlo con el dinero (se puede desactivar). Cuenta en esperado en el cajón y aparece línea a línea en el informe X y Z.
- Introducir o corregir el fondo de caja de hoy (normalmente se introduce en el cierre diario para el día siguiente).
- Abrir cajón sin venta, con motivo.
- Todo queda en el registro. Si no lo usa, el cierre diario funciona exactamente como antes (fondo de caja + efectivo = esperado en el cajón).
- Debajo de las ventas aparece el número de comensales (personas de los pedidos cobrados) y la media por comensal, también en el informe X/Z impreso.
- Ventas por periodo (encargado o administrador): hoy, ayer, esta semana/la anterior, este mes/el anterior, este año o elegir desde-hasta. Muestra ventas, IVA, formas de pago, propinas, comensales, categorías, por día y por empleado. Con Exportar (Excel/CSV) obtiene un archivo para el asesor contable (punto y coma y decimales con coma, se abre directamente en Excel en neerlandés).
- Informes Z anteriores: lista con ventas y descuadre de caja; abrir e imprimir una copia (con "COPIA").
Exportación a la contabilidad
Informe → Ventas por periodo → Exportación contable (diario) (permiso Ventas por periodo) crea un CSV con un asiento por día, listo para importar en e-Boekhouden, Exact, SnelStart, Twinfield, etc. (mediante su importación CSV/de diario general), o uno de los formatos de abajo (UBL, XAF y listo para 14 programas).
Un asiento por día (KASSA-JJJJMMDD) que siempre cuadra (debe = haber):
| Lado | Qué |
|---|---|
| Debe | cobros por forma de pago (efectivo, tarjeta, tarjeta regalo, online, otros), incl. propina |
| Haber | ventas por tipo de IVA (sin IVA) e IVA a ingresar por tipo |
| Haber | propina (a pagar al personal, no es venta) |
| +/- | diferencia de redondeo (redondeo en efectivo a 5 céntimos) |
| +/- | dinero en/fuera del cajón (gestión de caja) contra cuentas puente, y descuadre de caja del informe Z |
Las devoluciones y descuentos ya están incluidos en los tickets y reducen las ventas. Columnas: Datum; Boekstuk; Dagboek; Rekening; Omschrijving; Debet; Credit; Btw-code; Btw-% (punto y coma, decimales con coma). Tras la descarga, la caja avisa si hay días que no cuadran o con una diferencia mayor que el redondeo.
Junto al botón elige el formato (la elección se recuerda en el navegador). El mismo diario, pero con el formato necesario para que el programa lo importe directamente. La lista solo muestra los formatos del país del negocio (Ajustes → Negocio): primero los estándares (CSV, UBL, XAF) y después los programas por orden alfabético:
| Formato | Archivo | Importación en el programa |
|---|---|---|
| General (CSV) | journaal_…csv | cualquier programa con importación CSV/de asientos (asignar columnas) |
| UBL 2.1 / Peppol (XML), NL y BE | journaal_…_ubl.xml (varios días: .zip) | una factura "cobros diarios" por día a Kassaverkopen (ya pagada) según Peppol BIS Billing 3.0, con una línea por tipo de IVA y la cuenta de ventas en AccountingCost; solo ventas e IVA (las formas de pago, propinas, redondeo, cajón y descuadre de caja no van en una factura). Para subir, entre otros, a Adsolut, Billit, BUNNI, DigiBoox, Expert/M, Moneybird, Popsy, Rompslomp, Storecove y TriFact365; no para enviar por la red Peppol. El nombre, el número de IVA y la dirección proceden de Ajustes → Negocio |
| XML Auditfile Financieel (XAF 4.0), NL | journaal_…_xaf.xaf | archivo de auditoría de la Administración Tributaria neerlandesa (Belastingdienst) (XSD XmlAuditfileFinancieel4.0): un solo archivo para el periodo, con libro mayor, códigos de IVA, periodos y una transacción de diario general por día; se puede importar, entre otros, en Caseware, Exact Reeleezee y Visma Cash |
| AccountView (XML), NL | journaal_…_accountview.xml | Movimientos XML (VFPData, un transact por línea de asiento con dj_code, period, inv_date, inv_nr, acct_nr, trn_desc y amount: debe positivo, haber negativo), un documento por día en el diario general; se importa con una definición de importación (Document → Importeren → Importdefinitie aanmaken, tipo XML); los nombres de campo son los del propio AccountView, así que basta con asignarlos 1 a 1 una vez. Haga revisar la primera importación |
| AFAS Profit (XML) | journaal_…_afas.xml | XML del UpdateConnector FiEntries (asientos financieros), un asiento por día con año, periodo, empresa y diario; se importa en Profit con Importar → XML; introduce el número de empresa (por defecto 1) |
| Asperion (CSV), NL | journaal_…_asperion.csv | formato FMUTA (Extra → Import financiële mutaties), por día una línea de cabecera y las líneas del asiento; Asperion configura la definición de importación a través de su servicio de asistencia |
| Resumen diario (HTML), NL y BE | journaal_…_dagstaat.html | resumen diario legible por día (ventas por tipo de IVA, formas de pago, propinas, descuadre de caja) y totales; imprimir como PDF o enviar por correo, para programas sin importación (Accountable, Dext, Dexxter, Jortt, Kleisteen, MoneyMonk) |
| e-Boekhouden.nl (CSV) | journaal_…_eboekhouden.csv | Fecha; N.º de documento; Descripción; Cuenta contable; Importe (debe positivo, haber negativo); código de IVA GEEN (el IVA ya está en las cuentas de IVA); Importar → Movimientos, tipo diario general |
| Exact Online (XML) | journaal_…_exact.xml | eExact-XML (tema GLTransactions): un asiento de diario general por día (tipo 90) en el diario; Importar/exportar → Importar XML |
| InformerOnline (TXT), NL | journaal_…_informer.txt | diario general separado por tabulaciones (Geavanceerd → Memoriaal → uploaden); el diario debe ser un número 1–99 (si no, 90) |
| KING ERP (XML), NL | journaal_…_king.xml | KING_JOURNAAL: un lote de asientos (no definitivo) con un asiento por día |
| KOMAS (CSV), NL | journaal_…_komas.csv | formato libre de KOMAS (0401 Importeren journaalposten): Datum; Grootboek; Omschrijving; Bedrag |
| Odoo (CSV), NL y BE | journaal_…_odoo.csv | Contabilidad → Journal Entries → Import records; diario y cuenta por nombre o código |
| Sage BOB 50 (Excel), BE | journaal_…_bob.xlsx | Importation de données externes → Opérations diverses (asignar las columnas una sola vez) |
| SAP Business One (ZIP), NL y BE | journaal_…_sapb1.zip | Data Transfer Workbench, Journal Entries: JournalEntries.csv y JournalEntries_Lines.csv |
| SnelStart (CSV) | journaal_…_snelstart.csv | Fecha; N.º de documento; Descripción; Cuenta contable; Debe; Haber (dd-mm-aaaa, coma decimal, sin BOM); importar como diario general, el diario se elige al importar |
| Twinfield (XML) | journaal_…_twinfield.xml | transacciones de diario como borrador (destiny="temporary"), el contable las hace definitivas; introduzca el código de empresa (vacío = la empresa en la que importa) |
| Winbooks (CSV), BE | journaal_…_winbooks.csv | K_DOC.CSV, un documento por día en el diario (Winbooks numera por su cuenta) |
| Yuki (XML) | journaal_…_yuki.xml | Journal-XML (GeneralJournal), un asiento de diario general por día, misma estructura que la conexión en directo; ID de empresa opcional |
Resumen: qué programa contable de qué manera
Por segmento, por orden alfabético. NL/BE = país en el que funciona el programa: en Ajustes → Contabilidad → Programa contable solo ve los programas del país del negocio (los programas neerlandeses no funcionan en Bélgica y viceversa). Live = la caja contabiliza sola cada día (se elige en Ajustes → Contabilidad → Programa contable); bajo petición = existe una API, pero primero requiere un registro como socio o una aprobación del proveedor (avísenos). Archivo = el formato en Exportación contable. Cuando ambas opciones son posibles, puede usar las dos. La lista está en packages/shared/src/boekhoudcatalogus.ts y también aparece en Ajustes → Contabilidad.
| Programa | NL | BE | Live | Archivo | Observación |
|---|---|---|---|---|---|
| Pymes y autónomos | |||||
| Accountable | – | ✓ | – | Resumen diario (HTML, para PDF o correo) | |
| AccountView (Visma) | ✓ | – | bajo petición | AccountView (XML), General (CSV) | Archivo: movimientos XML para una definición de importación (Document → Importeren); el CSV genérico también funciona con una definición de importación. En directo mediante la API de AccountView.Net previa solicitud a AccountView. |
| Acumulus | ✓ | – | ✓ | – | Live como factura de venta pagada por día, con una línea por tipo de IVA. |
| AFAS Profit | ✓ | – | ✓ | AFAS Profit (XML) | |
| Asperion | ✓ | – | bajo petición | Asperion (CSV) | Live tras registrarse como socio API en Asperion. |
| Billit | – | ✓ | bajo petición | UBL 2.1 / Peppol (XML) | Subir el UBL mediante Fast input; live tras la aprobación de Billit. |
| BUNNI | ✓ | – | – | UBL 2.1 / Peppol (XML) | Aún no hay documentación pública de la API. |
| Dexxter | – | ✓ | – | Resumen diario (HTML, para PDF o correo) | |
| DigiBoox (Visma DigiBTW) | ✓ | – | – | UBL 2.1 / Peppol (XML) | |
| e-Boekhouden.nl | ✓ | – | – | e-Boekhouden.nl (CSV) | También para antiguos clientes de Ficsus. |
| Exact Online | ✓ | ✓ | ✓ | Exact Online (XML) | |
| Exact Reeleezee | ✓ | – | – | XML Auditfile Financieel (XAF 4.0) | |
| Horus | – | ✓ | ✓ | – | |
| InformerOnline | ✓ | – | – | InformerOnline (TXT) | |
| Jortt | ✓ | – | – | Resumen diario (HTML, para PDF o correo) | Sin importación: contabilice las ventas del día como ingreso con el resumen diario como adjunto. |
| KING | ✓ | – | bajo petición | KING ERP (XML) | Live tras el registro como socio en KING Software. |
| Kleisteen | ✓ | – | – | Resumen diario (HTML, para PDF o correo) | |
| KOMAS (Adfinis) | ✓ | – | – | KOMAS (CSV) | |
| Minox | ✓ | – | bajo petición | – | Live tras una conexión de socio a través de Minox. |
| Moneybird | ✓ | – | ✓ | UBL 2.1 / Peppol (XML) | |
| MoneyMonk | ✓ | – | – | Resumen diario (HTML, para PDF o correo) | MoneyMonk tendrá en 2026 una API para integraciones. |
| Octopus | – | ✓ | bajo petición | – | Live tras solicitar un software house ID a Octopus. |
| Popsy / Allegro | – | ✓ | – | UBL 2.1 / Peppol (XML) | |
| Rompslomp | ✓ | – | – | UBL 2.1 / Peppol (XML) | |
| Sage BOB 50 | – | ✓ | – | Sage BOB 50 (Excel) | |
| Silvasoft | ✓ | ✓ | ✓ | – | Live como asiento de ventas por día, con una línea por tipo de IVA; las formas de pago, las propinas y el descuadre de caja no se incluyen. |
| SnelStart | ✓ | – | ✓ | SnelStart (CSV) | |
| Twinfield | ✓ | – | ✓ | Twinfield (XML) | |
| Visma Cash | ✓ | – | bajo petición | XML Auditfile Financieel (XAF 4.0) | API con una clave de CASHWeb; el formato de registro de los asientos aún está por confirmar. |
| Visma eAccounting | ✓ | – | bajo petición | – | Live tras la aprobación de Visma (registro como socio). |
| Winbooks | – | ✓ | bajo petición | Winbooks (CSV) | |
| Wolters Kluwer Adsolut | – | ✓ | bajo petición | UBL 2.1 / Peppol (XML) | UBL con la cuenta de ventas por línea; active en Adsolut "grootboekrekening verwerken bij verkopen". |
| Wolters Kluwer Expert/M | – | ✓ | – | UBL 2.1 / Peppol (XML) | |
| Yuki | ✓ | ✓ | ✓ | Yuki (XML) | |
| Internacional | |||||
| QuickBooks Online | ✓ | ✓ | ✓ | CSV genérico | Sin edición neerlandesa ni belga: revise la configuración del IVA. |
| Xero | ✓ | ✓ | ✓ | CSV genérico | |
| Zoho Books | ✓ | ✓ | ✓ | CSV genérico | |
| Empresas y cadenas | |||||
| Exact Globe+ | ✓ | ✓ | – | Exact Online (XML) | El mismo XML que Exact Online; haga revisar la primera importación. |
| Microsoft Dynamics 365 Business Central | ✓ | ✓ | ✓ | – | |
| Odoo | ✓ | ✓ | ✓ | Odoo (CSV) | |
| Oracle NetSuite | ✓ | ✓ | bajo petición | CSV genérico | |
| SAP Business One | ✓ | ✓ | ✓ | SAP Business One (ZIP) | |
| Unit4 ERPx | ✓ | ✓ | – | CSV genérico | |
| Plataformas y agregadores | |||||
| Apicbase | ✓ | ✓ | bajo petición | – | Ventas por ticket para existencias y food cost: integración en Ajustes → Recetas (no como programa de contabilidad). |
| Caseware | ✓ | ✓ | – | XML Auditfile Financieel (XAF 4.0) | |
| Combidesk | ✓ | – | bajo petición | – | Combidesk crea y gestiona la conexión por su cuenta (con Exact, Moneybird, SnelStart y Twinfield, entre otros); bajo petición como socio. |
| Dext | ✓ | ✓ | – | Resumen diario (HTML, para PDF o correo) | Envíe el resumen diario (PDF) por correo a su dirección de Dext. |
| Jamix | ✓ | ✓ | bajo petición | – | Ventas para stock y food cost a través de la interfaz JAPI de Jamix; desarrollo a medida bajo petición a Jamix. |
| Omniboost | ✓ | ✓ | bajo petición | – | Transmite los datos a través del programa de socios de Omniboost a muchos sistemas contables y hoteleros. |
| Storecove (Peppol) | ✓ | ✓ | bajo petición | UBL 2.1 / Peppol (XML) | |
| TriFact365 | ✓ | – | – | UBL 2.1 / Peppol (XML), Resumen diario (HTML, para PDF o correo) | |
| Cualquier otro programa | ✓ | ✓ | – | CSV genérico, UBL o XAF (NL) |
Pida al contable que revise la primera importación. El formato está en packages/shared/src/journaalexport.ts (con pruebas).
Ajustes → Contabilidad (permiso Configurar negocio, pagos e impresoras): código de diario (por defecto MEM) y la cuenta contable de cada concepto. Vacío = cuenta de ejemplo (NL: 8000/8010/8020 ventas, 1500/1510 IVA, 1000 caja, 1100 tarjeta; BE: 7000xx ventas, 451000 IVA, 570000 caja). Deje que su asesor contable introduzca las cuentas reales.
Conexión con un programa contable
Conexiones live con Acumulus, AFAS Profit, Microsoft Dynamics 365 Business Central, Exact Online, Horus, Moneybird, Odoo, QuickBooks Online, SAP Business One, Silvasoft, SnelStart, Twinfield, Xero, Yuki y Zoho Books. Después de cada día, la caja contabiliza el mismo diario que la exportación de arriba (facturación e IVA por tipo, formas de pago, propina, redondeo, cajón y descuadre de caja) como asiento de diario general en el programa elegido, con el diario y las cuentas contables de Ajustes → Contabilidad. Como máximo hay siempre un programa activo.
- La lista está agrupada por segmento (Pymes y autónomos, Internacional, Empresas y cadenas) y solo muestra los programas que funcionan en el país del negocio; el servidor rechaza un programa de otro país (400) y no contabiliza con él (409). Justo debajo, el administrador obtiene exactamente los campos de ese programa; la conexión y la lista de días contabilizados están debajo de las cuentas contables, y debajo el resumen de todos los programas para este país. Si al actualizar había dos activos (en una versión anterior era posible), Exact Online sigue activo y el otro programa se desactiva.
| Programa | País | Conectar con | Qué contabiliza la caja |
|---|---|---|---|
| Acumulus | NL | código de contrato, usuario y contraseña de un usuario API | una factura de venta pagada por día con una línea por tipo de IVA; Acumulus envía los errores por correo a ACUMULUS_FOUTMAIL |
| AFAS Profit | NL | entorno, token, empresa | diario general (FiEntries) |
| Business Central | NL, BE | tenant, entorno, empresa, ID de cliente y secreto de una app de Microsoft Entra (API.ReadWrite.All) | líneas en el diario general con el código de Diario |
| Exact Online | NL, BE | iniciar sesión (OAuth, app propia: ver Exact Online abajo; Bélgica: start.exactonline.be) | asiento de diario general en el diario (p. ej. 90) |
| Horus | BE | iniciar sesión (OAuth, app abajo), expediente opcional | operación diversa |
| Moneybird | NL | token API, empresa opcional | diario general (general journal document) |
| Odoo | NL, BE | dirección, base de datos, usuario, clave API | asiento en el diario con el código corto (p. ej. MISC) |
| QuickBooks Online | NL, BE | iniciar sesión (OAuth, app abajo; QUICKBOOKS_OMGEVING) | journal entry; cuentas por número |
| SAP Business One | NL, BE | dirección del Service Layer, base de datos, usuario, contraseña | asiento (JournalEntries) |
| Silvasoft | NL, BE | usuario y clave API | asiento de ventas al contacto Kassaverkopen, una línea por tipo de IVA (las formas de pago, las propinas y el descuadre de caja no se incluyen) |
| SnelStart | NL | clave de conexión y clave de suscripción | diario general |
| Twinfield | NL | iniciar sesión (OAuth, app abajo), oficina opcional | transacción de diario |
| Xero | NL, BE | iniciar sesión (OAuth, app abajo), organización opcional | manual journal; cuentas por código |
| Yuki | NL, BE | clave API, empresa opcional | diario general (GeneralJournal) |
| Zoho Books | NL, BE | iniciar sesión (OAuth, app abajo; por defecto el centro de datos europeo), organización opcional | asiento; cuentas por código |
- OAuth (Horus, QuickBooks, Twinfield, Xero, Zoho): registrar una vez una app en el programa.
- En algunos programas, los campos de la API no se pueden confirmar por completo con la documentación pública (entre ellos Horus, Zoho Books, el signo en Business Central y la estructura en SAP Business One): pida siempre al contable que revise el primer asiento.
- Exact Online: contabiliza el diario como asiento de diario general en la empresa elegida.
- Se elige en Ajustes → Contabilidad → Programa contable → Exact Online (por defecto Desactivado). Bélgica: la caja usa automáticamente
start.exactonline.be. - Ajustes → Contabilidad → Exact Online: Conectar con Exact Online abre el inicio de sesión de Exact; después se muestra a qué empresa está conectada la caja. En Diario, introduzca el código de un diario general en Exact (p. ej.
90) y asegúrese de que las cuentas contables existen en Exact. - Cuándo: justo después de Cerrar el día y luego cada hora, para todos los días pasados (hasta ayer incluido) desde Contabilizar desde (por defecto el día de la conexión; los días anteriores ya los tiene el contable). Cada día una sola vez; los días sin facturación se omiten. Contabilizar ahora siempre es posible.
- Errores (una cuenta no existe en Exact, el día no cuadra, no hay internet) aparecen con el motivo junto a ese día; la caja lo vuelve a intentar más tarde y los días siguientes esperan hasta que funcione (así el orden sigue siendo correcto). En el registro: "exact_geboekt".
- El IVA va a las cuentas contables de IVA (sin código de IVA, igual que en la exportación). Pida a su contable que revise los primeros asientos.
- Exact: una conexión sigue funcionando mientras la caja la use (cada 10 minutos un token nuevo, cada vez con un nuevo refresh token). Si se revoca o no se usa durante demasiado tiempo, la caja pide Volver a conectar. Desvincular borra los tokens; lo contabilizado se mantiene.
- Se elige en Ajustes → Contabilidad → Programa contable → Exact Online (por defecto Desactivado). Bélgica: la caja usa automáticamente
- AFAS Profit: número de entorno (p. ej.
12345; producción, prueba o aceptación), el token de un conector de app con el UpdateConnector FiEntries y el número de empresa (por defecto 1). Diario = el código de un diario general en AFAS (p. ej.90). - Diario = número o nombre de un diario general; si solo hay un diario general, la caja usa ese. Las cuentas contables deben ser números.
- Twinfield: inicio de sesión con OAuth. Sin esa app la caja no puede conectar. La caja busca el clúster y la empresa (vacío = la primera); diario = el código de un diario general (p. ej.
MEMO). Contabiliza de forma definitiva (destiny="final"). - Yuki: clave API de la empresa (Yuki → Ajustes → Servicios web); empresa vacía = la primera de esa clave. Contabiliza un asiento de diario general (GeneralJournal); Yuki no usa código de diario.
- Cuándo: justo después de Cerrar el día y cada hora, para todos los días pasados desde Contabilizar desde (por defecto el día de la conexión; con otro programa, de nuevo desde ese día). Cada día una vez por programa; los días sin facturación se omiten; si hay un error, el motivo aparece junto a ese día y los días siguientes esperan. Contabilizar ahora siempre es posible. En el registro: "boekhoudpakket_geboekt".
- Las claves y los tokens nunca se muestran en pantalla (dejar vacío al volver a conectar = mantener). En la copia de la caja en el portal no se contabiliza nada.
Archivo de auditoría de caja (XAA)
Para los negocios neerlandeses, en Informe → Ventas por periodo, junto a la exportación contable, está el botón Archivo de auditoría de caja (XAA): el XML Auditfile Afrekensystemen 3.2 de la Administración Tributaria neerlandesa (Belastingdienst) y el XML Platform (SRA) del periodo elegido (como máximo algo más de un año; permiso Ventas por periodo). Es el archivo que la Belastingdienst recomienda para entregar los datos de una caja en una inspección o al asesor contable; las reglas figuran en la Handreiking voor een betrouwbaar afrekensysteem (Guía para un sistema de cobro fiable, docs/xaa).
En el archivo (auditfile_kassa_<van>_tm_<tot>.xml, esquema docs/xaa/XmlAuditfileAfrekensystemen3.2.xsd):
- datos maestros: el negocio (nombre, número de IVA, dirección), los códigos de IVA, todos los empleados (con rol y fecha de creación; además
SYSTEEMpara lo que hace la propia caja, como la tienda online y las integraciones) y todos los artículos con su grupo; - eventos: todo lo del registro en el periodo (inicio y cierre de sesión, cajón portamonedas abierto, cierre del día, ajustes y precios modificados, anulación, descuento, devolución, copia de tique, fichaje de entrada y salida ...) y la apertura del día de caja con el fondo de caja, cada uno con el código de la Belastingdienst (18001 inicio de sesión, 18003 cajón, 18006 cambio de instalación, 18008 informe Z, en otro caso 18999);
- transacciones de caja: cada tique (venta, devolución y proforma, con el número de tique, el empleado y el estado fiscal si no está en orden) con todas las líneas (artículo, grupo, cantidad, precio, IVA; también descuentos, tarjetas regalo, encabezados de menú y líneas anuladas antes del cobro, estas con importe 0), el IVA por tipo, el redondeo, los pagos por forma de pago (efectivo, tarjeta, tarjeta regalo, online; propina aparte) y las entradas/salidas de dinero del cajón portamonedas.
Los importes son positivos con C (venta, cobro) o D (devolución, pago); las horas, en hora neerlandesa con desfase. Todas las claves son los ids de la base de datos sin guiones, por lo que se pueden localizar en la caja.
Firma (capítulo 6 de la especificación): si Optimum POS ha configurado un certificado, el archivo de auditoría va firmado en un sobre (XML Signature) y el archivo se llama …_ondertekend.xml; si no, es un archivo de auditoría suelto, y la caja lo indica al descargarlo.
Pago a crédito
Los clientes de empresa (una empresa que encarga la comida cada semana, un hotel, una asociación) compran a crédito y pagan más tarde, con factura. Actívelo en Ajustes → Facturas → Pago a crédito (solo con Facturas activado; desactivado por defecto).
- Clientes: en Informe → A crédito registra los clientes de empresa con los datos de facturación (nombre, dirección, número de IVA, número KvK/de empresa, ID de Peppol, correo electrónico), opcionalmente un límite (cuánto puede quedar pendiente como máximo) y un plazo de pago propio (si no, el de las facturas), y si la factura se envía al momento.
- Cobrar: forma de pago A crédito, elija el cliente (con lo que ya tiene pendiente y el límite). El tique es una venta normal: facturación e IVA de ese día, en Bélgica normalmente a través de la caja negra, con "A crédito" en el tique. La caja crea al momento la factura (UBL/Peppol y para imprimir) por el importe pendiente con la fecha de vencimiento, y la envía según lo configurado en las facturas (correo electrónico, Peppol mediante Billit/Storecove/Banqup o su propia dirección). A crédito es un solo importe para el resto de la cuenta (se puede pagar antes una parte de otra forma), sin propina; una tarjeta regalo no se puede vender a crédito. Por encima del límite, la caja lo rechaza.
- Pagar: el cliente paga en el local en efectivo, con tarjeta o con tarjeta regalo (Informe → A crédito → Pago recibido; también una parte). No es una venta nueva ni un tique nuevo: el efectivo entra como dinero en el cajón (el cajón se abre) y todo aparece en X y Z en Recibido a crédito. Cuando todo está pagado, la factura pasa a "pagada". El pago en línea no forma parte de esto.
- Transferencia: si hay un IBAN en Datos en la factura, aparece en la factura (y en el UBL), con "También puede pagar en el local". Si el cliente ha pagado por transferencia, regístralo con Pago recibido → Transferido (banco): no en el cajón, pero sí en X y Z en Recibido a crédito. Sin IBAN aparece "A pagar en el local". En Bélgica aparece una comunicación estructurada (+++123/4567/89012+++, a partir del número de factura) en la factura y en el UBL, para que el banco la envíe junto con el pago.
- Banco: conciliar transferencias sin teclearlas, ver más abajo.
- Saldo (dinero por adelantado): en Informe → A crédito → Ingresar saldo se ingresa dinero por adelantado en la cuenta de un cliente, en efectivo (el cajón se abre) o con tarjeta, p. ej. para una serie de almuerzos. En la próxima venta a crédito, el saldo se descuenta primero de la factura; si la factura es mayor, el resto queda pendiente. El saldo aparece en el cliente (saldo € ...), en X y Z en Recibido a crédito (Saldo ingresado, Con saldo del cliente) y en el asiento contable como cobrado por adelantado (por defecto 1640 / 460000). En Bélgica el ingreso va a la caja negra como entrada de dinero (signMoneyInOut) (UC4100).
- Factura recapitulativa (por cliente, desactivada por defecto): con Una factura para todos los tickets el cliente aún no recibe factura en una venta a cuenta. El ticket queda abierto en el cliente (Tickets aún sin facturar, cuenta para el límite) y ya se puede pagar. Con Crear factura recapitulativa (p. ej. a fin de mes) todos los tickets abiertos van en una sola factura, cada línea con su número de ticket delante; lo que ya está pagado figura como pagado. Una devolución a cuenta aparece como líneas negativas. Desactivado = como siempre, una factura por venta. En Bélgica, una sola factura con todos los tickets en la caja negra (signInvoice, UC4121 y UC4122).
- Bélgica: si el cliente paga más tarde una venta a crédito (efectivo, tarjeta, tarjeta regalo o transferencia), la caja lo comunica como corrección de pago en el ticket: del crédito del cliente a la forma de pago real (signPaymentCorrection, UC4118).
- Resumen: facturas pendientes con la fecha de vencimiento (vencidas en rojo) y, por cliente, las facturas y los pagos. En Ajustes → Facturas, una columna Pendiente.
- Contabilidad: en el diario, la venta a crédito va a Deudores (por defecto 1300 en los Países Bajos, 400000 en Bélgica; se configura en Ajustes → Contabilidad) y el pago pasa de caja, tarjeta, tarjeta regalo o banco (por defecto 1050 / 550000) a deudores. XAA: forma de pago "A crédito".
- Permiso: Cobrar a crédito y recibir pagos a crédito (por defecto sala no, encargado sí). Todo queda en el registro.
- Desactivado: los clientes, las facturas y los pagos se conservan (también en la copia de seguridad); el interruptor se incluye en la exportación de la configuración, los clientes no (pertenecen a un solo local).
- En la tienda online (opcional, desactivado por defecto): con También en la tienda online, los clientes de empresa piden online a crédito (para llevar y a domicilio). En Informe → A crédito creas un código de cliente para cada cliente y se lo das; la caja solo guarda una versión cifrada, así que lo ves una sola vez. Nuevo código de cliente = el anterior deja de funcionar; Quitar código de cliente = ese cliente ya no puede pedir online a crédito. La tienda respeta el límite. En la ventana Tienda online finalizas ese pedido con Finalizar (a crédito): cobro a crédito, con la factura al momento.
Banco: conciliar transferencias
En Informe → A crédito → Banco, la caja busca para cada abono la factura a crédito correspondiente:
- Importar extracto bancario: el archivo de tu banca online, en formato CAMT.053 (XML, todos los bancos de Países Bajos y Bélgica), MT940 (.sta/.940) o CODA (.cod, Bélgica). Solo abonos; importar dos veces un extracto no genera líneas duplicadas.
- Búsqueda: por el número de factura o la comunicación estructurada en el concepto (seguro); si no, por importe (y nombre): entonces es una propuesta. Cada línea se puede conciliar (con la propuesta u otra factura), ignorar o más tarde conciliar de todos modos. Conciliar = Transferido (banco) en la fecha bancaria, nunca más de lo pendiente; no en el cajón.
- Conexión bancaria (PSD2, opcional): en Ajustes → Facturas → Conexión bancaria, la caja obtiene ella misma cada hora los abonos mediante Enable Banking (bancos de Países Bajos, Bélgica y el resto de Europa). Elige el banco e inicia sesión en él (cuenta de empresa); el consentimiento es válido 180 días, después hay que volver a conectar. Desconectar retira el consentimiento; los abonos se conservan. Sin contrato con Enable Banking esto solo funciona para tus propias cuentas (restricted production).
- Conciliación automática (desactivada por defecto): un abono que corresponde con seguridad a una factura lo concilia la caja al instante (también al importar).
- Permiso: conciliar con Cobrar a crédito y recibir pagos a crédito; configurar la conexión bancaria con Configurar negocio, pagos e impresoras. La importación, la conexión, la obtención y la conciliación quedan en el registro.
- Desactivado: con el pago a crédito desactivado, la caja no obtiene nada; los abonos y la conexión se conservan (también en la copia de seguridad).
Imágenes de cámaras en la caja
Todas las imágenes de las cámaras del negocio en una sola página, sin pantalla ni aplicación aparte. Actívalo en Ajustes → Negocio → Pantallas y manejo → Imágenes de cámaras en la caja (desactivado por defecto). Entonces aparece el botón Cámaras en la barra superior para quien tenga el permiso Ver imágenes de cámaras (por defecto encargado y administrador; en Ajustes → Permisos también se puede activar para sala). Todas las cámaras aparecen una junto a otra; toca una cámara para verla en grande. Al desactivarlo, los sistemas de cámaras se conservan.
También en una pantalla aparte: En una pantalla aparte abre http://<kassaserver>:3000/camera (p. ej. un monitor detrás de la barra), y En una tableta o teléfono muestra un código QR: un empleado lo escanea con su propia tableta o teléfono e inicia sesión con su propio PIN (también allí solo con el permiso Ver imágenes de cámaras). En una pantalla estrecha las cámaras aparecen una debajo de otra. Consulta Segunda pantalla en una tableta o teléfono.
El administrador añade los sistemas de cámaras con + Sistema de cámaras, los prueba con Probar y elige para cada cámara el nombre y si aparece en la página:
- Hikvision, Dahua, Axis y Reolink: una cámara o un grabador (NVR) en la red: la dirección IP (opcionalmente con
:poort), un usuario (preferiblemente solo de visualización) y los canales, p. ej.1-8o1,3,5. Inicio de sesión con Basic o Digest; se admite https con certificado propio. - Synology Surveillance Station: la dirección del NAS (puerto 5000 por defecto, 5001 con https) y un usuario; Obtener cámaras obtiene las cámaras con sus nombres.
- UniFi Protect: la dirección de la consola (https) y una cuenta local; Obtener cámaras.
- ONVIF: cualquier cámara o grabador con ONVIF (p. ej. Hanwha, Bosch, Uniview, Annke); Obtener cámaras busca la dirección de la foto de cada fuente de vídeo.
- Dirección web propia: una foto (JPEG), un flujo MJPEG o una dirección
rtsp://. - Página web del sistema de cámaras (p. ej. Frigate, Blue Iris o go2rtc): se abre en la caja con el botón Cámaras (o en una ventana aparte).
Sin ffmpeg: la foto.
Privacidad: la caja obtiene las imágenes del sistema de cámaras y solo las transmite; no se guarda nada (ni grabaciones ni caché). Los usuarios y contraseñas se quedan en el servidor y nunca aparecen en pantalla ni en el registro. En el registro consta quién vio las cámaras. La página pide las imágenes con una clave (válida 12 horas, mientras el empleado tenga la sesión iniciada), porque una imagen en el navegador no puede enviar un token. La exportación de la configuración solo incluye activado/desactivado.
Registro de acciones sensibles
Informe → Registro (encargado o administrador) muestra quién hizo qué y cuándo.
- Elija un periodo (hoy, ayer, esta semana, este mes/el anterior o desde-hasta), lo que quiere ver (por defecto Acciones sensibles, o p. ej. solo anulaciones y descuentos, o Todo) y, si quiere, un solo empleado.
- Arriba, por empleado: número e importe de anulaciones (eliminado tras enviar el pedido), descuentos y devoluciones, y cuántas veces se abrió el cajón sin venta, dinero fuera del cajón, copias de tickets, pro formas y cobros manuales con tarjeta. Pulse un nombre para ver solo a ese empleado. También el número de veces que se introdujo un PIN incorrecto.
- Debajo, cada acción con hora, quién, qué y una descripción legible (p. ej. "2x Cola eliminado tras enviar el pedido € 5,60 · mesa 4 · motivo: el cliente no lo quería").
- Descargar (CSV) para Excel.
Qué se registra: anulaciones, descuentos (y su eliminación), devoluciones, copias de tickets, proformas, pagos con tarjeta manuales, apertura del cajón, entradas/salidas de dinero del cajón, fondo de caja, cierre diario, mover líneas o mesas, cerrar pedidos vacíos, cambiar precio/nombre/IVA de productos, productos nuevos o eliminados, cambios de personal y ajustes, ajuste de horas de trabajo, inicio y cierre de sesión, PIN incorrectos y fichajes de entrada y salida. Con el pago a cuenta también: clientes, ventas y pagos a cuenta, importación de extractos bancarios, la conexión bancaria y la descarga desde el banco. Con el aviso por tiempo de preparación excesivo: pedidos con retraso y disculpas enviadas. Con Mailchimp o Klaviyo: conectar, elegir la lista, desconectar y las bajas desde allí. Con el control de música: activado/desactivado y añadir, modificar y quitar fuentes de música. Con las imágenes de cámaras: quién vio las cámaras (como máximo una vez por media hora por empleado), activado/desactivado y los sistemas de cámaras. Con las alertas: cada alerta, su resolución y la activación y desactivación.
Alertas: fraude y desviaciones
Ajustes → Alertas. Dos partes, cada una se activa por separado y está desactivada por defecto; al desactivarlas se conservan todas las alertas y ajustes. Puede configurarlo quien tenga el permiso Configurar alertas (por defecto el encargado y el administrador); puede ver y resolver las alertas quien puede ver el registro. La caja comprueba cada 5 minutos (y con Comprobar ahora); no en la caja de respaldo.
Detección de fraude y robo (por empleado, por jornada desde las 05:00), cada regla se activa o desactiva por separado con su propio límite:
- anulaciones tras la proforma: eliminado cuando el cliente ya había visto la cuenta;
- anulaciones, descuentos y devoluciones: a partir de cierto número de veces, o en total a partir de un importe (0 = no por importe);
- cajón abierto sin venta (botón Abrir cajón);
- cuenta abierta mucho tiempo: pedida pero aún sin cobrar tras cierto número de minutos.
Avisos por desviaciones, comparado con el mismo día de la semana y la misma hora de las últimas semanas (por defecto 4; los días sin ventas no cuentan, al menos dos días de comparación):
- ventas hasta ahora por debajo (y/o por encima) de lo normal en más del margen, solo a partir de unas ventas normales de un importe fijado;
- tiempo de cocina (del pedido a cocina hasta listo en la pantalla de cocina) de la última hora por encima del margen, o por encima de un número fijo de minutos;
- anulaciones de hoy por encima del margen, solo a partir de un número mínimo.
Cada alerta aparece una sola vez (por regla, empleado y día; el tiempo de cocina como máximo una vez por hora) y va a:
- la caja: botón Alertas (n) en la barra superior con las alertas del último día, la última semana o los últimos 30 días; Resuelto con una nota. Las demás pantallas solo reciben un aviso sin nombres;
- notificación push con ntfy (app gratuita; ntfy.sh o un servidor propio, topic y opcionalmente un token), Pushover (API-token de la app y la user key) o Telegram (token del bot y el chat-id);
Cada canal tiene un botón Mensaje de prueba. Los tokens y claves se quedan en la caja (las pantallas solo ven si están rellenados). Una alerta no es una prueba: revise la cuenta y el registro y háblelo con el empleado.
Tickets: copia y devolución (ticket de abono)
Botón Tickets en la barra superior:
- Lista de los tickets desde el último cierre diario, o de los últimos 7 días; un ticket más antiguo se busca por su número.
- Imprimir copia: el mismo ticket con "COPIA" (en Bélgica con el bloque FDM del ticket original). Queda en el registro.
- Devolución / ticket de abono (encargado o administrador): elija por línea cuánto se devuelve, un motivo y cómo se reembolsa el dinero (efectivo, tarjeta, tarjeta regalo, otros). El ticket original no se modifica: se crea un nuevo ticket de abono con su propio número en el diario (tipo de ticket
retour, importes negativos, en Bélgica como NR a la FDM). Nunca se puede devolver más de lo vendido. En los informes X y Z, la devolución cuenta como venta negativa. - Con CCV u otro terminal: primero reembolse en el propio terminal y luego marque "Ya reembolsado en el propio terminal".
- En efectivo con redondeo a 5 céntimos: el importe a devolver también se redondea.
- Devolver a la cuenta (venta a crédito): si el ticket era a crédito de un cliente de empresa, elija A crédito. El importe se descuenta de la factura pendiente y la caja crea al momento una nota de crédito (en UBL una CreditNote, tipo 381, con referencia a la factura; en Bélgica firmada con signInvoice, UC4122). No se puede devolver a la cuenta más de lo que queda pendiente en la factura; devuelva el resto en efectivo o con tarjeta. La nota de crédito aparece en Facturas y se envía como una factura.
Cajón portamonedas con sensor y cajón por empleado
Desactivado por defecto. Se configura en Ajustes → Pagos → Cajón portamonedas.
- Sensor: muchos cajones indican a través de la impresora de tickets si están abiertos o cerrados (ESC/POS
DLE EOT 1, pin 3 del puerto DK). Solo es posible con una impresora de tickets en red. Pulse Medir: cajón cerrado y Medir: cajón abierto; si hay diferencia, aplique el ajuste correcto (alto = abierto o bajo = abierto). Sin diferencia = este cajón (o cable) no tiene sensor. Sin respuesta de la impresora = desconocido, nunca "cerrado".- No cobrar mientras el cajón esté abierto: el servidor de caja rechaza entonces un nuevo cobro con "El cajón portamonedas sigue abierto".
- Cajón propio por empleado: una impresora de tickets puede abrir dos cajones (cajón 1 y cajón 2). Elija el cajón de cada empleado; al cobrar en efectivo, al meter o sacar dinero del cajón y con Abrir cajón, la caja abre entonces el cajón de quien haya iniciado sesión. En Informe → Cajón portamonedas aparece entonces Cajón por empleado: fondo de caja por empleado, efectivo (sin la máquina de cobro), esperado, Contar y el descuadre por persona (en el registro como
ladetelling). El cierre diario normal sigue igual. - Probar cajón 1 y Probar cajón 2 abren el cajón para comprobarlo.
- Abrir cajón sin venta queda siempre (con motivo) en el registro y en el archivo de auditoría de caja (XAA), tal como exige la Administración Tributaria neerlandesa (Belastingdienst) (excepciones como "no sale").
Parte 3 · Administrador
Primeros pasos
Instalación. HorecaPOS se instala con el instalador para tu sistema, disponible en la página de descargas de OptimumPOS: Android (app), Windows (instalador), macOS (instalador para Mac con Apple Silicon e Intel), Linux (instalador gráfico, o el paquete .deb o .rpm), Raspberry Pi (instalador gráfico o .deb para una Raspberry Pi 3, 4 o 5 con Raspberry Pi OS de 64 bits) y Chromebook (la app de Android de Google Play). Elige para todos los usuarios para un servidor de caja al que se conectan las tablets y la pantalla de cocina, o solo para mí para solo una caja en ese dispositivo. El instalador instala todo lo necesario, también la base de datos, y hace una copia de seguridad cada noche. Para actualizar, instala la nueva versión: tus datos se conservan. El instalador se inicia en el idioma de tu ordenador (si no, en inglés); en Windows y Linux puedes elegir otro idioma en la primera pantalla. Después, la caja se inicia directamente en ese idioma. Los paquetes .deb y .rpm y la app de Android siguen el idioma del sistema; si no, neerlandés.
El administrador configura la caja en Ajustes. Ahí hay pestañas como Negocio, Personal, Permisos, Horarios de trabajo, Productos, Happy hour, Existencias, Planos de sala, Pagos, Impresoras, Contabilidad, Copias de seguridad, Importar/exportar y Base de datos. Qué pestañas ve también un encargado depende de los permisos.
Base de datos. En Ajustes → Base de datos (solo el administrador) eliges entre MySQL / MariaDB, la base de datos integrada y PostgreSQL; al cambiar, se trasladan todos los datos (ver Base de datos). Si Optimum POS ya configuró una dirección fija durante la instalación, se usa esa dirección y no hay campos que rellenar. De lo contrario, rellenas tú mismo Servidor, Puerto, Base de datos, Usuario y Contraseña. La caja los guarda por sí sola, después los muestra ya rellenados y siempre puedes cambiarlos con Cambiar datos de MySQL/MariaDB o Cambiar datos de PostgreSQL. Dejar la contraseña vacía significa: mantener la contraseña guardada (para el mismo usuario). El instalador y una actualización no cambian nada en DATABASE_URL ni en la base de datos elegida.
Contabilidad
Todo lo relativo a la contabilidad está en Ajustes → Contabilidad. Introduzca, junto con su contable, el diario y las cuentas contables. Si quiere que la caja contabilice sola las ventas del día cada día, elija su programa arriba en Programa contable, también Exact Online: solo ve los programas que funcionan en el país de su negocio. Justo debajo introduce los datos de ese programa y conecta. En los programas en los que se inicia sesión (como Exact Online, Twinfield o Xero), rellene primero la app: ID de cliente y secreto de cliente. Si Optimum POS fijó el programa o un dato durante la instalación, no verá esa opción o ese campo. Ahí encontrará también un resumen de todos los programas: cuáles se pueden conectar live y cuáles reciben un archivo. Un archivo se crea en Informe → Ventas por periodo → Exportación contable: elija el formato de su programa, o UBL (Peppol), XAF o un resumen diario. Pida siempre a su contable que revise el primer asiento o la primera importación.
Para un negocio neerlandés también aparece ahí Archivo de auditoría de caja (XAA): el XML Auditfile Afrekensystemen de la Administración Tributaria neerlandesa (Belastingdienst) con todos los tiques, líneas, pagos y eventos de la caja del periodo elegido. Lo entrega a su asesor contable o, en una inspección, a la Belastingdienst.
Nóminas y planificación
Si su personal ficha la entrada y la salida, en Ajustes → Horarios de trabajo aparece abajo Nóminas y planificación, en dos bloques. En Administración de nóminas elige su programa de nóminas o (en Bélgica) su secretariado social, e introduce para cada empleado su número de empleado en ese programa. Después crea para un periodo el archivo con las horas trabajadas y las ventas por empleado, y lo importa en su programa de nóminas. En Planificación de personal elige su sistema de planificación: con Deputy, Dyflexis y Shiftbase las ventas van automáticamente cada hora; con los demás crea un archivo de ventas. Así ve en su planificación los costes salariales junto a las ventas. Si trabaja sin fichaje de entrada y salida, puede enviar igualmente las ventas a su planificación: entonces aparece abajo en Ajustes → Contabilidad, en Ventas a su planificación. Si Optimum POS ha fijado algo durante la instalación, no verá esa opción o ese campo.
Copias de seguridad
La caja hace cada noche automáticamente una copia de seguridad, y siempre antes de una actualización. En Ajustes → Copias de seguridad ve todas las copias (cuándo, quién o automática, tamaño) y puede crear una usted mismo con Crear copia de seguridad. Si la última copia tiene más de dos días, aparece un aviso rojo: póngase entonces en contacto con Optimum POS.
Para restaurar, use el botón Restaurar de una copia de seguridad. Todo lo ocurrido después de esa copia se perderá. Debe marcarlo e introducir de nuevo su propio PIN. La caja hace antes una copia de seguridad del estado actual y después cierra la sesión de todos. En Bélgica no es posible desde la caja (los contadores de la caja negra siguen corriendo); allí lo hace Optimum POS.
Base de datos
En Ajustes → Base de datos (solo el administrador) ves dónde guarda la caja sus datos. Arriba aparece la base de datos actual con programa, versión, tablas, filas y dirección o carpeta. Para el personal y las tabletas, la caja funciona igual con cualquier base de datos. En Windows, macOS, Linux y Raspberry Pi eliges entre tres bases de datos:
- MySQL / MariaDB: un programa de base de datos aparte (MySQL 8.0 o posterior, MariaDB 10.6 o posterior), por ejemplo en un servidor o NAS que ya tengas. Todos los datos quedan en tablas normales de MySQL o MariaDB, legibles para tu propio programa de informes o BI. La caja calcula exactamente igual que con PostgreSQL.
- Integrada (PGlite): va dentro de la propia caja, no hay que instalar nada. La mejor opción para la mayoría de los negocios, y la base de datos en Android y Chromebook.
- PostgreSQL: un programa de base de datos aparte, en el PC de la caja o en otro lugar de la red.
¿Cuándo MySQL o MariaDB? Si tu negocio ya tiene un servidor MySQL o MariaDB, si tu administrador informático trabaja con él, o si quieres leer los datos en tus propios informes, en Excel o en un programa de BI. Si dudas, elige la integrada: funciona al momento.
¿Qué necesitas para MySQL o MariaDB?
- MySQL 8.0 o posterior, o MariaDB 10.6 o posterior, accesible desde el servidor de la caja.
- Una base de datos propia para la caja (o para las cajas de una cadena), con el juego de caracteres utf8mb4.
- Un usuario de base de datos que pueda crear, modificar, renombrar y eliminar tablas en esa base de datos (CREATE, ALTER, DROP, INDEX, SELECT, INSERT, UPDATE, DELETE), por ejemplo así:
CREATE DATABASE horecapos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'horecapos'@'localhost' IDENTIFIED BY 'wachtwoord';
GRANT ALL PRIVILEGES ON horecapos.* TO 'horecapos'@'localhost';
Si MySQL o MariaDB funciona en otro ordenador, pon en las dos últimas líneas la dirección IP del servidor de la caja en lugar de localhost.
Migrar a MySQL / MariaDB:
- En Dirección de MySQL/MariaDB, rellena los campos: Servidor (por defecto localhost), Puerto (por defecto 3306), Base de datos (por defecto horecapos), Usuario y Contraseña; igual para MariaDB. Si la dirección ya está configurada, los campos ya aparecen rellenados; si dejas la contraseña vacía, se mantiene la guardada (para el mismo usuario). La caja guarda la dirección por sí sola; si Optimum POS ya configuró una dirección fija, se usa esa dirección y no hay campos. Si la caja ya funciona con MySQL/MariaDB, cambias los datos más adelante con Cambiar datos de MySQL/MariaDB. Optimum POS te configura una conexión cifrada.
- Toca Probar conexión: ves el programa y la versión, o por qué no funciona.
- Toca Migrar a MySQL/MariaDB, marca que lo entiendes e introduce tu propio PIN.
La migración funciona en cualquier dirección entre las tres bases de datos, y todos los datos se trasladan:
- La caja no acepta solicitudes durante un momento (normalmente menos de un minuto); después las tabletas siguen solas.
- Primero la caja hace una copia de seguridad del estado actual (en Ajustes → Copias de seguridad).
- Todo pasa a la nueva base de datos y la caja cuenta tabla por tabla si está todo exactamente.
- Solo cuando todo cuadra, la caja sigue con la nueva base de datos. El personal con sesión iniciada sigue conectado.
Si algo falla, no cambia nada y la caja sigue trabajando con la base de datos antigua. La base antigua se conserva, así que siempre puedes volver atrás. Los datos de caja que ya estaban en la nueva base MySQL/MariaDB o PostgreSQL se sustituyen. También funciona en Bélgica: los contadores de la caja negra se trasladan exactamente.
Las copias de seguridad y la restauración funcionan igual con las tres bases de datos (Ajustes → Copias de seguridad). Una copia de una base de datos se puede restaurar en cualquier otra, también una copia de PostgreSQL en MySQL o MariaDB.
¿Qué hay en MySQL o MariaDB? Cada tabla de la caja, con el mismo nombre y las mismas columnas (horas en UTC). Cada tabla recibe además la columna clave _hp_sleutel, y en las tablas auxiliares _horecapos_stand, _horecapos_kolom, _horecapos_reeks y _horecapos_wijziging (registro de cambios, se guarda 14 días) la caja lleva el estado, los tipos de columna, los contadores y los cambios. Otros programas leen los datos; solo las cajas escriben.
Así funciona: la caja calcula en una copia de trabajo rápida en el servidor de la caja y escribe cada cambio en MySQL/MariaDB en el mismo paso. Si eso falla, el cambio no se aplica y la caja muestra un error; mantén por tanto MySQL/MariaDB accesible. Al arrancar, la caja lo lee todo de MySQL/MariaDB.
Varias cajas en una base de datos. Igual que con PostgreSQL, varias cajas pueden usar la misma base de datos MySQL/MariaDB, por ejemplo cada local de una cadena con su propio servidor de caja. Los cambios se hacen uno tras otro y cada caja recoge primero lo que hicieron las demás, así que no se pierde nada al cambiar algo a la vez. Si una caja restaura una copia de seguridad o una caja con una versión más nueva actualiza la base de datos, las demás cajas vuelven a leerlo todo solas; por eso, actualiza todas las cajas a la vez. Una caja que estuvo apagada más de 14 días lo vuelve a leer todo al arrancar.
En la instalación también eliges la base de datos: MySQL / MariaDB, integrada (recomendada) o PostgreSQL con su dirección. Si no se puede acceder a ella, la caja se instala con la base integrada; después puedes migrar aquí. En una actualización se mantiene la elección.
Vincular tablets y pantallas
- En cada tableta/caja, abra la dirección del servidor de caja, p. ej.
http://192.168.1.20:3000, y añádala como acceso directo en la pantalla de inicio (Chrome: Añadir a pantalla de inicio). - Pantalla de cocina:
http://192.168.1.20:3000/keuken. - Pantalla del cliente (orientada al cliente, opcional):
http://192.168.1.20:3000/klantscherm, ver Pantalla del cliente. - Las pantallas encuentran el servidor de caja automáticamente (misma dirección, puerto 4000).
Pantalla para el cliente
Una pantalla en la caja orientada al cliente. El cliente ve más o menos lo que se ha pedido y, con toda claridad, el importe y cómo se paga. No tiene controles: la pantalla solo sigue lo que hace la caja. Desactivada por defecto; se activa en Ajustes → Negocio → Pantalla del cliente. En un PC de caja con dos pantallas, la caja la activa automáticamente la primera vez; si después se desactiva, sigue desactivada. Sin pantalla del cliente (desactivada, o no hay ninguna instalada) todo funciona exactamente como siempre: la caja envía la imagen en segundo plano y el personal nunca nota un error o una pantalla que falte.
Lo que ve el cliente:
- En reposo (nadie está pagando): el nombre del negocio y un texto de bienvenida propio (Ajustes → Negocio; vacío = "Bienvenido").
- Pedido: los productos con cantidad e importe (líneas iguales agrupadas, un menú como una sola línea con sus componentes en pequeño debajo, el descuento como una sola línea) y el total en grande. Debajo aparece lo ya pagado en un cobro dividido. Con Ajustes → Negocio → Fotos de productos → en la pantalla del cliente aparece una pequeña foto junto a cada producto.
- Cobrar: la forma de pago (Tarjeta, Efectivo, Tarjeta regalo), la propina y en grande A pagar. Efectivo: lo que entrega el cliente y lo que recibe de cambio, en cuanto se introduce en la caja. Tarjeta: "Siga las instrucciones del terminal de pago".
- Gracias: tras cobrar, durante unos segundos "¡Gracias!" con el importe pagado (efectivo: lo que recibe de cambio el cliente) y después vuelve la pantalla de reposo.
Conexión, de dos maneras (ambas se configuran en el propio dispositivo):
- Segundo monitor en el PC de caja (Windows, Linux/Raspberry Pi, macOS): automático. Al iniciar sesión y tras la instalación, la caja pone la pantalla del cliente a pantalla completa en la pantalla más pequeña que no sea la principal (si son del mismo tamaño, la de más a la derecha); en Windows, siempre en una pantalla distinta de la de la caja (la caja está en la pantalla táctil y además se abre sola al arrancar). El tamaño y la posición los da el sistema, así que funciona con cualquier formato. Sin segunda pantalla no pasa nada. En Windows, una pantalla del cliente cerrada vuelve sola; en Linux y macOS, el acceso directo HorecaPOS pantalla del cliente del menú la vuelve a colocar. En Windows se abre en el modo quiosco de Chrome (o Edge): a pantalla completa, sin barra de título y sin barra de tareas (se cierra con Alt+F4). Sigue a la caja en el mismo PC sin código de vinculación.
- En cualquier navegador, una pulsación larga no muestra el menú del navegador en ningún sitio y no aparece ninguna pregunta para traducir la página.
- Caja cerrada = pantalla del cliente cerrada. Si el software de la caja se detiene (Reiniciar, una actualización, la caja detenida o eliminada), la pantalla del cliente también se cierra tras algo más de 10 segundos; cuando la caja vuelve a funcionar, reaparece sola. En Windows también se cierra si solo cierras la ventana de la caja. Con Wayland (Linux) la caja no puede cerrar la ventana por sí misma.
- ¿Pantalla del cliente cerrada por error? En Windows reaparece sola tras unos segundos, siempre que la caja esté abierta y la segunda pantalla esté conectada.
- Siempre una sola pantalla del cliente. En Windows la pantalla del cliente solo aparece en el modo quiosco en la segunda pantalla. Una pantalla del cliente en la ventana de la caja (p. ej., restaurada por Edge tras un corte de luz o abierta con el botón de la caja) se cierra sola en pocos segundos; la pantalla del cliente correcta ocupa entonces su lugar.
- Nadie conectado = solo la bienvenida. Si la caja está en la pantalla del PIN (también tras reiniciar o cerrar sesión), la pantalla del cliente solo muestra el texto de bienvenida, nunca la cuenta anterior.
- En Windows también se puede desactivar la apertura automática con la casilla Abrir pantalla del cliente automáticamente ... en el instalador.
- En Linux la caja mueve la ventana con wmctrl (incluido en el paquete). En Wayland (p. ej. Raspberry Pi OS con labwc) no es posible: coloque entonces usted mismo una vez la pantalla del cliente en la segunda pantalla (el navegador lo recuerda) o elija X11 en raspi-config. En macOS, la primera vez el Mac pide permiso en Accesibilidad.
- Manualmente: Ajustes → Negocio → Pantalla del cliente → Abrir pantalla del cliente (segundo monitor). En Chrome y Edge (también en un Chromebook) el botón coloca la ventana directamente en la pantalla del cliente (la primera vez el navegador pide permiso); un clic en la pantalla del cliente la pone a pantalla completa. En otros navegadores: arrastrar y F11.
- Caja Android con pantalla del cliente integrada (p. ej. Sunmi D2/T2) o un monitor por HDMI/USB-C: también automático. En cuanto la app está en una caja, la pantalla del cliente aparece en la segunda pantalla; conectar y desconectar funciona al instante.
- Sunmi T1 mini / T2 mini con el pequeño visor de texto (2 líneas): la app muestra ahí automáticamente el importe: Total, A pagar, en efectivo Cambio, tras el cobro ¡Gracias! y en reposo el nombre del negocio. La pantalla del cliente debe estar activada.
- iPad (pantalla de manejo) con una pantalla externa por HDMI/USB-C o AirPlay: la app pone automáticamente la pantalla del cliente en esa pantalla (preparado; la app de iOS aún no se ha publicado).
- Chromebook: como pantalla de manejo en Chrome, el botón Abrir pantalla del cliente (segundo monitor) funciona como se indica arriba. En la app de Android la pantalla del cliente aparece automáticamente en la segunda pantalla en cuanto ChromeOS pasa esa pantalla a las apps de Android; si no lo hace, use un dispositivo aparte con código de vinculación.
- Dispositivo independiente (tableta o PC propio junto a la caja): abra
http://<kassaserver>:3000/klantscherm. La pantalla muestra abajo a la derecha un código de vinculación de 6 caracteres. Introdúzcalo en la caja en Ajustes → Negocio → Pantalla del cliente → Vincular. Desvincular devuelve la pantalla al código de vinculación. La vinculación se guarda por caja (en el navegador de esa caja), así que cada caja puede tener su propia pantalla del cliente.
La pantalla del cliente no pide PIN (no hay nada que manejar) y solo muestra la imagen de la caja a la que está vinculada. La imagen solo está en la memoria del servidor de caja; tras un reinicio, la pantalla queda vacía hasta el siguiente cambio. La configuración (activada/desactivada y texto de bienvenida) se incluye en la copia de seguridad y en Importar/exportar (Otros ajustes).
Ticket digital por QR (opcional)
Desactivado por defecto. Se activa en Ajustes → Negocio → Cocina y pantalla del cliente → Ticket digital (la opción aparece cuando la pantalla del cliente está guardada como activada). Tras el cobro aparece un código QR junto a Gracias; se queda entonces 45 segundos en lugar de unos pocos segundos. El cliente lo escanea con su propio teléfono y ve el ticket exactamente igual que el ticket en papel (el mismo texto; en una caja belga también con el bloque FDM). En el teléfono puede imprimir el ticket, guardarlo como PDF o descargarlo como archivo de texto.
- Funciona a través del portal de gestión:
https://kassa.<portaal>/__bon/<kassa>/<sleutel>. Por tanto, la caja debe estar conectada al portal; si no, no aparece ningún código QR y no cambia nada. - La clave es aleatoria e imposible de adivinar, y es válida durante 30 días. Después la caja la elimina automáticamente. El portal no guarda nada.
- Funciona con un segundo monitor y con una pantalla del cliente independiente. El ticket en papel y el ticket por correo electrónico siguen funcionando con normalidad.
Pantalla del cliente en reposo: presentación de diapositivas (opcional)
Desactivado por defecto. Se activa en Ajustes → Negocio → Cocina y pantalla del cliente → Pantalla del cliente en reposo. Si no hay ninguna cuenta en la pantalla del cliente, las diapositivas se van alternando (por defecto cada 8 segundos, ajustable de 4 a 60):
- Promociones: las happy hours (si la happy hour está activada), con el descuento, los días y horarios y los productos o categorías; las que están en curso aparecen primero, con "¡Ahora!".
- Productos destacados (como máximo 12, por ejemplo novedades de la carta), con precio y (si las fotos de productos en la pantalla del cliente están activadas) la foto. Un producto agotado se omite.
- La tarjeta de puntos: puntos por euro, la recompensa y las tarjetas de sellos (solo si la tarjeta de cliente está activada).
- Textos propios: como máximo 5, cada uno en su propia diapositiva (por ejemplo "Novedad a partir del viernes: nuestra carta de verano").
Sin diapositivas, la pantalla del cliente muestra la pantalla de bienvenida, como siempre.
Happy hour
Desactivado por defecto. Se activa en Ajustes → Negocio → Usar happy hour; después aparece la pestaña Ajustes → Happy hour.
- Para cada happy hour: nombre (aparece en el ticket), días, desde–hasta (puede pasar de medianoche, p. ej. 23:00–01:00), descuento en % o un precio fijo, y para qué categorías y/o productos sueltos.
- Dentro de esa franja, la caja aplica automáticamente el precio de happy hour al marcar (nunca más caro de lo normal; con un precio fijo, las opciones se suman normalmente). En el botón del producto aparece el precio anterior tachado con el nuevo precio y HH; en el pedido y en el ticket aparece el nombre de la happy hour. Lo ya marcado mantiene su precio.
- Oferta del día: marque Todo el día (00:00–24:00) y elija el día o los días, p. ej. costillas a precio fijo todos los martes.
- Temporada: marque Solo en una temporada (cada año) y elija desde y hasta (día y mes, p. ej. del 1 de junio al 31 de agosto; puede pasar de un año a otro, p. ej. del 1 de diciembre al 28 de febrero). Fuera de la temporada no se aplica la happy hour.
- Los cambios quedan en el registro.
Franjas horarias y temporadas
Desactivado por defecto. Se activa en Ajustes → Negocio → Franjas horarias y tipo de pedido → Carta por franja horaria y temporada; después aparece la pestaña Ajustes → Franjas horarias. Si lo desactiva, todos los productos vuelven a estar siempre a la venta y las franjas horarias se conservan.
- Por franja horaria: nombre (p. ej. Desayuno, Almuerzo, Cena, Carta de verano), días, desde–hasta (puede pasar de medianoche; Todo el día = 00:00–24:00), opcionalmente una temporada (cada año, día y mes), y qué categorías y/o productos sueltos pertenecen a ella.
- Los productos y categorías que están en una o más franjas horarias solo están a la venta mientras una de esas franjas está activa; lo que no está en ninguna franja siempre está a la venta. La pantalla de pedidos solo muestra lo que está a la venta ahora y cambia sola cuando una franja empieza o termina; el servidor rechaza el resto ("ahora no está a la venta, solo en Desayuno").
- La tienda online muestra y cobra la misma carta (en el momento del pedido).
- Un precio distinto en un día o en una temporada es una happy hour (oferta del día, véase arriba).
- Carta por local: cada caja (establecimiento) tiene sus propios productos, franjas horarias y precios.
- Los cambios quedan en el registro.
Carta y precios por tipo de pedido
Desactivado por defecto. Se activa en Ajustes → Negocio → Franjas horarias y tipo de pedido → Carta y precios por tipo de pedido. Si lo desactiva, vuelve a aplicarse el precio normal en todas partes y todo está a la venta en todas partes; los precios introducidos se conservan.
- En Ajustes → Productos, por producto: Precio para llevar y Precio a domicilio (vacío = el precio normal) y Se vende en (en el local, para llevar, a domicilio; al menos uno). En una categoría también Se vende en, para todos los productos de esa categoría.
- En un pedido para llevar o a domicilio, la pantalla de pedidos muestra el precio de ese tipo de pedido y solo lo que se vende en él; el servidor cobra ese precio y rechaza el resto. Happy hour, menús y opciones se calculan con ese precio.
- El tipo de IVA para llevar (en el producto) es independiente de esto, como siempre.
- La tienda online muestra para recoger y a domicilio los precios y productos de esa opción (al cambiar, la página del menú se recarga), y en la mesa los del local.
- La exportación e importación de la configuración (Ajustes → Importar/exportar) incluyen los precios por tipo de pedido, "se vende en", las franjas horarias y la temporada de las happy hours.
Menús
Desactivado por defecto. Se activa en Ajustes → Negocio → Usar menús.
- Un menú es un producto normal (con el precio del menú) en el que se configuran componentes en Ajustes → Productos → (producto) → Menú:
- fijo: siempre este producto (p. ej. "Bebida: vino de la casa");
- a elegir: elegir 1 (o más) de una categoría, opcionalmente limitado a ciertos productos (p. ej. "Principal: elija 1 de Principales").
- Para cada componente, el pase (1 = inmediato, 2/3 = espera a marchar).
- Al marcar el menú, se eligen los platos de cada componente. Para cada plato (también los fijos) se pueden elegir las opciones como en un producto suelto (punto de cocción, queso extra; las opciones obligatorias deben elegirse) y una observación. El suplemento de las opciones se suma al precio del menú. El menú aparece como una sola línea con los platos (y sus opciones) debajo.
- Los platos van como líneas sueltas a cocina/barra (comanda y pantalla de cocina), en su propio pase. La línea del menú no.
- A efectos de IVA, el precio del menú se reparte entre los componentes en proporción a su precio normal, para que comida y bebida tengan cada una el tipo correcto. En el ticket aparece el menú con el precio total y los platos debajo.
- Si el propio menú tiene opciones (p. ej. tamaño), se eligen arriba en la ventana del menú. Aparecen en la línea del menú en el ticket, y en cada plato del menú en la comanda y la pantalla de cocina como "(menú)".
- Quitar/anular se hace por menú completo (pulse la línea del menú).
- Dividir / mover: elija la línea del menú; los platos se incluyen. Con 2× el mismo menú también puede mover 1 (la cabecera y los platos se dividen).
- Sin conexión se pueden marcar menús normalmente; se guardan en la tableta y se envían en cuanto vuelve la conexión (como los productos sueltos).
- La happy hour también puede aplicarse a un menú.
Recetas y coste (Apicbase)
Integración con Apicbase (recetas, coste, existencias y compras) mediante la Generic POS API de Apicbase (desactivado por defecto; cada parte se activa o desactiva por separado). Se configura en Ajustes → Recetas (permiso Configurar negocio, pagos e impresoras). La caja habla directamente con Apicbase (solo tráfico saliente, sin portal).
- Conectar (todo lo rellena el administrador), de una de tres maneras:
- Pegar token: en Apicbase Library Settings → API Settings → New token → Service Account Token (scopes accounts, library, sales); pegar el access token y el refresh token;
- Iniciar sesión con la API-app propia del negocio (client-id y client secret de API Settings): Iniciar sesión en Apicbase y pegar el código que Apicbase muestra después;
- Un token caducado (tras 7 días) lo renueva la caja automáticamente con el refresh token.
- Outlet: Obtener outlets y elegir el outlet de este negocio. La caja configura allí el POS como Generic POS API con un location-id propio (editable; por defecto
HORECAPOS-…, único por caja). - Activado, con casillas:
- Productos, grupos y opciones a Apicbase: categorías, productos (PLU = el número PLU del producto, si no el código, si no el id), opciones como modifiers, con precio e IVA. Automáticamente tras cada cambio (al cabo de un minuto) y cada día. En Apicbase vinculas después cada producto de la caja a una receta;
- Cada ticket cobrado a Apicbase: los más antiguos primero, como máximo 100 cada vez, dentro del cuarto de hora tras el cobro (y cada 5 minutos). El descuento se reparte entre las líneas; importes libres, recargo por envase desechable y depósito figuran como producto propio en Apicbase; productos pesados como 1 unidad con el importe total. Si falla, la caja se detiene (Apicbase quiere los tickets en orden) y lo vuelve a intentar más tarde: el cobro no se ve afectado. Al activarlo eliges desde qué día (por defecto desde ahora);
- Recuperar el coste por ración (cada 6 horas): por receta vinculada, el food cost (ingredientes y merma), con costes de personal, el precio de venta y el margen según Apicbase. Calculado con el proveedor más barato, el último precio pedido o el valor medio de existencias;
- Tomar el precio de venta de Apicbase (desactivado por defecto): poner el precio de venta de los productos vinculados en la caja (queda en el registro).
- Abajo: Coste por producto con coste, coste con personal, precio en la caja, coste % y margen. Botones Enviar catálogo ahora, Enviar tickets ahora y Recuperar costes ahora.
Código: apps/pos-server/src/lib/apicbase.ts, routes/apicbase.ts; pantalla Apicbase.tsx. Registro: Apicbase. Requisito: el módulo API de Apicbase. Para la app de Pin Voordeel para todos los clientes: colaboración y certificación con Apicbase (ver el backlog). Documentación: https://developers.apicbase.com/docs/generic-pos-api-guide
Software hotelero: cargar a la habitación
Para un restaurante o bar de un hotel: cargar la cuenta a la habitación de un huésped. Desactivado por defecto: Ajustes → Hotel (permiso Configurar negocio, pagos e impresoras).
- Una lista con todo el software hotelero (Software hotelero del hotel). Conexiones integradas:
- Mews (Connector API: client token y access token, el servicio del restaurante y, por tipo de IVA, el código de IVA de Mews), apaleo (app propia con client ID y client secret, el ID de la propiedad; por tipo de IVA opcionalmente la clase de IVA) y Cloudbeds (clave API e ID de la propiedad), cada uno con un entorno de prueba y uno real;
- Oracle OPERA Cloud (OHIP), protel (protel I/O), RoomRaccoon, Booking Experts, Amadeus (XMLPOS), VIPS, Stayntouch, Clock PMS+, Guestline (Rezlynx), Hotelogix, eviivo, Little Hotelier, Shiji e Infor HMS (Databridge). Tras elegir, aparecen exactamente los campos de ese software hotelero (claves, ID del hotel, si hace falta la dirección de su API y, por tipo de IVA, su código), con una breve explicación de lo que hay que pedir al proveedor. Estas conexiones están hechas según la documentación de los proveedores; pida al proveedor que confirme la conexión y pruebe primero con Probar conexión y un solo ticket;
- una demo (cuatro suites, habitaciones 4 a 7) para probar;
- Sirvoy, como conexión parcial y solo con Sirvoy Pro. Sirvoy no tiene API para que una caja añada algo a una reserva, ni siquiera mediante un archivo (la importación CSV solo crea reservas nuevas). Con ella, la caja conoce a los huéspedes (habitación, nombre, llegada, salida): la búsqueda en Cargar a la habitación y el autoservicio en el quiosco y en la tienda online funcionan con normalidad. El ticket no llega solo a Sirvoy: tras cobrar aparece en Ajustes → Hotel bajo Pendiente de poner en Sirvoy, con la habitación, el huésped, el número de ticket y el importe por tipo de IVA. El hotel lo añade a mano como extra en la reserva y hace clic en Ya está (para deshacer, Todavía no). Necesario:
- preferiblemente una caja conectada al portal de gestión: así la dirección pasa por el portal (
https://<portaal>/hotel/<kassa-id>/sirvoy?sleutel=...) y no hace falta abrir ningún puerto en el hotel. Si no, la propia caja debe ser accesible desde internet por https (dominio propio con certificado o redirección de puertos; Sirvoy exige TLS 1.2 o superior) e introduzca esa dirección; - La dirección solo se muestra una vez; la caja guarda únicamente el hash. Crear una dirección nueva = la antigua deja de funcionar;
- preferiblemente una caja conectada al portal de gestión: así la dirección pasa por el portal (
Sirvoy solo envía algo cuando cambia una reserva: las reservas anteriores a la conexión no las conoce la caja hasta que cambian en Sirvoy. Los mensajes pueden llegar desordenados; un mensaje más antiguo (generatedAt) que lo que ya tiene la caja se omite. En el hotel = no cancelada y sin check-out, con check-in hecho o llegada hoy o antes, y salida hoy o después. Probar conexión indica cuántas reservas han llegado.
Todo el software hotelero se vende en los Países Bajos y/o Bélgica. Probar conexión comprueba los datos. Código por conexión: apps/pos-server/src/lib/pms/<naam>.ts.
- Autoservicio (desactivado por defecto): el huésped carga él mismo su pedido a su habitación, en el quiosco y/o en la tienda online (recogida y entrega, no en pedidos en mesa). Introduce su número de habitación y su apellido; la caja comprueba con el software hotelero si ese huésped se aloja ahora en esa habitación. Con un máximo por pedido (por defecto € 150), y tras 5 intentos fallidos en un cuarto de hora, primero debe ir a recepción. El mensaje nunca dice quién se aloja en una habitación.
- Cobrar: con la conexión activada existe la forma de pago Cargar a la habitación. Busque al huésped por nombre o número de habitación (solo huéspedes alojados ahora en el hotel) y toque Cargar a la habitación .... La caja registra el ticket por tipo de IVA en la cuenta del hotel del huésped; el huésped paga al hacer el check-out.
- Bélgica: si el pedido ya está en la mesa en la caja negra, primero pasa de la mesa a la habitación (signCostCenterChange a ROOM, UC4101); el ticket va a la caja negra como crédito de habitación (ROOM_CREDIT).
- Si el registro en el software hotelero falla (sin internet), la venta se guarda igualmente y el registro aparece como Error en Ajustes → Hotel, con Reintentar.
- Informes y contabilidad: Cargar a la habitación (hotel) es una forma de pago propia en el informe X y Z, en el resumen diario y en el archivo de auditoría (XAA).
Código: apps/pos-server/src/lib/hotel.ts, routes/hotel.ts, las conexiones en lib/pms/, catálogo packages/shared/src/hotelcatalogus.ts; pantalla Hotel.tsx. Registro: Hotel. Los secretos (tokens) solo se guardan en la base de datos, nunca en pantalla.
Gestión de vinos con Vinify
Ajustes → Gestión de vinos (desactivado por defecto; al desactivarlo se conserva todo). Vinify gestiona la bodega, la carta de vinos y el stock, y es la fuente principal de los vinos. Según los requisitos de TPV de Vinify, la caja ofrece una API con la que Vinify puede:
Autenticarse, con los tres métodos que admite Vinify (el administrador activa cuáles):
- ID de API y clave de API (
X-Api-IdyX-Api-Key, oAuthorization: Bearer <id>:<sleutel>); - Clave de API y secreto de API con una firma:
X-Api-Key,X-TimestampyX-Signature= hex HMAC-SHA256(secret,<timestamp>\n<METHODE>\n<pad met query>\n<sha256 van de body>), con una antigüedad máxima de 5 minutos.
La clave y el secreto los crea la caja (se muestran una vez); las pantallas solo indican si están rellenados. Accesible a través del portal en https://<portaal>/vinify/<kassa-id>/... (sin puertos abiertos en el local; la dirección está en Ajustes → Gestión de vinos). Qué productos son vino: lo que crea Vinify, más los grupos que marques. Si Vinify da una dirección a la que enviar las ventas, la caja también las envía ella misma (push, con un token): tras cada ticket cobrado y cada 5 minutos lo que aún no se haya enviado. Vinify activa la integración con HorecaPOS (hello@vinify.no). Todo queda en el registro. No confundir con Vinify.nl, una tienda de vinos online: aparece entre los proveedores (Pedir a proveedores).
Introducción rápida de dirección con código postal y número
Se activa en Ajustes → Negocio → Introducción rápida de dirección (desactivado por defecto; solo para un negocio en los Países Bajos). Escriba el código postal y el número (también con letra o complemento, p. ej. 12A o 12-1) y toque Buscar dirección: se rellenan la calle, el número, el código postal y la localidad. Si en ese número hay varias direcciones (12, 12A, 12B), elija la correcta. Después puede seguir cambiándolo todo usted mismo.
- En los datos del negocio (Ajustes → Negocio, encima de la dirección).
- En un cliente de la tarjeta de cliente: en la caja con un cliente nuevo y en Informe → Clientes. Para ello, los clientes tienen una dirección (opcional): calle y número, código postal y localidad.
- Las direcciones vienen del Locatieserver de PDOK, gratuito (las direcciones oficiales de los Países Bajos, BAG): no hace falta cuenta ni clave, pero sí internet. Sin internet o con una dirección belga, escriba la dirección usted mismo.
Aviso de nueva versión
Se activa en Ajustes → Negocio → Aviso de actualización (desactivado por defecto).
- Caja actualizada: si el servidor de caja se ha actualizado mientras una tableta aún tiene abiertas las pantallas antiguas, arriba aparece "La caja se ha actualizado (versión …)" con Actualizar. La tableta lo comprueba cada 5 minutos, cuando la pantalla vuelve a estar visible y tras un reinicio del servidor.
- Actualización disponible: si la caja está vinculada al portal de gestión (
PORTAAL_URL/PORTAAL_SLEUTEL) y allí se ha rellenadoNIEUWSTE_VERSIE, quien puede gestionar los ajustes ve "Actualización disponible: versión …" (con la explicación deUPDATE_NOTITIE). Más tarde oculta el aviso en esa tableta hasta que haya una versión más nueva. La actualización se hace como siempre conscripts\windows\update.cmd(ver Actualizar).
Plataformas de reservas
Las reservas de TheFork, Formitable, Zenchef, Resengo (solo Bélgica), OpenTable (solo Países Bajos), PlanPanther, RestoManager y Aqqo (solo Países Bajos) llegan automáticamente a la caja y al plano de sala. Se activa en Ajustes → Plataformas de reservas (desactivado por defecto). Solo es posible si Reservas está activado.
- País del local: solo puedes elegir plataformas que funcionen en el país del local (Resengo solo en Bélgica, OpenTable y Aqqo solo en los Países Bajos). El servidor también lo comprueba.
- Varias plataformas a la vez: puedes conectar varias plataformas a la vez, por ejemplo TheFork y Formitable. Dos plataformas nunca reciben la misma mesa en la misma franja horaria; la segunda reserva entra entonces sin mesa.
- + Conectar plataforma: elige la plataforma y rellena los datos. Los secretos (client secret, clave de notificación) nunca aparecen en el resumen; dejar vacío = conservar, Borrar = eliminar.
- TheFork (API B2B pública): Restaurant UUID, Client ID y Client Secret (se solicitan a TheFork). Si la caja cancela, también cancela en TheFork.
- Formitable, Zenchef, Resengo, OpenTable, PlanPanther, RestoManager, Aqqo: su API es solo para socios o no es pública (PlanPanther, RestoManager y Aqqo: una integración de caja se acuerda con ellos). Se reconocen los eventos de Formitable (
booking.created,.changed,.canceled,.checkin,.checkout). - En el plano de sala: si una mesa de la caja se llama igual que la mesa de la plataforma y está libre en esa franja horaria, la reserva va a esa mesa; si no, queda sin mesa (elígela a la llegada). Una reserva que vuelve a entrar se actualiza, no se duplica. En el resumen aparece "vía TheFork".
- Estado: si la plataforma cancela o notifica un no-show, la caja lo aplica. Lo que en la caja ya ha llegado, sigue como llegado.
- Notificar (no-shows de vuelta): introduce una URL de notificación (por ejemplo, de tu servicio de integración). La caja envía cada cambio hecho en la caja (llegada, no-show, cancelada, cobrada con importe) en JSON:
{ platform, id, status, statusEn, bedrag, valuta, tafel, tijdstip, gemeldOp }(importe en céntimos, solo si está cobrada), conAuthorization: Bearer <terugmeld-sleutel>si la introduces. Si falla, la caja lo reintenta cada minuto y el error aparece en la plataforma. Lo que vino de la propia plataforma no se devuelve. - Reserva de prueba: crea una reserva tal como la enviaría la plataforma.
- Eliminar: la conexión y la clave desaparecen; las reservas se quedan.
- Todos los cambios quedan en el registro (sin secretos).
Programas de fidelización y reseñas
Dos interruptores independientes en Ajustes → Fidelización y reseñas (ambos desactivados por defecto; entonces no se ve nada en ninguna parte). Si los desactiva, se conservan los ajustes y todo lo que ya ha ocurrido.
Programa de fidelización de otra plataforma: el cliente acumula puntos en Joyn (Bélgica) y/o Piggy (Leat; Países Bajos y Bélgica). Es independiente de la tarjeta de cliente propia de la caja, que puede seguir activa al mismo tiempo.
- Varios a la vez: en Bélgica Piggy y Joyn pueden estar activos juntos, cada uno con sus propios datos (elige la plataforma, rellena, Guardar; Modificar y Eliminar por plataforma). El cliente recibe por programa un código QR propio en el ticket, un enlace propio en el ticket enviado por correo y un botón propio en la tienda online, y acumula una vez por pedido en cada programa. Lo que ya estaba configurado sigue funcionando sin más.
- Código QR en el ticket: después de cobrar, bajo el ticket aparece un código QR con "Escanea y acumula puntos en ...". El ticket enviado por correo incluye un enlace, y la tienda online (recogida y entrega a domicilio) muestra un botón en la página del pedido y un enlace en el correo de confirmación. Un pedido solo da puntos una vez: ticket, correo y tienda online usan el mismo código único (el número del pedido). Puede desactivar "Código QR en el ticket impreso"; el correo y la tienda online siguen recibiendo el enlace.
- Piggy, modo "Código QR y enlace": introduzca la dirección de su portal de clientes de Piggy, el Shop UUID y el Account secret (Piggy Business Dashboard). Funciona sin internet: la caja crea el enlace por sí misma.
- Piggy, modo "Abonar al instante": introduzca además un personal access token (Piggy → Marketplace → Private App). Si la caja envía el ticket por correo y el cliente con esa dirección ya es miembro, la caja abona los puntos al instante; en el ticket aparece entonces "Puntos abonados en Piggy". La caja nunca crea un miembro nuevo; sin miembro (o sin dirección de correo) = el código QR.
- Joyn, modo "Código QR y enlace": con la partner key, la shop reference y el shared secret de Joyn (se solicitan a api-integration@joyn.be). Funciona sin internet. El código QR es válido 2 horas.
- Joyn, modo "A través de la API": con la shop API key (active la conexión en el portal de comercios de Joyn). Al cobrar, la caja solicita un código de puntos a Joyn. El canje se hace como siempre en el Joyn-iPad.
- Crear enlace de ejemplo: comprueba que los datos son correctos (un enlace de 10 €; ábralo solo para verlo).
- Solo se pueden elegir las plataformas del país del negocio; los secretos se guardan solo en la base de datos y nunca aparecen en pantalla (dejar vacío = conservar).
Pedir reseñas: después de la visita, un único correo con un botón a Google y/o Trustpilot.
- Unas horas más tarde (configurable, por defecto 3) el cliente recibe el correo, en el idioma del ticket.
- Tienda online: en recogida y entrega a domicilio, la tienda online envía el correo por sí misma, unas horas después de cerrar el pedido en la caja, en el idioma del cliente.
- Google: pegue el enlace de reseña de su Perfil de Empresa (Google → su Perfil de Empresa → Pedir reseñas,
https://g.page/r/.../review) o introduzca el Place ID. - Trustpilot: introduzca el dominio de su negocio (el botón lleva a
trustpilot.com/evaluate/<domein>). Si tiene en Trustpilot una dirección de invitación (Automatic Feedback Service,...@invite.trustpilot.com), introdúzcala también: el correo se envía entonces con copia oculta (CCO) a Trustpilot, con el nombre, la dirección de correo y el número de ticket de forma invisible, y Trustpilot envía la invitación por su cuenta (entonces sin botón propio de Trustpilot). Solo Trustpilot con dirección de invitación: la caja envía el correo solo para Trustpilot. - No demasiado a menudo: el mismo cliente (dirección de correo) recibe como máximo una solicitud por periodo (por defecto 90 días; 0 = cada vez). Para ello, la caja guarda solo un hash de la dirección; la dirección de correo en sí se borra en cuanto se envía el correo (si falla, tras tres intentos, y si no, a los 14 días).
- Código QR en el ticket (opcional): también un código QR para una reseña bajo el ticket impreso.
- Ejemplo del correo y Borrar correos pendientes (las direcciones se borran entonces al instante). El registro muestra review_gevraagd con a***@dominio.es.
- Google y Trustpilot prohíben recompensar una reseña y pedirla solo a clientes satisfechos ("review gating"). Por eso la caja pide lo mismo a todos y no da nada a cambio de una reseña.
- Leer y responder reseñas en la caja: consulta Gestión de reseñas más abajo.
Integración con Mailchimp y Klaviyo
Sus clientes de la tarjeta de cliente en su propio programa de correo: en Ajustes → Negocio → Mailchimp y Klaviyo (debajo del marketing por SMS y correo electrónico). No hay interruptor: sin una integración con una lista elegida no pasa nada.
- Conectar: con una clave API (Mailchimp: Profiel → Extra → API keys; Klaviyo: una clave privada
pk_…con permisos de escritura para Lists, Profiles, Subscriptions, Events, Campaigns y Templates). El secreto de cliente y la clave no vuelven a mostrarse nunca (dejar vacío = conservar). Después elija la lista (Mailchimp: audience). - Clientes: quien dio su consentimiento para recibir correos va a la lista (suscrito), con nombre, apellidos, teléfono, cumpleaños y puntos (Mailchimp: campo
PUNTEN, que crea la propia caja; Klaviyo: propiedadpunten). Consentimiento retirado, correo electrónico cambiado o cliente eliminado: dado de baja. Solo se vuelve a enviar lo que ha cambiado. Con una integración, la caja (y la casilla "ofertas" de la tienda online) también pide a los clientes nuevos su consentimiento para correos, y se puede cambiar en Informe → Clientes, incluso sin el marketing por correo propio. - Bajas: quien se da de baja en Mailchimp o Klaviyo tampoco tiene ya consentimiento para correos en la caja (registro: "dado de baja en Mailchimp"). La caja no vuelve a suscribir a quien se dio de baja por sí mismo.
- Pedidos: cada ticket cobrado de un cliente de la lista se envía como evento (Mailchimp:
bestelling, con importe, número de ticket y cantidad; Klaviyo:Placed Order, con el valor en euros). Con ello crea correos automáticos en su programa de correo, p. ej., tras el primer pedido o cuando alguien lleva un mes sin venir. Los tickets anteriores a la elección de la lista no se envían. - Campañas: en Informe → Marketing también puede enviar una campaña mediante Mailchimp o Klaviyo (vea Marketing por SMS y correo electrónico); la caja crea entonces allí la campaña y la envía.
- Actualizar: cada 5 minutos, o con Actualizar ahora. Desconectar: se quita de la caja; en Mailchimp y Klaviyo todo se mantiene. Las claves se guardan en la base de datos (incluidas en la copia de seguridad, no en la exportación de la configuración).
Código: lib/mailinglijst.ts, routes/mailinglijst.ts y MailingKoppelingen.tsx.
BI y exportación de datos
Los datos de ventas a Power BI, Looker Studio, Excel, Google Sheets, Tableau, Qlik Sense, Metabase, un servicio de BI (por ejemplo YourBI, BI4Horeca o Moore DRV) o un data warehouse propio. Se activa en Ajustes → BI y exportación de datos (desactivado por defecto). Solo lectura: una integración no puede cambiar nada en la caja. Sin datos de clientes.
- Datos: tiques (también abonos), productos vendidos (líneas de tique), pagos, facturación por día, facturación por hora, anulaciones, productos, empleados (sin PIN) y horas trabajadas. Importes en euros con un punto como separador decimal, horas en la hora local del negocio.
- + Integración: elija el programa y el modo. Cada programa admite uno o más modos; puede tener varias integraciones a la vez (también para el mismo programa).
- El programa obtiene los datos por sí mismo (API): la caja facilita una única vez una clave de solo lectura. Periodo con
?van=&tot=(AAAA-MM-DD) o una dirección fija con?periode=(hoy, ayer, 7d, 30d, 90d, 365d, semana, mes, mes anterior, año); como máximo 366 días, como máximo 200.000 líneas. La clave enAuthorization: Bearer,X-Sleutelo?sleutel=. - A través del portal: si la caja está vinculada al portal de clientes, la misma dirección también funciona desde fuera del local, sin abrir ningún puerto:
https://<portaal>/bi/<kassa-id>/<gegevens>?periode=90d&formaat=csv&sleutel=.... Así el servicio Power BI la actualiza según la programación (sin puerta de enlace) y Google Sheets puede obtenerla con=IMPORTDATA("...")(también la fuente para Looker Studio). La caja muestra la dirección en la integración. - Vista de cadena a través del portal de clientes (varios negocios): una dirección y una clave para todas tus cajas juntas. En cada caja que deba participar, activa Vista de cadena a través del portal de clientes (debajo del interruptor de BI) y crea una clave en el portal de clientes en Mis cajas → BI para todos tus negocios. Después:
https://<portaal>/bi/keten/<gegevens>?periode=90d&formaat=csv&sleutel=hpk_.... El portal obtiene los datos de cada caja y los combina, conkassaIdyzaaken cada línea. Las cajas que están sin conexión o no participan aparecen enontbrekend(JSON) y en la cabeceraX-Ontbrekend. La caja en sí no necesita una clave propia para esto; desactivarlo en la caja o en el portal de clientes lo detiene. - Con un token, este se envía como
Authorization: Bearery se incluye una firma enX-HorecaPOS-Handtekening(sha256=HMAC del contenido). Si falla, la caja lo vuelve a intentar cada minuto; nada se envía dos veces. Con desde envía también tiques anteriores. - La caja entrega archivos: cada día (a una hora fija, el día anterior; los días perdidos se recuperan) o cada hora (hoy hasta ahora), como CSV (coma, o punto y coma para Excel neerlandés) o JSON, a una carpeta en el PC de la caja (por ejemplo una carpeta de OneDrive o SharePoint para Power BI o Excel), a un servidor FTP(S) o SFTP o por correo electrónico. Nombres de archivo:
horecapos_<gegevens>_<datum>.csv. - Enviar prueba (push) y Exportar ahora (archivo) en la integración.
- Descargar usted mismo: elija datos, periodo y formato.
- Plantilla de Power BI (
.pbit): un informe listo para Power BI Desktop, con Descargar plantilla de Power BI en BI y exportación de datos. Primero cree una conexión API (Power BI). En el modelo: una tabla por conjunto de datos con los tipos correctos, un calendario (año, mes, semana, día de la semana), relaciones (fecha → calendario, líneas de ticket → productos, horas trabajadas → empleados) y medidas (ventas con y sin IVA, IVA, propinas, tickets, comensales, media por ticket y por comensal, cantidad vendida, ventas por producto, pagado, anulaciones, horas trabajadas, ventas por hora trabajada). Tres páginas: Resumen (cifras clave, ventas por día, día de la semana y hora, formas de pago), Productos (por grupo y por producto) y Personal (horas y ventas por empleado). A través del portal, el servicio Power BI también lo actualiza según una programación. - Los secretos (token, contraseña, clave) nunca aparecen en el resumen; dejar vacío = mantener, Borrar = eliminar. Todo queda en el registro (sin secretos).
Nóminas y planificación
Con el Fichaje de entrada y salida del personal activado (Ajustes → Negocio), en Ajustes → Horarios de trabajo aparece abajo Nóminas y planificación (permiso Gestionar ajustes), en dos bloques separados. Si el fichaje está desactivado, no hay horas: entonces solo aparece el bloque Planificación de personal (las ventas, en directo o como archivo de ventas) abajo en Ajustes → Contabilidad, bajo el título Ventas a su planificación:
- Administración de nóminas (payroll): elija el programa de nóminas o (Bélgica) el secretariado social, rellene sus campos y, para cada empleado, su número de empleado en ese programa. Después crea para un periodo el archivo con las horas trabajadas (turnos cerrados, por empleado y por día de fichaje de entrada) y las ventas por empleado (IVA excluido, lo que él o ella cobró): listo para usar con Loket.nl (Variabele gegevens, total por empleado durante el periodo, línea de cabecera
aanslnr;persnr;ploeg;<looncomponent>) y SD Worx Bélgica (Tijdsregistratie, posiciones fijas, por empleado y día); en otro caso, la lista de horas (CSV: Fecha; Número de empleado; Nombre; Horas; Ventas sin IVA). Los empleados sin número de empleado no se incluyen en el archivo de Loket o SD Worx; la caja indica quiénes son. - Planificación de personal (WFM): elija el sistema de planificación. Volver a enviar sobrescribe. Además, la lista de ventas (CSV por día y hora, sin y con IVA) y, para Strobbo, el archivo Excel para Importeer omzet.
- Solo los programas que funcionan en el país del negocio, por grupo y por orden alfabético; el servidor rechaza un programa de otro país (400).
- Las claves y los tokens nunca se muestran en pantalla.
- Afecta a la contabilidad: los costes salariales los contabiliza el programa de nóminas en la contabilidad; las ventas, la caja (Ajustes → Contabilidad). AFAS Payroll y Exact Online Loon están en el mismo entorno que la contabilidad de AFAS y Exact.
- Esto no es posible en la copia de la caja en el portal (lo hace la caja del negocio).
- De varios programas la API no es pública o solo está disponible para socios (entre otros, Loket, Nmbrs, Nostradamus, Employes, Shyfter, Planday, Eitje): figuran como bajo petición; hasta entonces, el archivo. El formato de SD Worx y Strobbo procede de su documentación: haga revisar la primera importación.
| Programa | NL | BE | Live | Archivo | Observación |
|---|---|---|---|---|---|
| Software de nóminas y gestorías de nóminas | |||||
| ADP | ✓ | ✓ | bajo petición | Lista de horas por empleado y día (CSV) | Conexión a través de ADP (bajo petición); hasta entonces, la lista de horas por empleado y día. |
| AFAS Payroll | ✓ | – | bajo petición | Lista de horas por empleado y día (CSV) | Nóminas en AFAS Profit (mismo entorno que la contabilidad en AFAS); conexión bajo petición, hasta entonces la lista de horas. |
| BCS HR | ✓ | – | bajo petición | Lista de horas por empleado y día (CSV) | Conexión a través de BCS (bajo petición); hasta entonces, la lista de horas. |
| Buddee | ✓ | – | bajo petición | Lista de horas por empleado y día (CSV) | Software de RR. HH. y nóminas; conexión bajo petición, hasta entonces, la lista de horas por empleado y día. |
| Employes | ✓ | – | bajo petición | Lista de horas por empleado y día (CSV) | Employes tiene una API para horas trabajadas (token del cliente); la conexión llegará tras acordarla con Employes. Hasta entonces, la lista de horas. |
| Exact Online Loon | ✓ | – | bajo petición | Lista de horas por empleado y día (CSV) | Nóminas en Exact Online (mismo entorno que la contabilidad en Exact); conexión bajo petición, hasta entonces la lista de horas. |
| Humanwave | ✓ | – | bajo petición | Lista de horas por empleado y día (CSV) | Conexión a través de Humanwave (bajo petición); hasta entonces, la lista de horas. |
| Loket.nl | ✓ | – | bajo petición | Loket.nl Variabele gegevens (CSV), Lista de horas por empleado y día (CSV) | Archivo para Werkgever → Collectieve mutaties → Importeren → Variabele gegevens (horas por empleado durante el periodo). En directo mediante la API de Loket tras darse de alta en Loket. |
| Nmbrs | ✓ | – | bajo petición | Lista de horas por empleado y día (CSV) | Lista de horas por empleado y día, para introducir en Nmbrs. En directo mediante la API de Nmbrs tras registrar una app en Nmbrs. |
| Salar (Van Winckel) | ✓ | – | – | Lista de horas por empleado y día (CSV) | Lista de horas por empleado y día para la gestoría; el formato de importación de Salar no es público. |
| Secretariados sociales | |||||
| Acerta | – | ✓ | bajo petición | Lista de horas por empleado y día (CSV) | Secretariado social: el formato del archivo de prestaciones se lo facilita Acerta; hasta entonces, la lista de horas. |
| Group S | – | ✓ | bajo petición | Lista de horas por empleado y día (CSV) | Secretariado social: el formato del archivo de prestaciones se lo facilita Group S; hasta entonces, la lista de horas. |
| Liantis | – | ✓ | bajo petición | Lista de horas por empleado y día (CSV) | Secretariado social con una API que Liantis habilita por empresa; hasta entonces, la lista de horas. |
| Partena Professional | – | ✓ | bajo petición | Lista de horas por empleado y día (CSV) | Secretariado social: el formato del archivo de prestaciones se lo facilita Partena; hasta entonces, la lista de horas. |
| SD Worx | ✓ | ✓ | – | SD Worx Tijdsregistratie (TXT), Lista de horas por empleado y día (CSV) | Bélgica: archivo Tijdsregistratie (registro horario; posiciones fijas, por empleado y día) para "Tijdsregistratie importeren". Países Bajos: la lista de horas. |
| Securex | – | ✓ | bajo petición | Lista de horas por empleado y día (CSV) | Secretariado social: las conexiones se hacen a través de socios; hasta entonces, la lista de horas. |
| Planificación y registro horario | |||||
| Book'u | – | ✓ | bajo petición | Ventas por día y hora (CSV) | Book'u se encarga de las declaraciones Dimona; una conexión con la caja es posible bajo petición. Hasta entonces, la lista de ventas. |
| Deputy | ✓ | ✓ | ✓ | Ventas por día y hora (CSV) | En directo: las ventas por hora van cada hora a Deputy (Sales). Un token permanente se crea en Deputy en las integraciones de API. |
| Dyflexis | ✓ | – | ✓ | Ventas por día y hora (CSV) | En directo: las ventas por hora van cada hora a Dyflexis (information streams). El token de API lo obtiene a través de Dyflexis. |
| Eitje | ✓ | – | bajo petición | Ventas por día y hora (CSV) | Eitje se conecta a través de su programa de socios; hasta entonces, la lista de ventas por día y hora. |
| Exact Horeko | ✓ | – | bajo petición | Ventas por día y hora (CSV) | Conexión a través de Horeko (bajo petición); hasta entonces, la lista de ventas. |
| Fooks | ✓ | – | bajo petición | Ventas por día y hora (CSV) | Fooks desarrolla él mismo las conexiones con cajas; hasta entonces, la lista de ventas por día y hora. |
| L1NDA | ✓ | – | bajo petición | Ventas por día y hora (CSV) | L1NDA desarrolla las conexiones con cajas junto con socios; hasta entonces, la lista de ventas por día y hora. |
| Mr. Einstein | ✓ | – | bajo petición | Ventas por día y hora (CSV) | RR. HH., turnos y costes salariales para hostelería; Mr. Einstein desarrolla las conexiones con cajas junto con el proveedor de caja (solicítalo en mreinstein.nl/contact). Hasta entonces, la lista de ventas por día y hora. |
| Nostradamus | ✓ | ✓ | bajo petición | Ventas por día y hora (CSV) | Nostradamus recibe las ventas a través de su interfaz de caja (token de API y dominio del negocio, previa solicitud a Nostradamus); hasta entonces, la lista de ventas por día y hora. |
| Plan-Me | – | ✓ | bajo petición | Ventas por día y hora (CSV) | Plan-Me se encarga de las declaraciones Dimona; una conexión con la caja es posible bajo petición. Hasta entonces, la lista de ventas. |
| Planday | ✓ | ✓ | bajo petición | Ventas por día y hora (CSV) | Planday tiene una API abierta para sistemas de caja; la conexión llegará tras acordarla. Hasta entonces, la lista de ventas. |
| Shiftbase | ✓ | – | ✓ | Ventas por día y hora (CSV) | En directo: las ventas por día van cada hora al diario del departamento en Shiftbase. La clave de API se crea en Shiftbase en App center. |
| Shyfter | – | ✓ | bajo petición | Ventas por día y hora (CSV) | Shyfter se encarga de las declaraciones Dimona y acepta ventas por día a través de su API; la conexión llegará tras acordarla con Shyfter. Hasta entonces, la lista de ventas. |
| Strobbo | ✓ | ✓ | – | Importación de ventas de Strobbo (Excel), Ventas por día y hora (CSV) | Archivo Excel para Planning → € → Importeer omzet (ventas por día y por puesto de trabajo). |
| Tamigo | ✓ | ✓ | bajo petición | Ventas por día y hora (CSV) | Conexión a través de Tamigo (bajo petición); hasta entonces, la lista de ventas. |
| Werktijden.nl | ✓ | – | – | Ventas por día y hora (CSV), Lista de horas por empleado y día (CSV) | Werktijden.nl registra él mismo las horas y (todavía) no acepta ventas a través de su API; las listas sirven para comparar. |
| XPS Logic | ✓ | – | bajo petición | Ventas por día y hora (CSV) | XPS Logic está orientado a personal flexible y de agencias de trabajo temporal; una conexión es posible bajo petición. Hasta entonces, la lista de ventas. |
Requisitos legales en Bélgica y los Países Bajos
Lo que exige la ley y lo que hace HorecaPOS para cumplirlo (pida a su contable que confirme lo que se aplica a su negocio):
| País | Requisito | HorecaPOS |
|---|---|---|
| Bélgica | Sistema de caja registradora (GKS 2.0) con caja negra para los negocios de hostelería que deben cumplirlo (entre otros, con más de € 25.000 de ventas anuales de comidas, IVA excluido) | conexión con la caja negra (FDM), los datos obligatorios en el tique y los contadores en el informe Z (país Bélgica en Ajustes → Negocio, FDM_API_KEY y FDM_TERMINAL_ID); arriba en Ajustes → Negocio elige si el negocio está obligado al GKS: Sí = cobrar solo con una caja negra que funcione, No = sin ella, con una declaración del administrador (cada año de nuevo); mientras no se elija nada, no se puede cobrar. La caja cuenta la facturación de comidas y avisa por encima de 25.000 € |
| Bélgica | Facturación electrónica vía Peppol: desde el 1 de enero de 2026, las facturas entre empresas belgas sujetas al IVA deben ser obligatoriamente electrónicas y estructuradas (UBL, Peppol BIS 3); los tiques de caja a consumidores no están incluidos | exportación de la facturación diaria como UBL según Peppol BIS Billing 3.0 para el programa de contabilidad (Exportar contabilidad); y facturas a partir de un tique para clientes empresariales (Ajustes → Facturas): UBL según Peppol BIS Billing 3.0 más una factura para imprimir, envío por correo electrónico, a través de Billit a la red Peppol, a una dirección propia o descarga (ver Facturas para clientes empresariales) |
| Bélgica | IVA hostelería desde el 1 de marzo de 2026: comidas para llevar y bebidas sin alcohol 12% (en el local y para llevar), alcohol 21%, comidas que el cliente aún prepara él mismo (fondue, gourmet) 6% | Asistente de IVA (Ajustes → Leyes y normas): el tipo de producto, el tipo de IVA correcto de inmediato o a partir de una fecha; las descripciones de los tipos A/B/C se han actualizado |
| Países Bajos | Ley del alcohol: nada de alcohol a menores de 18, tampoco en la venta online ni a domicilio (comprobar la edad en la entrega) | Control de edad: productos con alcohol; en la tienda online el cliente confirma él mismo 18+ (casilla no marcada de antemano) con el aviso de que se comprobará la edad en la entrega; "18+" en la comanda, el albarán de entrega y el tique de caja |
| Países Bajos | Vasos y envases desechables (SUP): desde 2024 un precio aparte y visible para los envases desechables de plástico para llevar y a domicilio | Recargo por desechables por producto, como línea aparte en el tique (IVA del producto) y por separado en la facturación |
| Países Bajos | Depósito en latas y botellas de plástico | Depósito por producto (0,15 € / 0,25 €), línea aparte sin IVA para llevar y a domicilio, por separado en la facturación |
| Países Bajos | Pago en efectivo: desde el 1 de enero de 2026, nada de 3.000 € o más en efectivo por bienes | Aviso para llevar y a domicilio (también en el cajero de efectivo); se puede confirmar y queda en el registro |
| Países Bajos y Bélgica | Cambio de IVA: un tipo o un producto recibe otro porcentaje de IVA a partir de una fecha | Programar cambio de IVA: la caja lo ejecuta el mismo día (en Bélgica por producto, las letras A/B/C/D son fijas) |
| Países Bajos | Alojamiento (pernoctaciones) 21% desde el 1 de enero de 2026 | tipo de IVA configurable por producto |
| UE | Directiva Omnibus: un precio "antes" tachado solo puede ser el precio más bajo de los últimos 30 días | la tienda online solo tacha frente al precio más bajo de 30 días (la caja guarda el historial de precios; las happy hours que se repiten cada semana también cuentan) |
| UE | European Accessibility Act (desde el 28 de junio de 2025): tiendas online accesibles (WCAG 2.1 AA) | la tienda online funciona con teclado y lector de pantalla (enlace "Ir al contenido", foco visible, etiquetas) y tiene una declaración de accesibilidad (enlace al pie) |
| Países Bajos | XML Auditfile Financieel (XAF): el estándar de la Administración Tributaria neerlandesa (Belastingdienst) para transferir (una parte de) la contabilidad; XAF 4.0 es obligatorio a partir de 2027 | exportación como XAF 4.0 (Exportación contable) |
| Países Bajos | Sistema de cobro fiable: conservar los datos de la caja (todos los tiques, correcciones y eventos) y poder entregarlos en formato digital en una inspección; para ello la Administración Tributaria neerlandesa (Belastingdienst) recomienda el XML Auditfile Afrekensystemen (XAA) | exportación como XAA 3.2 (Informe → Ventas por periodo → Archivo de auditoría de caja), opcionalmente firmado con el certificado del proveedor |
| Bélgica | Registro de presencia con un sistema de caja registradora: registrar en el sistema de caja el inicio y el fin de la jornada de los trabajadores | Fichaje de entrada y salida del personal (Ajustes → Negocio; Obligatorio = fichar primero la entrada) se registra en la caja negra |
| Bélgica | Dimona: declarar ante la RSZ cada ocupación (también flexi-jobs y estudiantes) antes de su inicio | de eso se encarga su secretariado social o su herramienta de planificación (p. ej. Shyfter, Book'u, Plan-Me); HorecaPOS facilita las horas trabajadas y las ventas (Ajustes → Horarios de trabajo → Nóminas y planificación) |
| Países Bajos | Registro de los tiempos de trabajo y descanso (Ley de Jornada Laboral, Arbeidstijdenwet) | Fichaje de entrada y salida con las horas trabajadas por empleado, modificables por el administrador (con registro de cambios), y la lista de horas para el programa de nóminas |
| Países Bajos y Bélgica | HACCP / seguridad alimentaria: documentar temperaturas (refrigeración, congelador, mantenimiento en caliente, cocción, enfriamiento rápido, recepción) y limpieza; NL Hygiënecode voor de Horeca (NVWA), BE autocontrol FAVV (guía G-023) | Registro HACCP en la caja (Ajustes → Leyes y normas, botón HACCP arriba): puntos de medición con límites, tareas de limpieza y control, medida correctora obligatoria ante una desviación, no modificable, resumen con registros omitidos como CSV o impresión (ver Registro HACCP) |
| Países Bajos y Bélgica | Obligación de conservación (NL 7 años, BE 10 años) | los tiques, los informes Z y el registro están en la base de datos y en las copias de seguridad; el registro no se puede modificar ni borrar desde la caja |
Leyes y normas
Ajustes → Leyes y normas (administrador; el asistente de IVA también con el permiso Gestionar productos). Todo está desactivado por defecto; sin estos ajustes la caja funciona como siempre.
- Control de edad para alcohol (18+): en Productos marque Contiene alcohol (o use el asistente de IVA). Para llevar y a domicilio con alcohol aparece "18+" en la comanda, el tique de caja y en la pantalla de pedidos. En la tienda online el cliente confirma él mismo que tiene 18 años o más (la casilla no viene marcada) y ve que se comprobará la edad en la entrega.
- Recargo por desechables (Países Bajos): un importe por producto (precios orientativos: vaso 0,25 €, envase de comida 0,50 €, envase pequeño 0,05 €). Para llevar y a domicilio la caja añade sola una línea "Recargo por desechables" en el tique (con el IVA del producto); acompaña automáticamente a los productos (la base de datos lo controla, también tras anular, trasladar o cambiar el tipo de pedido) y figura por separado en la facturación. En el local no hay recargo. Thuisbezorgd.nl y la tienda online cobran su propio recargo.
- Depósito (Países Bajos): por producto (0,15 € lata/botella, 0,25 € botella grande), línea "Depósito" sin IVA, solo para llevar y a domicilio.
- Efectivo de 3.000 € o más (Países Bajos, prohibido para bienes desde el 1-1-2026): para llevar y a domicilio, un aviso al cobrar y en el cajero de efectivo; el empleado puede confirmar (p. ej. catering como servicio), lo que queda en el registro. Comer y beber en el local es un servicio: sin aviso.
- Asistente de IVA: el tipo de cada producto (comida, bebida sin alcohol, bebida alcohólica, alimentos sin preparación, otros; primero una suposición basada en el nombre y el grupo). La caja muestra el tipo correcto en el local y para llevar (Bélgica desde el 1-3-2026: comidas y refrescos 12%, también para llevar; alcohol 21%; alimentos sin preparación 6%. Países Bajos: 9% y 21%) y lo aplica, de inmediato o a partir de una fecha.
- Programar cambio de IVA: un producto a otro tipo, o (solo Países Bajos) un tipo con un nuevo porcentaje, a partir de una fecha. La caja lo ejecuta ese día por sí sola (comprueba cada cuarto de hora y al arrancar).
Las facturas (obligatorias entre empresas en Bélgica) se describen en Facturas para clientes empresariales. Pendiente: GKS 2.0, consultar cómo va la certificación (ver docs/backlog-concurrenten.md).
Facturas para clientes empresariales
Ajustes → Facturas (administrador; desactivado por defecto): activa Facturas para clientes empresariales (UBL / Peppol). Una vez activado, debajo aparecen Pago a crédito, los Datos de la factura, los Servicios Peppol, la Conexión bancaria (con el pago a crédito) y la lista de todas las facturas. En Bélgica la facturación electrónica entre empresas es obligatoria desde el 1-1-2026.
- Facturas para clientes empresariales: Tickets → elige el ticket → Factura. Introduce el cliente (o elige uno anterior); la caja crea una factura numerada (p. ej. F2026-0001, correlativa por año), como UBL según Peppol BIS Billing 3.0 y como factura para imprimir o guardar en PDF. Envío por correo electrónico (ambos como adjunto, opcionalmente con copia al gestor), vía Billit a la red Peppol (
BILLIT_API_KEY,BILLIT_PARTY_ID), vía Storecove (STORECOVE_API_KEY,STORECOVE_LEGAL_ENTITY_ID; el destinatario se obtiene del Peppol ID del cliente, p. ej. 0208 → BE:EN, 0106 → NL:KVK, si no, por correo vía Storecove) o vía Banqup de Unifiedpost (BANQUP_CLIENT_ID,BANQUP_CLIENT_SECRET,BANQUP_SPACE_ID;BANQUP_SANDBOX=1para el entorno de pruebas; Banqup valida el UBL y lo entrega él mismo), a una dirección propia (FACTUUR_HTTP_URL, p. ej. un programa de contabilidad u otro servicio Peppol) o descargar. Una factura por ticket; el ticket ya está pagado, por tanto "pagada". Número KvK/de empresa, IBAN, Peppol ID, prefijo y plazo de pago en Datos de la factura. Todas las facturas al final de la pestaña (permiso Facturación por periodo). - Las claves, secretos y cabeceras nunca se muestran (solo "rellenado"; dejar vacío = conservar, Borrar = eliminar) y no se registran en el registro (solo qué campos cambiaron). Se guardan en la base de datos (
vestiging.peppol_gegevens): incluidas en las copias de seguridad, no en la exportación de la configuración.
Quiosco de autoservicio
Los clientes piden ellos mismos en un tótem o tablet, como en un restaurante de comida rápida, y pagan en caja o con tarjeta en el quiosco. Las pantallas de pedido forman parte de la propia caja, así que la carta, los precios, las opciones, los menús, las happy hours, las franjas del día, las fotos, los alérgenos, los idiomas y el ticket vienen de la caja y no hay que configurarlos en ningún otro sitio. En el quiosco funciona la app PinPortal Kiosk 2 (Android, también Sunmi, y Windows, Linux y macOS), que muestra la página e imprime el ticket. Desactivado por defecto.
Activar y configurar (administrador): Ajustes → Negocio → Pantallas y manejo → Quiosco de autoservicio.
- Elige qué puede elegir el cliente: Comer aquí y/o Para llevar (para llevar usa el precio para llevar y el tipo de IVA para llevar, si están configurados).
- Texto de bienvenida, tras cuántos segundos sin tocar vuelve el quiosco al inicio (la cesta se vacía) y qué grupos de productos hay en el quiosco (nada marcado = todos).
- ¿Algo más?: marca grupos de productos (p. ej. bebidas, postres); en la cesta el quiosco sugiere entonces algunos productos de ellos.
- Pago, por quiosco (ver Añadir y vincular un quiosco):
- En caja (por defecto, como el quiosco antiguo): el cliente pide, recibe un número de recogida y paga en caja. No hace falta datáfono en el quiosco.
- Con tarjeta en el quiosco: el cliente paga en el datáfono del quiosco.
- El cliente elige: en caja o con tarjeta. Si el quiosco no tiene datáfono, será en caja.
- A cocina (al pagar en caja): enseguida tras pedir en el quiosco (por defecto), o solo cuando se haya pagado en caja.
- Ticket: en la impresora del quiosco (por defecto), en la impresora de tickets de la caja, o sin ticket (solo el número en pantalla). Al pagar en caja, el quiosco imprime un ticket con el número y aún no pagado; el ticket de caja sale al cobrar en caja.
- Estado del pedido en el móvil (opcional, desactivado por defecto): aparece un código QR en el ticket del quiosco y en la pantalla final. El cliente lo escanea, ve su número y el estado (pedido, en preparación, listo) y recibe un aviso cuando el pedido está listo. Funciona a través del portal de gestión, así que la caja debe estar conectada.
- El alcohol y los productos por kilo nunca están en el quiosco: sin personal no se puede comprobar la edad y no hay báscula.
- Lector de códigos de barras (opcional, todo desactivado por defecto): marque lo que puede hacer un escaneo en el quiosco:
- un producto a la cesta (el código del producto);
- un código de descuento;
- una tarjeta de cliente (el cliente acumula puntos);
- una tarjeta regalo o tarjeta prepago como pago. Si hay saldo suficiente, el pedido queda pagado al instante. Si no, la tarjeta paga una parte y el cliente paga el resto con tarjeta o en caja (entonces también se permite en un quiosco solo con pago con tarjeta). Tras ese pago parcial el cliente ya no puede cancelar; el pedido aparece en la caja como Quiosco … · número.
El propio escáner se configura en el quiosco: en la app PinPortal Kiosk 2, en gestión → Lector de códigos de barras (como teclado, el escáner integrado o un puerto COM), con una prueba del escáner. Un escáner que funciona como teclado también funciona sin la app.
- Recargar saldo (opcional, desactivado por defecto; solo funciona si el saldo recargable está activado): en la pantalla de inicio del quiosco aparece entonces Recargar saldo. El cliente escanea su pase o tarjeta regalo (o escribe el código), ve el saldo y elige un importe. Los importes los configura usted (de 1 a 6, por defecto € 10, € 20 y € 50). El pago funciona según lo configurado en el quiosco: con tarjeta, o en caja con el número de recogida. Tras cobrar, el importe queda en el saldo. Una recarga así no va a cocina, no aparece en la pantalla de llamada y no recibe código QR. El saldo máximo del saldo recargable también se aplica aquí.
- A mi habitación (conexión hotelera, desactivada por defecto; Ajustes → Hotel → Autoservicio): junto a la cesta aparece entonces Cargar a mi habitación. El huésped introduce número de habitación y apellido; si coincide con un huésped que se aloja ahora en esa habitación, el pedido va a cocina y queda pagado en la habitación (ver Software hotelero: cargar a la habitación).
- Bélgica (caja negra): lo que aún no se ha probado con la caja negra está desactivado automáticamente en el quiosco (tarjeta regalo o saldo como pago, recarga, código de descuento, menús, opciones con suplemento, happy hour), igual que en la caja.
Añadir y vincular un quiosco
- En Quioscos, escribe un nombre (p. ej. Quiosco entrada) y elige Añadir quiosco. Recibes un código de vinculación de 6 cifras (válido 30 minutos).
- Elige en el quiosco cómo paga el cliente: en caja por defecto. Si es un quiosco con datáfono, elige con tarjeta o el cliente elige, y elige el datáfono de este quiosco (de Ajustes → Pagos).
- Abre la página del quiosco en el quiosco:
- en el negocio: en la app, en gestión → Vast adres, la dirección que aparece en el ajuste, p. ej.
http://192.168.1.20:3000/kiosk; - o a través del portal de gestión (https, también si el quiosco no está en la misma red): vincula la dirección del quiosco que aparece en el ajuste con el código de quiosco de la app, igual que con el quiosco antiguo.
- en el negocio: en la app, en gestión → Vast adres, la dirección que aparece en el ajuste, p. ej.
- Introduce el código de vinculación en el quiosco. Listo: el quiosco recuerda su propia clave. Volver a vincular da un código nuevo; Quitar lo desvincula.
En cada quiosco se indica si está en línea.
Así pide el cliente
- Pantalla de inicio con el texto de bienvenida; el cliente elige su idioma (todos los idiomas de la caja) y toca para pedir.
- Comer aquí o para llevar.
- La carta por grupo de productos, con fotos, el precio (con happy hour), alérgenos y lo que está agotado. Los productos con opciones o un menú abren la ventana de elección.
- La cesta: cambiar cantidades y opcionalmente ¿Algo más?.
- Pedir (pago en caja): el cliente ve su número de recogida en grande en la pantalla con el importe, recibe el ticket y paga en caja. En la caja el pedido queda abierto como Quiosco Entrada · 42 (el número que dice el cliente); se cobra como siempre. Después aparece como pagado en la pantalla de llamada y va a cocina si eso debía esperar al pago.
- Pagar con tarjeta: la caja envía el importe al datáfono de este quiosco (la misma conexión de pago que en la caja). Si falla, el cliente puede intentarlo de nuevo o cancelar (o, si puede elegir, pagar en caja). Solo cuando el pago se ha completado, el pedido va a cocina y se cobra. El cliente ve su número de recogida en grande en la pantalla y recibe el ticket.
- Tras unos segundos, el quiosco vuelve al inicio.
En caso de avería: aviso y modo de emergencia (en la app del quiosco, gestión → Bij storing; desactivado por defecto). Si el quiosco no puede acceder a la caja, muestra Even gesloten. Dos extras:
- Teams, Slack, Discord, ntfy, Home Assistant, Make o Zapier), y un mensaje hersteld cuando vuelve a funcionar. Con Testmelding sturen compruebas la dirección.
- Modo de emergencia: el quiosco guarda una carta sencilla que le pasa la página del quiosco: productos sin opciones ni menús, con el precio de comer aquí (o para llevar si es la única opción).
- Si la caja no está disponible durante un tiempo (por defecto 60 segundos), el cliente pide de esa carta.
- El cliente paga con tarjeta o en la barra. Pagar con tarjeta solo es posible si Pinbetaling está activado en la app.
- Se imprimen dos tickets de emergencia: uno para el cliente (N1, N2 …) y otro para la barra/cocina. En ellos pone que no son un ticket de caja.
- Cuando la caja vuelve, la página del quiosco pasa los pedidos de emergencia a la caja como Nood N… <quiosco>. No van a cocina (ya tenía el ticket de emergencia) ni aparecen en la pantalla de llamada.
- Pagado con tarjeta y el mismo importe que en la caja: liquidado como Tarjeta manual. Si no (pago en la barra, o un importe distinto), el pedido queda abierto para el personal de sala.
- Todo queda en el registro.
- Bélgica: con el sistema de caja registradora (GKS, caja negra) cada venta debe pasar de inmediato por la caja y el FDM. Probablemente entonces no se permita el modo de emergencia; consúltalo primero. En Bélgica, la app del quiosco solo lo activa tras una confirmación adicional, y la caja muestra un aviso en el quiosco.
En la caja, un pedido del quiosco es un pedido normal (para llevar o para tomar aquí, con el nombre Quiosco Entrada) a nombre del empleado Kiosk. La caja lo crea sola; nadie puede iniciar sesión con él. No lo pongas como inactivo o el quiosco no podrá pedir. Los pedidos del quiosco aparecen en los informes, en Tickets y en la pantalla de llamada. Un pedido que no se completa en el quiosco (no pedido o no pagado con tarjeta) caduca solo a los 30 minutos.
¿Pago con tarjeta en modo de prueba (Ajustes → Pagos)? Entonces el quiosco no cobra de verdad; útil para probar. Sin internet no se puede pagar con tarjeta; el quiosco dice entonces que se puede pedir en el mostrador.
Avería: si no se puede acceder a la caja, la app del quiosco muestra "Cerrado un momento" y continúa sola. Si el quiosco funciona a través del portal de gestión y se cae internet, la app puede recurrir a la caja de la red local (en la app: gestión → Extensiones → En caso de avería, usar la red local); el quiosco transmite esa dirección él mismo.
Desactivar: el quiosco indica que está cerrado un momento. Los quioscos y los ajustes se conservan. En el registro quedan activación/desactivación, los ajustes, los quioscos añadidos y quitados, las vinculaciones y los pedidos cancelados.
Menú digital
La carta con precios en un televisor (u otro monitor con navegador), directamente desde la caja. Desactivado por defecto; se activa en Ajustes → Negocio → Pantallas y manejo → Menú digital. Después abra en el televisor http://<kassaserver>:3000/menubord (o use el botón En una pantalla aparte / En una tableta o teléfono con el código QR). Sin inicio de sesión y sin vinculación.
- Por categoría, los productos con su precio, en el orden de la caja. Elija qué categorías (y en qué orden), de 1 a 4 columnas, oscuro o claro, un encabezado propio (vacío = el nombre del negocio), fotos de productos y alérgenos.
- Siempre al día: el menú consulta la carta cada 10 segundos (y al instante cuando hay un cambio), así que un producto agotado (tachado con Agotado, o retirado del menú), unas existencias vacías, una happy hour (precio de promoción con el precio normal tachado, y el nombre y la hora de fin arriba) y las franjas horarias (solo lo que está a la venta ahora) aparecen correctamente por sí solos.
- Si no cabe todo en la pantalla, las páginas se van alternando (por defecto cada 12 segundos, ajustable de 5 a 120).
Personal y PIN
Ajustes → Personal (solo administrador): añadir empleados, cambiar nombre, rol y PIN, y desactivarlos.
- Roles: sala (pedir, cobrar, informe X), encargado (además descuento, devolución, cerrar el día, cajón portamonedas y registro) y administrador (todo, incluidos todos los Ajustes). Esto es lo predeterminado; lo que pueden hacer sala y encargado se puede ajustar (ver Permisos por rol).
- PIN de 4 a 8 cifras, único entre los empleados activos. Los PIN solo se guardan cifrados (hash) en la base de datos y no se pueden leer.
- No se puede eliminar de verdad (los tickets y el registro hacen referencia al empleado); inactivo = ya no puede iniciar sesión.
- Siempre queda al menos un administrador activo.
- Otro rol, nuevo PIN o inactivo: las sesiones abiertas de ese empleado se cierran de inmediato.
- Bélgica: opcionalmente, el número de registro nacional para el registro de personal.
- Idioma: el idioma de las pantallas para este empleado (o "Idioma del dispositivo"). Tras iniciar sesión, la caja aparece directamente en ese idioma; el empleado también puede cambiarlo con la banderita abajo a la derecha (véase Idiomas).
- Consejo: sustituya los PIN de demostración 1111 y 2222 antes de que la caja entre en funcionamiento.
Iniciar sesión con una tarjeta (opcional)
Desactivado por defecto. Para activarlo: Ajustes → Personal, marque Iniciar sesión con una tarjeta (NFC, RFID o iButton). Necesario: un lector de tarjetas USB que funcione como teclado (para tarjetas NFC o RFID, llaveros, pulseras o llaves iButton). Un lector así "escribe" el número de la tarjeta y pulsa Intro; no hace falta ningún controlador ni conexión.
- Vincular: toque el empleado, luego Vincular tarjeta y acerque la tarjeta al lector. Una tarjeta pertenece a un solo empleado. Quitar tarjeta si se ha perdido.
- Iniciar sesión: en la pantalla de inicio de sesión, acerque la tarjeta al lector. El PIN también sigue funcionando como siempre.
- Fichar la entrada y la salida (si está activado): en la pantalla de inicio de sesión, Fichar entrada / salida y acerque la tarjeta al lector.
- El número de la tarjeta solo se guarda cifrado (hash) en la base de datos, igual que el PIN. Los empleados inactivos tampoco pueden iniciar sesión con su tarjeta.
- Desactivado: inicio de sesión solo con el PIN, como siempre. Las tarjetas vinculadas se conservan.
Permisos por rol
Ajustes → Permisos (solo administrador): marque por rol lo que pueden hacer sala y encargado. Por defecto, todo está exactamente como arriba (como la caja ha funcionado siempre); una casilla que difiere aparece coloreada.
| Permiso | Sala | Encargado |
|---|---|---|
| Eliminar líneas tras enviar el pedido (anulación) | sí | sí |
| Aplicar descuento / quitar descuento | no | sí |
| Marcar producto como "agotado" | sí | sí |
| Imprimir copia de un ticket | sí | sí |
| Devolución (ticket de abono) | no | sí |
| Cobrar a crédito y recibir pagos a crédito (solo con el pago a crédito activado) | no | sí |
| Situación actual (informe X) | sí | sí |
| Cerrar el día (informe Z) | no | sí |
| Ventas por periodo | no | sí |
| Gestionar cajón portamonedas | no | sí |
| Gestionar tarjetas regalo (solo con tarjetas regalo con saldo) | no | sí |
| Leer y responder reseñas (solo con la gestión de reseñas activada) | no | sí |
| Gestionar tarjeta de cliente (solo con la tarjeta de cliente activada) | no | sí |
| Ver registro | no | sí |
| Ver imágenes de cámaras (solo con las imágenes de cámaras activadas) | no | sí |
| Gestionar existencias (solo con existencias activadas) | no | sí |
| Gestionar productos | no | no |
| Gestionar planos de sala | no | no |
| Configurar negocio, pagos e impresoras | no | no |
| Ver y modificar horarios de trabajo | no | no |
- El administrador siempre puede hacerlo todo. Modificar el personal y los permisos queda siempre reservado al administrador (si no, alguien podría darse más permisos a sí mismo).
- Los botones y pestañas que un rol no tiene permitidos se ocultan para ese rol; el servidor de caja también lo comprueba. Si un encargado recibe, p. ej., Gestionar productos, verá el botón Ajustes solo con la pestaña Productos.
- Los cambios se aplican de inmediato en todas las cajas y quedan en el registro. Restablecer valores predeterminados lo deja todo como estaba.
Datos del negocio
Ajustes → Negocio (solo administrador): nombre, dirección, código postal, localidad, teléfono y número de IVA del establecimiento. Aparecen en la parte superior de cada ticket de caja y pro forma. Aquí también se configura el texto al pie del ticket (se permiten varias líneas; vacío = sin texto; por defecto "¡Gracias y hasta pronto!"), y debajo el idioma del ticket de caja (por defecto neerlandés; ver Idiomas). Una vista previa del ticket se actualiza en directo. Tras guardar, el siguiente ticket usa ya los nuevos datos. El país y los datos fiscales (GKS) no se pueden cambiar aquí a propósito. En Bélgica, el número de IVA es obligatorio. Con la casilla Redondear pagos en efectivo a 5 céntimos (desactivado por defecto), en efectivo se redondea el total (€ 6,62 → € 6,60, € 6,63 → € 6,65); la diferencia aparece como "Redondeo" en el ticket. Con tarjeta siempre se cobra al céntimo.
Gestionar productos
Inicie sesión como administrador y elija Ajustes → Productos.
- Añadir, modificar (nombre, precio, categoría, tipo de IVA en local y para llevar, nombre en el ticket, código, agotado) y eliminar categorías y productos. Tanto las categorías como los productos pueden tener un color propio; un producto con color tiene un botón coloreado en la pantalla de pedido (texto automáticamente blanco u oscuro para que se lea bien).
- Cambie el orden arrastrando una categoría o un producto por ≡. Funciona con el ratón y con el dedo en una tableta. Ese mismo orden aparece después en la pantalla de pedido; las pantallas de caja abiertas se actualizan al instante.
- Eliminar quita un producto de la caja, pero los pedidos antiguos y el diario fiscal siguen conociendo el producto. Una categoría solo se puede eliminar cuando está vacía.
- Opciones: abra un producto o una categoría y añada en "Opciones" grupos de opciones, como "Punto" (exactamente una, obligatoria), "Salsa" (como máximo una) o "Extra" (varias, con mínimo y máximo; máximo vacío = ilimitado). Cada opción tiene un nombre y un suplemento (puede ser negativo, p. ej. -0,50). Los grupos de opciones de una categoría se aplican a todos los productos de esa categoría, además de las opciones propias del producto. Orden con ▲▼. Siempre se pueden eliminar: los pedidos y tickets existentes conservan las opciones elegidas. El servidor también comprueba las opciones obligatorias y el máximo.
- Foto por producto: ver Fotos de productos.
- Precio por kilo, número PLU y tara (solo si la báscula está activada): ver Configurar la báscula. Sin la casilla, un producto sigue siendo por unidad.
Fotos de productos
Cada producto puede tener una foto.
- Poner foto: Ajustes → Productos → elija el producto → Elegir foto (en una tableta o un teléfono también directamente con la cámara). La foto se reduce en el navegador a un máximo de 512 × 512 píxeles (JPEG, normalmente 20–80 kB) y se guarda al instante; Otra foto la sustituye y Eliminar foto la quita. En la lista de productos aparece una pequeña foto delante del nombre. Solo con el permiso Gestionar productos; jpg, png y webp, máximo 512 kB.
- Mostrarlas lo elige el administrador en Ajustes → Negocio → Fotos de productos, por separado y desactivado por defecto:
- Foto del producto en los botones de la pantalla de pedido: la foto en la parte superior del botón del producto, con el nombre y el precio debajo.
- Foto del producto en la pantalla del cliente: una pequeña foto delante de cada línea en la pantalla del cliente (la pantalla del cliente también debe estar activada). Los productos sin foto se quedan como están; si está desactivado, todo funciona exactamente como antes.
Lector de códigos de barras
Con un lector de códigos de barras en la caja escanea productos, códigos de descuento, tarjetas de cliente y tarjetas regalo. Se activa en Ajustes → Escáner (pestaña junto a las impresoras y la báscula; desactivado por defecto). Marque lo que hace un escaneo en la pantalla de pedidos:
- Producto al ticket: el producto con ese código (Ajustes → Productos, campo Código; p. ej. el código de barras EAN del envase). Con opciones, un menú o un precio por kilo se abre primero la ventana de opciones o la báscula, igual que al pulsar. Lo mismo hace Escanear en la pantalla de pedidos en Imprimir etiquetas; eso sigue funcionando como siempre.
- Código de descuento al ticket (si los códigos de descuento están activados).
- Tarjeta de cliente: el cliente con ese número de tarjeta pasa al ticket (si la tarjeta de cliente está activada). Si escanea un código desconocido en un ticket con cliente, la caja pregunta si es su nueva tarjeta.
- Tarjeta regalo o tarjeta prepago: la caja muestra el saldo (si las tarjetas regalo con saldo están activadas). El pago se hace en Cobrar → Tarjeta regalo; allí también puede escanear la tarjeta.
La caja busca primero en los productos, luego en las tarjetas de cliente, las tarjetas regalo y los códigos de descuento. El escaneo funciona en la pantalla de pedidos cuando no está en un campo de entrada. En un campo de entrada, el código simplemente va a ese campo.
Prueba del escáner: en Ajustes → Escáner ve en cada escaneo el código y qué hace la caja con él, aunque el escáner aún esté desactivado. Si no funciona:
- Configure el escáner como teclado (USB-HID), con un Enter tras el código. En la mayoría de los escáneres ya es así.
- Un escáner integrado (p. ej. de una caja Sunmi) se configura como entrada de teclado en los ajustes del escáner del dispositivo.
- Las etiquetas de la báscula TS6X (peso y precio) las gestiona la propia báscula, también con el escáner activado.
En el quiosco el escáner se configura por separado (Ajustes → Negocio → Quiosco); vea Quiosco de autoservicio.
Imprimir etiquetas
Etiquetas de artículos con el nombre, el precio y un código de barras, en una impresora de etiquetas (Brother, Dymo, Zebra ...) instalada en el ordenador o la tableta. Se activa en Ajustes → Negocio → Imprimir etiquetas (desactivado por defecto). Allí elige también el formato de la etiqueta (38 × 25, 57 × 32, 62 × 29 o 100 × 50 mm) y si se imprimen el precio y el código de barras. Imprimir prueba imprime una etiqueta de prueba.
- Ajustes → Productos → (producto) → Etiquetas: elija la cantidad y Imprimir.
- Compras → (pedido recibido) → Imprimir etiquetas: de cada producto, tantas etiquetas como se hayan recibido (unidades de pedido recibidas × cantidad por unidad de pedido; ingredientes no). Como máximo 500 etiquetas a la vez.
- La caja abre el cuadro de diálogo de impresión: elija allí la impresora de etiquetas y el tamaño de papel del rollo. Cada etiqueta es una página.
- El código de barras es el código del producto (Ajustes → Productos): 8 o 13 dígitos con un dígito de control correcto = EAN (12 dígitos: se añade el dígito de control); si no, Code 128 (letras, cifras y signos de puntuación, hasta 30 caracteres). Sin código no hay código de barras.
- Escanear en la pantalla de pedidos (casilla, desactivada por defecto): un lector de códigos de barras que actúa como teclado añade el producto con ese código, con las elecciones habituales (opciones, báscula, alergia). No junto con la báscula TS6X, que tiene sus propias etiquetas con peso y precio.
- Permiso: Gestionar productos o Gestionar existencias.
Configurar la báscula (A&D, Aclas, Adam Equipment, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Bizerba, Brecknell, CAS, Datalogic, Dibal, DIGI, Dini Argeo, Excell Precision, Gram, Ishida, Kern & Sohn, Mettler Toledo, Minebea Intec, Ohaus, Precia Molen, Precisa, Rice Lake, Rongta, Sartorius, Star Micronics, T-Scale, UWE, Wedderburn, Wintec, Zebra)
Pestaña propia Ajustes → Báscula (permiso Configurar negocio, pagos e impresoras, por defecto solo el administrador; la pestaña siempre está, aunque la báscula aún esté desactivada). Desactivado por defecto: entonces la caja funciona exactamente como antes. ¿No ve la pestaña?
Búsqueda automática. Si aún no hay nada configurado, la caja busca automáticamente al abrir esta sección (el botón Buscar lo repite):
- ¿la caja (servidor) funciona en una báscula PC o IA de Aclas (TS6X, TS3X, TS5EX/NX/GX, iS6X, iS2X, iR6X, Ti6X, iL8X; marca/modelo del dispositivo: Windows vía WMI, Android vía
getprop, Linux vía DMI) y responde el Aclas Scale Module? Entonces esa báscula se configura como En este dispositivo, y también la báscula de etiquetas; en Linux (sin Scale Module), la báscula integrada en el puerto interno encontrado (/dev/ttyS...) como "TS6X (ingebouwd)", con el modelo; - ¿hay una OS6X conectada a un puerto COM/USB? Se prueba cada puerto a 9600, 4800, 2400 y 19200 baudios: primero escucha un momento (continuo), luego envía
W(Toledo) y, si no, Dialog 06 (9600, 7 bits de datos, paridad impar: pide el estado).
Encontrada = se rellena en el formulario con el botón Activar y usar: un toque y funciona. (La búsqueda envía una W a cada puerto COM libre; un puerto ocupado, p. ej. por el terminal de pago, se omite.)
Todas las básculas Aclas. Para cada báscula elige el modelo; la caja sabe entonces cómo se puede conectar. Hay dos tipos:
- En este dispositivo (se configura una vez): la caja funciona en la báscula (báscula PC o IA). Con Windows o Android pesa mediante el Aclas Scale Module, sin puerto, velocidad ni protocolo; con Linux (sin Scale Module) por el puerto interno de la báscula (normalmente
/dev/ttyS0o/dev/ttyS1), con puerto, velocidad y protocolo. Solo hay una por caja; la búsqueda la encuentra automáticamente. Una báscula PC o IA (TS6X, iS6X ...) siempre es En este dispositivo: solo puede aparecer una vez en la lista y los demás modelos PC/IA ya no se pueden elegir. Una TS6X en otro lugar del local sí puede imprimir etiquetas (active entonces solo Escanear etiquetas). - Conectadas (varias a la vez): la báscula está conectada al servidor de caja por cable (RS232/USB), Bluetooth o la red. Tantas como haga falta (máximo 8), cada una con su propio nombre.
Una lista, dos casillas. Todas las básculas están en una lista. Para cada báscula marca lo que hace: Pesar en la caja (la caja pide el peso al pedir) y/o Escanear etiquetas (la báscula imprime una etiqueta con código de barras que la caja escanea, y recibe los PLU de la caja). Una báscula PC o IA como la TS6X hace ambas cosas; una etiquetadora LS solo etiquetas. Las etiquetas pueden venir de una sola báscula por local.
| Modelo | Tipo | Conexiones | En la caja |
|---|---|---|---|
| OS6X | Báscula POS | RS232, USB, Bluetooth | conectada, varias a la vez |
| OS2X | Báscula POS | RS232, USB | conectada, varias a la vez |
| CS6X, CS3X | Báscula registradora | RS232, USB, Ethernet, wifi | conectada, varias a la vez |
| TS6X, TS3X, TS5EX, TS5NX, TS5GX | Báscula PC (Windows, Android, Linux) | RS232, USB, Ethernet, wifi | en este dispositivo (1x), también como báscula de etiquetas |
| iS6X, iS2X, iR6X, Ti6X, iL8X | Báscula IA con reconocimiento de productos (Windows, Android, Linux) | RS232, USB, Ethernet, wifi | en este dispositivo (1x), también como báscula de etiquetas |
| iS5X, OiT2X | Báscula IA (solo Linux) | RS232, USB, Ethernet | conectada o como etiquetadora |
| LS2S, LS2RX, LS2CX, LS2NX, LS5SX, LS5RX, LS5CX, LS5NX, LS6CX, LS6RX, LS6NX | Báscula etiquetadora | RS232, Ethernet, wifi | escanear etiquetas y PLU |
| PS1CX, PS1DX, PS6CX, PS6DX | Báscula calculadora de precios | RS232 | conectada, varias a la vez |
| PS1BX | Báscula calculadora sin conexión | ninguna | peso a mano |
| LH15X | Báscula colgante con impresora de etiquetas | RS232, Ethernet, wifi | conectada o como etiquetadora |
A&D, Adam Equipment, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Bizerba, Brecknell, CAS, Datalogic, Dibal, DIGI, Dini Argeo, Excell Precision, Gram, Ishida, Kern & Sohn, Mettler Toledo, Minebea Intec, Ohaus, Precia Molen, Precisa, Rice Lake, Rongta, Sartorius, Star Micronics, T-Scale, UWE, Wedderburn, Wintec y Zebra. Se incluyen los modelos habituales de estas marcas de los que se sabe cómo se comunica la caja con ellos (por probar = el protocolo no figura literalmente en ninguna fuente; la caja elige lo más lógico). Todos conectados (varios a la vez) o como báscula de etiquetas cuya etiqueta escanea la caja:
| Marca | Modelo | Tipo | Conexión | Protocolo (de fábrica) | En la caja |
|---|---|---|---|---|---|
| A&D | EK-i (p. ej. EK-610i), HV-WP | Báscula registradora (solo peso) | RS232, EK-i también USB | Continuo (modo stream), 2400 baudios, 7E1 | conectada, varias a la vez |
| Adam Equipment | Swift | Báscula calculadora de precios | RS232, USB (opcional) | Continuo (continuo al PC), 9600 8N1 (por probar) | conectada, varias a la vez |
| Avery Berkel | FX110, FX120, FX131 (empotrada con escáner) | Báscula registradora | RS232, FX131 también USB | Mettler Toledo 82/7 = Toledo 8217 (la caja envía W), 9600 baudios, 7E1 | conectada, varias a la vez |
| Avery Berkel | FX125 | Báscula calculadora de precios | RS232 | Checkout-Dialog 06 (9600, 7O1) | conectada, varias a la vez |
| Avery Berkel | Xs, XTs, XTi | Báscula etiquetadora | Ethernet, wifi, USB | PLU propios en la báscula | escanear etiquetas |
| Avery Weigh-Tronix | 7820, 7829, ZP900 | Báscula registradora | RS232, 7820 también USB, ZP900 también USB y Ethernet | NCI (la caja envía W), 9600 baudios, 7E1 | conectada, varias a la vez |
| Balanzas Marques | BM1000P TOP | Báscula registradora (solo peso) | RS232 | METTLER (la caja envía W, Toledo), 9600 baudios, 7E1 | conectada, varias a la vez |
| Balanzas Marques | BM5 Junior Tower Label, BM500 ETQ | Báscula etiquetadora | Ethernet, USB, RS232, BM500 ETQ también wifi | PLU propios en la báscula | escanear etiquetas |
| Baxtran | TW, VW, XTA, XTA-P | Báscula calculadora de precios | RS232 | Toledo (la caja envía W), 9600 baudios, 7E1 | conectada, varias a la vez |
| Bizerba | CS 300 (también empotrada) | Báscula registradora | RS232 | Checkout-Dialog 06 (9600, 7O1) | conectada, varias a la vez |
| Bizerba | K-Class Flex, KH II | Báscula etiquetadora | Ethernet | PLU propios en la báscula | escanear etiquetas |
| Brecknell | 6702U, 6710U, 6720U | Báscula registradora | RS232, USB (puerto COM virtual) | NCI (la caja envía W), 9600 baudios, 7E1 | conectada, varias a la vez |
| CAS | PD-II, PDN, PDI, PDS-B | Báscula registradora | RS232, PDN también USB y Bluetooth, PDI también USB | ECR type 2 = Toledo (la caja envía W), 9600 baudios, 7E1 | conectada, varias a la vez |
| CAS | CL3000, CL5500, CL7200 | Báscula etiquetadora | Ethernet, USB, RS232, CL5500 y CL7200 también wifi | PLU propios en la báscula | escanear etiquetas |
| Datalogic | Magellan 9300i, 9400i, 9800i (escáner con báscula) | Báscula registradora | RS232 (puerto de báscula aparte), USB | Mettler Toledo 8217 (la caja envía W), 9600 baudios, 7E1 | conectada, varias a la vez |
| Dibal | KS-400, D-POS 400 | Báscula registradora | RS232, D-POS 400 también USB | Checkout-Dialog 06 (9600, 7O1) | conectada, varias a la vez |
| Dibal | G-325, PI-100 | Báscula calculadora de precios | RS232 | Checkout-Dialog 06 (9600, 7O1) | conectada, varias a la vez |
| Dibal | M-500 (Mistral), D-900, CS-2200 | Báscula etiquetadora | Ethernet, wifi, USB | PLU propios en la báscula | escanear etiquetas |
| DIGI | DS-781 | Báscula calculadora de precios | RS232 | DIGI Type B (la caja envía ENQ), 9600 8N1 | conectada, varias a la vez |
| DIGI | SM-120, SM-6000 | Báscula etiquetadora | Ethernet, wifi | PLU propios en la báscula | escanear etiquetas |
| Dini Argeo | DFW, DGT, 3590E | Báscula registradora (solo peso) | RS232, USB, Ethernet, DFW y 3590E también wifi | Continuo (ST,GS, 0.512,kg), 9600 8N1 | conectada, varias a la vez |
| Excell Precision | TPE, AM4, FD4-P, FDP4-P, GE4, GEP4 | Báscula calculadora de precios | RS232 | Continuo (ST,GS,+0.876kg), 9600 8N1 (excepto TPE, por probar) | conectada, varias a la vez |
| Gram | XFOC RS, XFOC+ RS, ZFOC RS | Báscula calculadora de precios | RS232, USB (cable de Gram) | Gram (la caja envía ENQ, luego DC1), 9600 8N1 (XFOC por probar) | conectada, varias a la vez |
| Ishida | Uni-3, Uni-5, Uni-7, Uni-9 | Báscula etiquetadora | Ethernet, wifi, USB | PLU propios en la báscula | escanear etiquetas |
| Kern & Sohn | RPB, RFC | Báscula calculadora de precios | RS232, USB | Checkout-Dialog 06 (Prot = DLG-06, 9600, 7O1) | conectada, varias a la vez |
| Kern & Sohn | RFE (precio), IFB, EOC | Báscula calculadora de precios / registradora | RS232 | Continuo, 9600 8N1 | conectada, varias a la vez |
| Mettler Toledo | Ariva-S | Báscula registradora | RS232, USB (puerto COM virtual) | Toledo 8217 (la caja envía W), 9600 baudios, 7E1 | conectada, varias a la vez |
| Mettler Toledo | Viva | Báscula registradora | RS232 | Toledo 8217, 9600 baudios, 7E1 | conectada, varias a la vez |
| Mettler Toledo | bPlus, UC Evo | Báscula etiquetadora | Ethernet, wifi | PLU propios en la báscula | escanear etiquetas |
| Minebea Intec | Signum, Combics, Midrics, Puro | Báscula registradora (solo peso) | RS232, USB, Signum y Combics también Ethernet | Continuo (SBI, impresión automática), 9600 8N1 | conectada, varias a la vez |
| Ohaus | Aviator 7000 | Báscula calculadora de precios | RS232 o USB | Checkout-Dialog 06 (9600, 7O1) | conectada, varias a la vez |
| Ohaus | Valor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000 | Báscula registradora (solo peso) | RS232, USB, Ethernet | Continuo (Auto Print Continuous), 9600 8N1 | conectada, varias a la vez |
| Precia Molen | DP400 | Báscula registradora | RS232, USB | Checkout-Dialog 06 (9600, 7O1) | conectada, varias a la vez |
| Precia Molen | DPOS CR, C 210 B, C 210 C | Báscula calculadora de precios | RS232 | Checkout-Dialog 06 (9600, 7O1; C 210 por probar) | conectada, varias a la vez |
| Precia Molen | Corail 500 | Báscula etiquetadora | Ethernet, wifi | PLU propios en la báscula | escanear etiquetas |
| Precisa | XB, XT, LS, LX (balanzas de precisión) | Báscula registradora (solo peso) | RS232, LS y LX también USB | Continuo (modo de impresión CONTINUOUS), 9600 8N1 | conectada, varias a la vez |
| Rice Lake | BenchPro BP-S, BenchPro BP-R | Báscula registradora | RS232 | BP-S Toledo 8213, BP-R NCI (ambas: la caja envía W), 9600 baudios, 7E1 (por probar) | conectada, varias a la vez |
| Rongta | RLS1000, RLS1100 | Báscula etiquetadora | Ethernet, RS232, wifi | PLU propios en la báscula | escanear etiquetas |
| Sartorius | Entris, Quintix | Báscula registradora (solo peso) | RS232, USB | Continuo (SBI, impresión automática), 9600 8N1 | conectada, varias a la vez |
| Star Micronics | mG-T12, mG-T30, mG-T60, mG-S8200 | Báscula registradora (solo peso) | RS232, USB (puerto COM virtual) | Continuo, 9600 8N1 (por probar) | conectada, varias a la vez |
| T-Scale | PA10, PA15, PEA10 | Báscula etiquetadora | Ethernet | PLU propios en la báscula | escanear etiquetas |
| UWE | ASEP | Báscula calculadora de precios | RS232 | Continuo, 9600 8N1 (por probar) | conectada, varias a la vez |
| Wedderburn | TSDS983 | Báscula registradora | RS232 | DIGI Type B (la caja envía ENQ), 9600 8N1 (por probar) | conectada, varias a la vez |
| Wedderburn | TSDS781T, TSDS782T | Báscula calculadora de precios | RS232 | DIGI Type B, 9600 8N1 (por probar) | conectada, varias a la vez |
| Wedderburn | TSSM120 | Báscula etiquetadora | Ethernet, RS232 | PLU propios en la báscula | escanear etiquetas |
| Wintec | ScalePOS ACS-S60E (caja con báscula integrada) | Báscula registradora | COM6 interno (Windows) o COM4 (Android) | Continuo, 9600 8N1 (por probar) | conectada |
| Zebra | MP7000, MP72 (escáner con báscula) | Báscula registradora | RS232 (puerto AUX) | SASI = Toledo (la caja envía W), 9600 baudios, 7E1 (por probar) | conectada, varias a la vez |
- A&D EK-i y HV-WP: ponga la báscula en stream (EK-i:
prt 0; de fábrica está en la tecla PRINT) y la caja en Continuo con 2400 baudios y 7E1 (así viene A&D de fábrica). El mensaje esST,+00512.00 g(US= en movimiento,OL= sobrecarga). - Adam Equipment Swift: ponga la báscula en continuo al PC (8N1); la caja queda entonces en Continuo.
- Avery Berkel FX110, FX120 y FX131: en la báscula elija el protocolo Mettler Toledo 82/7 y ponga la caja en Consulta (Toledo) con 7E1 (9600 baudios). Dialog 06 también funciona. La FX125 (con visor de precio) no tiene Toledo: allí, Dialog 06. La caja lo configura sola al elegir el modelo.
- Avery Weigh-Tronix 7820, 7829 y ZP900 y Brecknell 6702U, 6710U y 6720U: NCI, el protocolo de Weigh-Tronix. La caja envía
W(igual que con Toledo), la báscula responde con el peso (1.234KG) y una línea de estado que indica si está en movimiento, en sobrecarga o por debajo del mínimo. La caja está en Consulta (Toledo) con 7E1 (9600 baudios). El USB funciona como puerto COM virtual. En la ZP900, conecte la caja al puerto 2 (NCI). En la 67xxU, la báscula también puede ponerse en 8213 (SCP03). - Balanzas Marques BM1000P TOP: en el puerto COM elija el protocolo B (METTLER) y 9600 baudios, 7 bits de datos, paridad par; la caja queda entonces en Consulta (Toledo) con 7E1.
- Baxtran TW, VW, XTA y XTA-P (básculas con cálculo de precio; VW y XTA-P con torre): en el menú RS232 de la báscula elija el protocolo Toledo, 9600 baudios y 7 bits de datos con paridad par (7E1); la caja queda entonces en Consulta (Toledo) con 7E1. La caja lo configura sola al elegir el modelo. CONT (la báscula envía por sí misma) también funciona: ponga entonces la caja en Continuo con la misma velocidad y los mismos bits de datos. Conexión con el cable RS232 (9 pines) o un cable USB a RS232.
- Bizerba CS 300: Checkout-Dialog 06 (la especificación de Bizerba): la caja envía el precio por kilo y la báscula verificada calcula el importe. Si la báscula pide códigos de control, los obtiene de Bizerba o del proveedor.
- CAS PD-II, PDN, PDI y PDS-B (la PDS-B, entre otros, en LRE): elija en la báscula ECR type 2 (Toledo) y ponga la caja en Consulta (Toledo) con 7E1 (9600 baudios).
- Datalogic Magellan 9300i, 9400i y 9800i: ponga el Scale Interface Type del puerto de báscula aparte en Mettler Toledo 8217 y la caja en Consulta (Toledo) con 7E1.
- Dibal KS-400, D-POS 400, G-325 y PI-100: en la báscula elija el protocolo Checkout_Dialog06 (protocolo 24) y 9600 baudios, 7 bits de datos, paridad impar (tipo de parámetro 5); la caja queda entonces en Dialog 06. La D-POS 400 también puede conectarse por USB.
- DIGI DS-781: ponga la báscula en Type B / comando estándar (data transmission
00011); la caja envíaENQy recibe peso neto, tara, precio por kilo e importe. - Dini Argeo DFW, DGT y 3590E: ponga el puerto serie en envío continuo (9600 8N1); la caja queda entonces en Continuo.
- Excell Precision TPE (y la 4.ª generación AM4, FD4-P, FDP4-P, GE4, GEP4): ponga la salida RS232 en continuo (9600 8N1); la caja queda entonces en Continuo.
- Gram XFOC RS, XFOC+ RS y ZFOC RS: protocolo Gram (9600 8N1). La caja envía
ENQ, la báscula respondeACK, la caja envíaDC1y la báscula envía el peso:SOH STX S/U/F teken gewicht eenheid BCC ETX EOT(S= estable,U= en movimiento,F= error; BCC = XOR del estado hasta la unidad inclusive). Conexión por RS232 o con el cable USB de Gram. - Kern & Sohn RPB y RFC: configure en la báscula
Prot = DLG-06(la conexión a la caja es la opción 965-419); la caja queda entonces en Dialog 06. RFE, IFB y EOC: envío continuo (8N1), la caja en Continuo. - Mettler Toledo Ariva/Viva: ponga la báscula en el protocolo Toledo (8217) y la caja en Consulta (Toledo) con Bits de datos / paridad = 7E1 (Mettler: 9600 baudios, 7 bits de datos, paridad par; la Ariva también puede conectarse por USB como puerto COM virtual). La caja lo configura sola al elegir el modelo.
- Minebea Intec Signum, Combics, Midrics y Puro y Sartorius Entris y Quintix: SBI con impresión automática (9600 8N1); la caja queda entonces en Continuo. El mensaje es
N + 0.512 kg; sin unidad, todavía está en movimiento. - Ohaus Aviator 7000: en los ajustes de la báscula (paso 20) elija el protocolo Dialog 06; la caja queda entonces en Dialog 06. RS232 o USB, según el cable.
- Ohaus Valor 7000, Ranger 3000/4000/7000 y Defender 3000 (pesaje sin precio): ponga la báscula en Auto Print Continuous (9600 baudios, 8N1) y la caja en Continuo. La báscula envía
0.512 kg G; un?después del peso significa que todavía se mueve. La Ranger 7000 también puede conectarse por Ethernet (puerto TCP 9761). - Precia Molen DP400, DPOS CR y C 210 (las básculas comerciales son de Dibal desde 2025): Dialog 06 (9600 7O1), igual que Dibal. Si no funciona con la C 210, pruebe Consulta (Toledo) con 7E1.
- Precisa XB, XT, LS y LX: ponga el modo de impresión en CONTINUOUS y 9600 8N1, sin fecha, hora ni ID en la línea; la caja queda entonces en Continuo. Sin unidad, el peso todavía está en movimiento.
- Rice Lake BenchPro BP-S (Toledo 8213) y BP-R (NCI): la caja está en Consulta (Toledo) con 7E1.
- Star Micronics mG-T y mG-S8200: por RS232 o USB (puerto COM virtual, con el controlador de Star) en Continuo.
- UWE ASEP: RS232 al PC/caja, la caja en Continuo (por probar).
- Wedderburn TSDS983, TSDS781T y TSDS782T son básculas DIGI con número propio: DIGI (Type B), igual que la DIGI DS-781. Si no funciona, pruebe Consulta (Toledo) con 7E1.
- Wintec ScalePOS ACS-S60E: la caja funciona en el propio ScalePOS; la báscula integrada está en COM6 (Windows) o COM4 (Android), 9600 8N1. Elija Continuo; si no envía nada, Buscar encuentra el protocolo correcto.
- Zebra MP7000 y MP72: el puerto AUX RS232 viene de fábrica en SASI (9600 7E1, la caja envía
W): la caja en Consulta (Toledo) con 7E1. - Las básculas de etiquetas de estas marcas (Avery Berkel, Balanzas Marques, Bizerba, CAS, Dibal, DIGI, Ishida, Mettler Toledo, Precia Molen, Rongta, T-Scale, Wedderburn) son sistemas independientes con su propio archivo PLU. Active Escanear etiquetas en la báscula y configure el mismo código de barras que en la báscula (EAN-13, empieza por 20–29, PLU y peso o precio). Los PLU se configuran en la propia báscula o con el software de la marca; Enviar a TS6X y Descargar archivo PLU solo existen para Aclas.
La misma lista está en la caja en Ajustes → Báscula → Todas las básculas (ACLAS_MODELLEN en packages/shared/src/weegschaal.ts, con la marca de cada modelo).
Rellenar lo mínimo: al elegir un modelo, la caja prepara el resto como lo configura la marca de fábrica: conexión Puerto COM / USB en el primer puerto libre, 9600 baudios (A&D: 2400) y el protocolo de la marca (Toledo: Aclas con 8N1, y con 7E1 Avery Berkel FX, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Brecknell, CAS, Datalogic, Mettler Toledo, Rice Lake y Zebra; Dialog 06: Avery Berkel FX125, Bizerba, Dibal, Kern & Sohn RPB/RFC, Ohaus Aviator y Precia Molen; DIGI Type B: DIGI y Wedderburn; Gram: Gram; Continuo: A&D, Adam Equipment, Dini Argeo, Excell Precision, las demás Kern & Sohn, Minebea Intec, las demás Ohaus, Precisa, Sartorius, Star Micronics, UWE y Wintec), y un nombre (p. ej. OS6X, OS6X 2). Una báscula PC o IA pasa a ser En este dispositivo (p. ej. TS6X (ingebouwd); en Linux en el puerto interno /dev/ttyS0). Si algo no cuadra, Buscar encuentra el puerto, la velocidad y el protocolo correctos.
En este dispositivo (Aclas Scale Module): la báscula muestra el peso verificado; la caja envía el precio por kilo y la tara (como pretara) y adopta el importe que calcula la báscula, igual que con Dialog 06.
- Android: la app de Aclas AclasScaleDriver (
com.aclas.aclasscaledriver) suele estar ya en la báscula; si no, instaleaclas-android/AclasScaleDriver.apk. La app HorecaPOS habla directamente con el servicio de esa app, así que no hace falta ninguna biblioteca extra. - Linux: Aclas no tiene Scale Module para Linux. Elija simplemente el modelo (p. ej. TS6X): la conexión pasa a ser En este dispositivo (puerto interno) en
/dev/ttyS0, 9600 baudios, Toledo. La báscula integrada suele estar en/dev/ttyS0o/dev/ttyS1; la búsqueda los prueba y rellena el puerto, la velocidad y el protocolo correctos. También aquí solo una vez.
El software de Aclas viene con la caja: el Scale Module para Windows (aclas-module), AclasScaleDriver para Android (aclas-android) y el Aclas Sync SDK para Windows y Linux (aclas-sdk). Aclas nos permite incluirlos. Los instaladores de Windows y Linux los incluyen; no hay nada que descargar ni instalar aparte.
Bluetooth (p. ej. la OS6X): empareje primero la báscula. Windows la convierte en un puerto COM (Configuración de Bluetooth → Más opciones de Bluetooth → Puertos COM), Linux /dev/rfcomm0: introduzca ese puerto. En la app Android introduce la dirección Bluetooth (00:11:22:AA:BB:CC); la app pide una vez permiso para Dispositivos cercanos y se conecta por Bluetooth SPP.
Básculas IA (reconocimiento de productos): la cámara reconoce el producto en el software de Aclas de la báscula. El pesaje funciona mediante el Scale Module (en este dispositivo) o el puerto RS232; las etiquetadoras IA imprimen tras el reconocimiento una etiqueta con código de barras que la caja escanea (como con la TS6X).
Aclas AI Recognition Plugin (báscula IA con la caja instalada, p. ej. la iS6X con Windows): el plugin de Aclas reconoce el producto y teclea su código de barras en la caja, igual que un escáner (seguido de Enter); la pantalla de pedidos añade el producto con su peso al pedido. Así se configura:
- En la báscula, active Escanear etiquetas con el mismo código de barras que en el plugin. Recomendado: empieza por
27, PLU de 5 dígitos, peso (tipo Aclas 17): la caja calcula entonces ella misma con el precio por kilo. Con el precio (tipo 12, empieza por22) también funciona. - En esa báscula, desactive Pesar en la caja: el plugin y el Scale Module no pueden acceder a la báscula a la vez. El peso viene del código de barras. Si el plugin responde al Buscar, la caja propone esta configuración y no inicia el Scale Module. Sin código de activación, el plugin sí pesa y calcula el importe, pero no reconoce productos.
- En el propio plugin: el código de barras en Scale and Barcode Format Settings → Default Barcode Format (tipo 17) y, en los ajustes de ventana, el punto donde el plugin hace clic y teclea el código. Elija para ello un espacio vacío de la pantalla de pedidos, no un botón. El local enseña los productos nuevos al plugin en la propia báscula (entrenamiento IA).
- Asigne un número PLU a los productos pesables y envíe los PLU a la báscula (Enviar a TS6X o el archivo PLU); el plugin reconoce por número PLU.
- La caja solo deja que el plugin reconozca mientras la pantalla de pedidos está abierta en la propia báscula (
POST /aiplugin/resume, al cerrar/aiplugin/suspend, puerto 5003 en la báscula; la primera vez también EmployeeMode: la pantalla del cliente de la báscula no muestra productos). En otras cajas y tabletas y a través del portal de gestión no ocurre nada. - El plugin siempre arranca en Resume y no puede comunicar su estado. Por eso la pantalla de pedidos vuelve a enviar resume cada 30 segundos; si deja de llegar (pantalla cerrada, plugin o báscula reiniciados), la caja pone el plugin en Suspend en menos de un minuto y lo mantiene así.
- El plugin requiere un código de activación de Aclas por báscula (vinculado al número de serie). Funciona ya en Windows; la versión para Android de Aclas llegará más adelante (la caja hace allí lo mismo).
Aclas OS6X (báscula POS en la caja, RS232/USB; las demás básculas conectadas funcionan igual):
- Una o varias básculas (máximo 8), cada una con un nombre (p. ej. Mostrador, Barra) y su propia conexión: puerto COM / USB (
COM3en Windows,/dev/ttyUSB0en Linux/Android) con la velocidad, o red mediante un conversor serie a red (dirección IP y puerto TCP, p. ej. 4001). - Protocolo: Consulta (Toledo) = la caja envía
Wy la báscula responde con el peso (Toledo 8217, como suele estar la OS6X; también los mensajes de estado no estable/sobrecarga/bajo cero) o Continuo = la báscula envía el peso continuamente (ST,GS, 0.512kg,US= no estable) o Dialog 06 (verificado), véase abajo, o DIGI (Type B) = la caja envíaENQy la DIGI responde con estado, peso neto, tara, precio por kilo e importe (37 caracteres:<status> <toestand> CR 0<netto> CR 4<tarra> CR U<kiloprijs> CR T<bedrag> CR LF; estado bit 1 = estable, bit 2 = bajo cero, bit 3 = sobrecarga, bit 4 = demasiado ligero), o Gram = la caja envíaENQ, esperaACK, envíaDC1y leeSOH STX <S/U/F> <teken> <gewicht> <eenheid> <BCC> ETX EOT. Configure en la báscula el mismo protocolo y velocidad. Bits de datos / paridad: 8N1 (Aclas, Adam Equipment, DIGI, Dini Argeo, Excell Precision, Gram, Kern & Sohn, Minebea Intec, Ohaus, Precisa, Sartorius, Star Micronics, UWE, Wedderburn, Wintec) o 7E1 (A&D, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Brecknell, CAS, Datalogic, Mettler Toledo 8217, Rice Lake, Zebra); Dialog 06 es siempre 7O1. Consulta también lee NCI (Avery Weigh-Tronix, Brecknell, Rice Lake BP-R): aWla báscula respondeLF 1.234KG CR LF S00 CR ETX; la línea de estado (S+ 2 o 3 bytes) indica si está en movimiento (byte 1 bit 0), demasiado ligera (byte 2 bit 0) o en sobrecarga (byte 2 bit 1);^^^^^= sobrecarga,_____= demasiado ligero. - Dialog 06 (Checkout-Dialog 06, el protocolo europeo para una báscula verificada conectada a una caja): la caja envía el precio por kilo (y la tara del producto) a la báscula; la báscula pesa, calcula ella misma el importe y muestra precio por kilo, peso e importe en su propio display (verificado). La caja toma el peso y el importe; en la ventana de pesaje aparece "calculado por la báscula". Siempre 9600 baudios, 7 bits de datos, paridad impar, 1 bit de parada (la velocidad de la configuración no cuenta en este caso). Secuencia:
EOT STX 01 ESC <kiloprijs 6> ESC ETX(con tara: registro03con 4 cifras en gramos) → ACK;ENQ→STX 02 ESC 3 ESC <gram 5> ESC <kiloprijs 6> ESC <bedrag 6> ETX; NAK →EOT STX 08 ETX→STX 09 ESC <code> ETX(22 = aún no lista, reintentar tras 100 ms; 20 = en movimiento; 21 = levantar primero; 30/31 = demasiado ligero; 32 = demasiado pesado; 11 = precio no válido). Códigos de control: muchas básculas Dialog 06 piden de vez en cuando (p. ej. cada 30 pesadas) los códigos de control del software de caja (registro 11 → registro 10). El fabricante de la báscula solo facilita esos códigos y cómo se calculan al proveedor de la caja. Introdúzcalos en Códigos de control (pares de 4 caracteres hexadecimales, p. ej.74AE 1B2C); la caja los envía cuando la báscula los pide. Si la báscula calcula con un número variable (Z) y por tanto los códigos fijos no coinciden, la caja lo avisa; pida entonces al proveedor que configure la báscula sin este control, o use Toledo. - Las básculas se conectan al PC o dispositivo donde funciona el servidor de caja; todas las cajas y tabletas pesan a través del servidor de caja y eligen en la ventana de pesaje qué báscula usan. Probar pesa una vez.
- La red funciona en todas partes.
- Introducir el peso también a mano: activado = también con báscula se puede introducir el peso a mano; sin OS6X siempre es posible.
Escanear etiquetas (casilla en la báscula: Aclas TS6X, otra báscula PC o IA, la serie LS o la LH15X; báscula + impresora de etiquetas, una por local):
- Dirección IP: solo necesaria para Naar TS6X sturen. Pesar y escanear etiquetas funcionan sin ella. Si la caja funciona en la propia TS6X, déjela vacía: la caja se envía entonces a sí misma (127.0.0.1). Si la misma báscula también pesa en la caja, ambas casillas están en la misma báscula (la búsqueda lo deja así).
- Escanear etiquetas: escanear etiquetas en la pantalla de pedidos. Indique cómo es el código de barras, igual que en la TS6X: empieza por (20–29, por defecto
28), número de dígitos del PLU (4, 5 o 6) y después el peso en gramos o el precio en céntimos, más el dígito de control (EAN-13). Debajo del ajuste hay un ejemplo. - Números PLU: en Ajustes → Productos, un producto pesable recibe un precio por kilo, opcionalmente una tara y un número PLU (único). El número PLU se elige de una lista (Sin PLU, siguiente libre, Otro número…); al marcar Precio por kilo ya aparece el siguiente número libre. Solo es necesario para las etiquetas y los PLU de la TS6X: sin TS6X puede quedarse en Sin PLU.
- El envío directo funciona en Windows y Linux; en Android y macOS use el archivo PLU. En la primera instalación, compruebe los nombres de campo del archivo PLU y los códigos de
aclas-plu.ps1con el manual del SDK de la báscula suministrada (un único lugar que ajustar:ACLAS_PLU_KOLOMMENenpackages/shared/src/weegschaal.ts).
Portal de gestión: el mensaje al portal tiene la función Báscula (A&D, Aclas, Adam Equipment, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Bizerba, Brecknell, CAS, Datalogic, Dibal, DIGI, Dini Argeo, Excell Precision, Gram, Ishida, Kern & Sohn, Mettler Toledo, Minebea Intec, Ohaus, Precia Molen, Precisa, Rice Lake, Rongta, Sartorius, Star Micronics, T-Scale, UWE, Wedderburn, Wintec, Zebra) con encendido/apagado y las básculas por modelo (p. ej. TS6X (op dit apparaat), 2x OS6X, PS1CX, Ariva-S, DS-781, LS6RX, 5 producten per kilo); sin direcciones IP, puertos COM ni direcciones Bluetooth.
Ley de metrología: una báscula con la que se vende debe estar verificada (clase III, como la OS6X). Con Toledo/continuo, la caja calcula con el peso que da la báscula; con Dialog 06, la propia báscula verificada calcula el precio.
Código: packages/shared/src/weegschaal.ts (protocolos, etiquetas, archivo PLU), apps/pos-server/src/lib/weegschaal.ts y routes/weegschaal.ts; pantallas WeegschaalInstellingen.tsx y WeegDialoog.tsx.
Thuisbezorgd.nl / Takeaway.com
Los pedidos de Thuisbezorgd.nl llegan directamente a la caja, sin intermediarios (sin Deliverect, HubRise o similares): JET Connect de Just Eat Takeaway se comunica con el portal de gestión de Pin Voordeel, y la caja recoge allí sus mensajes.
En Bélgica la plataforma se llama Takeaway.com: la misma empresa (Just Eat Takeaway) y la misma integración. Para un negocio belga, las pantallas, los avisos, la comanda y el portal de gestión muestran siempre Takeaway.com en lugar de Thuisbezorgd.nl. A continuación, Thuisbezorgd se refiere a ambos.
¿Por qué a través del portal? La caja solo necesita PORTAAL_URL y PORTAAL_SLEUTEL (ver Portal de gestión) y solo hace peticiones salientes.
Configuración (Ajustes → Plataformas de reparto → Thuisbezorgd.nl / Takeaway.com, permiso Configurar negocio, pagos e impresoras; antes estaba en Ajustes → Negocio):
- Active Usar Thuisbezorgd (se aplica al instante, independientemente de Guardar).
- Registrarse en Thuisbezorgd. Después, el negocio elige en Thuisbezorgd (Partner Hub o gestor de cuenta) OptimumPOS / Pin Voordeel como caja. JET inicia entonces una sesión de alta; el portal busca la caja registrada (por código postal y nombre; si no, Pin Voordeel vincula la sesión a mano en el portal), envía la configuración y pide el menú a la caja. Después, la integración pasa a estar activa.
- Marque los productos que se pueden pedir a través de Thuisbezorgd (por categoría o sueltos), con una descripción opcional para Thuisbezorgd. El menú (precio, opciones como modificadores, alérgenos, IVA) se envía automáticamente; PLU = id del producto/la opción. Tras un cambio en el catálogo, la caja actualiza el menú en 30 segundos; solo "agotado"/"disponible de nuevo" va por la API de disponibilidad.
- Horario de Thuisbezorgd: por separado para reparto a domicilio y para llevar (p. ej.
16:00-22:00, varios bloques separados por coma). Se guardan con el botón Guardar horario de apertura de debajo y se envían a Thuisbezorgd como service times en cuanto la integración esté lista. - Cerrado temporalmente / Abrir de nuevo (en NL/BE se reabre como muy tarde a la mañana siguiente a las 07:00).
Pedidos. Un pedido se convierte en un pedido normal sin mesa (bezorgen o afhalen, nombre de grupo TB <ordernummer>) con los precios que pagó el cliente, más los gastos de envío/servicio como línea propia y el descuento de Thuisbezorgd como línea de descuento; si aun así el total no cuadra, una línea "Diferencia Thuisbezorgd". La comanda va directamente a cocina/barra (se puede desactivar). La caja confirma en segundos al portal, que lo comunica a JET; si no lo consigue en 3 minutos o la caja está sin conexión, JET recibe "fallido" y el negocio vuelve a usar el Orderpad.
Botón Thuisbezorgd en la barra superior (con el número de pedidos en curso): lista, cliente y dirección, hora de recogida/entrega y la cronología (track & trace): recibido, repartidor de camino al negocio, repartidor en el negocio, de camino al cliente, entregado (de JET), más pasos propios (en preparación, listo, en camino/entregado con reparto propio, recogido). JET Connect no ofrece a la caja un mapa en directo con el repartidor; ese lo ve el cliente en la app de Thuisbezorgd. Un pedido nuevo, una cancelación y "repartidor en el negocio" muestran una barra naranja y emiten un sonido. Finalizar (pagado en línea) cobra con la forma de pago online; si el cliente paga en la puerta, simplemente cobre. Una cancelación de Thuisbezorgd anula el pedido e imprime una comanda "CANCELADO".
Código: apps/pos-server/src/lib/thuisbezorgd.ts, routes/thuisbezorgd.ts; pantallas ThuisbezorgdInstellingen.tsx y Thuisbezorgd.tsx. Lado del portal: horecapos-portaal/src/thuisbezorgd.mjs (ver el README del portal).
Recuento en el portal de gestión. El número de pedidos de Thuisbezorgd por día se incluye en el aviso al portal de gestión (verkoopTelling en lib/portaal.ts): recibidos y no cancelados, en el día de llegada. Un pedido de Thuisbezorgd que se cobra en la caja (también Finalizar (pagado en línea)) no se cuenta otra vez como para llevar/a domicilio. Los datos de Thuisbezorgd están en la base de datos de la caja y, por tanto, se incluyen en las copias de seguridad de la caja.
Tienda online y pedidos online
Cada negocio puede tener su propia tienda online: un sitio de pedidos (y app) con su propia imagen para llevar, a domicilio, pedir en la mesa con un código QR y reservar, con pago online (MultiSafepay o Buckaroo) o pago al recoger/en la entrega. La tienda online es un proyecto aparte, horecapos-webshop (Node.js, vea el README allí), y funciona en el mismo servidor que el portal de gestión.
La activación y configuración se hacen en la gestión de la tienda: botón Gestionar tienda online en el portal de clientes (propietario) o en la instalación en el portal de gestión (Pin Voordeel). Allí están activar/desactivar, la dirección web (<zaak>.<webshopdomein> o un dominio propio), la imagen corporativa (colores, logotipo, foto de cabecera, tipo de letra), horarios de apertura y franjas horarias para llevar y a domicilio, zona de reparto (códigos postales, radio o una zona en el mapa, con gastos y mínimo), pagos, códigos de descuento, textos, idiomas, códigos QR para las mesas, reservas y la app (instalable como PWA; una app Android mediante una Trusted Web Activity), y las notificaciones push (opcionales, desactivadas por defecto): el cliente activa una notificación en la página de su pedido y recibe una notificación push cuando el pedido está listo o en camino; quien lo desee recibe también de vez en cuando una oferta, que el establecimiento envía desde la gestión de la tienda (pestaña Notificaciones push). Funciona en Android y en ordenadores (Chrome, Edge, Firefox, Samsung Internet), en la app Android, y en iPhone y iPad (iOS 16.4 o posterior) si el cliente añade la tienda online a su pantalla de inicio. No se envía ningún SMS ni correo y no se guarda ningún nombre ni número. Más detalles en el README de la tienda online.
Menú. La caja envía el menú automáticamente: todos los productos activos (no por kilo), por grupo de productos, con precio, opciones, alérgenos, agotado y la foto del producto, además de las mesas y los datos del negocio, y qué canales de marketing están activados (para la casilla "recibir ofertas" al pagar, vea Marketing por SMS y correo electrónico). Esto ocurre al iniciar, en cuanto se activa la tienda online, en los 30 segundos siguientes a un cambio en el catálogo y a los pocos segundos de un cambio en Ajustes → Negocio, como el marketing o la tarjeta de cliente (o con Enviar menú ahora). Para dejar un producto fuera de la tienda online, use la gestión de la tienda (ocultar) o la base de datos con artikel.webshop = false.
Pedidos. Para llevar y a domicilio se convierten en un pedido normal sin mesa (nombre de grupo WEB <bestelnummer>) con los precios que vio el cliente, más gastos de envío y costes de transacción como líneas propias y un código de descuento como línea de descuento; si aun así el total no cuadra, se añade una línea "Diferencia tienda online". La propina del cliente no cuenta como facturación: se añade al pago como propina con Finalizar (pagado en línea). Pedir en la mesa (código QR) va a la cuenta abierta de esa mesa (pagado online: como grupo propio en esa mesa). La comanda va enseguida a cocina/barra (se puede desactivar en la ventana Tienda online). La caja confirma en segundos con el número de ticket; el cliente recibe entonces "recibido" y un correo. Si la caja está sin conexión, la tienda online no acepta pedidos (el cliente lo ve al instante) y envía un correo al negocio si un pedido queda demasiado tiempo pendiente. Las reservas de la tienda online llegan a Reservas (solo si las reservas están activadas en la caja). Si hay un máximo por franja (A domicilio y franjas horarias), los pedidos de la tienda online con una hora en esa franja también cuentan.
Bélgica (caja negra). Un pedido de la tienda online va enseguida como pedido (signOrder) a la caja negra, antes de la comanda, igual que Enviar pedido en la caja. Si falla, no entra en la caja y la tienda online lo reenvía más tarde. Lo que aún no se ha probado con la caja negra está desactivado en el menú de la tienda online (tarjetas regalo, códigos de descuento, a cuenta, a la habitación, menús, opciones con suplemento, happy hour y propina) y se rechaza si una tienda online antigua lo envía igualmente. Finalizar comprueba propina, a cuenta y a la habitación igual que la caja.
Cargar a la habitación (conexión hotelera, Ajustes → Hotel → Autoservicio → En la tienda online): el menú recibe kamer: { maxBedrag }; la tienda online envía betaling.wijze = "kamer" con kamer y achternaam. La caja comprueba al huésped con el software hotelero (no en mesa, no con tarjeta regalo) y lo guarda con el pedido; Finalizar (cargar a la habitación) cobra en la habitación y carga el ticket a la cuenta del hotel. Factura agrupada con pago a cuenta: el ticket queda entonces como partida abierta.
Botón Tienda online en la barra superior (con el número de pedidos en curso): lista, cliente y dirección, hora deseada o "lo antes posible", forma de pago y la cronología. El cliente ve los pasos En preparación, Listo y En camino en directo en la tienda online (y por correo, si el negocio lo desea). Cobrado en la caja = Completado; Cancelar anula solo las líneas de ese pedido online, imprime una comanda "CANCELADO" y la tienda online reembolsa un pedido pagado online. Llegado, no presentado o cancelado en una reserva también se devuelve a la tienda online. Un nuevo pedido o reserva muestra una barra naranja y emite un sonido.
Código: apps/pos-server/src/lib/webshop.ts, routes/webshop.ts; pantalla Webshop.tsx. Lado del portal: horecapos-portaal/src/webshop.mjs.
Caja y tienda online iguales (cada parte se activa por separado, desactivado por defecto; una tienda online antigua ignora los campos nuevos). Lo que está activado en la caja funciona también en la tienda online:
- Happy hour: la tienda online cobra el mismo precio que la caja en ese momento (precio normal tachado y el nombre de la happy hour), también con temporada.
- Franjas horarias y tipo de pedido (si están activados): la tienda online solo muestra lo que está a la venta ahora, y para recoger y a domicilio el precio y los productos de esa opción (en la mesa: en el local). El menú recibe por producto
prijzen(afhalen,bezorgen) ynietBij, y la listadagdelen. - Menús: el cliente elige los platos (fijos y a elegir, con sus opciones); en la caja llega como línea de menú con los platos debajo y el precio del menú repartido (el IVA por plato es correcto). Los platos que solo pertenecen a un menú se envían como
menuArtikelen. Una tienda online antigua sin opciones: el menú llega como producto normal en el ticket, como antes. - Sin existencias = agotado, también las opciones con un ingrediente agotado.
- Alérgenos: desactivados en la caja = no aparecen en la tienda online.
- Tarjeta de cliente: el cliente puede acumular puntos al pagar (con su teléfono o correo); la caja vincula al cliente con el pedido y los puntos se suman al cobrar (el canje se hace en el local). La tienda online muestra el saldo.
- Tarjetas regalo (Ajustes → Negocio → Tarjetas regalo → Vender tarjetas regalo en la tienda online, solo con saldo): el cliente compra una tarjeta y paga online; la caja crea la tarjeta, que queda activa al momento, y el código vuelve a la tienda online a través del portal (estado y correo). Si también está activada Tarjeta regalo como forma de pago, el cliente puede elegir al recoger "con tarjeta regalo en el local".
- Códigos de descuento (Ajustes → Códigos de descuento, con el interruptor en Negocio): por código en la caja y/o en la tienda online; el uso cuenta para ambas juntas.
- Pausa y alta demanda: botón Tienda online en la barra superior: Pausar tienda online (con un texto para el cliente) y Alta demanda (minutos extra). Llega a la tienda online en pocos segundos.
- Reservas online con las reglas de la caja (Ajustes → Negocio → Reservas): máximo de personas, días de antelación, intervalo, antelación mínima y los horarios por día de la semana.
- A domicilio y franjas horarias: véase La tienda online sigue a la caja en A domicilio y franjas horarias.
- All-you-can-eat en la mesa (Ajustes → Negocio → All-you-can-eat → También al pedir en la mesa mediante el código QR): si en la mesa hay una fórmula en curso, el cliente ve los platos incluidos como Incluido por € 0, con las rondas, el máximo por persona, el tiempo de espera y el límite de tiempo. El resto lo paga con normalidad; todo va a la cuenta de la mesa. Si el estado de la mesa acaba de cambiar, la caja rechaza el pedido y el cliente vuelve a pedir.
- A crédito (Ajustes → Facturas → Pago a crédito → También en la tienda online): véase En la tienda online en Pago a crédito.
- En línea en la lista de espera (Ajustes → Negocio → Lista de espera): véase En línea en la lista de espera en Lista de espera para clientes sin reserva.
- Venta adicional: "¿Algo más?" (opcional, desactivado por defecto; Ajustes → Negocio → Cobrar → Venta adicional en la tienda online): elija las categorías (p. ej. bebidas, salsas, postres) y cuántas sugerencias. En la tienda online aparecen entonces, en la cesta y al pagar, productos de esas categorías que aún no están en la cesta (solo lo que está a la venta ahora, no agotado y sin opciones obligatorias); el cliente los añade con un toque. Ninguna categoría elegida = desactivado, como antes. El quiosco tiene su propia venta adicional (ver Quiosco de autoservicio).
Para ello, el menú de la tienda online tiene versie: 2 con los campos menuArtikelen, allergenenAan, happyhours, menus, klantenkaart, cadeaubon, kortingscodes, pauze, drukteMin, volgt, bezetting, reserveren.online, ayce, opRekening, wachtlijst y upsell. La confirmación al portal incluye además cadeaubonnen (códigos), klant (puntos) y plek (lista de espera).
Recuento en el portal de gestión. Para llevar y a domicilio a través de la tienda online se cuentan aparte (webshop, webshopGeannuleerd en verkoopTelling), en el día de llegada, y no otra vez como para llevar/a domicilio. Pedir en la mesa se cuenta normalmente como mesa.
Pago con tarjeta y terminales de pago
Ajustes → Pagos (solo administrador):
- Terminales: para cada terminal, un nombre, el ID de terminal y la clave API propia de PinPortal (Klant → Bewerk klant → Overige → API Keys). Tras guardar, solo se ve el final de la clave; nunca vuelve al navegador. Con Probar conexión comprueba la clave y el terminal.
- Modo de prueba: simula un terminal (aprobado tras ±7 s; un importe que termina en 13 céntimos se rechaza). Útil para probar sin terminal de pago.
Si hay al menos un terminal con clave API (o el modo de prueba está activado), Cobrar → Tarjeta / Bancontact inicia el pago automáticamente en el terminal, por el importe que calcula el servidor.
Mientras la integración esté activada, el servidor solo acepta "tarjeta" con un pago en terminal aprobado para exactamente ese pedido y ese importe. Las peticiones se envían, igual que en el SDK oficial de PHP, como formulario normal, con la API de reserva (api-backup.pinvandaag.com) si la API principal no responde. Cada respuesta de la API aparece con [pin] en la ventana del servidor, útil en caso de incidencias. Un pago aprobado que aún no se ha procesado (p. ej. tableta apagada) se recupera en el siguiente cobro de ese pedido.
Propina (tarjeta, efectivo y tarjeta regalo)
En la pantalla de cobro, cada forma de pago tiene una fila de botones de propina: Ninguno, 5%, 10%, 15% (redondeado hacia arriba a 10 céntimos), Redondear (al siguiente euro entero) y Otro importe. Con tarjeta, el cliente paga importe + propina de una vez en el terminal; en efectivo, la propina cuenta en el cambio y en el cajón portamonedas. En el ticket aparece el importe pagado con tarjeta con "de ello propina" debajo; el TOTAL y el IVA no cambian, porque la propina no es venta. En el informe X/Z aparece la propina por forma de pago y como "Total propinas".
El administrador configura los botones de propina en Ajustes → Negocio → Propina: activado/desactivado, qué porcentajes (máximo 4, p. ej. "5, 10, 15"), si aparece el botón "Redondear" y con qué formas de pago (tarjeta, efectivo, tarjeta regalo) se permite propina. "Ninguno" y "Otro importe" siempre aparecen.
"Déjelo en …" aparece siempre, con cada forma de pago, aunque los botones de propina estén desactivados (no se configura): el cliente redondea la cuenta hacia arriba y la diferencia es propina. Hay botones con el siguiente euro entero y los siguientes importes redondos (p. ej. € 28,00 → 29, 30, 40; € 44,00 → 45, 50, 60) y Otro total para escribir el total. Pulsar de nuevo el botón elegido = no redondear. Máximo € 500 de propina (el mismo límite que el servidor de caja).
Sin internet
La caja funciona en la red local y no necesita internet; solo el cobro con tarjeta a través de la integración sí lo necesita. Si el negocio no tiene internet, en la barra superior aparece Sin internet · tarjeta manual (se comprueba cada minuto). En la pantalla de cobro aparece entonces, y también tras un inicio fallido en el terminal, el botón Ya pagado con tarjeta en el terminal: cobre el importe en el propio terminal y regístrelo así.
Planos de sala y mesas
Ajustes → Planos de sala (solo administrador):
- Añadir planos de sala (p. ej. Salón, Terraza, Invernadero), cambiarles el nombre, eliminarlos y cambiar su orden con ◀ ▶.
- Añada mesas con los botones encima de la cuadrícula (redonda, cuadrada, alargada, mesa alta) y arrástrelas con el ratón o el dedo a su sitio. La esquina azul de una mesa seleccionada la hace más grande o más pequeña.
- Para cada mesa, configure nombre/número, número de personas (cuentan las sillas alrededor de la mesa) y forma; duplicar o eliminar.
- Con teclado: las flechas desplazan (Shift = paso mayor), Supr elimina.
- Los cambios solo se aplican tras Guardar; "Deshacer" lo revierte todo.
- Una mesa o un plano de sala con un pedido abierto no se puede eliminar. Las mesas eliminadas se conservan en los pedidos antiguos.
Copiar la configuración a un segundo local
Ajustes → Importar/exportar (solo el administrador). Si ha configurado por completo un negocio, exporte la configuración a un archivo .json e impórtelo en la caja del segundo negocio. Se puede elegir por apartado:
- Productos: categorías, productos, precios (también por tipo de pedido), IVA, opciones, menús, happy hours (con temporada), franjas horarias, alérgenos, ingredientes/recetas, tarjetas de sellos, las fórmulas de buffet libre y las fotos de productos.
- Planos de sala: salas y mesas.
- Otros ajustes: todas las opciones del negocio, impresoras (sin dirección IP), permisos por rol y contabilidad.
Nunca se incluyen: nombre, dirección, código postal, localidad, teléfono, correo, número de IVA y línea final del ticket del negocio, la dirección de correo para el informe Z, terminales de pago y sus claves, personal y PIN, ni ventas, tickets, clientes o cantidades de existencias.
La importación está muy protegida: un gran aviso rojo, una casilla "Entiendo...", de nuevo el PIN propio del administrador, ningún pedido abierto, el mismo país (tipos de IVA) y una copia de seguridad automática previa. La importación se hace en una sola transacción: si algo falla, no cambia nada. Los productos, categorías, ingredientes y mesas existentes no se borran, sino que se retiran de la caja (como al Eliminar), para que los tickets e informes antiguos sigan cuadrando.
Importar desde otra caja
Cambiar de caja sin volver a teclearlo todo. Siempre disponible (sin interruptor): en Ajustes → Importar/exportar (solo el administrador) está el apartado Importar desde otra caja.
- Qué: productos (nombre, precio con IVA, IVA, grupo, código/PLU, existencias) o clientes de la tarjeta de cliente (nombre, teléfono, correo electrónico, puntos, dirección, código postal, localidad; el nombre y los apellidos se unen).
- Archivo: una exportación de su caja anterior (Dobizzz/DoPos, Lightspeed, MplusKASSA, unTill, Tebi ...) o una lista propia: CSV (; , tabulador o |; UTF-8 o Excel en neerlandés) o Excel (.xlsx), la primera hoja, con los nombres de columna en la primera fila. Guarde primero un archivo .xls antiguo como .xlsx o CSV.
- Vista previa: la caja reconoce las columnas por su nombre (Omschrijving, Verkoopprijs incl. BTW, BTW %, Omzetgroep, Artikelnummer, GSM, Spaarpunten ...) y muestra las primeras 10 filas. Si una columna no es la correcta, elíjala usted. No cambia nada hasta Importar.
- Productos: precios como 3,50, € 3,50 o 1.234,50; IVA como 21, 9%, 0,09, alto o bajo (desconocido o vacío: el tipo que elija, por defecto el más alto). Las categorías que aún no existen se crean (sin grupo: "Importado").
- Existencias (columna Voorraad, Stock, Aantal ...): si Controlar existencias está activado (Ajustes → Negocio), el producto controla existencias y las existencias pasan a ser esa cantidad (un recuento en el historial de existencias, motivo "Importado"). Vacío: las existencias se quedan como están.
- Archivo de ejemplo (CSV): una lista para rellenar usted mismo (Naam;Productgroep;Prijs;Btw;Voorraad;Code), por ejemplo en Excel.
- Clientes: los puntos se añaden como corrección "Importado desde otra caja" (visible en el historial). El consentimiento para SMS o correo electrónico no se traspasa (RGPD): vuelva a pedirlo. Active primero la tarjeta de cliente.
- Los productos existentes (mismo código o, sin código, mismo nombre) y los clientes existentes (mismo teléfono o correo electrónico) se omiten, o se actualizan si marca esa opción (en los productos: nombre, precio, IVA, grupo y existencias). Las filas duplicadas del archivo se toman una sola vez.
- Al terminar: cuántos son nuevos, actualizados y omitidos, con lo que falló en cada fila (p. ej. sin precio). Como máximo 5000 filas cada vez. En el registro figura como "Configuración importada".
Idiomas (42, entre ellos turco, árabe, darija, bereber, polaco, búlgaro, húngaro, ruso, serbio, albanés, persa, tigriña, amárico, somalí, papiamento, sranantongo, hindi, urdu, indonesio, vietnamita, siriaco-arameo, chino y ucraniano)
Junto al botón © de abajo a la derecha, cada pantalla tiene un botón con el idioma (p. ej. NL y la banderita). Púlselo para abrir el menú de selección: los idiomas están en orden alfabético, con el nombre en su propio idioma delante de la bandera: Bahasa Indonesia (indonesio), Čeština (checo), Darija (árabe marroquí en alfabeto latino), Deutsch, English, Español, Français, Hrvatski (croata), Italiano, Kurdî (Kurmancî), Latviešu (letón), Lietuvių (lituano), Magyar (húngaro), Nederlands, Papiamentu (papiamento), Polski, Português, Română, Shqip (albanés), Slovenčina (eslovaco), Soomaali (somalí), Sranantongo, Srpski (serbio, en alfabeto latino), Tarifit (bereber rifeño), Tiếng Việt (vietnamita), Türkçe, luego en alfabeto cirílico Български (búlgaro), Русский (ruso) y Українська (ucraniano), después los idiomas en alfabeto árabe: اردو (urdu), الدارجة (darija), العربية (árabe), دری (dari), فارسی (persa, farsi), پښتو (pastún) y کوردی (سۆرانی) (kurdo sorani), luego en alfabeto siriaco ܣܘܪܝܝܐ (siriaco-arameo, Suryoyo), en devanagari हिन्दी (hindi), en alfabeto ge'ez ትግርኛ (tigriña) y አማርኛ (amárico), en tifinagh ⵜⴰⵎⴰⵣⵉⵖⵜ (tamazight, bereber), y por último 中文(简体)(chino, escritura simplificada). Se traducen todas las pantallas, botones, avisos y mensajes de error del servidor de caja.
- Por empleado: el idioma elegido se guarda con el empleado que ha iniciado sesión (
gebruiker.taal). Si alguien inicia sesión con otro idioma, la caja cambia al instante. En el propio dispositivo se recuerda el último idioma usado, para que también la pantalla de PIN aparezca ya en ese idioma. Si elige un idioma (en la pantalla de PIN o con la sesión iniciada) e inicia sesión (de nuevo) en los 10 minutos siguientes, esa elección tiene prioridad y pasa a ser el idioma de ese empleado. Al cambiar, la pantalla se recarga; la sesión sigue iniciada y la cuenta abierta sigue abierta. - Primera vez en un dispositivo: si una tableta o un PC aún no tiene idioma, la caja se inicia en el idioma elegido durante la instalación. Si no se eligió ninguno, usa el idioma del propio dispositivo (navegador o sistema operativo, también en la app de Android) y, si no está entre los disponibles, el neerlandés. Después, cada dispositivo recuerda su propia elección.
- Europa del Este: polaco, checo, eslovaco, húngaro, rumano, búlgaro, croata (también para el bosnio), lituano, letón, ucraniano y ruso: los idiomas de la mayoría de los trabajadores migrantes de Europa Central y del Este en los Países Bajos y Bélgica.
- Balcanes: serbio (en alfabeto latino, como lo escriben la mayoría de los serbios en los Países Bajos y Bélgica; también para el montenegrino) y albanés (Albania, Kosovo y Macedonia del Norte).
- Cuerno de África: tigriña (Eritrea) y amárico (Etiopía), ambos en alfabeto ge'ez, y somalí (en alfabeto latino).
- Irán: persa (farsi). Un dispositivo en persa de Afganistán (fa-AF) recibe dari, el resto farsi.
- Caribe Neerlandés y Surinam: papiamento (Papiamentu, ortografía de Curazao y Bonaire; también para Aruba) y sranantongo.
- Asia: hindi (devanagari; también para el sarnami hindustani), urdu (de derecha a izquierda), indonesio y vietnamita (alfabeto latino, también en el ticket).
- Marroquí: darija (árabe marroquí, la lengua hablada) en alfabeto árabe y en alfabeto latino (como lo escriben en los chats muchos neerlandeses de origen marroquí), además del árabe estándar. Bereber: tarifit (rifeño, en alfabeto latino; la mayoría de los neerlandeses de origen marroquí vienen del Rif) y tamazight estándar marroquí en alfabeto tifinagh.
- De derecha a izquierda: árabe (árabe estándar), urdu, darija en alfabeto árabe, dari y pastún (Afganistán), persa (farsi, Irán), kurdo sorani (Irak/Irán) y siriaco-arameo (Suryoyo, en alfabeto siriaco). Los importes, códigos y el teclado numérico siguen de izquierda a derecha. El kurdo kurmanji (Turquía/Siria) se escribe en alfabeto latino.
- Comanda (cocina/barra): por defecto en el idioma del empleado que pasa el pedido. Por impresora también se puede fijar un idioma (p. ej. el del cocinero) en Ajustes → Impresoras → Idioma de la comanda, en alfabeto latino: Nederlands, Čeština, Darija, Deutsch, English, Español, Français, Hrvatski, Italiano, Kurdî, Latviešu, Lietuvių, Magyar, Papiamentu, Polski, Português, Română, Shqip, Slovenčina, Soomaali, Sranantongo, Srpski, Tarifit, Tiếng Việt, Bahasa Indonesia o Türkçe. El búlgaro, el ruso y el ucraniano salen en la comanda en transcripción latina (la impresora de tickets no tiene cirílico). Los alfabetos árabe, siriaco, devanagari, ge'ez y tifinagh y el chino no se pueden imprimir en una impresora de tickets: el darija sale entonces en alfabeto latino, el tamazight como tarifit y el resto en neerlandés. Los textos fijos (MESA, Pase, ESPERA a marchar, MARCHAR PASE, IMPRESO MÁS TARDE, Para llevar, Barra) se traducen; los nombres de productos y las observaciones se quedan tal como se introdujeron. Las impresoras que estaban en neerlandés siguen al empleado.
- Ticket de caja (para todos los clientes): por defecto en neerlandés, independiente del idioma de las pantallas. Otro idioma se elige en Ajustes → Negocio → Idioma del ticket de caja (justo debajo del texto al pie del ticket), solo idiomas en alfabeto latino. Esto vale también para la pro forma, el ticket de devolución, la copia, el vale regalo y el ticket por correo electrónico. Los importes, los códigos de IVA, el número de IVA del negocio y las líneas fiscales (Bélgica) no cambian; un texto propio al pie del ticket se queda tal como lo escribe el negocio.
- Los productos, categorías y opciones se llaman como los introduce el negocio; no se traducen.
- El idioma por empleado también se configura en Ajustes → Personal.
- La introducción y el manual también están disponibles en todos estos idiomas. Con el botón © se abren en el idioma de la caja; arriba puede elegir otro idioma con las banderas (esto no cambia nada en la caja).
Para desarrolladores: cada texto visible está en el código como vt('Nederlandse tekst') (apps/pos-web/lib/i18n.ts); el texto neerlandés es la clave. Las traducciones están en apps/pos-web/lib/vertalingen/<taal>.ts. Si falta una traducción, la caja muestra el neerlandés; el test i18n (pos-web) comprueba que cada texto esté traducido en cada idioma y que los marcadores {0} coincidan. Los avisos del servidor de caja siguen en neerlandés y se traducen en el navegador (también con {0}, p. ej. un nombre de producto en el aviso).
Configurar impresoras
Una caja nueva no tiene impresoras. Inicie sesión como administrador (demo: 1111) y elija Ajustes en la barra superior.
- Impresoras: añada tantas impresoras como tenga el negocio (p. ej. caja, cocina, barra, pizza), cada una con una conexión (normalmente la red: dirección IP y puerto 9100) y ancho de papel. Con Ticket de prueba comprueba si funciona. Arriba se elige qué impresora imprime el ticket de caja y el pro forma (y abre el cajón portamonedas). Para cada impresora se elige también el idioma de la comanda (ver Idiomas); el ticket de caja sigue en neerlandés.
- Conexión por impresora:
- Red (dirección IP): dirección IP y puerto (normalmente 9100). Así funcionó siempre y así sigue funcionando: las impresoras existentes quedan automáticamente en red.
- USB: en Linux el dispositivo, por ejemplo
/dev/usb/lp0. En Android la impresora USB conectada al dispositivo (cable OTG; vacío = la primera impresora USB). En Windows y macOS elija Impresora del sistema. - Serie (COM / ttyUSB): un puerto COM (Windows),
/dev/ttyUSB0o/dev/ttyS0(Linux, Android) o/dev/cu.…(macOS), con la velocidad (normalmente 9600, 19200 o 38400 baud). También para una impresora Bluetooth que Windows o Linux vincula como puerto COM o/dev/rfcomm0. - Bluetooth: en la app HorecaPOS en Android, con la dirección Bluetooth de la impresora vinculada (p. ej. una impresora de tickets móvil). Vincule primero la impresora en los ajustes de Bluetooth de Android.
- Impresora del sistema (Windows / CUPS): la impresora tal como la conoce Windows o CUPS (Linux, macOS), con su propio controlador o como Generic / Text Only. El ticket se envía en bruto (RAW) a la impresora, sin formato del controlador.
- Integrada (Sunmi, iMin ...): la impresora de la propia caja Android.
- Buscar muestra las impresoras y puertos que ve la caja. Elija uno y la dirección queda rellenada.
- Protocolo: ESC/POS (casi todas las impresoras de tickets, también las impresoras Star en modo ESC/POS) o Star (Star Line Mode). Con Star, la caja convierte ella misma el ticket; el ticket se ve igual.
- Pantalla de servicio con impresora propia: una pantalla de servicio Android con la app HorecaPOS (p. ej. un terminal portátil con una impresora Bluetooth móvil, o un Sunmi como pantalla de servicio) puede imprimir por sí misma. Regístrela en el propio dispositivo (Ajustes → Impresoras → Pantallas de servicio con impresora propia) y elija Conectada a en la impresora. La pantalla de servicio recoge sus tickets en la caja; deje la app abierta en ella. Si no funciona (app cerrada, fuera del alcance del wifi), la comanda pasa a la cola de impresión, igual que con una impresora de red apagada. Dar de baja el dispositivo vuelve a poner las impresoras en la propia caja.
- Impresora por categoría / producto: elija por categoría en qué impresora sale la comanda. Por producto se puede sobrescribir con una impresora propia o "sin comanda".
Los productos iguales se agrupan al imprimir: dos veces 1x Cola pasa a ser 2x Cola, en la comanda y en el ticket de caja. Solo se agrupan los productos con las mismas opciones y observación.
El instalador de Linux añade el usuario de la caja a los grupos lp y dialout, para que la caja pueda usar impresoras USB y serie.
¿Necesitas ayuda?
Optimum POS · 085 560 00 60 · support@optimumpos.nl · lun–vie 9:00–20:00, sáb–dom 14:00–20:00