HorecaPOSManual Introdução Ir para a caixa
PT

Manual do HorecaPOS

Este manual tem três partes: primeiro para o pessoal (empregados de mesa), depois para o gerente e por fim para o administrador. Cada parte baseia-se na anterior: um gerente pode fazer tudo o que os empregados fazem, e o administrador pode fazer tudo.

O que a sua função pode fazer exatamente é definido pelo administrador em Definições → Permissões. Se não vê um botão, a sua função (ainda) não tem permissão para isso.

Este manual também está na caixa: toque no botão © no canto inferior direito de qualquer ecrã e escolha Manual, ou abra http://<kassa-pc>:3000/handleiding. Veja também a introdução e a documentação da API.

Parte 1 · Pessoal

Primeiros passos

Iniciar sessão. Abra a caixa no computador da caixa, no tablet ou no telemóvel e introduza o seu PIN (4 a 8 dígitos). Em seguida vê a planta das salas.

Iniciar sessão com PIN

Abrir uma mesa. Toque numa mesa. Uma mesa livre recebe um novo pedido; numa mesa ocupada continua com o pedido que já lá está. Em cima alterna entre as zonas (por exemplo Sala e Esplanada). Para o balcão use Venda rápida, para pedidos para levar Take-away.

Planta das salas

Registar o pedido. Escolha uma categoria e toque nos produtos. Aparecem no talão à esquerda. Se quiser, escolha primeiro o prato (1 = de imediato, 2 e 3 esperam até os chamar). Toque em Enviar pedido: os talões seguem para a cozinha e o bar. Enquanto não tocar em Enviar pedido, pode simplesmente retirar linhas.

Cobrar. Toque em Cobrar, escolha Cartão / Bancontact, Dinheiro ou Vale-oferta, eventualmente uma gorjeta, e confirme. Com cartão, o pagamento arranca sozinho no terminal de pagamento. O talão é impresso; também o pode enviar por e-mail.

Cobrar

Terminar sessão. Termine a sessão quando acabar, para que ninguém trabalhe em seu nome. Após 8 horas a sessão termina automaticamente.

Sem internet? A caixa continua a funcionar. Se aparecer em cima Sem internet · cartão manual, introduza o valor no próprio terminal de pagamento e escolha no ecrã de cobrança Já pago no terminal.

Vários grupos na mesma mesa

Na mesma mesa podem estar vários grupos, cada um com a sua conta e o seu talão.

Dividir a conta ao cobrar

Ecrã de cobrança

Cobrar funciona como sempre: Tudo de uma vez. No ecrã de cobrança a conta agora também pode ser dividida, com os botões por baixo de Voltar e Cobrar (assim ficam sempre à vista, sem deslizar):

Um pagamento parcial regista apenas o pagamento; a conta fica aberta e o ecrã de pedidos mostra "já pago … · em aberto …". O talão (com todos os pagamentos) sai no último pagamento, tal como numa cobrança normal. O pagamento com cartão via integração é feito exatamente pelo valor parcial. Se já houver uma parte paga, deixa de ser possível mover linhas para outro grupo ou acrescentar descontos; retirar só é possível se houver valor suficiente em aberto. Cada pagamento parcial fica no registo.

Venda rápida e take-away (sem mesa)

Planta das mesas com Venda rápida e Take-away

No canto superior direito do ecrã das mesas estão Venda rápida e Take-away. Ambos abrem logo um pedido sem mesa. Venda rápida é a venda ao balcão (IVA para consumo no local); Take-away usa a taxa de IVA para levar de cada produto. Com "Nome do cliente" acrescenta um nome; este aparece no talão ("Take-away – Silva") e no topo do talão de cozinha. Os pedidos em aberto sem mesa aparecem por baixo dos botões das zonas ("Sem mesa: Take-away #12 – Silva"), para os voltar a encontrar. Se voltar atrás sem vender nada, o pedido vazio desaparece sozinho.

Os dois botões podem ser ligados ou desligados por estabelecimento em Definições → Estabelecimento, logo abaixo do tema claro/escuro (ligado por predefinição). Desligado = botão escondido; os pedidos sem mesa que já estejam abertos continuam visíveis.

Entrega e faixas horárias

Pedidos que regista na própria caixa, por exemplo por telefone ou ao balcão, com as mesmas regras da loja online: zonas de entrega e um número máximo de pedidos por faixa horária. Ativa-se em Definições → Estabelecimento → Entrega e faixas horárias, logo abaixo dos botões Venda rápida e Take-away (desligado por predefinição).

Extensões (tudo desligado por predefinição; sem estas definições funciona exatamente como acima):

Código: lib/bezorgen.ts, routes/bezorgen.ts, BezorgDialoog.tsx, BezorgInstellingen.tsx, BezorgKaart.tsx e lib/kaart.ts (o mapa, sem pacote extra; o mesmo código está na loja online como public/kaart.js).

Telefonia: reconhecer o cliente numa encomenda por telefone

Definições → Telefonia (desligado por predefinição; desligar guarda tudo). Dois interruptores separados:

A pesquisa é feita no cartão de cliente, nas encomendas de entrega e take-away da caixa, na loja online, no Thuisbezorgd, nas plataformas de entrega e nas reservas. Os números são normalizados (+31 6 1234 5678, 0031612345678 e 06-12345678 são o mesmo; também números belgas).

Como chega o número (é possível usar vários ao mesmo tempo; a mesma chamada conta uma vez):

FonteParaConfigurar
Webhook / action URL3CX (integração CRM), Aircall, Voys / VoIPGRID, Yeastar série P, telefones com action URL numa chamada recebida (Fanvil, Grandstream, Mitel 6800/6900, Snom, Yealink: funciona com qualquer central e operador), serviços de integração (Zapier, Make, n8n, Power Automate)o endereço em Definições → Telefonia (/api/telefonie/oproep?sleutel=...&nummer=...), GET ou POST, JSON, formulário ou query; também através do portal: https://<portaal>/telefonie/<kassa-id>/oproep?sleutel=...
Asterisk (AMI)Asterisk, FreePBX, Issabel, VitalPBX, Grandstream UCMendereço, porta (5038; Grandstream UCM 7777), utilizador AMI e palavra-passe (permissões call)
FRITZ!BoxFRITZ!Box com telefoniaendereço (fritz.box) e porta 1012; ligar o callmonitor uma vez com #96*5*
Modem USB de identificação de chamadaslinha fixa analógica com identificação de chamadasporta série (COM3, /dev/ttyACM0), baud e comando de inicialização (por predefinição AT+VCID=1)
Telemóvel Androido telefone integrado de um telemóvel Android do estabelecimentoapp HorecaPOS nesse telemóvel, Definições → Telefonia → Emparelhar este telefone (Android 10+: escolher a app como app de identificação de chamadas)

A resposta contém quem liga, também como contact (firstname, lastname, phone, email, address) para um modelo CRM do 3CX. Chamadas efetuadas e internas não são mostradas; Apenas estas linhas limita a determinadas linhas ou telefones. As chamadas são apagadas após o prazo de conservação (por predefinição 30 dias, RGPD). Chamada de teste simula a chamada de um número.

Código: apps/pos-server/src/lib/telefonie.ts, routes/telefonie.ts, packages/shared/src/telefonie.ts; ecrãs Telefonie.tsx, BezorgDialoog.tsx; Android android-app/native/java/Beller*.java. Registo: Telefonia.

Estafetas próprios: rondas, acerto de caixa e seguimento

Para estabelecimentos com estafetas próprios. Ative em Definições → Estabelecimento → Entrega → Estafetas próprios (desativado por predefinição). O estafeta não precisa de app: usa uma página no browser do próprio telemóvel (quem quiser usa a app Optimum Bezorger: veja App de estafeta abaixo).

Criar uma ronda. Na caixa está o botão Rondas (com o número de entregas que ainda têm de sair mais as rondas que estão a caminho).

  1. Em Pronto para entregar, marque os pedidos que vão na ronda. São os pedidos de entrega da caixa, da loja online e da Thuisbezorgd (só entrega própria; não os que têm um estafeta da Thuisbezorgd).
  2. Escolha o estafeta (um funcionário) e o troco que leva (por predefinição o valor da definição), e toque em Criar ronda.
  3. Aparece um código QR. O estafeta lê-o com o próprio telemóvel e vê, por morada, o nome, a morada com um botão Percurso (navegação), Ligar, a observação, a hora pretendida e o que há a cobrar. Há uma calculadora de troco (o cliente dá 50 € → troco 31,50 €). Não é preciso iniciar sessão. Partilhe o link só com o estafeta: quem o tiver vê as moradas desta ronda. Com Código QR para o estafeta cria um link novo; o antigo deixa de funcionar.
  4. Toque em Sair quando o estafeta sair. O troco sai da gaveta (saída de dinheiro, com o motivo). O cliente recebe aviso de que o pedido está a caminho:
    • num pedido da caixa por SMS e/ou e-mail, se Mensagens ao cliente estiver ativo (ver Entrega e faixas horárias);
    • na loja online conforme configurado na loja (e-mail, SMS ou notificação push);
    • na Thuisbezorgd através da Thuisbezorgd.

Se a ronda ainda não saiu, ainda pode ser anulada.

  1. Pelo caminho, o estafeta toca por morada em Entregue, dinheiro, Entregue, cartão (um terminal de pagamento próprio) ou Entregue (já pago). A caixa vê isso de imediato. Se o estafeta não conseguir registar, também se pode fazer na caixa. De volta ao estabelecimento, o estafeta toca em Estou de volta ao estabelecimento.

Acerto de caixa. Depois da ronda, toque em Cobrar (permissão Gerir gaveta):

Seguimento (ativado à parte na definição). Em a caminho, o cliente recebe um link para uma página de seguimento no portal. Esse link está no SMS ou e-mail, e na loja online na página de estado (Segue o teu estafeta). Na página de seguimento aparece:

As páginas aparecem no idioma do telemóvel (todos os idiomas do portal). Na caixa vê em cada ronda quando a localização foi enviada pela última vez (com um link para o mapa).

Privacidade. O portal guarda os dados de uma ronda (nomes, moradas, números de telefone, a localização) só enquanto a ronda decorre. No acerto tudo é apagado, ou então após 24 horas. O cliente só vê o próprio pedido. A localização do estafeta só é visível durante a ronda, e deixa de o ser assim que o estafeta volta.

Planeamento de rondas (opcional)

Ative-o em Definições → Estabelecimento → Entrega → Planeamento de rondas (desligado por predefinição; funciona com estafetas próprios). Na janela Rondas aparece então o botão Sugerir rondas. A caixa agrupa em rondas os pedidos que ainda têm de sair:

Com Usar esta ronda marca esses pedidos, por essa ordem; escolha o estafeta e toque em Criar ronda. Numa ronda que ainda não partiu, Melhor ordem coloca as moradas na ordem mais rápida (também no telemóvel do estafeta). Cada ronda mostra a distância e o tempo de viagem.

Definições: moradas por ronda, duração máxima de uma ronda, a janela horária, a velocidade do estafeta (bicicleta ~15, scooter ~25, carro ~35 km/h na cidade) e os minutos por morada (estacionar, tocar à campainha, cobrar; por defeito 2). Estes valores também podem ser definidos pelo gerente: na janela Rondas com o botão Configurar planeamento de rondas (permissão Configurar planeamento de rondas, ligada por defeito para o gerente; ajustável em Definições → Permissões). Ligar ou desligar o planeamento de rondas e o serviço de rotas (endereço, chave API) ficam com o administrador.

Distância e tempo de viagem, à escolha do administrador:

Com Testar experimenta o serviço. Se o serviço falhar, o planeamento recorre à estimativa e indica-o. Uma morada cuja localização é desconhecida (sem código postal e número de porta válidos) aparece na sugestão em sem localização conhecida e não é planeada. A exportação da configuração inclui as definições, mas não a chave.

Código: lib/ritplanning.ts.

App de estafeta (opcional)

Ative em Definições → Estabelecimento → Entrega → App de estafeta (desativada por predefinição; funciona com estafetas próprios e o portal de gestão). Cada estafeta emparelha então o próprio telemóvel uma única vez, em vez de ler um código QR em cada ronda:

  1. Em Telemóveis emparelhados, escolha o estafeta (um funcionário), se quiser o nome do telemóvel, e toque em Emparelhar telemóvel.
  2. Aparece um código QR. O estafeta lê-o na app Optimum Bezorger (botão Emparelhar) ou com a câmara do telemóvel: a página abre-se no browser. Também funciona sem a app e pode ser adicionada ao ecrã principal.
  3. O emparelhamento mantém-se válido até o revogar; o telemóvel deixa então de ver tudo de imediato. Um novo emparelhamento para o mesmo funcionário substitui o anterior (por exemplo, com um telemóvel novo).

Na app ou na página aparecem todas as rondas próprias (cada ronda que a caixa cria para este estafeta), com os mesmos botões de uma ronda: Percurso, Ligar, valor a cobrar com calculadora de troco, Entregue e Estou de volta ao estabelecimento. Ativável à parte:

A app para Android está no Google Play e na página de transferências do portal (/download/). Uma versão para iPhone está pronta, mas só sai quando houver uma conta de programador Apple; até lá, os iPhones usam a página web. Numa ronda que o estafeta recolheu ele próprio aparece recolhida pelo estafeta na app.

Código: lib/bezorgersapp.ts, no portal src/volgen.mjs e a app no repositório horecapos-bezorger.

No registo fica quem criou uma ronda, a fez sair, a marcou como entregue e a acertou, com os valores. Desativar: sem botão Rondas; as rondas e as definições ficam guardadas.

No portal: /bezorger/<sleutel> e /volg/<code>. Código: lib/bezorgers.ts, routes/bezorgers.ts, Bezorgers.tsx e no portal src/volgen.mjs.

Alerta de tempo de preparação excessivo

Uma encomenda de take-away ou entrega que fica pronta mais tarde do que o prometido: a caixa deteta-o, avisa e pode enviar de imediato um pedido de desculpa ao cliente, opcionalmente com um vale de desconto. Ative em Definições → Estabelecimento → Entrega → Alerta de tempo de preparação excessivo (desligado por predefinição).

Código: lib/telaat.ts, routes/telaat.ts, TeLaat.tsx e packages/shared/src/telaat.ts.

O botão Enviar pedido: o que faz e quando precisa dele

Tocar num produto e tocar em Enviar pedido são dois passos diferentes:

Porquê dois passos? À mesa regista o pedido completo (bebidas, entrada, prato principal), ajusta ainda alguma coisa se o cliente mudar de ideias e depois envia tudo de uma vez para a cozinha, com uma senha por posto em vez de uma por produto. Assim a cozinha pode começar muito antes de se pagar.

O que mais acontece com Enviar pedido:

Também pode cobrar diretamente. Se tocar em Cobrar enquanto ainda houver linhas novas na conta, a caixa envia-as primeiro automaticamente, para que a cozinha e o bar recebam sempre a sua senha. No bar ou em take-away não precisa, portanto, de tocar primeiro em Enviar pedido: registe os produtos e toque logo em Cobrar. Se esse envio automático falhar (sem ligação, linha de all-you-can-eat, caixa negra), o ecrã de pagamento não abre e vê o motivo.

Prefere que o bar não receba talão quando cobra diretamente? Ative a opção Cobrança direta sem talão de pedido em Definições → Estabelecimento → Pedidos e cobrança. Assim, só o que envia com Enviar pedido vai para a cozinha e o bar; o que cobra diretamente não gera talão de pedido.

Botão Cobrar grande ou pequeno

Com a caixa Botão "Cobrar" grande marcada, o ecrã de pedido mostra um botão Cobrar grande logo abaixo dos produtos pedidos: largo, alto e com o valor, para carregar depressa. Se parte da conta já foi paga, o botão mostra o valor ainda em aberto. O botão pequeno em baixo ao lado de Enviar pedido deixa de aparecer.

Com o botão grande, os botões do ecrã de cobrança também são grandes: Cobrar (em Cartão, Vale-oferta e nas outras formas de pagamento) e, em Dinheiro, Dinheiro certo e Cobrar são largos e altos, fáceis de carregar, mesmo com os dedos sujos (por exemplo, num talho). As formas de pagamento ficam um pouco maiores e os botões de gorjeta um pouco mais pequenos, para que tudo fique visível no ecrã.

Numa instalação nova a caixa está desmarcada: fica então o botão pequeno em baixo ao lado de Enviar pedido e um ecrã de cobrança com botões normais. Prefere grande? Em Definições → Estabelecimento, logo abaixo do tema claro/escuro, marque a caixa Botão "Cobrar" grande. Uma caixa registadora que já estava em uso mantém o que tinha. A escolha aplica-se a todas as caixas e tablets do estabelecimento.

Marcar produto como "esgotado"

No ecrã de pedidos, qualquer pessoa pode manter premido um produto (ou clicar com o botão direito do rato) e escolher Esgotado. O produto fica cinzento e deixa de poder ser pedido em todas as caixas. Da mesma forma volta a ativá-lo com Novamente disponível. Cada alteração fica no registo. O administrador continua a poder fazê-lo em Definições → Produtos. O servidor da caixa também recusa um produto marcado como "esgotado" ("Cola" está esgotado), mesmo vindo de um tablet que ainda não tinha a alteração ou de pedidos guardados offline; esse tablet mostra então "Não foi possível enviar".

Ecrã de cozinha (KDS)

Para além das impressoras de talões de cozinha (não em vez delas), a cozinha ou o bar podem usar um ecrã. Num tablet/PC na cozinha abra http://<kassaserver>:3000/keuken, inicie sessão com um PIN e escolha o posto: têm os mesmos nomes que as impressoras (cozinha, bar, ...), por isso o ecrã mostra exatamente o que sairia nesse talão. "Tudo" mostra todos os postos.

O ecrã atualiza-se sozinho de imediato. Os talões de cozinha continuam a ser impressos; quem não usa o ecrã não nota diferença nenhuma.

Ecrã de cozinha: passar, ordem e prato

Definições → Impressoras → Ecrã de cozinha. Cada parte liga-se separadamente, desligada por predefinição; ao desligar, tudo é guardado.

Impressora de cozinha desligada ou sem ecrã de cozinha

A caixa continua sempre a funcionar, mesmo quando a impressora da cozinha ou do bar está desligada (ou sem papel, ou com o cabo solto) e também sem ecrã de cozinha:

Pratos (entrada, prato principal ...)

Os botões de prato só aparecem quando são necessários: assim que houver um menu (produto composto) no pedido, ou quando já houver algo no prato 2 a 4. Com produtos normais, como uma cola, não os vê e tudo vai logo para a cozinha. Não há nada a configurar.

Por baixo da lista do pedido está Prato 1 2 3 4. Por defeito está ativo o prato 1 e tudo funciona como sempre: "Enviar pedido" envia tudo logo para a cozinha, sem cabeçalhos de prato no talão de cozinha. Se escolher o prato 2 (ou superior) antes de tocar nos produtos:

O prato 1 segue sempre de imediato. Se o prato 2 já foi chamado, um prato pedido mais tarde no prato 2 também segue de imediato.

Alergénios por produto

Por defeito desligado: os alergénios não aparecem em lado nenhum. Ligue em Definições → Estabelecimento → Introduzir e mostrar alergénios por produto.

All-you-can-eat

Por defeito desligado. Ativa-se em Definições → Estabelecimento → All-you-can-eat (só o administrador). Cria um ou mais menus fixos, p. ex. Peixe, Carne e Sushi, cada um com:

Com ↑ ↓ define a ordem. Esta conta quando um prato pertence a vários menus fixos: vai então para o de cima que o grupo escolheu. Eliminar retira um menu fixo para mesas novas; as mesas em curso mantêm as suas linhas de preço (aí ainda pode reduzir pessoas, mas não aumentar).

À mesa:

Vales-oferta

Dois interruptores em Definições → Estabelecimento → Cartões-presente:

Saldo recarregável (opcional)

Para clubes, cantinas desportivas, centros de juventude e eventos: um vale-oferta com saldo torna-se um cartão recarregável. Ative em Definições → Estabelecimento → Saldo recarregável, por baixo dos vales-oferta (por predefinição desligado; só funciona se Vender vales-oferta com saldo estiver ligado).

Vales de refeição

Só para estabelecimentos na Bélgica, por predefinição desligado: Definições → Estabelecimento → Cobrar → Vales de refeição. Os vales de refeição são um benefício salarial: o empregador carrega-os num cartão do trabalhador (Edenred, Monizze ou Pluxee). O cliente paga com eles no terminal de pagamento normal; não é necessária nenhuma ligação aos emissores.

Moeda estrangeira

Cobrar em dinheiro noutra moeda, p. ex. turistas britânicos ou americanos, ou na zona fronteiriça com francos suíços. Por predefinição desligado: Definições → Estabelecimento → Cobrar → Moeda estrangeira. Adicione as moedas (CHF, CZK, DKK, GBP, HUF, NOK, PLN, SEK, TRY, USD) com um câmbio por moeda: quantos euros conta por 1 unidade (p. ex. 1 GBP = € 1,15).

Botões extra para pedidos e cobrança

Botões para o que nem todos os estabelecimentos precisam. Tudo está desligado por predefinição; ligue cada botão em Definições → Estabelecimento → Pedidos e cobrança (permissão Configurar estabelecimento, pagamentos e impressoras). Desligado = o botão não aparece em lado nenhum da caixa e o servidor da caixa recusa a operação. Nos Países Baixos tudo funciona sem caixa negra; na Bélgica um botão só funciona depois de essa função ter sido testada com a caixa negra (junto ao botão é indicado enquanto não for o caso).

Ao abrir uma mesa:

Ao fazer o pedido (ecrã de pedidos, para o que tocar a seguir):

Ao cobrar:

Posteriormente (Talões):

Código: apps/pos-server/src/lib/kassaopties.ts, routes/kassaopties.ts; ecrã KassaOpties.tsx. Registo: Definição alterada, SPV resgatado, Corrigir talão, Não pago.

Descontar adiantamento

Um adiantamento (sinal, ex. para uma festa ou uma reserva) vende-se como um produto normal com Adiantamento ligado (Definições → Produtos; tem sempre preço aberto). Crie um por taxa de IVA se o adiantamento tiver de ser por taxa (ex. Adiantamento comida e Adiantamento bebidas), ou um só produto se for uma parte do orçamento. O cliente paga o adiantamento antecipadamente e recebe um talão.

Ligar: Definições → Estabelecimento → Pedidos e cobrança → Descontar adiantamento (desligado por predefinição). Na cobrança final, toque em Descontar adiantamento no ecrã de pedidos e introduza o número do talão do adiantamento. A caixa coloca as linhas de adiantamento desse talão na conta com quantidade negativa (mesmo produto, preço e IVA). O que já foi descontado não pode ser descontado outra vez. Se o adiantamento for superior à conta, o cliente recebe a diferença (reembolso). Na Bélgica as linhas descontadas vão para a caixa negra como reembolso (REFUND) (UC4110, UC4111, UC4113). Registo: Adiantamento descontado.

Talão por e-mail

Desligado por padrão. Ative em Definições → Estabelecimento → Talão também por e-mail.

SMTP_HOST=smtp.voorbeeld.nl
SMTP_PORT=587
SMTP_GEBRUIKER=kassa@voorbeeld.nl
SMTP_WACHTWOORD=...
SMTP_AFZENDER=bon@voorbeeld.nl

Reinicie a caixa depois de preencher. A partir daí, em Cobrar aparece o campo Enviar também o talão por e-mail (opcional): vazio = só imprimir, como sempre; com um endereço de e-mail = o mesmo talão (com discriminação do IVA e linhas fiscais) é também enviado por e-mail ao cliente, com o nome do estabelecimento como remetente.

Reservas

Ative em Definições → Estabelecimento → Reservas (desligado por predefinição). Aí também define quantos minutos antes uma mesa reservada aparece na planta (padrão 60) e a duração padrão de uma reserva (padrão 120 minutos).

Integração de caixa TheFork: mesa aberta à chegada, conta de volta

Com a API POS do TheFork, a caixa trabalha em conjunto com o TheFork Manager (desligado por predefinição), além de ir buscar as reservas acima. Ligar em Definições → Plataformas de reservas → Integração de caixa TheFork; funciona através do portal de gestão.

Documentação do TheFork: https://docs.thefork.io/POS-API/introduction

Lista de espera para clientes sem reserva

Para clientes sem reserva que estão à espera de uma mesa. Ativar em Definições → Estabelecimento → Lista de espera (sem reserva) (desligado por predefinição). Só visível se o SMS via CM.com estiver configurado; caso contrário, a lista de espera não aparece em lado nenhum na caixa (nem nas definições). Funciona à parte das reservas: também quando estão desligadas. Aí também está o texto do SMS (vazio = "Hallo {naam}, uw tafel bij {zaak} is klaar. Wilt u zich melden bij de bediening?"; {naam}, {zaak} e {personen} são preenchidos).

Cartão de cliente / pontos

Ative em Definições → Estabelecimento → Cartão de cliente / pontos (desligado por predefinição; assim não se vê nada em lado nenhum). Aí também define: pontos por euro (0 = só cartões de carimbos), após quantos pontos há recompensa e quantos euros de desconto vale essa recompensa.

Perfil do cliente: VIP, restrições alimentares e preferências (opcional)

Ative em Definições → Estabelecimento → Perfil do cliente, por baixo do cartão de cliente (por defeito desligado; só funciona com o cartão de cliente ligado). Depois:

Favoritos / botões rápidos

Desligado por padrão. Definições → Estabelecimento → Favoritos / botões rápidos:

Mais uma ronda

No ecrã de pedidos aparece o botão ↻ Mais uma ronda (assim que haja algo na conta, mesmo que ainda não tenha sido pedido). Um toque volta a juntar a última ronda (tudo o que foi enviado de uma vez com "Enviar pedido", ou o que acabou de tocar) como novas linhas; depois é só Enviar pedido. Os preços são os atuais (incluindo happy hour).

Tempo de mesa na planta

Cada mesa ocupada mostra ⏱ 45m · 12m: há quanto tempo a mesa está ocupada e há quanto tempo foi registado algo pela última vez (toque e mantenha na mesa, ou passe o rato por cima, para ver as horas exatas). Se durante algum tempo nada for pedido, a mesa fica com uma borda laranja: passe por lá. Quantos minutos define em Definições → Estabelecimento → Tempo de mesa (padrão 20, 0 = sem borda laranja). Se ainda nada foi registado, conta a partir da abertura da mesa.

Se houver vários grupos (contas próprias) numa mesa, aparece uma linha por grupo, p. ex. G1 ⏱ 50m · 12m e Jansen ⏱ 10m (o nome do grupo, ou então o número do grupo). Um grupo parado há demasiado tempo recebe uma etiqueta laranja e a mesa uma borda laranja.

Mover a mesa inteira

No ecrã de pedidos existe Mudar de mesa. Escolha a sala (p. ex. Esplanada) e uma mesa: todos os grupos da mesa vão juntos, cada um com a sua própria conta. Se escolher uma mesa ocupada, as mesas são juntadas (os grupos são acrescentados). Se quiser mover apenas uma parte, use como antes Dividir / mover. Se tudo tiver de ficar numa só conta, use Juntar.

Continuar offline (tablet sem wifi)

Se a ligação entre um tablet e o servidor da caixa falhar (Wi-Fi na esplanada, servidor desligado por momentos), aparece uma barra amarela e o tablet continua a trabalhar com as últimas mesas, produtos e pedidos abertos guardados:

Número de pessoas

Opcional e desligado por predefinição: Definições → Estabelecimento → Pedidos e pagamento → Registar número de pessoas. Desligado = o mínimo de toques possível: uma mesa livre abre com um só toque, não aparecem pessoas em lado nenhum, e o relatório, o painel e o resumo do dia não mostram clientes nem consumo por cliente.

Ligado: ao tocar numa mesa livre, a caixa pergunta quantas pessoas são (botões grandes 1-8, ou escrever; "Saltar" = 1). Na planta, uma mesa ocupada mostra "3/4 pess." (pessoas/lugares, a amarelo se houver mais pessoas do que lugares). No ecrã de pedidos altera-o com o botão "3 pess." na barra de grupos; com vários grupos, a mesa soma todos os grupos.

Sem pessoas tudo continua a funcionar: Dividir igualmente no pagamento começa em 2, o all-you-can-eat pergunta ele próprio o número de adultos e crianças, e as reservas e a lista de espera mantêm o seu próprio número de pessoas (a mesa abre então sem pessoas).

Registo HACCP

Todos os estabelecimentos de restauração têm de monitorizar e registar a segurança alimentar: nos Países Baixos segundo a Hygiënecode voor de Horeca (código de higiene para a restauração, fiscalização pela NVWA), na Bélgica segundo o autocontrolo do FAVV (guia G-023). Ative o Registo HACCP em Definições → Leis e normas (desativado por predefinição).

Sistema de pressão e caudalímetros

Cada tiragem comunicada por um computador de pressão ou caudalímetro vai para a conta, para que nada se "perca". Ative em Definições → Sistema de pressão (desligado por predefinição).

Tiragem doseada e Kegboard

Com a tiragem doseada, uma torneira só abre depois de o copo ser registado na caixa, e apenas para essa quantidade. Assim, nada é tirado sem estar na conta. Só funciona com o sistema de pressão ativo, e ativa-se por torneira (desativado por predefinição).

Controlar a música a partir da caixa

O pessoal controla a música no ecrã tátil da caixa, por isso não é preciso um ecrã separado no balcão. Ative em Definições → Estabelecimento → Ecrãs e utilização → Controlar a música a partir da caixa (desligado por predefinição). Aparece então o botão Música na barra superior: por fonte (p. ex. Bar e Esplanada) Reproduzir, Pausa, Seguinte, Anterior, Mais alto, Mais baixo e um controlo deslizante para o volume, com o que está a tocar. Voltar à caixa fecha o painel. Ao desligar, as fontes são guardadas.

O gestor adiciona as fontes com + Fonte de música, escolhe como cada uma está ligada e testa-a com Testar:

A caixa comunica com os leitores a partir do servidor, por isso estes têm de estar na mesma rede que a caixa (Soundtrack através da internet). Qualquer pessoa com sessão iniciada pode controlar a música; para configurar é preciso a permissão Configurar estabelecimento, pagamentos e impressoras. O token e a palavra-passe nunca voltam a ser mostrados nem aparecem no registo; no registo fica apenas a configuração (ligado/desligado, fontes), não cada toque num botão. A exportação da configuração inclui apenas ligado/desligado (as fontes pertencem a um único estabelecimento).

Segundo ecrã num tablet ou telemóvel

A música e as câmaras também podem ser vistas no tablet ou telemóvel próprio de um funcionário, como segundo ecrã ao lado da caixa. Na janela Música ou Câmaras está o botão Num tablet ou telemóvel: mostra um código QR com o endereço, p. ex. http://192.168.1.20:3000/muziek ou .../camera.

  1. Ligue o tablet ou telemóvel à rede Wi-Fi do estabelecimento.
  2. Leia o código QR com a câmara (ou escreva o endereço no browser).
  3. Inicie sessão com o seu próprio PIN. Só vê o que lhe é permitido: a música todos, as câmaras apenas com a permissão Ver imagens das câmaras.
  4. Concluído: Terminar sessão no canto superior direito. Se a sessão tiver expirado (p. ex. o tablet esteve parado durante a noite), o ecrã volta a pedir o PIN.

Dica: adicione a página ao ecrã principal do tablet (no browser: Adicionar ao ecrã principal) e ela abre como uma app.

Por isso a caixa obtém o endereço IP do PC da caixa na rede (se o PC tiver vários, p. ex. Wi-Fi e cabo, escolhe a rede). No portal de gestão (caixa à distância) é o endereço do portal. A caixa gera o código QR sozinha, sem internet.

Emparelhar tablets: com um só botão para o tablet (opcional)

Ainda mais fácil: emparelhe um tablet uma vez e a caixa envia a música ou as câmaras para esse tablet com um só botão. Ative-o em Definições → Estabelecimento → Ecrãs e utilização → Tablets como segundo ecrã (desligado por predefinição).

  1. No tablet: abra http://<kassaserver>:3000/tablet (na definição aparece Num tablet ou telemóvel com o código QR), inicie sessão com um PIN e dê um nome ao tablet, p. ex. Tablet Bar. Emparelhar.
  2. Na caixa: na janela Música ou Câmaras aparece agora o botão Para Tablet Bar (com um ponto verde quando o tablet está ligado). Toque nele: o tablet abre esse ecrã sozinho. Na música, a fonte escolhida também é enviada (p. ex. Esplanada).
  3. No tablet: Fechar volta à espera; Desemparelhar este tablet remove o emparelhamento.

Deixe a página aberta no tablet; se o tablet estiver desligado ou em repouso, abre o ecrã assim que voltar a ligar. O tablet fica com a sessão do funcionário que a iniciou: enviar e ver as câmaras só é possível com a permissão Ver imagens das câmaras. Na definição, o administrador vê que tablets estão emparelhados e se estão ligados, e pode mudar-lhes o nome ou removê-los. O tablet guarda uma chave própria; a caixa guarda apenas um hash dela. Ao desligar: os tablets emparelhados são mantidos. O registo mostra quem emparelhou, mudou o nome ou removeu um tablet.

Ecrã de chamada para take-away

Um ecrã para os clientes com Em preparação à esquerda e Pronto à direita, com números grandes, como numa snack-bar ou num restaurante de fast food. Ative-o em Definições → Estabelecimento → Ecrãs e utilização → Ecrã de chamada para take-away (desligado por predefinição).

Não é preciso emparelhar: numa TV com navegador (smart TV, stick ou mini PC), num tablet ou num segundo monitor, abra o endereço da caixa seguido de /oproep, por ex. http://192.168.1.20:3000/oproep. Na definição e na janela Chamar estão os botões Num ecrã próprio e Num tablet ou telemóvel (código QR com o endereço). Não é preciso iniciar sessão: o ecrã mostra apenas números. Toque uma vez no ecrã para que o navegador possa reproduzir som.

O que aparece:

O número: na loja online, Thuisbezorgd e plataformas de entrega, o número de pedido que o cliente ou estafeta já tem; caso contrário o número de levantamento (1 a 999). Aparece em grande no talão, com a explicação de que o número surge no ecrã quando o pedido estiver pronto (na língua do talão).

Opcional (desligado por defeito, na definição):

Na caixa existe o botão Chamar (com o número de pedidos ainda em preparação):

  1. Pronto marca um número como pronto à mão (sem ecrã de cozinha, ou quando é mais rápido). Num pedido da loja online ou da Thuisbezorgd o estado é atualizado também, por isso o cliente também é avisado.
  2. Voltar coloca-o de novo em Em preparação.
  3. Levantado retira-o do ecrã (com Desfazer).

Na definição escolhe também se o nome próprio aparece ao lado do número (por predefinição não, por privacidade) e se o ecrã emite som. Desligar: sem botão Chamar e sem número de levantamento no talão; as definições ficam guardadas. No registo fica quem marcou o quê à mão como pronto, voltar ou levantado.

Registo de entrada/saída

Por padrão, o registo de ponto está desligado: não aparece em lado nenhum na caixa (nenhum botão na barra superior, nada no ecrã de início de sessão, nenhum separador Horário de trabalho). Ative-o em Definições → Estabelecimento, em Registo de entrada/saída dos funcionários:

Quem não usa a caixa (p. ex. a cozinha) regista o ponto no ecrã de início de sessão: toque em Registar entrada / saída e introduza o seu PIN. Alterna entre entrada e saída, sem iniciar sessão.

Com o registo de ponto ligado, o administrador vê em Definições → Horário de trabalho:

Na Bélgica, cada registo de entrada e saída é também comunicado à caixa negra. Se esta não estiver acessível, o registo de ponto não é efetuado (tal como ao cobrar). Ainda falta confirmar se isto cumpre exatamente o registo de pessoal belga.

Pesagem e etiquetas (balança)

Com a balança ligada (Definições → Balança), os produtos podem ter um preço por quilo. Todos os outros produtos continuam a ser vendidos à unidade.

Uber Eats, Deliveroo e HubRise

Além do Thuisbezorgd.nl / Takeaway.com, entram também na caixa os pedidos da Uber Eats (Países Baixos e Bélgica), da Deliveroo (só Bélgica; a Deliveroo saiu dos Países Baixos no final de 2022) e tudo o que está no HubRise (entre outros Uber Eats, Deliveroo, Just Eat/Takeaway.com e apps de encomendas mais pequenas). Cada plataforma liga-se separadamente em Definições → Plataformas de entregas (desligado por predefinição; desligar guarda tudo). O separador mostra por plataforma em que países opera e avisa se não opera no país do estabelecimento.

Pedidos. Um pedido torna-se um pedido normal (bezorgen ou afhalen, nome de grupo <platform> <nummer>) com os preços da plataforma: produtos reconhecidos pelo ID (do menu), pelo código ou pelo número PLU; desconhecido = uma linha avulsa com o preço da plataforma (e um aviso); taxas de entrega, suplementos e descontos como linhas próprias; se mesmo assim o total não bater certo, uma linha "Diferença". O talão vai logo para cozinha/bar. Botão Plataformas na barra superior (com o número de pedidos em curso; laranja quando há algo por aceitar): aceitar ou recusar (com motivo), em preparação, pronto, a caminho, entregue ou levantado, cancelar e Concluir (pago online). O que a plataforma suporta é devolvido (Uber Eats: aceitar, recusar, cancelar; Deliveroo: aceitar, recusar, em preparação, pronto, levantado; HubRise: todos os estados). Se o estabelecimento fizer as entregas (entrega própria), o pedido também aparece em Rondas, e a partida e a entrega seguem automaticamente para a plataforma. Um cancelamento pela plataforma faz caducar o pedido. Se a caixa estiver mais de 2 minutos sem ligação ao portal, o portal recusa um novo pedido da Uber Eats e informa a Deliveroo (com tablet) de que não resultou, para que o estabelecimento o veja no tablet.

Código: apps/pos-server/src/lib/bezorgplatforms.ts, routes/bezorgplatforms.ts; ecrãs Bezorgplatforms.tsx. Lado do portal: horecapos-portaal/src/platforms.mjs. Registo: Plataformas de entregas (ligar/desligar, definições, pedidos). Tudo é incluído nas cópias de segurança da caixa.

As plataformas mais pequenas nos Países Baixos e na Bélgica (Homie, Hebtrek, sneleten.nl, Bistroo ...) não têm integração de caixa pública; se estiverem no HubRise, funcionam através do HubRise. De resto: veja o backlog.

Máquina de numerário (sistema fechado de gestão de numerário)

Por predefinição desligado: o dinheiro funciona como sempre. Com um sistema fechado de gestão de numerário, o pessoal não toca no dinheiro: o cliente ou o funcionário introduz o dinheiro na máquina, que o conta, verifica se há notas falsas e devolve o troco.

O botão ©

Dados da OptimumPOS

No canto inferior direito de cada ecrã (PIN, planta, pedidos e cozinha) há um pequeno botão ©. Abre os dados da OptimumPOS: logótipo, morada, telefone, e-mail e site. O ícone está guardado localmente na app e por isso funciona também sem internet. O mesmo ícone é o ícone da app (separador e ecrã inicial).

Parte 2 · Gerente

Primeiros passos

Por padrão, um gerente pode fazer tudo o que o empregado de mesa faz e, além disso, entre outras coisas, aplicar descontos, fazer devoluções, fechar o dia, gerir a gaveta e consultar o registo e o stock. Isso está sobretudo no botão Relatório:

Stock

Desligado por padrão. Ative em Definições → Estabelecimento → Controlar stock. Desligado = não aparece em lado nenhum na caixa.

Encomendar a fornecedores

Por predefinição desligado. Liga-se em Definições → Stock → Encomendar a fornecedores (só com Controlar stock ligado). Desligado = a lista de encomenda funciona como sempre.

Gestão de avaliações

Ler e responder a avaliações do Google e da Trustpilot na caixa. Ativar em Definições → Fidelização e avaliações → Gestão de avaliações (desligado por predefinição; assim não se vê nada em lado nenhum). Ler e responder em Relatório → Avaliações (permissão Ler e responder a avaliações, por predefinição também para o gerente). Se desativar, as ligações e as avaliações continuam guardadas.

Marketing por SMS e e-mail

Mensagens para clientes do cartão de cliente que deram o seu consentimento. Sem cartão de cliente, nenhum dos dois pode ser ativado.

Gorjeta por funcionário

Em Definições → Estabelecimento → Gorjeta (só se "Mostrar botões de gorjeta ao cobrar" estiver ligado) escolhe como a gorjeta por funcionário aparece no saldo intermédio (X), no relatório Z (talão e e-mail) e em Faturação por período (também no CSV):

OpçãoDistribuição
Desligado (padrão)apenas o total de gorjetas, como sempre
Cada um a sua gorjetagorjeta das contas que cada um cobrou
Fundo por horastodas as gorjetas juntas, conforme as horas registadas nesse período (requer o registo de entrada/saída; ninguém registou = partes iguais)
Fundo igualtodas as gorjetas juntas, em partes iguais por quem tinha entrada registada (sem registo de ponto: quem registou ou cobrou algo)

Os cêntimos soltos vão para quem está mais perto do cêntimo seguinte, para que o total esteja sempre certo. É um resumo: a caixa não paga nada (isso pode fazer-se com "Dinheiro retirado da gaveta"). Os relatórios Z antigos ficam como estavam.

Relatório Z por e-mail

Em Definições → Estabelecimento → Enviar relatório Z para, introduza uma vez o e-mail do administrador (vários endereços: separados por vírgula, máx. 3). Após Fechar dia, o relatório Z segue automaticamente para esse endereço, além do talão impresso. Vazio = não enviar, como sempre.

Resumo do dia (opcional)

Se houver um endereço em Enviar relatório Z para, por baixo aparece a caixa Com um breve resumo do dia no início do e-mail (por defeito desligada). Ligada = no início do e-mail do relatório Z, algumas linhas em linguagem simples, apenas com os dados da própria caixa (sem IA, nada sai para fora):

O próprio relatório Z (talão e e-mail) fica exatamente igual. Pré-visualização de hoje mostra o resumo desde o último fecho do dia até agora. O resumo é em neerlandês, tal como o e-mail do relatório Z.

Painel

Separador Painel em Relatório (permissão Faturação por período), só de leitura:

Os vales-oferta vendidos não contam como faturação, e descontos e cabeçalhos de menu não entram no top 10 (tal como nos outros relatórios). Um dia vai das 00:00 às 24:00.

Relatórios extra

Três separadores extra em Relatório, cada um ativável em separado em Definições → Estabelecimento → Gestão e relatórios → Relatórios extra (por padrão desligado: sem separador). Exigem a mesma permissão que Faturação por período e são apenas de leitura. Período: esta semana, semana passada, este mês, mês passado, os últimos 90 dias, este ano ou à escolha (no máximo pouco mais de um ano).

Descontos

Um gerente ou administrador vê no ecrã de pedidos, ao lado do total, o botão % Desconto:

O desconto aparece como linha própria no talão ("Desconto 10%", com o motivo por baixo) com a mesma taxa de IVA, para que o total e o resumo do IVA batam certo. Em todo o talão o desconto é repartido por taxa de IVA. Retirar: toque no montante da linha de desconto. Se uma linha com desconto próprio for anulada, esse desconto cai com ela. Se retirar um produto de um talão com desconto percentual sobre todo o talão, a caixa recalcula esse desconto sobre o que resta (na Bélgica UC226); um montante fixo mantém-se e é novamente repartido pelas linhas ao cobrar. Se, devido a um desconto de 100%, não houver nada a pagar, feche com "Fechar (nada a pagar)". Os descontos aparecem no registo, e no relatório X/Z e no resumo do período como "dos quais desconto". Na devolução de um talão com desconto, o desconto é aplicado proporcionalmente.

Códigos de desconto (opcional)

Códigos com desconto no talão inteiro, por exemplo para uma promoção (ZOMER10). Ligar em Definições → Estabelecimento → Códigos de desconto (desligado por predefinição); os códigos criam-se em Definições → Códigos de desconto (permissão Gerir produtos):

No ecrã de pedidos está o botão Código de desconto (qualquer pessoa pode introduzir um código; o código foi criado previamente pelo estabelecimento). O desconto aparece no talão como linha "Código de desconto CODE", distribuído pelas taxas de IVA; um código por talão, e não depois de já ter havido um pagamento (parcial). Se a linha for removida ou o pedido for cancelado, a utilização deixa de contar. Remover um código já usado desliga-o (os relatórios continuam corretos). Tudo fica no registo (Código de desconto). Código: lib/kortingscodes.ts, routes/kortingscodes.ts, Kortingscodebeheer.tsx, KortingscodeDialoog.tsx.

Não aparecem na lista em Definições → Códigos de desconto (o número por promoção sim, em Relatório → Marketing) e passam para a loja online enquanto forem válidos e não utilizados.

Relatórios e fecho do dia

Relatório - saldo intermédio (X)

Botão Relatório na barra superior:

Exportação para a contabilidade

Relatório → Faturação por período → Exportação contabilidade (diário) (permissão Faturação por período) cria um CSV com um lançamento por dia, pronto a importar no e-Boekhouden, Exact, SnelStart, Twinfield, etc. (através da respetiva importação CSV/de diário geral), ou um dos formatos abaixo (UBL, XAF e pronto para 14 programas).

Por dia, um documento (KASSA-JJJJMMDD) que fecha sempre (débito = crédito):

LadoO quê
Débitorecebimentos por forma de pagamento (dinheiro, cartão, vale-oferta, online, outros), incl. gorjeta
Créditofaturação por taxa de IVA (sem IVA) e IVA a entregar por taxa
Créditogorjeta (a pagar ao pessoal, não é faturação)
+/-diferença de arredondamento (arredondamento de dinheiro a 5 cêntimos)
+/-dinheiro colocado/retirado da gaveta (gestão de caixa) contra contas de transição, e diferença de caixa do relatório Z

Devoluções e descontos já estão incluídos nos talões e reduzem a faturação. Colunas: Datum; Boekstuk; Dagboek; Rekening; Omschrijving; Debet; Credit; Btw-code; Btw-% (ponto e vírgula, vírgula decimal). Após a transferência, a caixa indica se há dias que não fecham ou que têm uma diferença maior do que o arredondamento.

Ao lado do botão escolhe o formato (a escolha fica memorizada no navegador). O mesmo diário, mas formatado para que o software o possa importar diretamente. A lista mostra apenas os formatos do país do estabelecimento (Definições → Estabelecimento), primeiro os padrões (CSV, UBL, XAF) e depois os programas por ordem alfabética:

FormatoFicheiroImportar no software
Geral (CSV)journaal_…csvqualquer software com importação CSV/memorial (associar as colunas)
UBL 2.1 / Peppol (XML), NL e BEjournaal_…_ubl.xml (vários dias: .zip)por dia uma fatura "recebimentos diários" a Kassaverkopen (já paga) segundo Peppol BIS Billing 3.0, com uma linha por taxa de IVA e a conta de vendas em AccountingCost; apenas faturação e IVA (formas de pagamento, gorjetas, arredondamento, gaveta e diferença de caixa não pertencem a uma fatura). Para carregar, entre outros, no Adsolut, Billit, BUNNI, DigiBoox, Expert/M, Moneybird, Popsy, Rompslomp, Storecove e TriFact365; não para enviar pela rede Peppol. Nome, número de IVA e morada vêm de Definições → Estabelecimento
XML Auditfile Financieel (XAF 4.0), NLjournaal_…_xaf.xafficheiro de auditoria da Autoridade Tributária neerlandesa (Belastingdienst) (XSD XmlAuditfileFinancieel4.0): um único ficheiro para o período, com razão geral, códigos de IVA, períodos e por dia uma transação de diário geral; pode ser importado, entre outros, no Caseware, Exact Reeleezee e Visma Cash
AccountView (XML), NLjournaal_…_accountview.xmlMovimentos XML (VFPData, um transact por linha de lançamento com dj_code, period, inv_date, inv_nr, acct_nr, trn_desc e amount: débito positivo, crédito negativo), um documento por dia no diário geral; importação com uma definição de importação (Document → Importeren → Importdefinitie aanmaken, tipo XML), os nomes dos campos são os do próprio AccountView, por isso basta associá-los 1 para 1 uma vez. Mande verificar a primeira importação
AFAS Profit (XML)journaal_…_afas.xmlXML do UpdateConnector FiEntries (lançamentos financeiros), um lançamento por dia com ano, período, empresa e diário; importar no Profit com Importar → XML; preencha o número da empresa (padrão 1)
Asperion (CSV), NLjournaal_…_asperion.csvformato FMUTA (Extra → Import financiële mutaties), por dia uma linha de cabeçalho e as linhas de lançamento; a definição de importação é configurada pela Asperion através do helpdesk
Resumo diário (HTML), NL e BEjournaal_…_dagstaat.htmlresumo diário legível por dia (faturação por taxa de IVA, formas de pagamento, gorjetas, diferença de caixa) e totais; imprimir como PDF ou enviar por e-mail, para software sem importação (Accountable, Dext, Dexxter, Jortt, Kleisteen, MoneyMonk)
e-Boekhouden.nl (CSV)journaal_…_eboekhouden.csvData; N.º do documento; Descrição; Conta do razão; Valor (débito positivo, crédito negativo); código de IVA GEEN (o IVA já está nas contas de IVA); Importar → Movimentos, tipo diário geral
Exact Online (XML)journaal_…_exact.xmleExact-XML (tópico GLTransactions): um lançamento de diário geral por dia (tipo 90) no diário; Importar/exportar → Importar XML
InformerOnline (TXT), NLjournaal_…_informer.txtdiário geral separado por tabulações (Geavanceerd → Memoriaal → uploaden); o diário tem de ser um número 1–99 (caso contrário 90)
KING ERP (XML), NLjournaal_…_king.xmlKING_JOURNAAL: um lote de lançamentos (não definitivo) com um lançamento por dia
KOMAS (CSV), NLjournaal_…_komas.csvformato livre do KOMAS (0401 Importeren journaalposten): Datum; Grootboek; Omschrijving; Bedrag
Odoo (CSV), NL e BEjournaal_…_odoo.csvContabilidade → Journal Entries → Import records; diário e conta por nome ou código
Sage BOB 50 (Excel), BEjournaal_…_bob.xlsxImportation de données externes → Opérations diverses (associar as colunas uma única vez)
SAP Business One (ZIP), NL e BEjournaal_…_sapb1.zipData Transfer Workbench, Journal Entries: JournalEntries.csv e JournalEntries_Lines.csv
SnelStart (CSV)journaal_…_snelstart.csvData; N.º do documento; Descrição; Conta do razão; Débito; Crédito (dd-mm-aaaa, vírgula decimal, sem BOM); importar como diário geral, o diário escolhe-se ao importar
Twinfield (XML)journaal_…_twinfield.xmltransações de diário como rascunho (destiny="temporary"), o contabilista torna-as definitivas; preencha o código da empresa (vazio = a empresa para a qual importa)
Winbooks (CSV), BEjournaal_…_winbooks.csvK_DOC.CSV, por dia um documento no diário (o Winbooks numera sozinho)
Yuki (XML)journaal_…_yuki.xmlJournal-XML (GeneralJournal), um lançamento de diário geral por dia, mesma estrutura da ligação em direto; ID da empresa opcional

Resumo: que software de contabilidade de que forma

Por segmento, por ordem alfabética. NL/BE = país em que o software funciona: em Definições → Contabilidade → Software de contabilidade só vê os programas do país do estabelecimento (os programas neerlandeses não funcionam na Bélgica e vice-versa). Live = a caixa lança sozinha todos os dias (escolhe-se em Definições → Contabilidade → Software de contabilidade); mediante pedido = existe uma API, mas exige primeiro um registo como parceiro ou uma aprovação do fornecedor (avise-nos). Ficheiro = o formato em Exportação contabilística. Onde ambos são possíveis, pode usar ambos. A lista está em packages/shared/src/boekhoudcatalogus.ts e aparece também em Definições → Contabilidade.

SoftwareNLBELiveFicheiroObservação
PME e trabalhadores independentes
Accountable–✓–Resumo diário (HTML, para PDF ou e-mail)
AccountView (Visma)✓–mediante pedidoAccountView (XML), Geral (CSV)Ficheiro: movimentos XML para uma definição de importação (Document → Importeren); o CSV genérico também funciona com uma definição de importação. Live através da API do AccountView.Net mediante pedido ao AccountView.
Acumulus✓–✓–Live como fatura de venda paga por dia, com uma linha por taxa de IVA.
AFAS Profit✓–✓AFAS Profit (XML)
Asperion✓–mediante pedidoAsperion (CSV)Live após inscrição como parceiro API na Asperion.
Billit–✓mediante pedidoUBL 2.1 / Peppol (XML)Carregar o UBL através de Fast input; live após aprovação pela Billit.
BUNNI✓––UBL 2.1 / Peppol (XML)Ainda sem documentação pública da API.
Dexxter–✓–Resumo diário (HTML, para PDF ou e-mail)
DigiBoox (Visma DigiBTW)✓––UBL 2.1 / Peppol (XML)
e-Boekhouden.nl✓––e-Boekhouden.nl (CSV)Também para antigos clientes Ficsus.
Exact Online✓✓✓Exact Online (XML)
Exact Reeleezee✓––XML Auditfile Financieel (XAF 4.0)
Horus–✓✓–
InformerOnline✓––InformerOnline (TXT)
Jortt✓––Resumo diário (HTML, para PDF ou e-mail)Sem importação: lance a faturação do dia como receita com o resumo diário como anexo.
KING✓–mediante pedidoKING ERP (XML)Live após registo como parceiro na KING Software.
Kleisteen✓––Resumo diário (HTML, para PDF ou e-mail)
KOMAS (Adfinis)✓––KOMAS (CSV)
Minox✓–mediante pedido–Live após uma ligação de parceiro através da Minox.
Moneybird✓–✓UBL 2.1 / Peppol (XML)
MoneyMonk✓––Resumo diário (HTML, para PDF ou e-mail)O MoneyMonk terá em 2026 uma API para integrações.
Octopus–✓mediante pedido–Live após pedir um software house ID à Octopus.
Popsy / Allegro–✓–UBL 2.1 / Peppol (XML)
Rompslomp✓––UBL 2.1 / Peppol (XML)
Sage BOB 50–✓–Sage BOB 50 (Excel)
Silvasoft✓✓✓–Live como lançamento de vendas por dia, com uma linha por taxa de IVA; formas de pagamento, gorjetas e diferença de caixa não são incluídas.
SnelStart✓–✓SnelStart (CSV)
Twinfield✓–✓Twinfield (XML)
Visma Cash✓–mediante pedidoXML Auditfile Financieel (XAF 4.0)API com uma chave do CASHWeb; o formato de registo dos lançamentos ainda está a ser confirmado.
Visma eAccounting✓–mediante pedido–Live após aprovação pela Visma (registo como parceiro).
Winbooks–✓mediante pedidoWinbooks (CSV)
Wolters Kluwer Adsolut–✓mediante pedidoUBL 2.1 / Peppol (XML)UBL com a conta de vendas por linha; ative no Adsolut "grootboekrekening verwerken bij verkopen".
Wolters Kluwer Expert/M–✓–UBL 2.1 / Peppol (XML)
Yuki✓✓✓Yuki (XML)
Internacional
QuickBooks Online✓✓✓CSV genéricoSem edição neerlandesa nem belga: verifique as definições de IVA.
Xero✓✓✓CSV genérico
Zoho Books✓✓✓CSV genérico
Empresas e cadeias
Exact Globe+✓✓–Exact Online (XML)O mesmo XML que o Exact Online; mande verificar a primeira importação.
Microsoft Dynamics 365 Business Central✓✓✓–
Odoo✓✓✓Odoo (CSV)
Oracle NetSuite✓✓mediante pedidoCSV genérico
SAP Business One✓✓✓SAP Business One (ZIP)
Unit4 ERPx✓✓–CSV genérico
Plataformas e agregadores
Apicbase✓✓mediante pedido–Vendas por talão para stock e food cost: integração em Definições → Receitas (não como programa de contabilidade).
Caseware✓✓–XML Auditfile Financieel (XAF 4.0)
Combidesk✓–mediante pedido–A Combidesk cria e gere a ligação por conta própria (para, entre outros, Exact, Moneybird, SnelStart e Twinfield); mediante pedido como parceiro.
Dext✓✓–Resumo diário (HTML, para PDF ou e-mail)Envie o resumo diário (PDF) por e-mail para o seu endereço Dext.
Jamix✓✓mediante pedido–Vendas para stock e food cost através da interface JAPI da Jamix; desenvolvimento à medida mediante pedido à Jamix.
Omniboost✓✓mediante pedido–Encaminha através do programa de parceiros da Omniboost para muitos sistemas de contabilidade e hotelaria.
Storecove (Peppol)✓✓mediante pedidoUBL 2.1 / Peppol (XML)
TriFact365✓––UBL 2.1 / Peppol (XML), Resumo diário (HTML, para PDF ou e-mail)
Qualquer outro software✓✓–CSV genérico, UBL ou XAF (NL)

Peça ao contabilista que verifique a primeira importação. A formatação está em packages/shared/src/journaalexport.ts (com testes).

Definições → Contabilidade (permissão Configurar estabelecimento, pagamentos e impressoras): código do diário (padrão MEM) e a conta do razão por componente. Vazio = conta de exemplo (NL: 8000/8010/8020 faturação, 1500/1510 IVA, 1000 caixa, 1100 cartão; BE: 7000xx faturação, 451000 IVA, 570000 caixa). Peça ao contabilista para preencher as contas reais.

Ligação a um software de contabilidade

Ligações live com Acumulus, AFAS Profit, Microsoft Dynamics 365 Business Central, Exact Online, Horus, Moneybird, Odoo, QuickBooks Online, SAP Business One, Silvasoft, SnelStart, Twinfield, Xero, Yuki e Zoho Books. Depois de cada dia, a caixa lança o mesmo diário que a exportação acima (faturação e IVA por taxa, formas de pagamento, gorjeta, arredondamento, gaveta e diferença de caixa) como lançamento de diário geral no software escolhido, com o diário e as contas do razão de Definições → Contabilidade. Está sempre ativo, no máximo, um software.

SoftwarePaísLigar comO que a caixa lança
AcumulusNLcódigo de contrato, utilizador e palavra-passe de um utilizador APIpor dia uma fatura de venda paga com uma linha por taxa de IVA; os erros são enviados pelo Acumulus por e-mail para ACUMULUS_FOUTMAIL
AFAS ProfitNLambiente, token, empresadiário geral (FiEntries)
Business CentralNL, BEtenant, ambiente, empresa, ID de cliente e segredo de uma app do Microsoft Entra (API.ReadWrite.All)linhas no diário geral com o código de Diário
Exact OnlineNL, BEiniciar sessão (OAuth, app própria: ver Exact Online abaixo; Bélgica: start.exactonline.be)lançamento de diário geral no diário (ex. 90)
HorusBEiniciar sessão (OAuth, app abaixo), dossiê opcionaloperação diversa
MoneybirdNLtoken API, empresa opcionaldiário geral (general journal document)
OdooNL, BEendereço, base de dados, utilizador, chave APIlançamento no diário com o código curto (ex. MISC)
QuickBooks OnlineNL, BEiniciar sessão (OAuth, app abaixo; QUICKBOOKS_OMGEVING)journal entry; contas por número
SAP Business OneNL, BEendereço do Service Layer, base de dados, utilizador, palavra-passelançamento de diário (JournalEntries)
SilvasoftNL, BEutilizador e chave APIlançamento de vendas na relação Kassaverkopen, uma linha por taxa de IVA (formas de pagamento, gorjetas e diferença de caixa não são incluídas)
SnelStartNLchave de ligação e chave de subscriçãodiário geral
TwinfieldNLiniciar sessão (OAuth, app abaixo), escritório opcionaltransação de diário
XeroNL, BEiniciar sessão (OAuth, app abaixo), organização opcionalmanual journal; contas por código
YukiNL, BEchave API, empresa opcionaldiário geral (GeneralJournal)
Zoho BooksNL, BEiniciar sessão (OAuth, app abaixo; por predefinição o centro de dados europeu), organização opcionallançamento de diário; contas por código

Ficheiro de auditoria da caixa (XAA)

Para estabelecimentos nos Países Baixos, em Relatório → Faturação por período, ao lado da exportação contabilística, existe o botão Ficheiro de auditoria da caixa (XAA): o XML Auditfile Afrekensystemen 3.2 da Autoridade Tributária neerlandesa (Belastingdienst) e do XML Platform (SRA) relativo ao período escolhido (no máximo pouco mais de um ano; permissão Faturação por período). É o ficheiro que a Belastingdienst recomenda para fornecer os dados de uma caixa numa inspeção ou ao contabilista; as regras constam do Handreiking voor een betrouwbaar afrekensysteem (Guia para um sistema de caixa fiável) (docs/xaa).

No ficheiro (auditfile_kassa_<van>_tm_<tot>.xml, esquema docs/xaa/XmlAuditfileAfrekensystemen3.2.xsd):

Os valores são positivos com C (venda, recebimento) ou D (devolução, pagamento); as horas estão na hora neerlandesa com desvio (offset). Todas as chaves são os ids da base de dados sem hífenes, pelo que podem ser encontradas na caixa.

Assinatura (capítulo 6 da especificação): se a Optimum POS tiver configurado um certificado, o ficheiro de auditoria vem assinado num envelope (XML Signature) e o ficheiro chama-se …_ondertekend.xml; caso contrário, é um ficheiro de auditoria simples, e a caixa indica-o ao transferir.

Pagamento a crédito

Os clientes empresariais (uma empresa que manda buscar o almoço todas as semanas, um hotel, uma associação) compram a crédito e pagam mais tarde, com fatura. Ative-o em Definições → Faturas → Pagamento a crédito (só com Faturas ativado; desativado por predefinição).

Banco: conciliar transferências

Em Relatório → A crédito → Banco, a caixa procura para cada entrada a fatura a crédito correspondente:

Imagens das câmaras na caixa

Todas as imagens das câmaras do estabelecimento numa só página, sem ecrã ou aplicação à parte. Ative em Definições → Estabelecimento → Ecrãs e utilização → Imagens das câmaras na caixa (desligado por predefinição). Aparece então o botão Câmaras na barra superior para quem tem a permissão Ver imagens das câmaras (por predefinição gerente e administrador; em Definições → Permissões também pode ser ativado para os empregados de mesa). Todas as câmaras ficam lado a lado; toque numa câmara para a ver em grande. Ao desligar, os sistemas de câmaras ficam guardados.

Também num ecrã próprio: Num ecrã próprio abre http://<kassaserver>:3000/camera (p. ex. um monitor atrás do balcão), e Num tablet ou telemóvel mostra um código QR: um funcionário lê-o com o seu próprio tablet ou telemóvel e inicia sessão com o seu próprio PIN (também aí apenas com a permissão Ver imagens das câmaras). Num ecrã estreito as câmaras ficam umas por baixo das outras. Ver Segundo ecrã num tablet ou telemóvel.

O gestor adiciona os sistemas de câmaras com + Sistema de câmaras, testa-os com Testar e escolhe para cada câmara o nome e se aparece na página:

Sem ffmpeg: a foto.

Privacidade: a caixa obtém as imagens do sistema de câmaras e apenas as transmite; nada é guardado (sem gravações, sem cache). Os utilizadores e palavras-passe ficam no servidor e nunca aparecem no ecrã nem no registo. No registo fica quem viu as câmaras. A página pede as próprias imagens com uma chave (válida 12 horas, enquanto o funcionário tiver sessão iniciada), porque uma imagem no navegador não consegue enviar um token. A exportação da configuração inclui apenas ligado/desligado.

Registo de ações sensíveis

Relatório → Registo (gerente ou administrador) mostra quem fez o quê e quando.

O que é registado: anulações, descontos (e a sua remoção), devoluções, cópias de talões, pro formas, pagamentos com cartão manuais, abertura da gaveta, entradas/saídas de dinheiro da gaveta, fundo de caixa, fecho do dia, mover linhas ou mesas, fechar encomendas vazias, alterar preço/nome/IVA de produtos, produtos novos ou eliminados, alterações de pessoal e definições, ajuste de horários de trabalho, iniciar e terminar sessão, PIN errados e registo de entrada e saída. Com pagamento a crédito também: clientes, vendas e pagamentos a crédito, importação de extratos bancários, a ligação bancária e a obtenção de dados do banco. Com o alerta de tempo de preparação excessivo: encomendas atrasadas e pedidos de desculpa enviados. Com Mailchimp ou Klaviyo: ligar, escolher a lista, desligar e cancelamentos de subscrição vindos de lá. Com o controlo de música: ligado/desligado e adicionar, alterar e remover fontes de música. Com as imagens das câmaras: quem viu as câmaras (no máximo uma vez por meia hora por funcionário), ligado/desligado e os sistemas de câmaras. Com alertas: cada alerta, a sua resolução e o ligar e desligar.

Alertas: fraude e desvios

Definições → Alertas. Duas partes, cada uma ativada separadamente e desligada por predefinição; desligar guarda todos os alertas e definições. Pode configurar quem tem a permissão Configurar alertas (por predefinição o gerente e o administrador); pode ver e resolver os alertas quem pode ver o registo. A caixa verifica a cada 5 minutos (e com Verificar agora); não na caixa de reserva.

Deteção de fraude e roubo (por funcionário, por dia de trabalho a partir das 05:00), cada regra ligada ou desligada separadamente com o seu próprio limite:

Avisos de desvios, comparado com o mesmo dia da semana e a mesma hora das últimas semanas (predefinição 4; dias sem faturação não contam, pelo menos dois dias de comparação):

Cada alerta surge uma única vez (por regra, funcionário e dia; o tempo de cozinha no máximo uma vez por hora) e vai para:

Cada canal tem um botão Mensagem de teste. Os tokens e chaves ficam na caixa (os ecrãs só veem se estão preenchidos). Um alerta não é uma prova: veja a conta e o registo e fale com o funcionário.

Talões: cópia e devolução (nota de crédito)

Talões

Botão Talões na barra superior:

Gaveta com sensor e gaveta por funcionário

Por predefinição desligado. Configura-se em Definições → Pagamentos → Gaveta.

Parte 3 · Administrador

Primeiros passos

Instalar. Instala o HorecaPOS com o instalador para o seu sistema, disponível na página de transferências da OptimumPOS: Android (app), Windows (instalador), macOS (instalador para Macs com Apple Silicon e Intel), Linux (instalador gráfico, ou o pacote .deb ou .rpm), Raspberry Pi (instalador gráfico ou .deb para um Raspberry Pi 3, 4 ou 5 com Raspberry Pi OS de 64 bits) e Chromebook (a app Android do Google Play). Escolha para todos os utilizadores para um servidor de caixa ao qual se ligam os tablets e o ecrã de cozinha, ou só para mim para apenas uma caixa nesse dispositivo. O instalador instala tudo o que é necessário, incluindo a base de dados, e faz uma cópia de segurança todas as noites. Para atualizar, instale a nova versão: os seus dados mantêm-se. O instalador arranca no idioma do seu computador (caso contrário, em inglês); no Windows e no Linux pode escolher outro idioma no primeiro ecrã. A caixa arranca depois logo nesse idioma. Os pacotes .deb e .rpm e a app Android seguem o idioma do sistema; caso contrário, neerlandês.

O administrador configura a caixa em Definições. Aí há separadores como Estabelecimento, Pessoal, Permissões, Horário de trabalho, Produtos, Happy hour, Stock, Plantas das salas, Pagamentos, Impressoras, Contabilidade, Cópias de segurança, Importar/exportar e Base de dados. Os separadores que um gerente também vê dependem das permissões.

Base de dados. Em Definições → Base de dados (apenas o administrador) escolhe entre MySQL / MariaDB, a base de dados integrada e PostgreSQL; ao mudar, todos os dados são transferidos (ver Base de dados). Se a Optimum POS já tiver definido um endereço fixo durante a instalação, aplica-se esse endereço e não há campos para preencher. Caso contrário, preenche o Servidor, a Porta, a Base de dados, o Utilizador e a Palavra-passe. A caixa guarda-os ela própria, depois mostra-os já preenchidos e pode sempre alterá-los com Alterar dados do MySQL/MariaDB ou Alterar dados do PostgreSQL. Deixar a palavra-passe vazia significa: manter a palavra-passe guardada (para o mesmo utilizador). O instalador e uma atualização não alteram DATABASE_URL nem a base de dados escolhida.

Definições: produtos

Contabilidade

Tudo para a contabilidade está em Definições → Contabilidade. Preencha, juntamente com o seu contabilista, o diário e as contas do razão. Se quiser que a caixa lance sozinha a faturação do dia todos os dias, escolha o seu software no topo em Software de contabilidade, incluindo o Exact Online: só vê os programas que funcionam no país do seu estabelecimento. Logo abaixo preenche os dados desse software e liga. Nos programas em que inicia sessão (como Exact Online, Twinfield ou Xero), preencha primeiro a app: ID de cliente e segredo de cliente. Se a Optimum POS definiu de forma fixa o software ou um dado na instalação, não verá essa opção ou esse campo. Aí encontra também uma visão geral de todos os programas: quais podem ser ligados em live e quais recebem um ficheiro. Um ficheiro cria-se em Relatório → Faturação por período → Exportação contabilística: escolha o formato do seu software, ou UBL (Peppol), XAF ou um resumo diário. Peça sempre ao seu contabilista que verifique o primeiro lançamento ou a primeira importação.

Para um estabelecimento nos Países Baixos existe aí também Ficheiro de auditoria da caixa (XAA): o XML Auditfile Afrekensystemen da Belastingdienst com todos os talões, linhas, pagamentos e eventos da caixa no período escolhido. Entregue-o ao seu contabilista ou, numa inspeção, à Belastingdienst.

Salários e planeamento

Se o seu pessoal usa o registo de entrada/saída, em Definições → Horário de trabalho, em baixo, encontra Salários e planeamento, em dois blocos. Em Processamento salarial escolhe o seu software de salários ou (na Bélgica) o seu secretariado social, e introduz para cada funcionário o respetivo número de funcionário nesse software. Depois cria, para um período, o ficheiro com as horas trabalhadas e a faturação por funcionário, e importa-o no seu software de salários. Em Planeamento de pessoal escolhe o seu sistema de planeamento: no Deputy, Dyflexis e Shiftbase a faturação vai automaticamente a cada hora; nos outros cria um ficheiro de faturação. Assim vê no seu planeamento os custos salariais ao lado da faturação. Se trabalha sem registo de entrada/saída, pode mesmo assim enviar a faturação para o seu planeamento: nesse caso está em baixo em Definições → Contabilidade, em Faturação para o seu planeamento. Se a Optimum POS tiver definido algo de forma fixa na instalação, não vê essa opção ou esse campo.

Cópias de segurança

A caixa faz todas as noites automaticamente uma cópia de segurança, e sempre antes de uma atualização. Em Definições → Cópias de segurança vê todas as cópias (quando, por quem ou automática, tamanho) e com Criar cópia de segurança faz uma manualmente. Se a última cópia tiver mais de dois dias, aparece um aviso vermelho: contacte então a Optimum POS.

Definições: cópias de segurança

Restaurar faz-se com o botão Restaurar junto a uma cópia de segurança. Tudo o que aconteceu depois dessa cópia perde-se. Tem de o confirmar com um visto e introduzir de novo o seu PIN. A caixa faz primeiro uma cópia de segurança do estado atual e depois termina a sessão de todos. Na Bélgica isto não pode ser feito a partir da caixa (os contadores da caixa negra continuam); aí é a Optimum POS que o faz.

Base de dados

Em Definições → Base de dados (apenas o administrador) vê onde a caixa guarda os seus dados. No topo está a base de dados atual com programa, versão, tabelas, linhas e endereço ou pasta. Para o pessoal e os tablets, a caixa funciona da mesma forma com qualquer base de dados. No Windows, macOS, Linux e Raspberry Pi escolhe entre três bases de dados:

Quando MySQL ou MariaDB? Se o seu estabelecimento já tem um servidor MySQL ou MariaDB, se o seu administrador de TI trabalha com ele, ou se quer ler os dados nos seus próprios relatórios, no Excel ou num programa de BI. Na dúvida, escolha a integrada: funciona de imediato.

O que é preciso para MySQL ou 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';

Se o MySQL ou MariaDB funcionar noutro computador, coloque nas duas últimas linhas o endereço IP do servidor da caixa em vez de localhost.

Migrar para MySQL / MariaDB:

  1. Em Endereço do MySQL/MariaDB, preencha os campos: Servidor (predefinição localhost), Porta (predefinição 3306), Base de dados (predefinição horecapos), Utilizador e Palavra-passe; igual para MariaDB. Se o endereço já estiver definido, os campos já vêm preenchidos; se deixar a palavra-passe vazia, mantém-se a guardada (para o mesmo utilizador). A caixa guarda o endereço sozinha; se a Optimum POS já tiver definido um endereço fixo, aplica-se esse endereço e não há campos. Se a caixa já funcionar com MySQL/MariaDB, altera os dados mais tarde com Alterar dados do MySQL/MariaDB. A Optimum POS configura uma ligação encriptada por si.
  2. Toque em Testar ligação: vê o programa e a versão, ou porque não funciona.
  3. Toque em Migrar para MySQL/MariaDB, assinale que compreende e introduza o seu próprio PIN.

A migração funciona em qualquer sentido entre as três bases de dados, e todos os dados vão junto:

  1. A caixa deixa de aceitar pedidos por instantes (normalmente menos de um minuto); depois os tablets continuam sozinhos.
  2. Primeiro a caixa faz uma cópia de segurança do estado atual (em Definições → Cópias de segurança).
  3. Tudo passa para a nova base de dados e a caixa conta, tabela a tabela, se está lá tudo exatamente.
  4. Só quando tudo bate certo é que a caixa continua na nova base de dados. Os funcionários com sessão iniciada continuam com sessão.

Se algo falhar, nada muda e a caixa continua a trabalhar na base de dados antiga. A base antiga fica intacta, por isso pode sempre voltar atrás. Os dados de caixa que já estavam na nova base MySQL/MariaDB ou PostgreSQL são substituídos. Também funciona na Bélgica: os contadores da caixa negra passam exatamente.

As cópias de segurança e o restauro funcionam da mesma forma com as três bases de dados (Definições → Cópias de segurança). Uma cópia de uma base de dados pode ser restaurada em qualquer outra, incluindo uma cópia do PostgreSQL no MySQL ou MariaDB.

O que está no MySQL ou MariaDB? Cada tabela da caixa, com o mesmo nome e as mesmas colunas (horas em UTC). Cada tabela recebe ainda a coluna-chave _hp_sleutel, e nas tabelas auxiliares _horecapos_stand, _horecapos_kolom, _horecapos_reeks e _horecapos_wijziging (registo de alterações, guardado 14 dias) a caixa regista o estado, os tipos de coluna, os contadores e as alterações. Outros programas leem os dados; só as caixas escrevem.

Como funciona: a caixa calcula numa cópia de trabalho rápida no servidor da caixa e escreve cada alteração no MySQL/MariaDB no mesmo passo. Se isso falhar, a alteração não é feita e a caixa mostra um erro; mantenha por isso o MySQL/MariaDB acessível. Ao arrancar, a caixa lê tudo do MySQL/MariaDB.

Várias caixas numa base de dados. Tal como com PostgreSQL, várias caixas podem usar a mesma base de dados MySQL/MariaDB, por exemplo cada estabelecimento de uma cadeia com o seu próprio servidor de caixa. As alterações são feitas uma após outra e cada caixa assume primeiro o que as outras fizeram, por isso nada se perde quando se altera ao mesmo tempo. Se uma caixa restaurar uma cópia de segurança ou uma caixa com uma versão mais recente atualizar a base de dados, as outras caixas voltam a ler tudo sozinhas; por isso, atualize todas as caixas ao mesmo tempo. Uma caixa que esteve desligada mais de 14 dias volta a ler tudo ao arrancar.

Na instalação escolhe também a base de dados: MySQL / MariaDB, integrada (recomendado) ou PostgreSQL com o endereço. Se não estiver acessível, a caixa instala-se com a base de dados integrada; depois pode migrar aqui. Numa atualização a escolha mantém-se.

Ligar tablets e ecrãs

Ecrã do cliente

Um ecrã na caixa virado para o cliente. O cliente vê, em linhas gerais, o que foi pedido e, de forma bem clara, o valor e como é pago. Não tem controlos: o ecrã apenas segue o que a caixa faz. Desligado por padrão; ative em Definições → Estabelecimento → Ecrã de cliente. Num PC da caixa com dois ecrãs, a caixa liga-o automaticamente da primeira vez; se o desligar depois, fica desligado. Sem ecrã de cliente (desligado, ou nenhum ligado), tudo funciona exatamente como sempre: a caixa envia a imagem em segundo plano e o pessoal nunca nota um erro ou um ecrã em falta.

O que o cliente vê:

Ligação, de duas formas (ambas configuradas no próprio dispositivo):

O ecrã de cliente não pede PIN (não há nada para operar) e mostra apenas a imagem da caixa a que está emparelhado. A imagem fica só na memória do servidor da caixa; após um reinício, o ecrã fica vazio até à alteração seguinte. A definição (ligado/desligado e texto de boas-vindas) é incluída na cópia de segurança e em Importar/exportar (Outras definições).

Talão digital via QR (opcional)

Por padrão desligado. Ligar em Definições → Estabelecimento → Cozinha e ecrã de cliente → Talão digital (a opção aparece quando o ecrã de cliente está guardado como ligado). Após o pagamento aparece em Obrigado! um código QR; este fica então 45 segundos no ecrã em vez de alguns segundos. O cliente lê-o com o próprio telemóvel e vê o talão, exatamente como o talão em papel (o mesmo texto, numa caixa belga também com o bloco FDM). No telemóvel pode imprimir o talão, guardá-lo como PDF ou descarregá-lo como ficheiro de texto.

Ecrã de cliente em repouso: apresentação de diapositivos (opcional)

Por padrão desligado. Ligar em Definições → Estabelecimento → Cozinha e ecrã de cliente → Ecrã de cliente em repouso. Se não houver nenhuma conta no ecrã de cliente, os diapositivos alternam (por padrão a cada 8 segundos, configurável de 4 a 60):

Sem diapositivos, o ecrã de cliente mostra o ecrã de boas-vindas, como sempre.

Happy hour

Desligado por padrão. Ative em Definições → Estabelecimento → Usar happy hour; depois aparece o separador Definições → Happy hour.

Períodos do dia e épocas

Desligado por predefinição. Ligue em Definições → Estabelecimento → Períodos do dia e tipo de pedido → Oferta por período do dia e época; depois aparece o separador Definições → Períodos do dia. Se o desligar, todos os produtos voltam a estar sempre à venda e os períodos do dia ficam guardados.

Oferta e preços por tipo de pedido

Desligado por predefinição. Ligue em Definições → Estabelecimento → Períodos do dia e tipo de pedido → Oferta e preços por tipo de pedido. Se o desligar, volta a aplicar-se o preço normal em todo o lado e tudo está à venda em todo o lado; os preços introduzidos ficam guardados.

Desligado por padrão. Ative em Definições → Estabelecimento → Usar menus.

Receitas e custo (Apicbase)

Integração com o Apicbase (receitas, custo, stock e compras) através da Generic POS API do Apicbase (desligado por predefinição, cada parte liga-se ou desliga-se em separado). Configura-se em Definições → Receitas (permissão Configurar estabelecimento, pagamentos e impressoras). A caixa comunica diretamente com o Apicbase (só tráfego de saída, sem portal).

  1. Ligar (tudo preenchido pelo administrador), de uma de três formas:
    • Colar token: no Apicbase Library Settings → API Settings → New token → Service Account Token (scopes accounts, library, sales); colar o access token e o refresh token;
    • Iniciar sessão com a API-app própria do estabelecimento (client-id e client secret de API Settings): Iniciar sessão no Apicbase e colar o código que o Apicbase mostra a seguir;
    • Um token expirado (após 7 dias) é renovado automaticamente pela caixa com o refresh token.
  2. Outlet: Obter outlets e escolher o outlet deste estabelecimento. A caixa define aí o POS como Generic POS API com um location-id próprio (editável; por predefinição HORECAPOS-…, único por caixa).
  3. Ligado, com caixas de seleção:
    • Produtos, grupos e opções para o Apicbase: categorias, produtos (PLU = o número PLU do produto, senão o código, senão o id), opções como modifiers, com preço e IVA. Automaticamente após cada alteração (passado um minuto) e todos os dias. No Apicbase ligas depois cada produto da caixa a uma receita;
    • Cada talão pago para o Apicbase: os mais antigos primeiro, no máximo 100 de cada vez, até um quarto de hora após o pagamento (e a cada 5 minutos). O desconto é repartido pelas linhas; valores livres, taxa de descartáveis e tara aparecem como produto próprio no Apicbase; produtos pesados como 1 unidade com o valor total. Se falhar, a caixa para (o Apicbase quer os talões por ordem) e tenta de novo mais tarde: a cobrança não é afetada. Ao ligar escolhes a partir de que dia (por predefinição a partir de agora);
    • Obter o custo por porção (a cada 6 horas): por receita ligada, o food cost (ingredientes e desperdício), com custos de pessoal, o preço de venda e a margem segundo o Apicbase. Calculado com o fornecedor mais barato, o último preço encomendado ou o valor médio do stock;
    • Usar o preço de venda do Apicbase (desligado por predefinição): definir o preço de venda dos produtos ligados na caixa (fica no registo).
  4. Em baixo: Custo por produto com custo, custo com pessoal, preço na caixa, custo % e margem. Botões Enviar catálogo agora, Enviar talões agora e Obter custos agora.

Código: apps/pos-server/src/lib/apicbase.ts, routes/apicbase.ts; ecrã Apicbase.tsx. Registo: Apicbase. Requisito: o módulo API do Apicbase. Para a app da Pin Voordeel para todos os clientes: parceria e certificação com o Apicbase (ver o backlog). Documentação: https://developers.apicbase.com/docs/generic-pos-api-guide

Software hoteleiro: debitar no quarto

Para um restaurante ou bar de um hotel: debitar a conta no quarto de um hóspede. Desligado por predefinição: Definições → Hotel (permissão Configurar estabelecimento, pagamentos e impressoras).

O Sirvoy só envia algo quando uma reserva muda: as reservas de antes da ligação só ficam conhecidas pela caixa após uma alteração no Sirvoy. As mensagens podem chegar fora de ordem; uma mensagem mais antiga (generatedAt) do que o que a caixa já tem é ignorada. No hotel = não cancelada e sem check-out, com check-in feito ou chegada hoje ou antes, e partida hoje ou mais tarde. Testar ligação indica quantas reservas chegaram.

Todo o software hoteleiro está à venda nos Países Baixos e/ou na Bélgica. Testar ligação verifica os dados. Código por ligação: apps/pos-server/src/lib/pms/<naam>.ts.

Código: apps/pos-server/src/lib/hotel.ts, routes/hotel.ts, as ligações em lib/pms/, catálogo packages/shared/src/hotelcatalogus.ts; ecrã Hotel.tsx. Registo: Hotel. Os segredos (tokens) ficam apenas na base de dados, nunca no ecrã.

Gestão de vinhos com o Vinify

Definições → Gestão de vinhos (desligado por predefinição; desligar guarda tudo). O Vinify gere a garrafeira, a carta de vinhos e o stock, e é a fonte principal dos vinhos. De acordo com os requisitos de POS do Vinify, a caixa oferece uma API com a qual o Vinify pode:

Autenticar-se, com os três métodos que o Vinify conhece (o administrador liga quais):

  1. ID de API e chave de API (X-Api-Id e X-Api-Key, ou Authorization: Bearer <id>:<sleutel>);
  2. Chave de API e segredo de API com uma assinatura: X-Api-Key, X-Timestamp e X-Signature = hex HMAC-SHA256(secret, <timestamp>\n<METHODE>\n<pad met query>\n<sha256 van de body>), com no máximo 5 minutos.

A chave e o segredo são criados pela caixa (mostrados uma vez); os ecrãs só mostram se estão preenchidos. Acessível através do portal em https://<portaal>/vinify/<kassa-id>/... (sem portas abertas no estabelecimento; o endereço está em Definições → Gestão de vinhos). Que produtos são vinho: o que o Vinify cria, mais os grupos que assinalares. Se o Vinify indicar um endereço para onde enviar as vendas, a caixa também as envia por si (push, com um token): após cada talão pago e a cada 5 minutos o que ainda não tiver sido enviado. O Vinify ativa a integração com o HorecaPOS (hello@vinify.no). Tudo fica no registo. Não confundir com Vinify.nl, uma loja de vinhos online: está nos fornecedores (Encomendar a fornecedores).

Introdução rápida de morada com código postal e número da porta

Ativa-se em Definições → Estabelecimento → Introdução rápida de morada (desligado por predefinição; só para um estabelecimento nos Países Baixos). Escreva o código postal e o número da porta (também com letra ou complemento, ex. 12A ou 12-1) e toque em Procurar morada: a rua, o número da porta, o código postal e a localidade são preenchidos. Se houver várias moradas nesse número (12, 12A, 12B), escolha a certa. Depois ainda pode alterar tudo.

Aviso de nova versão

Ative em Definições → Estabelecimento → Aviso de atualização (desligado por predefinição).

Plataformas de reservas

As reservas do TheFork, Formitable, Zenchef, Resengo (só Bélgica), OpenTable (só Países Baixos), PlanPanther, RestoManager e Aqqo (só Países Baixos) entram automaticamente na caixa e na planta da sala. Ativa-se em Definições → Plataformas de reservas (desativado por predefinição). Só funciona com as Reservas ativas.

Programas de fidelização e avaliações

Dois interruptores separados em Definições → Fidelização e avaliações (ambos desligados por predefinição; assim não se vê nada em lado nenhum). Se os desligar, as definições e tudo o que já aconteceu ficam guardados.

Programa de fidelização de outra plataforma: o cliente acumula pontos no Joyn (Bélgica) e/ou no Piggy (Leat; Países Baixos e Bélgica). Isto é independente do cartão de cliente próprio da caixa, que pode continuar ligado em paralelo.

Pedir avaliações: após a visita, um único e-mail com um botão para o Google e/ou o Trustpilot.

Integração com Mailchimp e Klaviyo

Os seus clientes do cartão de cliente no seu próprio programa de e-mail: em Definições → Estabelecimento → Mailchimp e Klaviyo (abaixo do marketing por SMS e e-mail). Não há interruptor: sem uma integração com uma lista escolhida, nada acontece.

Código: lib/mailinglijst.ts, routes/mailinglijst.ts e MailingKoppelingen.tsx.

BI e exportação de dados

Os dados de vendas para Power BI, Looker Studio, Excel, Google Sheets, Tableau, Qlik Sense, Metabase, um serviço de BI (por exemplo YourBI, BI4Horeca ou Moore DRV) ou um data warehouse próprio. Ative em Definições → BI e exportação de dados (desligado por predefinição). Só leitura: através de uma integração não se pode alterar nada na caixa. Sem dados de clientes.

Salários e planeamento

Com o Registo de entrada/saída ligado (Definições → Estabelecimento), em Definições → Horário de trabalho, em baixo, está Salários e planeamento (permissão Gerir definições), em dois blocos separados. Se o registo estiver desligado, não há horas: nesse caso só o bloco Planeamento de pessoal (a faturação, live ou como ficheiro de faturação) está em baixo em Definições → Contabilidade, sob o título Faturação para o seu planeamento:

SoftwareNLBELiveFicheiroObservação
Software de salários e processadores salariais
ADP✓✓mediante pedidoLista de horas por funcionário e por dia (CSV)Ligação via ADP (mediante pedido); até lá, a lista de horas por funcionário e por dia.
AFAS Payroll✓–mediante pedidoLista de horas por funcionário e por dia (CSV)Processamento salarial no AFAS Profit (mesmo ambiente que a contabilidade no AFAS); ligação mediante pedido, até lá a lista de horas.
BCS HR✓–mediante pedidoLista de horas por funcionário e por dia (CSV)Ligação via BCS (mediante pedido); até lá, a lista de horas.
Buddee✓–mediante pedidoLista de horas por funcionário e por dia (CSV)Software de RH e salários; ligação mediante pedido, até lá, a lista de horas por funcionário e por dia.
Employes✓–mediante pedidoLista de horas por funcionário e por dia (CSV)O Employes tem uma API para horas trabalhadas (token do cliente); a ligação segue após acordo com o Employes. Até lá, a lista de horas.
Exact Online Loon✓–mediante pedidoLista de horas por funcionário e por dia (CSV)Processamento salarial no Exact Online (mesmo ambiente que a contabilidade no Exact); ligação mediante pedido, até lá a lista de horas.
Humanwave✓–mediante pedidoLista de horas por funcionário e por dia (CSV)Ligação via Humanwave (mediante pedido); até lá, a lista de horas.
Loket.nl✓–mediante pedidoLoket.nl Variabele gegevens (CSV), Lista de horas por funcionário e por dia (CSV)Ficheiro para Werkgever → Collectieve mutaties → Importeren → Variabele gegevens (horas por funcionário no período). Live através da API do Loket após registo no Loket.
Nmbrs✓–mediante pedidoLista de horas por funcionário e por dia (CSV)Lista de horas por funcionário e por dia, para transpor para o Nmbrs. Live através da API do Nmbrs após o registo de uma app no Nmbrs.
Salar (Van Winckel)✓––Lista de horas por funcionário e por dia (CSV)Lista de horas por funcionário e por dia para o gabinete de contabilidade; o formato de importação do Salar não é público.
Secretariados sociais
Acerta–✓mediante pedidoLista de horas por funcionário e por dia (CSV)Secretariado social: o formato do ficheiro de prestações é fornecido pela Acerta; até lá, a lista de horas.
Group S–✓mediante pedidoLista de horas por funcionário e por dia (CSV)Secretariado social: o formato do ficheiro de prestações é fornecido pelo Group S; até lá, a lista de horas.
Liantis–✓mediante pedidoLista de horas por funcionário e por dia (CSV)Secretariado social com uma API que a Liantis disponibiliza por empresa; até lá, a lista de horas.
Partena Professional–✓mediante pedidoLista de horas por funcionário e por dia (CSV)Secretariado social: o formato do ficheiro de prestações é fornecido pela Partena; até lá, a lista de horas.
SD Worx✓✓–SD Worx Tijdsregistratie (TXT), Lista de horas por funcionário e por dia (CSV)Bélgica: ficheiro Tijdsregistratie (posições fixas, por funcionário por dia) para "Tijdsregistratie importeren". Países Baixos: a lista de horas.
Securex–✓mediante pedidoLista de horas por funcionário e por dia (CSV)Secretariado social: as ligações são feitas através de parceiros; até lá, a lista de horas.
Planeamento e registo de horas
Book'u–✓mediante pedidoFaturação por dia e hora (CSV)O Book'u faz as declarações Dimona; uma ligação à caixa é feita mediante pedido. Até lá, a lista de faturação.
Deputy✓✓✓Faturação por dia e hora (CSV)Live: a faturação por hora vai a cada hora para o Deputy (Sales). Um token permanente é criado no Deputy, nas ligações API.
Dyflexis✓–✓Faturação por dia e hora (CSV)Live: a faturação por hora vai a cada hora para o Dyflexis (information streams). O token API é obtido através do Dyflexis.
Eitje✓–mediante pedidoFaturação por dia e hora (CSV)O Eitje liga-se através do seu programa de parceiros; até lá, a lista de faturação por dia e hora.
Exact Horeko✓–mediante pedidoFaturação por dia e hora (CSV)Ligação via Horeko (mediante pedido); até lá, a lista de faturação.
Fooks✓–mediante pedidoFaturação por dia e hora (CSV)O Fooks desenvolve ele próprio as ligações a caixas; até lá, a lista de faturação por dia e hora.
L1NDA✓–mediante pedidoFaturação por dia e hora (CSV)O L1NDA desenvolve ligações a caixas em conjunto com parceiros; até lá, a lista de faturação por dia e hora.
Mr. Einstein✓–mediante pedidoFaturação por dia e hora (CSV)RH, escalas e custos salariais para a restauração; o Mr. Einstein desenvolve ligações a caixas em conjunto com o fornecedor da caixa (pedido via mreinstein.nl/contact). Até lá, a lista de faturação por dia e hora.
Nostradamus✓✓mediante pedidoFaturação por dia e hora (CSV)O Nostradamus recebe a faturação através da sua interface de caixa (token de API e domínio do estabelecimento, mediante pedido ao Nostradamus); até lá, a lista de faturação por dia e hora.
Plan-Me–✓mediante pedidoFaturação por dia e hora (CSV)O Plan-Me faz as declarações Dimona; uma ligação à caixa é feita mediante pedido. Até lá, a lista de faturação.
Planday✓✓mediante pedidoFaturação por dia e hora (CSV)O Planday tem uma API aberta para sistemas de caixa; a ligação segue após acordo. Até lá, a lista de faturação.
Shiftbase✓–✓Faturação por dia e hora (CSV)Live: a faturação por dia vai a cada hora para o diário do departamento no Shiftbase. A chave API é criada no Shiftbase, em App center.
Shyfter–✓mediante pedidoFaturação por dia e hora (CSV)O Shyfter faz as declarações Dimona e aceita a faturação por dia através da sua API; a ligação segue após acordo com o Shyfter. Até lá, a lista de faturação.
Strobbo✓✓–Importação de faturação Strobbo (Excel), Faturação por dia e hora (CSV)Ficheiro Excel para Planning → € → Importeer omzet (faturação por dia por posto de trabalho).
Tamigo✓✓mediante pedidoFaturação por dia e hora (CSV)Ligação via Tamigo (mediante pedido); até lá, a lista de faturação.
Werktijden.nl✓––Faturação por dia e hora (CSV), Lista de horas por funcionário e por dia (CSV)O Werktijden.nl regista ele próprio as horas e (ainda) não aceita faturação através da sua API; as listas servem para comparar.
XPS Logic✓–mediante pedidoFaturação por dia e hora (CSV)O XPS Logic destina-se a pessoal flexível e temporário; uma ligação é feita mediante pedido. Até lá, a lista de faturação.

Requisitos legais na Bélgica e nos Países Baixos

O que a lei exige e o que o HorecaPOS faz para isso (peça ao seu contabilista que confirme o que se aplica ao seu estabelecimento):

PaísRequisitoHorecaPOS
BélgicaSistema de caixa registadora (GKS 2.0) com caixa negra para estabelecimentos de restauração que têm de o cumprir (entre outros, com mais de € 25.000 de faturação anual em refeições, sem IVA)ligação à caixa negra (FDM), os dados obrigatórios no talão e os contadores no relatório Z (país Bélgica em Definições → Estabelecimento, FDM_API_KEY e FDM_TERMINAL_ID); no topo de Definições → Estabelecimento escolhe se o estabelecimento está sujeito ao GKS: Sim = cobrar apenas com uma caixa negra a funcionar, Não = sem, com uma declaração do administrador (todos os anos de novo); enquanto nada for escolhido, não é possível cobrar. A caixa conta a faturação de refeições e avisa acima de 25.000 €
BélgicaFaturação eletrónica via Peppol: desde 1 de janeiro de 2026, as faturas entre empresas belgas sujeitas a IVA têm obrigatoriamente de ser eletrónicas e estruturadas (UBL, Peppol BIS 3); os talões de caixa a consumidores não estão abrangidosexportação das vendas diárias em UBL segundo Peppol BIS Billing 3.0 para o programa de contabilidade (Exportação contabilidade); e faturas a partir de um talão para clientes empresariais (Definições → Faturas): UBL segundo Peppol BIS Billing 3.0 mais uma fatura para imprimir, envio por e-mail, via Billit para a rede Peppol, para um endereço próprio ou download (ver Faturas para clientes empresariais)
BélgicaIVA na restauração desde 1 de março de 2026: refeições para levar e bebidas não alcoólicas 12% (no local e para levar), álcool 21%, refeições que o cliente ainda prepara (fondue, gourmet) 6%Assistente de IVA (Definições → Leis e regras): por produto o tipo, a taxa correta de imediato ou a partir de uma data; as descrições das taxas A/B/C foram atualizadas
Países BaixosAlcoholwet: nada de álcool a jovens com menos de 18, também não na venda online e na entrega (verificar a idade na entrega)Verificação de idade: produtos com álcool; na loja online o cliente confirma 18+ (caixa não pré-assinalada) com o aviso de que a idade é verificada na entrega; "18+" no talão de trabalho, talão de entrega e talão de caixa
Países BaixosCopos e caixas descartáveis (SUP): desde 2024 um preço separado e visível para embalagens descartáveis de plástico na recolha e na entregaTaxa de descartáveis por produto, como linha separada no talão (IVA do produto) e à parte no volume de vendas
Países BaixosDepósito em latas e garrafas de plásticoDepósito por produto (€ 0,15 / € 0,25), linha separada sem IVA na recolha e na entrega, à parte no volume de vendas
Países BaixosPagamento em dinheiro: desde 1 de janeiro de 2026 nada de € 3.000 ou mais em dinheiro por bensAviso na recolha e na entrega (também no sistema de numerário); é possível confirmar, fica registado no histórico
Países Baixos e BélgicaAlteração de IVA: uma taxa ou um produto recebe outra percentagem de IVA a partir de uma dataAgendar alteração de IVA: a caixa executa-a no próprio dia (na Bélgica por produto, as letras A/B/C/D são fixas)
Países BaixosAlojamento (dormidas) 21% desde 1 de janeiro de 2026taxa de IVA configurável por produto
UEDiretiva Omnibus: um preço "antes" riscado só pode ser o preço mais baixo dos últimos 30 diasa loja online só risca em relação ao preço mais baixo de 30 dias (a caixa guarda o histórico de preços; happy hours que se repetem todas as semanas contam)
UEEuropean Accessibility Act (desde 28 de junho de 2025): lojas online acessíveis (WCAG 2.1 AA)a loja online funciona com teclado e leitor de ecrã (link "Ir para o conteúdo", foco visível, etiquetas) e tem uma declaração de acessibilidade (link no rodapé)
Países BaixosXML Auditfile Financieel (XAF): o padrão da Autoridade Tributária neerlandesa (Belastingdienst) para transferir (uma parte de) a contabilidade; o XAF 4.0 é obrigatório a partir de 2027exportação como XAF 4.0 (Exportação contabilística)
Países BaixosSistema de caixa fiável: conservar os dados da caixa (todos os talões, correções e eventos) e poder fornecê-los em formato digital numa inspeção; para isso, a Belastingdienst recomenda o XML Auditfile Afrekensystemen (XAA)exportação como XAA 3.2 (Relatório → Faturação por período → Ficheiro de auditoria da caixa), opcionalmente assinada com o certificado do fornecedor
BélgicaRegisto de presenças num sistema de caixa registadora: registar o início e o fim do tempo de trabalho dos trabalhadores no sistema de caixaO Registo de entrada/saída (Definições → Estabelecimento; Obrigatório = registar entrada primeiro) é registado na caixa negra
BélgicaDimona: declarar cada ocupação (incluindo flexi-jobs e estudantes) ao RSZ antes do seu inícioisso é feito pelo seu secretariado social ou ferramenta de planeamento (p. ex. Shyfter, Book'u, Plan-Me); o HorecaPOS fornece as horas trabalhadas e a faturação (Definições → Horário de trabalho → Salários e planeamento)
Países BaixosRegisto dos tempos de trabalho e de descanso (Lei do Tempo de Trabalho, Arbeidstijdenwet)Registo de entrada/saída com as horas trabalhadas por funcionário, editáveis pelo administrador (com registo de alterações), e a lista de horas para o software de salários
Países Baixos e BélgicaHACCP / segurança alimentar: registar temperaturas (refrigeração, congelador, manutenção a quente, confeção, arrefecimento rápido, receção) e limpeza; NL Hygiënecode voor de Horeca (NVWA), BE autocontrolo FAVV (guia G-023)Registo HACCP na caixa (Definições → Leis e normas, botão HACCP no topo): pontos de medição com limites, tarefas de limpeza e controlo, ação corretiva obrigatória em caso de desvio, não alterável, resumo com registos em falta como CSV ou impressão (ver Registo HACCP)
Países Baixos e BélgicaObrigação de conservação (NL 7 anos, BE 10 anos)os talões, os relatórios Z e o registo estão na base de dados e nas cópias de segurança; o registo não pode ser alterado nem apagado a partir da caixa

Leis e regras

Definições → Leis e regras (administrador; o assistente de IVA também com a permissão Gerir produtos). Tudo vem desligado por defeito; sem estas definições, a caixa funciona como sempre.

As faturas (obrigatórias entre empresas na Bélgica) estão descritas em Faturas para clientes empresariais. Por fazer: GKS 2.0, perguntar como está a certificação (ver docs/backlog-concurrenten.md).

Faturas para clientes empresariais

Definições → Faturas (administrador; desligado por defeito): ative Faturas para clientes empresariais (UBL / Peppol). Quando está ativo, encontra por baixo Pagamento a crédito, os Dados na fatura, os Serviços Peppol, a Ligação bancária (com o pagamento a crédito) e a lista de todas as faturas. Na Bélgica, a faturação eletrónica entre empresas é obrigatória desde 1-1-2026.

Quiosque de self-service

Os clientes pedem sozinhos num totem ou tablet, como num restaurante de fast food, e pagam no caixa ou com cartão no quiosque. Os ecrãs de pedido fazem parte da própria caixa, por isso o menu, os preços, as opções, os menus, as happy hours, os períodos do dia, as fotos, os alergénios, os idiomas e o talão vêm da caixa e não precisam de ser configurados noutro lado. No quiosque corre a app PinPortal Kiosk 2 (Android, incluindo Sunmi, e Windows, Linux e macOS), que mostra a página e imprime o talão. Desligado por defeito.

Ligar e configurar (administrador): Definições → Estabelecimento → Ecrãs e utilização → Quiosque de self-service.

O próprio leitor configura-se no quiosque: na app PinPortal Kiosk 2, em gestão → Leitor de códigos de barras (como teclado, o leitor integrado ou uma porta COM), com um teste do leitor. Um leitor que funcione como teclado também funciona sem a app.

Adicionar e ligar um quiosque

  1. Em Quiosques, introduza um nome (p. ex. Quiosque entrada) e escolha Adicionar quiosque. Recebe um código de ligação de 6 dígitos (válido 30 minutos).
  2. Escolha no quiosque como o cliente paga: no caixa por defeito. Se for um quiosque com terminal de pagamento, escolha com cartão ou o cliente escolhe, e escolha o terminal de pagamento deste quiosque (em Definições → Pagamentos).
  3. Abra a página do quiosque no quiosque:
    • no estabelecimento: na app, em gestão → Vast adres, o endereço indicado na definição, p. ex. http://192.168.1.20:3000/kiosk;
    • ou através do portal de gestão (https, também se o quiosque não estiver na mesma rede): associe o endereço do quiosque indicado na definição ao código do quiosque da app, tal como com o quiosque antigo.
  4. Introduza o código de ligação no quiosque. Pronto: o quiosque guarda a sua própria chave. Ligar novamente dá um novo código; Remover desliga-o.

Em cada quiosque vê-se se está online.

Como o cliente pede

  1. Ecrã inicial com o texto de boas-vindas; o cliente escolhe a língua (todas as línguas da caixa) e toca para pedir.
  2. Comer aqui ou para levar.
  3. O menu por grupo de produtos, com fotos, o preço (com happy hour), alergénios e o que está esgotado. Produtos com escolhas ou um menu abrem a janela de escolha.
  4. O cesto: alterar quantidades e eventualmente Mais alguma coisa?.
  5. Pedir (pagamento no caixa): o cliente vê o seu número de recolha em grande no ecrã com o valor, recebe o talão e paga no caixa. Na caixa o pedido fica aberto como Quiosque Entrada · 42 (o número que o cliente diz); cobra-se como sempre. Depois aparece como pago no ecrã de chamada e vai para a cozinha se isso só devesse acontecer após o pagamento.
  6. Pagar com cartão: a caixa envia o valor para o terminal de pagamento deste quiosque (a mesma ligação de pagamento que na caixa). Se falhar, o cliente pode tentar de novo ou cancelar (ou, se puder escolher, pagar afinal no caixa). Só quando o pagamento é bem-sucedido o pedido vai para a cozinha e é cobrado. O cliente vê o seu número de recolha em grande no ecrã e recebe o talão.
  7. Após alguns segundos, o quiosque volta ao início.

Em caso de avaria: aviso e modo de emergência (na app do quiosque, gestão → Bij storing; desligado por predefinição). Se o quiosque não conseguir aceder à caixa, mostra Even gesloten. Dois extras:

Na caixa, um pedido do quiosque é um pedido normal (para levar ou para comer no local, com o nome Quiosque Entrada) em nome do funcionário Kiosk. A caixa cria-o sozinha; ninguém pode iniciar sessão com ele. Não o coloque como inativo, senão o quiosque não pode pedir. Os pedidos do quiosque aparecem nos relatórios, em Talões e no ecrã de chamada. Um pedido que não seja concluído no quiosque (não pedido ou não pago com cartão) expira sozinho após 30 minutos.

Pagamento com cartão em modo de teste (Definições → Pagamentos)? Então o quiosque não cobra realmente; útil para experimentar. Sem internet não é possível pagar com cartão; o quiosque diz então que se pode pedir no balcão.

Avaria: se a caixa não estiver acessível, a app do quiosque mostra "Fechado por um momento" e continua sozinha. Se o quiosque funcionar através do portal de gestão e a internet falhar, a app pode recorrer à caixa na rede local (na app: gestão → Extensões → Em caso de avaria, usar a rede local); o quiosque transmite esse endereço ele próprio.

Desligar: o quiosque indica que está fechado por um momento. Os quiosques e as definições ficam guardados. No registo ficam ligar/desligar, as definições, os quiosques adicionados e removidos, as ligações e os pedidos cancelados.

Menu digital

A carta com preços numa TV (ou noutro monitor com browser), diretamente da caixa. Por padrão desligado; ligar em Definições → Estabelecimento → Ecrãs e utilização → Menu digital. Depois abra na TV http://<kassaserver>:3000/menubord (ou use o botão Num ecrã próprio / Num tablet ou telemóvel com o código QR). Sem início de sessão e sem emparelhamento.

Pessoal e PINs

Definições → Pessoal (só administrador): adicionar funcionários, alterar nome, função e PIN, e desativar.

Iniciar sessão com cartão (opcional)

Por predefinição desligado. Para ligar: Definições → Pessoal, opção Iniciar sessão com cartão (NFC, RFID ou iButton). Necessário: um leitor de cartões USB que funcione como teclado (para cartões NFC ou RFID, porta-chaves, pulseiras ou chaves iButton). Um leitor destes "escreve" o número do cartão e carrega em Enter; não é preciso controlador nem integração.

Permissões por função

Definições → Permissões (só administrador): por função, marque o que o empregado de mesa e o gerente podem fazer. Por padrão está tudo exatamente como acima (como a caixa sempre fez); uma caixa que difere do padrão fica colorida.

PermissãoEmpregado de mesaGerente
Eliminar linhas após o pedido (anulação)simsim
Aplicar desconto / remover descontonãosim
Marcar produto como "esgotado"simsim
Imprimir cópia de um talãosimsim
Devolução (nota de crédito)nãosim
Cobrar a crédito e receber pagamentos a crédito (só com o pagamento a crédito ativado)nãosim
Saldo intermédio (relatório X)simsim
Fechar dia (relatório Z)nãosim
Faturação por períodonãosim
Gerir gavetanãosim
Gerir vales-oferta (só com vales-oferta com saldo)nãosim
Ler e responder a avaliações (só com a gestão de avaliações ativada)nãosim
Gerir cartão de cliente (só com o cartão de cliente ativado)nãosim
Ver registonãosim
Ver imagens das câmaras (só com as imagens das câmaras ligadas)nãosim
Gerir stock (só com stock ligado)nãosim
Gerir produtosnãonão
Gerir plantas das salasnãonão
Configurar estabelecimento, pagamentos e impressorasnãonão
Ver e ajustar horários de trabalhonãonão

Dados do estabelecimento

Definições - Estabelecimento

Definições → Estabelecimento (só administrador): nome, morada, código postal, localidade, telefone e número de IVA do estabelecimento. Aparecem no topo de cada talão e pró-forma. Aqui também se define o texto no fundo do talão (pode ter várias linhas; vazio = sem texto; padrão "Obrigado e até breve!"), e logo abaixo o idioma do talão de venda (padrão neerlandês; ver Idiomas). Uma pré-visualização do talão muda em tempo real. Depois de guardar, o talão seguinte usa logo os novos dados. O país e os dados fiscais (GKS) não podem ser alterados aqui de propósito. Na Bélgica o número de IVA é obrigatório. Com o visto Arredondar pagamentos em dinheiro a 5 cêntimos (desligado por predefinição), o total em dinheiro é arredondado (€ 6,62 → € 6,60, € 6,63 → € 6,65); a diferença aparece como "Arredondamento" no talão. O cartão fica sempre ao cêntimo.

Gerir produtos

Definições - Produtos

Inicie sessão como administrador e escolha Definições → Produtos.

Fotos de produtos

Cada produto pode ter uma foto.

Leitor de códigos de barras

Com um leitor de códigos de barras na caixa, lê produtos, códigos de desconto, cartões de cliente e vales-oferta. Ative em Definições → Leitor (separador junto às impressoras e à balança; por defeito desligado). Assinale o que uma leitura faz no ecrã de pedidos:

A caixa procura primeiro nos produtos, depois nos cartões de cliente, nos vales-oferta e nos códigos de desconto. A leitura funciona no ecrã de pedidos quando não está num campo de introdução. Num campo de introdução, o código vai simplesmente para esse campo.

Teste do leitor: em Definições → Leitor vê, a cada leitura, o código e o que a caixa faz com ele, mesmo que o leitor ainda esteja desligado. Se não funcionar:

No quiosque o leitor configura-se à parte (Definições → Estabelecimento → Quiosque); veja Quiosque de self-service.

Imprimir etiquetas

Etiquetas de artigos com o nome, o preço e um código de barras, numa impressora de etiquetas (Brother, Dymo, Zebra ...) instalada no computador ou tablet. Ative em Definições → Estabelecimento → Imprimir etiquetas (por defeito desligado). Aí escolhe também o formato da etiqueta (38 × 25, 57 × 32, 62 × 29 ou 100 × 50 mm) e se o preço e o código de barras aparecem. Imprimir exemplo imprime uma etiqueta de teste.

Configurar a balança (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)

Separador próprio Definições → Balança (permissão Configurar estabelecimento, pagamentos e impressoras, por padrão só o administrador; o separador existe sempre, mesmo com a balança ainda desligada). Desligado por padrão: a caixa funciona exatamente como antes. Não vê o separador?

Procura automática. Se ainda nada estiver configurado, a caixa procura automaticamente ao abrir esta secção (o botão Procurar volta a fazê-lo):

Encontrada = colocada no formulário com o botão Ativar e usar: um toque e funciona. (A procura envia um W para cada porta COM livre; uma porta ocupada, p. ex. pelo terminal de pagamento, é ignorada.)

Todas as balanças Aclas. Para cada balança escolhe o modelo; a caixa sabe então como pode ser ligada. Há dois tipos:

Uma lista, duas caixas. Todas as balanças estão numa lista. Para cada balança assinala o que faz: Pesar na caixa (a caixa pede o peso ao fazer o pedido) e/ou Digitalizar etiquetas (a balança imprime uma etiqueta com código de barras que a caixa lê, e recebe os PLU da caixa). Uma balança PC ou IA como a TS6X faz as duas coisas; uma etiquetadora LS só etiquetas. As etiquetas podem vir de uma balança por estabelecimento.

ModeloTipoLigaçõesNa caixa
OS6XBalança POSRS232, USB, Bluetoothligada, várias ao mesmo tempo
OS2XBalança POSRS232, USBligada, várias ao mesmo tempo
CS6X, CS3XBalança registadoraRS232, USB, Ethernet, wifiligada, várias ao mesmo tempo
TS6X, TS3X, TS5EX, TS5NX, TS5GXBalança PC (Windows, Android, Linux)RS232, USB, Ethernet, wifineste dispositivo (1x), também como balança de etiquetas
iS6X, iS2X, iR6X, Ti6X, iL8XBalança IA com reconhecimento de produtos (Windows, Android, Linux)RS232, USB, Ethernet, wifineste dispositivo (1x), também como balança de etiquetas
iS5X, OiT2XBalança IA (só Linux)RS232, USB, Ethernetligada ou como etiquetadora
LS2S, LS2RX, LS2CX, LS2NX, LS5SX, LS5RX, LS5CX, LS5NX, LS6CX, LS6RX, LS6NXBalança etiquetadoraRS232, Ethernet, wifidigitalizar etiquetas e PLU
PS1CX, PS1DX, PS6CX, PS6DXBalança computadora de preçosRS232ligada, várias ao mesmo tempo
PS1BXBalança computadora sem ligaçãonenhumapeso à mão
LH15XBalança suspensa com impressora de etiquetasRS232, Ethernet, wifiligada ou 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 e Zebra. Estão incluídos os modelos mais comuns destas marcas para os quais se sabe como a caixa comunica com eles (a testar = o protocolo não consta literalmente de nenhuma fonte; a caixa escolhe o mais óbvio). Todos ligados (vários ao mesmo tempo) ou como balança de etiquetas cuja etiqueta a caixa lê:

MarcaModeloTipoLigaçãoProtocolo (de fábrica)Na caixa
A&DEK-i (p. ex. EK-610i), HV-WPBalança registadora (só peso)RS232, EK-i também USBContínuo (modo stream), 2400 baud, 7E1ligada, várias ao mesmo tempo
Adam EquipmentSwiftBalança computadora de preçosRS232, USB (opcional)Contínuo (contínuo para PC), 9600 8N1 (a testar)ligada, várias ao mesmo tempo
Avery BerkelFX110, FX120, FX131 (de encastrar com scanner)Balança registadoraRS232, FX131 também USBMettler Toledo 82/7 = Toledo 8217 (a caixa envia W), 9600 baud, 7E1ligada, várias ao mesmo tempo
Avery BerkelFX125Balança computadora de preçosRS232Checkout-Dialog 06 (9600, 7O1)ligada, várias ao mesmo tempo
Avery BerkelXs, XTs, XTiBalança etiquetadoraEthernet, Wi-Fi, USBPLU próprios na balançaler etiquetas
Avery Weigh-Tronix7820, 7829, ZP900Balança registadoraRS232, 7820 também USB, ZP900 também USB e EthernetNCI (a caixa envia W), 9600 baud, 7E1ligada, várias ao mesmo tempo
Balanzas MarquesBM1000P TOPBalança registadora (só peso)RS232METTLER (a caixa envia W, Toledo), 9600 baud, 7E1ligada, várias ao mesmo tempo
Balanzas MarquesBM5 Junior Tower Label, BM500 ETQBalança etiquetadoraEthernet, USB, RS232, BM500 ETQ também wifiPLU próprios na balançaler etiquetas
BaxtranTW, VW, XTA, XTA-PBalança computadora de preçosRS232Toledo (a caixa envia W), 9600 baud, 7E1ligada, várias ao mesmo tempo
BizerbaCS 300 (também de encastrar)Balança registadoraRS232Checkout-Dialog 06 (9600, 7O1)ligada, várias ao mesmo tempo
BizerbaK-Class Flex, KH IIBalança etiquetadoraEthernetPLU próprios na balançaler etiquetas
Brecknell6702U, 6710U, 6720UBalança registadoraRS232, USB (porta COM virtual)NCI (a caixa envia W), 9600 baud, 7E1ligada, várias ao mesmo tempo
CASPD-II, PDN, PDI, PDS-BBalança registadoraRS232, PDN também USB e Bluetooth, PDI também USBECR type 2 = Toledo (a caixa envia W), 9600 baud, 7E1ligada, várias ao mesmo tempo
CASCL3000, CL5500, CL7200Balança etiquetadoraEthernet, USB, RS232, CL5500 e CL7200 também wifiPLU próprios na balançaler etiquetas
DatalogicMagellan 9300i, 9400i, 9800i (scanner com balança)Balança registadoraRS232 (porta de balança separada), USBMettler Toledo 8217 (a caixa envia W), 9600 baud, 7E1ligada, várias ao mesmo tempo
DibalKS-400, D-POS 400Balança registadoraRS232, D-POS 400 também USBCheckout-Dialog 06 (9600, 7O1)ligada, várias ao mesmo tempo
DibalG-325, PI-100Balança computadora de preçosRS232Checkout-Dialog 06 (9600, 7O1)ligada, várias ao mesmo tempo
DibalM-500 (Mistral), D-900, CS-2200Balança etiquetadoraEthernet, Wi-Fi, USBPLU próprios na balançaler etiquetas
DIGIDS-781Balança computadora de preçosRS232DIGI Type B (a caixa envia ENQ), 9600 8N1ligada, várias ao mesmo tempo
DIGISM-120, SM-6000Balança etiquetadoraEthernet, Wi-FiPLU próprios na balançaler etiquetas
Dini ArgeoDFW, DGT, 3590EBalança registadora (só peso)RS232, USB, Ethernet, DFW e 3590E também wifiContínuo (ST,GS, 0.512,kg), 9600 8N1ligada, várias ao mesmo tempo
Excell PrecisionTPE, AM4, FD4-P, FDP4-P, GE4, GEP4Balança computadora de preçosRS232Contínuo (ST,GS,+0.876kg), 9600 8N1 (exceto TPE, a testar)ligada, várias ao mesmo tempo
GramXFOC RS, XFOC+ RS, ZFOC RSBalança computadora de preçosRS232, USB (cabo da Gram)Gram (a caixa envia ENQ, depois DC1), 9600 8N1 (XFOC a testar)ligada, várias ao mesmo tempo
IshidaUni-3, Uni-5, Uni-7, Uni-9Balança etiquetadoraEthernet, Wi-Fi, USBPLU próprios na balançaler etiquetas
Kern & SohnRPB, RFCBalança computadora de preçosRS232, USBCheckout-Dialog 06 (Prot = DLG-06, 9600, 7O1)ligada, várias ao mesmo tempo
Kern & SohnRFE (preço), IFB, EOCBalança computadora de preços / registadoraRS232Contínuo, 9600 8N1ligada, várias ao mesmo tempo
Mettler ToledoAriva-SBalança registadoraRS232, USB (porta COM virtual)Toledo 8217 (a caixa envia W), 9600 baud, 7E1ligada, várias ao mesmo tempo
Mettler ToledoVivaBalança registadoraRS232Toledo 8217, 9600 baud, 7E1ligada, várias ao mesmo tempo
Mettler ToledobPlus, UC EvoBalança etiquetadoraEthernet, Wi-FiPLU próprios na balançaler etiquetas
Minebea IntecSignum, Combics, Midrics, PuroBalança registadora (só peso)RS232, USB, Signum e Combics também EthernetContínuo (SBI, impressão automática), 9600 8N1ligada, várias ao mesmo tempo
OhausAviator 7000Balança computadora de preçosRS232 ou USBCheckout-Dialog 06 (9600, 7O1)ligada, várias ao mesmo tempo
OhausValor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000Balança registadora (só peso)RS232, USB, EthernetContínuo (Auto Print Continuous), 9600 8N1ligada, várias ao mesmo tempo
Precia MolenDP400Balança registadoraRS232, USBCheckout-Dialog 06 (9600, 7O1)ligada, várias ao mesmo tempo
Precia MolenDPOS CR, C 210 B, C 210 CBalança computadora de preçosRS232Checkout-Dialog 06 (9600, 7O1; C 210 a testar)ligada, várias ao mesmo tempo
Precia MolenCorail 500Balança etiquetadoraEthernet, Wi-FiPLU próprios na balançaler etiquetas
PrecisaXB, XT, LS, LX (balanças de precisão)Balança registadora (só peso)RS232, LS e LX também USBContínuo (modo de impressão CONTINUOUS), 9600 8N1ligada, várias ao mesmo tempo
Rice LakeBenchPro BP-S, BenchPro BP-RBalança registadoraRS232BP-S Toledo 8213, BP-R NCI (ambas: a caixa envia W), 9600 baud, 7E1 (a testar)ligada, várias ao mesmo tempo
RongtaRLS1000, RLS1100Balança etiquetadoraEthernet, RS232, wifiPLU próprios na balançaler etiquetas
SartoriusEntris, QuintixBalança registadora (só peso)RS232, USBContínuo (SBI, impressão automática), 9600 8N1ligada, várias ao mesmo tempo
Star MicronicsmG-T12, mG-T30, mG-T60, mG-S8200Balança registadora (só peso)RS232, USB (porta COM virtual)Contínuo, 9600 8N1 (a testar)ligada, várias ao mesmo tempo
T-ScalePA10, PA15, PEA10Balança etiquetadoraEthernetPLU próprios na balançaler etiquetas
UWEASEPBalança computadora de preçosRS232Contínuo, 9600 8N1 (a testar)ligada, várias ao mesmo tempo
WedderburnTSDS983Balança registadoraRS232DIGI Type B (a caixa envia ENQ), 9600 8N1 (a testar)ligada, várias ao mesmo tempo
WedderburnTSDS781T, TSDS782TBalança computadora de preçosRS232DIGI Type B, 9600 8N1 (a testar)ligada, várias ao mesmo tempo
WedderburnTSSM120Balança etiquetadoraEthernet, RS232PLU próprios na balançaler etiquetas
WintecScalePOS ACS-S60E (caixa com balança integrada)Balança registadoraCOM6 interna (Windows) ou COM4 (Android)Contínuo, 9600 8N1 (a testar)ligada
ZebraMP7000, MP72 (scanner com balança)Balança registadoraRS232 (porta AUX)SASI = Toledo (a caixa envia W), 9600 baud, 7E1 (a testar)ligada, várias ao mesmo tempo

A mesma lista está na caixa em Definições → Balança → Todas as balanças (ACLAS_MODELLEN em packages/shared/src/weegschaal.ts, com a marca por modelo).

Preencher o mínimo possível: ao escolher um modelo, a caixa prepara o resto como a marca o configura de fábrica: ligação Porta COM / USB na primeira porta livre, 9600 baud (A&D: 2400) e o protocolo da marca (Toledo: Aclas com 8N1, e com 7E1 Avery Berkel FX, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Brecknell, CAS, Datalogic, Mettler Toledo, Rice Lake e Zebra; Dialog 06: Avery Berkel FX125, Bizerba, Dibal, Kern & Sohn RPB/RFC, Ohaus Aviator e Precia Molen; DIGI Type B: DIGI e Wedderburn; Gram: Gram; Contínuo: A&D, Adam Equipment, Dini Argeo, Excell Precision, as outras Kern & Sohn, Minebea Intec, as outras Ohaus, Precisa, Sartorius, Star Micronics, UWE e Wintec), e um nome (p. ex. OS6X, OS6X 2). Uma balança PC ou IA passa a Neste dispositivo (p. ex. TS6X (ingebouwd); em Linux na porta interna /dev/ttyS0). Se algo não estiver certo, Procurar encontra a porta, a velocidade e o protocolo corretos.

Neste dispositivo (Aclas Scale Module): a balança mostra o peso aferido; a caixa envia o preço ao quilo e a tara (como pré-tara) e adota o valor calculado pela balança, tal como com Dialog 06.

O software da Aclas vem incluído na caixa: o Scale Module para Windows (aclas-module), o AclasScaleDriver para Android (aclas-android) e o Aclas Sync SDK para Windows e Linux (aclas-sdk). A Aclas permite-nos incluí-los. Os instaladores para Windows e Linux trazem-nos; nada para descarregar ou instalar à parte.

Bluetooth (p. ex. a OS6X): emparelhe primeiro a balança. O Windows transforma-a numa porta COM (Definições de Bluetooth → Mais opções de Bluetooth → Portas COM), o Linux /dev/rfcomm0: introduza essa porta. Na app Android introduz o endereço Bluetooth (00:11:22:AA:BB:CC); a app pede uma vez autorização para Dispositivos próximos e liga-se por Bluetooth SPP.

Balanças IA (reconhecimento de produtos): a câmara reconhece o produto no software da Aclas na balança. A pesagem funciona através do Scale Module (neste dispositivo) ou da porta RS232; as etiquetadoras IA imprimem após o reconhecimento uma etiqueta com código de barras que a caixa lê (como com a TS6X).

Aclas AI Recognition Plugin (balança IA com a caixa instalada, p. ex. a iS6X com Windows): o plugin da Aclas reconhece o produto e escreve o respetivo código de barras na caixa, tal como um leitor (seguido de Enter); o ecrã de pedidos coloca o produto com o peso no pedido. Configure-o assim:

Aclas OS6X (balança POS na caixa, RS232/USB; as outras balanças ligadas funcionam da mesma forma):

Digitalizar etiquetas (caixa na balança: Aclas TS6X, outra balança PC ou IA, a série LS ou a LH15X; balança + impressora de etiquetas, uma por estabelecimento):

Portal de gestão: a mensagem ao portal tem a função Balança (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) com ligado/desligado e as balanças por modelo (p. ex. TS6X (op dit apparaat), 2x OS6X, PS1CX, Ariva-S, DS-781, LS6RX, 5 producten per kilo); sem endereços IP, portas COM ou endereços Bluetooth.

Lei de metrologia: uma balança usada para vender tem de estar homologada (classe III, como a OS6X). Com Toledo/contínuo, a caixa calcula com o peso dado pela balança; com Dialog 06, é a balança homologada que calcula o preço.

Código: packages/shared/src/weegschaal.ts (protocolos, etiquetas, ficheiro PLU), apps/pos-server/src/lib/weegschaal.ts e routes/weegschaal.ts; ecrãs WeegschaalInstellingen.tsx e WeegDialoog.tsx.

Thuisbezorgd.nl / Takeaway.com

Os pedidos da Thuisbezorgd.nl chegam diretamente à caixa, sem intermediários (sem Deliverect, HubRise ou semelhantes): o JET Connect da Just Eat Takeaway comunica com o portal de gestão da Pin Voordeel, e a caixa vai buscar aí as suas mensagens.

Na Bélgica a plataforma chama-se Takeaway.com: a mesma empresa (Just Eat Takeaway) e a mesma integração. Num estabelecimento belga, os ecrãs, as notificações, a comanda e o portal de gestão mostram sempre Takeaway.com em vez de Thuisbezorgd.nl. Abaixo, Thuisbezorgd refere-se a ambos.

Porquê através do portal? A caixa só precisa de PORTAAL_URL e PORTAAL_SLEUTEL (ver Portal de gestão) e só faz pedidos de saída.

Configurar (Definições → Plataformas de entregas → Thuisbezorgd.nl / Takeaway.com, permissão Configurar estabelecimento, pagamentos e impressoras; antes ficava em Definições → Estabelecimento):

  1. Ligar Usar Thuisbezorgd (tem efeito imediato, independentemente de Guardar).
  2. Registar na Thuisbezorgd. Depois, o estabelecimento escolhe na Thuisbezorgd (Partner Hub ou gestor de conta) OptimumPOS / Pin Voordeel como caixa. A JET inicia então uma sessão de onboarding; o portal associa a caixa registada (por código postal e nome; caso contrário a Pin Voordeel associa a sessão manualmente no portal), envia a configuração e pede o menu à caixa. Depois disso a integração fica ativa.
  3. Marcar os produtos que podem ser pedidos via Thuisbezorgd (por categoria ou individualmente), eventualmente com uma descrição para a Thuisbezorgd. O menu (preço, opções como modifiers, alergénios, IVA) é enviado automaticamente; PLU = id do produto/opção. Após uma alteração no catálogo, a caixa atualiza o menu em 30 segundos; só "esgotado"/"novamente disponível" passa pela API de disponibilidade.
  4. Horário Thuisbezorgd: separado para entrega e take-away (p. ex. 16:00-22:00, vários blocos separados por vírgula). É guardado com o botão Guardar horário por baixo e enviado ao Thuisbezorgd como service times assim que a integração estiver pronta.
  5. Temporariamente fechado / Reaberto (nos Países Baixos/Bélgica reabre o mais tardar na manhã seguinte às 07:00).

Pedidos. Um pedido torna-se um pedido normal sem mesa (bezorgen ou afhalen, nome do grupo TB <ordernummer>) com os preços que o cliente pagou, mais taxa de entrega/taxa de serviço como linha própria e o desconto da Thuisbezorgd como linha de desconto; se mesmo assim o total não bater certo, é acrescentada uma linha "Diferença Thuisbezorgd". O talão de cozinha segue logo para a cozinha/bar (pode ser desligado). A caixa confirma em segundos ao portal, que o comunica à JET; se isso não acontecer em 3 minutos ou se a caixa estiver offline, a JET recebe "falhou" e o estabelecimento recorre ao Orderpad.

Botão Thuisbezorgd na barra superior (com o número de pedidos em curso): lista, cliente e morada, hora de pronto/entrega e a linha temporal (track & trace): recebido, estafeta a caminho do estabelecimento, estafeta no estabelecimento, a caminho do cliente, entregue (da JET), mais passos próprios (em preparação, pronto, a caminho/entregue em entrega própria, levantado). Um mapa em tempo real com o estafeta não é disponibilizado pelo JET Connect à caixa; o cliente vê-o na app da Thuisbezorgd. Novo pedido, cancelamento e "estafeta no estabelecimento" mostram uma barra laranja e emitem um som. Concluir (pago online) cobra com a forma de pagamento online; se o cliente pagar à porta, basta cobrar normalmente. Um cancelamento da Thuisbezorgd anula o pedido e imprime um talão de cozinha "CANCELADO".

Código: apps/pos-server/src/lib/thuisbezorgd.ts, routes/thuisbezorgd.ts; ecrãs ThuisbezorgdInstellingen.tsx e Thuisbezorgd.tsx. Lado do portal: horecapos-portaal/src/thuisbezorgd.mjs (ver o README do portal).

Contagem no portal de gestão. O número de pedidos Thuisbezorgd por dia é incluído na comunicação ao portal de gestão (verkoopTelling em lib/portaal.ts): recebidos e não cancelados, no dia em que chegaram. Um pedido Thuisbezorgd cobrado na caixa (também com Concluir (pago online)) não volta a contar aí em take-away/entrega. Os dados da Thuisbezorgd ficam na base de dados da caixa e por isso são incluídos normalmente nas cópias de segurança da caixa.

Loja online e pedidos online

Cada estabelecimento pode ter a sua própria loja online: um site de encomendas (e app) com a sua própria imagem para take-away, entrega, pedidos à mesa com código QR e reservas, com pagamento online (MultiSafepay ou Buckaroo) ou pagamento no levantamento/na entrega. A loja online é um projeto separado, horecapos-webshop (Node.js, ver o README lá), e corre no mesmo servidor que o portal de gestão.

Ligar e configurar faz-se na gestão da loja: botão Gerir loja online no portal do cliente (proprietário) ou na instalação no portal de gestão (Pin Voordeel). Aí encontra ligar/desligar, o endereço web (<zaak>.<webshopdomein> ou um domínio próprio), imagem (cores, logótipo, imagem de cabeçalho, tipo de letra), horários de funcionamento e faixas horárias para take-away e entrega, zona de entrega (códigos postais, raio ou uma área no mapa, com custos e mínimo), pagamentos, códigos de desconto, textos, idiomas, códigos QR para as mesas, reservas e a app (instalável como PWA; uma app Android através de uma Trusted Web Activity), e as notificações push (opcionais, desligadas por predefinição): o cliente ativa uma notificação na página do seu pedido e recebe uma notificação push quando o pedido está pronto ou a caminho; quem quiser recebe também de vez em quando uma promoção, que o estabelecimento envia a partir da gestão da loja (separador Notificações push). Funciona em Android e computadores (Chrome, Edge, Firefox, Samsung Internet), na app Android, e em iPhone e iPad (iOS 16.4 ou mais recente) se o cliente adicionar a loja online ao ecrã principal. Não é enviado nenhum SMS nem e-mail e não é guardado nenhum nome nem número. Detalhes no README da loja online.

Menu. A caixa envia o menu automaticamente: todos os produtos ativos (não ao quilo), por grupo de produtos, com preço, opções de escolha, alergénios, esgotado e a foto do produto, mais as mesas e os dados do estabelecimento, e quais os canais de marketing ligados (para a caixa "receber ofertas" no pagamento, ver Marketing por SMS e e-mail). Isto acontece no arranque, assim que a loja online é ligada, até 30 segundos após uma alteração no catálogo e poucos segundos após uma alteração em Definições → Estabelecimento, como o marketing ou o cartão de cliente (ou com Enviar menu agora). Para manter um produto fora da loja online, use a gestão da loja (ocultar) ou a base de dados com artikel.webshop = false.

Pedidos. Take-away e entrega tornam-se um pedido normal sem mesa (nome de grupo WEB <bestelnummer>) com os preços que o cliente viu, mais taxa de entrega e custos de transação como linhas próprias e um código de desconto como linha de desconto; se mesmo assim o total não bater certo, é adicionada uma linha "Diferença loja online". A gorjeta do cliente não conta como faturação: é adicionada ao pagamento como gorjeta em Concluir (pago online). Os pedidos à mesa (código QR) vão para a conta aberta dessa mesa (pago online: como grupo próprio nessa mesa). O talão de cozinha segue logo para a cozinha/bar (pode ser desligado na janela Loja online). A caixa confirma em segundos com o número do talão; o cliente recebe então "recebido" e um e-mail. Se a caixa estiver offline, a loja online não aceita pedidos (o cliente vê-o de imediato) e envia um e-mail ao estabelecimento se um pedido ficar demasiado tempo à espera. As reservas da loja online entram em Reservas (só se as reservas estiverem ligadas na caixa). Se houver um máximo por faixa horária (Entrega e faixas horárias), os pedidos da loja online com uma hora nessa faixa também contam.

Bélgica (caixa negra). Um pedido da loja online vai logo como pedido (signOrder) para a caixa negra, antes da ordem de trabalho, tal como Enviar pedido na caixa. Se falhar, não entra na caixa e a loja online volta a enviá-lo mais tarde. O que ainda não foi testado com a caixa negra fica desativado no menu da loja online (vales-oferta, códigos de desconto, a crédito, no quarto, menus, opções com suplemento, happy hour e gorjeta) e é recusado se uma loja online antiga o enviar mesmo assim. Concluir verifica gorjeta, a crédito e no quarto tal como a caixa.

Debitar no quarto (ligação ao hotel, Definições → Hotel → Self-service → Na loja online): o menu recebe kamer: { maxBedrag }; a loja online envia betaling.wijze = "kamer" com kamer e achternaam. A caixa verifica o hóspede junto do software hoteleiro (não à mesa, não com vale-oferta) e guarda-o com o pedido; Concluir (debitar no quarto) cobra no quarto e lança o talão na conta do hotel. Fatura agrupada com pagamento a crédito: o talão fica então como movimento em aberto.

Botão Loja online na barra superior (com o número de pedidos em curso): lista, cliente e morada, hora pretendida ou "o mais rápido possível", forma de pagamento e a cronologia. O cliente vê os passos Em preparação, Pronto e A caminho em tempo real na loja online (e por e-mail, se o estabelecimento quiser). Cobrado na caixa = Concluído; Cancelar anula só as linhas desse pedido online, imprime um talão de cozinha "CANCELADO", e a loja online reembolsa um pedido pago online. Chegou, não compareceu ou cancelado numa reserva também é enviado de volta para a loja online. Um novo pedido ou reserva mostra uma barra laranja e emite um som.

Código: apps/pos-server/src/lib/webshop.ts, routes/webshop.ts; ecrã Webshop.tsx. Lado do portal: horecapos-portaal/src/webshop.mjs.

Caixa e loja online iguais (cada parte liga-se em separado, desligado por predefinição; uma loja online mais antiga ignora os campos novos). O que está ligado na caixa também funciona na loja online:

Para isso, o menu da loja online tem versie: 2 com os campos menuArtikelen, allergenenAan, happyhours, menus, klantenkaart, cadeaubon, kortingscodes, pauze, drukteMin, volgt, bezetting, reserveren.online, ayce, opRekening, wachtlijst e upsell. A confirmação ao portal tem ainda cadeaubonnen (códigos), klant (pontos) e plek (lista de espera).

Contagem no portal de gestão. Take-away e entrega através da loja online contam à parte (webshop, webshopGeannuleerd em verkoopTelling), no dia em que chegaram, e não voltam a contar em take-away/entrega. Os pedidos à mesa contam normalmente como mesa.

Pagamento com cartão e terminais de pagamento

Definições → Pagamentos (só administrador):

Se houver pelo menos um terminal com chave API (ou o modo de teste estiver ligado), Cobrar → Cartão / Bancontact inicia automaticamente o pagamento no terminal, pelo valor calculado pelo servidor.

Enquanto a integração estiver ligada, o servidor só aceita "cartão" com um pagamento no terminal aprovado para exatamente esse pedido e esse valor. Os pedidos seguem, tal como no PHP-SDK oficial, como formulário normal, com a API de reserva (api-backup.pinvandaag.com) se a API principal não responder. Cada resposta da API aparece com [pin] na janela do servidor, útil em caso de avarias. Um pagamento aprovado que ainda não foi processado (p. ex. tablet desligado) é recuperado na cobrança seguinte desse pedido.

Gorjeta (cartão, dinheiro e vale-oferta)

No ecrã de cobrança há, em cada forma de pagamento, uma fila de botões de gorjeta: Nenhum, 5%, 10%, 15% (arredondado para cima a 10 cêntimos), Arredondamento (para o euro inteiro seguinte) e Outro valor. Com cartão, o cliente paga valor + gorjeta de uma só vez no terminal; em dinheiro, a gorjeta conta para o troco e para a gaveta. No talão aparece o valor pago com cartão com "dos quais gorjeta" por baixo; o TOTAL e o IVA mantêm-se, porque a gorjeta não é faturação. No relatório X/Z a gorjeta aparece por forma de pagamento e como "Total de gorjetas".

O administrador configura os botões de gorjeta em Definições → Estabelecimento → Gorjeta: ligado/desligado, que percentagens (no máximo 4, p. ex. "5, 10, 15"), se o botão "Arredondamento" aparece e com que formas de pagamento (cartão, dinheiro, vale-oferta) é possível dar gorjeta. "Nenhum" e "Outro valor" aparecem sempre.

"Arredonde para …" aparece sempre, em cada forma de pagamento, mesmo com os botões de gorjeta desligados (sem definição): o cliente arredonda ele próprio a conta para cima e a diferença é gorjeta. Há botões com o euro inteiro seguinte e os valores redondos seguintes (p. ex. € 28,00 → 29, 30, 40; € 44,00 → 45, 50, 60) e Outro total para digitar o total. Tocar de novo no botão escolhido = não arredondar. No máximo € 500 de gorjeta (o mesmo limite do servidor da caixa).

Sem internet

A caixa funciona na rede local e não precisa de internet; só o pagamento com cartão através da integração precisa. Se o estabelecimento não tiver internet, aparece na barra superior Sem internet · cartão manual (verificado a cada minuto). No ecrã de cobrança aparece então, e também após um início falhado no terminal, o botão Já pago no terminal: cobre o valor no próprio terminal e registe-o assim.

Plantas das salas e mesas

Editor de plantas

Definições → Plantas das salas (só administrador):

Copiar a configuração para um segundo estabelecimento

Definições - Importar/exportar

Definições → Importar/exportar (só o administrador). Depois de configurar completamente um estabelecimento, exporte a configuração para um ficheiro .json e importe-o na caixa do segundo estabelecimento. Pode escolher por componente:

Nunca são incluídos: nome, morada, código postal, localidade, telefone, e-mail, número de IVA e linha final do talão do estabelecimento, o e-mail para o relatório Z, terminais de pagamento e as suas chaves, pessoal e PINs, e toda a faturação, talões, clientes e quantidades em stock.

A importação é fortemente protegida: um grande aviso vermelho, um visto "Compreendo...", de novo o PIN próprio do administrador, nenhum pedido em aberto, o mesmo país (taxas de IVA) e antes disso uma cópia de segurança automática. A importação é feita numa única transação: se algo correr mal, nada muda. Produtos, categorias, ingredientes e mesas existentes não são apagados, mas retirados da caixa (como em Eliminar), para que os talões e relatórios antigos continuem corretos.

Importar de outra caixa

Mudar de caixa sem voltar a escrever tudo. Sempre disponível (sem interruptor): em Definições → Importar/exportar (só o administrador) encontra-se a secção Importar de outra caixa.

Idiomas (42, entre eles turco, árabe, darija, berbere, polaco, búlgaro, húngaro, russo, sérvio, albanês, persa, tigrínia, amárico, somali, papiamento, sranan tongo, hindi, urdu, indonésio, vietnamita, siríaco-aramaico, chinês e ucraniano)

Ao lado do botão © no canto inferior direito, cada ecrã tem um botão com o idioma (p. ex. NL e a bandeirinha). Toque nele para abrir o menu: os idiomas aparecem por ordem alfabética, com o nome no próprio idioma antes da bandeira: Bahasa Indonesia (indonésio), Čeština (checo), Darija (árabe marroquino em escrita latina), Deutsch, English, Español, Français, Hrvatski (croata), Italiano, Kurdî (Kurmancî), Latviešu (letão), Lietuvių (lituano), Magyar (húngaro), Nederlands, Papiamentu (papiamento), Polski, Português, Română, Shqip (albanês), Slovenčina (eslovaco), Soomaali (somali), Sranantongo, Srpski (sérvio, em escrita latina), Tarifit (berbere rifenho), Tiếng Việt (vietnamita), Türkçe, em seguida em escrita cirílica Български (búlgaro), Русский (russo) e Українська (ucraniano), depois os idiomas em escrita árabe: اردو (urdu), الدارجة (darija), العربية (árabe), دری (dari), فارسی (persa, farsi), پښتو (pashto) e کوردی (سۆرانی) (curdo sorani), depois em escrita siríaca ܣܘܪܝܝܐ (siríaco-aramaico, Suryoyo), em devanágari हिन्दी (hindi), em escrita ge'ez ትግርኛ (tigrínia) e አማርኛ (amárico), em escrita tifinagh ⵜⴰⵎⴰⵣⵉⵖⵜ (tamazight, berbere), e por último 中文(简体)(chinês, escrita simplificada). Todos os ecrãs, botões, avisos e mensagens de erro do servidor da caixa são traduzidos.

Para programadores: cada texto visível está no código como vt('Nederlandse tekst') (apps/pos-web/lib/i18n.ts); o texto neerlandês é a chave. As traduções estão em apps/pos-web/lib/vertalingen/<taal>.ts. Se faltar uma tradução, a caixa mostra o neerlandês; o teste i18n (pos-web) verifica se cada texto está traduzido em todos os idiomas e se os marcadores {0} estão corretos. As mensagens do servidor da caixa ficam em neerlandês e são traduzidas no navegador (também com {0}, p. ex. um nome de produto na mensagem).

Configurar impressoras

Uma caixa nova não tem impressoras. Inicie sessão como administrador (demo: 1111) e escolha Definições na barra superior.

Produtos iguais são agrupados na impressão: duas vezes 1x Cola passa a 2x Cola, no talão de cozinha e no talão. Só se agrupam produtos com as mesmas opções e observação.

O instalador Linux adiciona o utilizador da caixa aos grupos lp e dialout, para que a caixa possa usar impressoras USB e série.

Precisa de ajuda?

Optimum POS · 085 560 00 60 · support@optimumpos.nl · seg–sex 9:00–20:00, sáb–dom 14:00–20:00