HorecaPOSManual Introducción Ir a la caja
ES

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.

Iniciar sesión con PIN

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.

Plano de sala

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.

Cobrar

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.

Dividir la cuenta al cobrar

Pantalla de cobro

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):

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)

Plano de sala con Venta rápida y Para llevar

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).

Ampliaciones (todo desactivado por defecto; sin estos ajustes funciona exactamente como arriba):

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:

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):

FuenteParaConfiguración
Webhook / action URL3CX (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 UCMdirección, puerto (5038; Grandstream UCM 7777), usuario AMI y contraseña (permisos call)
FRITZ!BoxFRITZ!Box con telefoníadirección (fritz.box) y puerto 1012; activar el callmonitor una vez con #96*5*
Módem USB de identificación de llamadaslínea fija analógica con presentación del númeropuerto serie (COM3, /dev/ttyACM0), baudios y comando de inicio (por defecto AT+VCID=1)
Teléfono Androidel teléfono integrado de un teléfono Android del localapp 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).

  1. 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).
  2. Elija el repartidor (un empleado) y el cambio que se lleva (por defecto el importe del ajuste), y toque Crear reparto.
  3. 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.
  4. 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.

  1. 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):

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:

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:

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:

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:

  1. En Teléfonos vinculados, elija el repartidor (un empleado), si quiere el nombre del teléfono, y toque Vincular teléfono.
  2. 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.
  3. 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:

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).

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:

¿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:

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.

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.

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:

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:

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.

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:

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:

Tarjetas regalo

Dos interruptores en Ajustes → Negocio → Tarjetas 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).

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.

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).

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:

Al pedir (pantalla de pedidos, para lo que toque después):

Al cobrar:

Después (Tickets):

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.

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).

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.

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}).

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.

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:

Favoritos / botones rápidos

Desactivado por defecto. Ajustes → Negocio → Favoritos / botones rápidos:

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).

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:

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).

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).

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).

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.

El administrador añade las fuentes con + Fuente de música, elige cómo está conectada cada una y la prueba con Probar:

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.

  1. Conecta la tableta o el teléfono a la red Wi-Fi del local.
  2. Escanea el código QR con la cámara (o escribe la dirección en el navegador).
  3. 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.
  4. 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).

  1. 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.
  2. 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).
  3. 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:

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):

En la caja está el botón Llamar (con el número de pedidos que aún se están preparando):

  1. 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.
  2. Volver lo devuelve a En preparación.
  3. 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:

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:

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.

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.

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.

El botón ©

Datos de OptimumPOS

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:

Stock

Desactivado por defecto. Se activa en Ajustes → Negocio → Controlar existencias. Desactivado = no aparece en ningún lugar de la caja.

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.

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.

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.

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ónReparto
Desactivado (por defecto)solo el total de propinas, como siempre
Cada uno su propinapropina de las cuentas que cada uno ha cobrado
Bote según horastodas 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 igualestodas 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.

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):

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:

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).

Descuentos

Un encargado o administrador ve en la pantalla de pedido, junto al total, el botón % Descuento:

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):

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

Informe - situación actual (X)

Botón Informe en la barra superior:

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):

LadoQué
Debecobros por forma de pago (efectivo, tarjeta, tarjeta regalo, online, otros), incl. propina
Haberventas por tipo de IVA (sin IVA) e IVA a ingresar por tipo
Haberpropina (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:

FormatoArchivoImportación en el programa
General (CSV)journaal_…csvcualquier programa con importación CSV/de asientos (asignar columnas)
UBL 2.1 / Peppol (XML), NL y BEjournaal_…_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), NLjournaal_…_xaf.xafarchivo 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), NLjournaal_…_accountview.xmlMovimientos 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.xmlXML 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), NLjournaal_…_asperion.csvformato 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 BEjournaal_…_dagstaat.htmlresumen 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.csvFecha; 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.xmleExact-XML (tema GLTransactions): un asiento de diario general por día (tipo 90) en el diario; Importar/exportar → Importar XML
InformerOnline (TXT), NLjournaal_…_informer.txtdiario general separado por tabulaciones (Geavanceerd → Memoriaal → uploaden); el diario debe ser un número 1–99 (si no, 90)
KING ERP (XML), NLjournaal_…_king.xmlKING_JOURNAAL: un lote de asientos (no definitivo) con un asiento por día
KOMAS (CSV), NLjournaal_…_komas.csvformato libre de KOMAS (0401 Importeren journaalposten): Datum; Grootboek; Omschrijving; Bedrag
Odoo (CSV), NL y BEjournaal_…_odoo.csvContabilidad → Journal Entries → Import records; diario y cuenta por nombre o código
Sage BOB 50 (Excel), BEjournaal_…_bob.xlsxImportation de données externes → Opérations diverses (asignar las columnas una sola vez)
SAP Business One (ZIP), NL y BEjournaal_…_sapb1.zipData Transfer Workbench, Journal Entries: JournalEntries.csv y JournalEntries_Lines.csv
SnelStart (CSV)journaal_…_snelstart.csvFecha; 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.xmltransacciones 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), BEjournaal_…_winbooks.csvK_DOC.CSV, un documento por día en el diario (Winbooks numera por su cuenta)
Yuki (XML)journaal_…_yuki.xmlJournal-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.

ProgramaNLBELiveArchivoObservación
Pymes y autónomos
Accountable–✓–Resumen diario (HTML, para PDF o correo)
AccountView (Visma)✓–bajo peticiónAccountView (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ónAsperion (CSV)Live tras registrarse como socio API en Asperion.
Billit–✓bajo peticiónUBL 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ónKING 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ónXML 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ónWinbooks (CSV)
Wolters Kluwer Adsolut–✓bajo peticiónUBL 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éricoSin 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ónCSV 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ónUBL 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.

ProgramaPaísConectar conQué contabiliza la caja
AcumulusNLcódigo de contrato, usuario y contraseña de un usuario APIuna 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 ProfitNLentorno, token, empresadiario general (FiEntries)
Business CentralNL, BEtenant, 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 OnlineNL, BEiniciar sesión (OAuth, app propia: ver Exact Online abajo; Bélgica: start.exactonline.be)asiento de diario general en el diario (p. ej. 90)
HorusBEiniciar sesión (OAuth, app abajo), expediente opcionaloperación diversa
MoneybirdNLtoken API, empresa opcionaldiario general (general journal document)
OdooNL, BEdirección, base de datos, usuario, clave APIasiento en el diario con el código corto (p. ej. MISC)
QuickBooks OnlineNL, BEiniciar sesión (OAuth, app abajo; QUICKBOOKS_OMGEVING)journal entry; cuentas por número
SAP Business OneNL, BEdirección del Service Layer, base de datos, usuario, contraseñaasiento (JournalEntries)
SilvasoftNL, BEusuario y clave APIasiento 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)
SnelStartNLclave de conexión y clave de suscripcióndiario general
TwinfieldNLiniciar sesión (OAuth, app abajo), oficina opcionaltransacción de diario
XeroNL, BEiniciar sesión (OAuth, app abajo), organización opcionalmanual journal; cuentas por código
YukiNL, BEclave API, empresa opcionaldiario general (GeneralJournal)
Zoho BooksNL, BEiniciar sesión (OAuth, app abajo; por defecto el centro de datos europeo), organización opcionalasiento; cuentas por código

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):

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).

Banco: conciliar transferencias

En Informe → A crédito → Banco, la caja busca para cada abono la factura a crédito correspondiente:

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:

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.

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:

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):

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:

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)

Tickets

Botón Tickets en la barra superior:

Cajón portamonedas con sensor y cajón por empleado

Desactivado por defecto. Se configura en Ajustes → Pagos → Cajón portamonedas.

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.

Ajustes: productos

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.

Ajustes: copias de seguridad

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:

¿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?

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:

  1. 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.
  2. Toca Probar conexión: ves el programa y la versión, o por qué no funciona.
  3. 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:

  1. La caja no acepta solicitudes durante un momento (normalmente menos de un minuto); después las tabletas siguen solas.
  2. Primero la caja hace una copia de seguridad del estado actual (en Ajustes → Copias de seguridad).
  3. Todo pasa a la nueva base de datos y la caja cuenta tabla por tabla si está todo exactamente.
  4. 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

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:

Conexión, de dos maneras (ambas se configuran en el propio dispositivo):

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.

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):

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.

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.

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.

Desactivado por defecto. Se activa en Ajustes → Negocio → Usar menús.

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).

  1. 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.
  2. 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).
  3. 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).
  4. 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).

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.

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):

  1. ID de API y clave de API (X-Api-Id y X-Api-Key, o Authorization: Bearer <id>:<sleutel>);
  2. Clave de API y secreto de API con una firma: X-Api-Key, X-Timestamp y X-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.

Aviso de nueva versión

Se activa en Ajustes → Negocio → Aviso de actualización (desactivado por defecto).

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.

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.

Pedir reseñas: después de la visita, un único correo con un botón a Google y/o Trustpilot.

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.

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.

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:

ProgramaNLBELiveArchivoObservación
Software de nóminas y gestorías de nóminas
ADP✓✓bajo peticiónLista 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ónLista 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ónLista 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ónLista 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ónLista 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ónLista 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ónLista 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ónLoket.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ónLista 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ónLista 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ónLista 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ónLista 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ónLista 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ónLista 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ónVentas 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ónVentas 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ónVentas 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ónVentas 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ónVentas 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ónVentas 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ónVentas 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ónVentas 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ónVentas 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ónVentas 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ónVentas 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ónVentas 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ísRequisitoHorecaPOS
BélgicaSistema 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élgicaFacturació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 incluidosexportació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élgicaIVA 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 BajosLey 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 BajosVasos y envases desechables (SUP): desde 2024 un precio aparte y visible para los envases desechables de plástico para llevar y a domicilioRecargo por desechables por producto, como línea aparte en el tique (IVA del producto) y por separado en la facturación
Países BajosDepósito en latas y botellas de plásticoDepó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 BajosPago en efectivo: desde el 1 de enero de 2026, nada de 3.000 € o más en efectivo por bienesAviso 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élgicaCambio de IVA: un tipo o un producto recibe otro porcentaje de IVA a partir de una fechaProgramar 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 BajosAlojamiento (pernoctaciones) 21% desde el 1 de enero de 2026tipo de IVA configurable por producto
UEDirectiva Omnibus: un precio "antes" tachado solo puede ser el precio más bajo de los últimos 30 díasla 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)
UEEuropean 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 BajosXML 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 2027exportación como XAF 4.0 (Exportación contable)
Países BajosSistema 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élgicaRegistro de presencia con un sistema de caja registradora: registrar en el sistema de caja el inicio y el fin de la jornada de los trabajadoresFichaje de entrada y salida del personal (Ajustes → Negocio; Obligatorio = fichar primero la entrada) se registra en la caja negra
BélgicaDimona: declarar ante la RSZ cada ocupación (también flexi-jobs y estudiantes) antes de su iniciode 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 BajosRegistro 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élgicaHACCP / 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élgicaObligació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.

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.

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.

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.

Añadir y vincular un quiosco

  1. 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).
  2. 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).
  3. 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.
  4. 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

  1. Pantalla de inicio con el texto de bienvenida; el cliente elige su idioma (todos los idiomas de la caja) y toca para pedir.
  2. Comer aquí o para llevar.
  3. 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.
  4. La cesta: cambiar cantidades y opcionalmente ¿Algo más?.
  5. 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.
  6. 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.
  7. 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:

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.

Personal y PIN

Ajustes → Personal (solo administrador): añadir empleados, cambiar nombre, rol y PIN, y desactivarlos.

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.

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.

PermisoSalaEncargado
Eliminar líneas tras enviar el pedido (anulación)sísí
Aplicar descuento / quitar descuentonosí
Marcar producto como "agotado"sísí
Imprimir copia de un ticketsísí
Devolución (ticket de abono)nosí
Cobrar a crédito y recibir pagos a crédito (solo con el pago a crédito activado)nosí
Situación actual (informe X)sísí
Cerrar el día (informe Z)nosí
Ventas por periodonosí
Gestionar cajón portamonedasnosí
Gestionar tarjetas regalo (solo con tarjetas regalo con saldo)nosí
Leer y responder reseñas (solo con la gestión de reseñas activada)nosí
Gestionar tarjeta de cliente (solo con la tarjeta de cliente activada)nosí
Ver registronosí
Ver imágenes de cámaras (solo con las imágenes de cámaras activadas)nosí
Gestionar existencias (solo con existencias activadas)nosí
Gestionar productosnono
Gestionar planos de salanono
Configurar negocio, pagos e impresorasnono
Ver y modificar horarios de trabajonono

Datos del negocio

Ajustes - 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

Ajustes - Productos

Inicie sesión como administrador y elija Ajustes → Productos.

Fotos de productos

Cada producto puede tener una foto.

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:

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:

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.

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):

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:

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.

ModeloTipoConexionesEn la caja
OS6XBáscula POSRS232, USB, Bluetoothconectada, varias a la vez
OS2XBáscula POSRS232, USBconectada, varias a la vez
CS6X, CS3XBáscula registradoraRS232, USB, Ethernet, wificonectada, varias a la vez
TS6X, TS3X, TS5EX, TS5NX, TS5GXBáscula PC (Windows, Android, Linux)RS232, USB, Ethernet, wifien este dispositivo (1x), también como báscula de etiquetas
iS6X, iS2X, iR6X, Ti6X, iL8XBáscula IA con reconocimiento de productos (Windows, Android, Linux)RS232, USB, Ethernet, wifien este dispositivo (1x), también como báscula de etiquetas
iS5X, OiT2XBáscula IA (solo Linux)RS232, USB, Ethernetconectada o como etiquetadora
LS2S, LS2RX, LS2CX, LS2NX, LS5SX, LS5RX, LS5CX, LS5NX, LS6CX, LS6RX, LS6NXBáscula etiquetadoraRS232, Ethernet, wifiescanear etiquetas y PLU
PS1CX, PS1DX, PS6CX, PS6DXBáscula calculadora de preciosRS232conectada, varias a la vez
PS1BXBáscula calculadora sin conexiónningunapeso a mano
LH15XBáscula colgante con impresora de etiquetasRS232, Ethernet, wificonectada 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:

MarcaModeloTipoConexiónProtocolo (de fábrica)En la caja
A&DEK-i (p. ej. EK-610i), HV-WPBáscula registradora (solo peso)RS232, EK-i también USBContinuo (modo stream), 2400 baudios, 7E1conectada, varias a la vez
Adam EquipmentSwiftBáscula calculadora de preciosRS232, USB (opcional)Continuo (continuo al PC), 9600 8N1 (por probar)conectada, varias a la vez
Avery BerkelFX110, FX120, FX131 (empotrada con escáner)Báscula registradoraRS232, FX131 también USBMettler Toledo 82/7 = Toledo 8217 (la caja envía W), 9600 baudios, 7E1conectada, varias a la vez
Avery BerkelFX125Báscula calculadora de preciosRS232Checkout-Dialog 06 (9600, 7O1)conectada, varias a la vez
Avery BerkelXs, XTs, XTiBáscula etiquetadoraEthernet, wifi, USBPLU propios en la básculaescanear etiquetas
Avery Weigh-Tronix7820, 7829, ZP900Báscula registradoraRS232, 7820 también USB, ZP900 también USB y EthernetNCI (la caja envía W), 9600 baudios, 7E1conectada, varias a la vez
Balanzas MarquesBM1000P TOPBáscula registradora (solo peso)RS232METTLER (la caja envía W, Toledo), 9600 baudios, 7E1conectada, varias a la vez
Balanzas MarquesBM5 Junior Tower Label, BM500 ETQBáscula etiquetadoraEthernet, USB, RS232, BM500 ETQ también wifiPLU propios en la básculaescanear etiquetas
BaxtranTW, VW, XTA, XTA-PBáscula calculadora de preciosRS232Toledo (la caja envía W), 9600 baudios, 7E1conectada, varias a la vez
BizerbaCS 300 (también empotrada)Báscula registradoraRS232Checkout-Dialog 06 (9600, 7O1)conectada, varias a la vez
BizerbaK-Class Flex, KH IIBáscula etiquetadoraEthernetPLU propios en la básculaescanear etiquetas
Brecknell6702U, 6710U, 6720UBáscula registradoraRS232, USB (puerto COM virtual)NCI (la caja envía W), 9600 baudios, 7E1conectada, varias a la vez
CASPD-II, PDN, PDI, PDS-BBáscula registradoraRS232, PDN también USB y Bluetooth, PDI también USBECR type 2 = Toledo (la caja envía W), 9600 baudios, 7E1conectada, varias a la vez
CASCL3000, CL5500, CL7200Báscula etiquetadoraEthernet, USB, RS232, CL5500 y CL7200 también wifiPLU propios en la básculaescanear etiquetas
DatalogicMagellan 9300i, 9400i, 9800i (escáner con báscula)Báscula registradoraRS232 (puerto de báscula aparte), USBMettler Toledo 8217 (la caja envía W), 9600 baudios, 7E1conectada, varias a la vez
DibalKS-400, D-POS 400Báscula registradoraRS232, D-POS 400 también USBCheckout-Dialog 06 (9600, 7O1)conectada, varias a la vez
DibalG-325, PI-100Báscula calculadora de preciosRS232Checkout-Dialog 06 (9600, 7O1)conectada, varias a la vez
DibalM-500 (Mistral), D-900, CS-2200Báscula etiquetadoraEthernet, wifi, USBPLU propios en la básculaescanear etiquetas
DIGIDS-781Báscula calculadora de preciosRS232DIGI Type B (la caja envía ENQ), 9600 8N1conectada, varias a la vez
DIGISM-120, SM-6000Báscula etiquetadoraEthernet, wifiPLU propios en la básculaescanear etiquetas
Dini ArgeoDFW, DGT, 3590EBáscula registradora (solo peso)RS232, USB, Ethernet, DFW y 3590E también wifiContinuo (ST,GS, 0.512,kg), 9600 8N1conectada, varias a la vez
Excell PrecisionTPE, AM4, FD4-P, FDP4-P, GE4, GEP4Báscula calculadora de preciosRS232Continuo (ST,GS,+0.876kg), 9600 8N1 (excepto TPE, por probar)conectada, varias a la vez
GramXFOC RS, XFOC+ RS, ZFOC RSBáscula calculadora de preciosRS232, USB (cable de Gram)Gram (la caja envía ENQ, luego DC1), 9600 8N1 (XFOC por probar)conectada, varias a la vez
IshidaUni-3, Uni-5, Uni-7, Uni-9Báscula etiquetadoraEthernet, wifi, USBPLU propios en la básculaescanear etiquetas
Kern & SohnRPB, RFCBáscula calculadora de preciosRS232, USBCheckout-Dialog 06 (Prot = DLG-06, 9600, 7O1)conectada, varias a la vez
Kern & SohnRFE (precio), IFB, EOCBáscula calculadora de precios / registradoraRS232Continuo, 9600 8N1conectada, varias a la vez
Mettler ToledoAriva-SBáscula registradoraRS232, USB (puerto COM virtual)Toledo 8217 (la caja envía W), 9600 baudios, 7E1conectada, varias a la vez
Mettler ToledoVivaBáscula registradoraRS232Toledo 8217, 9600 baudios, 7E1conectada, varias a la vez
Mettler ToledobPlus, UC EvoBáscula etiquetadoraEthernet, wifiPLU propios en la básculaescanear etiquetas
Minebea IntecSignum, Combics, Midrics, PuroBáscula registradora (solo peso)RS232, USB, Signum y Combics también EthernetContinuo (SBI, impresión automática), 9600 8N1conectada, varias a la vez
OhausAviator 7000Báscula calculadora de preciosRS232 o USBCheckout-Dialog 06 (9600, 7O1)conectada, varias a la vez
OhausValor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000Báscula registradora (solo peso)RS232, USB, EthernetContinuo (Auto Print Continuous), 9600 8N1conectada, varias a la vez
Precia MolenDP400Báscula registradoraRS232, USBCheckout-Dialog 06 (9600, 7O1)conectada, varias a la vez
Precia MolenDPOS CR, C 210 B, C 210 CBáscula calculadora de preciosRS232Checkout-Dialog 06 (9600, 7O1; C 210 por probar)conectada, varias a la vez
Precia MolenCorail 500Báscula etiquetadoraEthernet, wifiPLU propios en la básculaescanear etiquetas
PrecisaXB, XT, LS, LX (balanzas de precisión)Báscula registradora (solo peso)RS232, LS y LX también USBContinuo (modo de impresión CONTINUOUS), 9600 8N1conectada, varias a la vez
Rice LakeBenchPro BP-S, BenchPro BP-RBáscula registradoraRS232BP-S Toledo 8213, BP-R NCI (ambas: la caja envía W), 9600 baudios, 7E1 (por probar)conectada, varias a la vez
RongtaRLS1000, RLS1100Báscula etiquetadoraEthernet, RS232, wifiPLU propios en la básculaescanear etiquetas
SartoriusEntris, QuintixBáscula registradora (solo peso)RS232, USBContinuo (SBI, impresión automática), 9600 8N1conectada, varias a la vez
Star MicronicsmG-T12, mG-T30, mG-T60, mG-S8200Báscula registradora (solo peso)RS232, USB (puerto COM virtual)Continuo, 9600 8N1 (por probar)conectada, varias a la vez
T-ScalePA10, PA15, PEA10Báscula etiquetadoraEthernetPLU propios en la básculaescanear etiquetas
UWEASEPBáscula calculadora de preciosRS232Continuo, 9600 8N1 (por probar)conectada, varias a la vez
WedderburnTSDS983Báscula registradoraRS232DIGI Type B (la caja envía ENQ), 9600 8N1 (por probar)conectada, varias a la vez
WedderburnTSDS781T, TSDS782TBáscula calculadora de preciosRS232DIGI Type B, 9600 8N1 (por probar)conectada, varias a la vez
WedderburnTSSM120Báscula etiquetadoraEthernet, RS232PLU propios en la básculaescanear etiquetas
WintecScalePOS ACS-S60E (caja con báscula integrada)Báscula registradoraCOM6 interno (Windows) o COM4 (Android)Continuo, 9600 8N1 (por probar)conectada
ZebraMP7000, MP72 (escáner con báscula)Báscula registradoraRS232 (puerto AUX)SASI = Toledo (la caja envía W), 9600 baudios, 7E1 (por probar)conectada, varias a la vez

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.

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:

Aclas OS6X (báscula POS en la caja, RS232/USB; las demás básculas conectadas funcionan igual):

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):

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):

  1. Active Usar Thuisbezorgd (se aplica al instante, independientemente de Guardar).
  2. 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.
  3. 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.
  4. 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.
  5. 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:

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):

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

Editor de planos de sala

Ajustes → Planos de sala (solo administrador):

Copiar la configuración a un segundo local

Ajustes - Importar/exportar

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:

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.

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.

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.

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