Instrukcja HorecaPOS
Ta instrukcja składa się z trzech części: najpierw dla personelu (obsługa), potem dla kierownika, a na końcu dla administratora. Każda część opiera się na poprzedniej: kierownik może wszystko, co obsługa, a administrator może wszystko.
Co dokładnie wolno Twojej roli, ustawia administrator w Ustawienia → Uprawnienia. Jeśli nie widzisz jakiegoś przycisku, Twoja rola nie ma (jeszcze) do niego uprawnień.
Ta instrukcja jest też dostępna w kasie: dotknij przycisku © w prawym dolnym rogu dowolnego ekranu i wybierz Instrukcja albo otwórz http://<kassa-pc>:3000/handleiding. Zobacz też wprowadzenie i dokumentację API.
Część 1 · Personel
Pierwsze kroki
Logowanie. Otwórz kasę na kasie, tablecie lub telefonie i wpisz swój PIN (od 4 do 8 cyfr). Następnie zobaczysz plan sali.
Otwieranie stolika. Dotknij stolika. Wolny stolik dostaje nowe zamówienie; przy zajętym stoliku kontynuujesz istniejące zamówienie. U góry przełączasz się między pomieszczeniami (np. Sala i Taras). Przy ladzie używasz Szybka sprzedaż, a do zamówień na wynos Na wynos.
Zamawianie. Wybierz grupę produktów i dotykaj produktów. Pojawiają się na rachunku po lewej. Ewentualnie najpierw wybierz danie (1 = od razu, 2 i 3 czekają, aż je wywołasz). Dotknij Zamów: wtedy bony kuchenne trafiają do kuchni i baru. Dopóki nie dotkniesz Zamów, możesz po prostu usuwać pozycje.
Rozliczenie. Dotknij Rozliczenie, wybierz Karta / Bancontact, Gotówka lub Karta podarunkowa, ewentualnie napiwek, i potwierdź. Przy płatności kartą transakcja sama uruchamia się na terminalu. Paragon zostaje wydrukowany; możesz go też wysłać e-mailem.
Wylogowanie. Wyloguj się, gdy skończysz, aby nikt inny nie pracował pod Twoim nazwiskiem. Po 8 godzinach zostaniesz wylogowany automatycznie.
Brak internetu? Kasa po prostu działa dalej. Jeśli u góry widnieje Brak internetu · karta ręcznie, wprowadź kwotę bezpośrednio na terminalu płatniczym i wybierz na ekranie rozliczenia Już zapłacono na terminalu.
Kilka grup przy jednym stoliku
Przy jednym stoliku może siedzieć kilka grup, każda z własnym rachunkiem i własnym paragonem.
- Dotknij stolika: wolny = nowe zamówienie; jedna grupa = od razu ta grupa; kilka grup = najpierw wybierz albo + Nowa grupa (nazwa może być pusta).
- Na ekranie zamówienia u góry znajduje się pasek grup: przełączanie między grupami, + Grupa, Nazwa grupy (np. „Kowalski”) oraz Podziel / przenieś.
- Podziel / przenieś: wybierz dla każdej pozycji, ile sztuk przechodzi (przy 3× Pils np. 1) i do której grupy, albo utwórz nową grupę. Tak przeniesiesz coś, co jest na złym rachunku, albo podzielisz go później, gdy „każdy płaci za siebie”. Jeśli grupa zostanie pusta, znika.
- Kilka części naraz: przyciskiem + Jeszcze jedna część odkładasz jedną część i wybierasz następną (np. rybę i Dry Martini na stolik 2, resztę na stolik 35). Część może też trafić na + Inny stolik (tam jako nowa grupa). Przyciskiem Przenieś wszystko idzie za jednym razem. ½ dzieli pozycję na pół, także pół butelki (0,667 zamienia się w 2 × 0,3335).
- Połącz: wszystko z jednego lub kilku innych stolików (albo grup przy tym stoliku) na ten rachunek, za jednym razem.
- Belgia: podział lub połączenie za jednym razem to w czarnej skrzynce jedna zmiana stolika, tak jak wymaga tego FOD, belgijski urząd skarbowy (UC242, UC251, UC252, UC4119bis). Jeśli po zamówieniu coś zostanie skreślone albo pojawi się rabat na już zamówioną pozycję, idzie to razem z następnym komunikatem tego stolika (zamówienie, rachunek wstępny, zmiana stolika), a w przeciwnym razie ze sprzedażą: stara pozycja na minus, nowa na plus (UC226, UC4102, UC4104, UC4107, UC4110).
- Na ekranie stolików pomarańczowa kropka pokazuje, ile jest grup; kwota to suma wszystkich grup.
- Paragon i bon kuchenny pokazują „Stolik 5 - grupa 2” lub „Stolik 5 - Kowalski”.
Dzielenie rachunku przy rozliczeniu
Rozliczenie działa jak zawsze: Wszystko naraz. Na ekranie rozliczenia rachunek można teraz także podzielić, przyciskami pod Wstecz i Rozlicz (dzięki temu są zawsze widoczne, bez przewijania):
- Podziel po równo: wybierz za pomocą − i + liczbę osób (domyślnie liczba gości lub 2, jeśli kasa nie rejestruje gości). Ekran pokazuje kwotę na osobę; każdy płaci swoją część kartą, gotówką lub kartą podarunkową (z napiwkiem, jeśli chce). Po każdej części kasa odlicza ("jeszcze 3 osób"); ostatnia osoba płaci dokładnie resztę.
- Własna kwota: ktoś płaci stałą kwotę (np. € 20); reszta pozostaje otwarta.
- Według produktu…: otwiera Podziel / przenieś, aby przenieść produkty na osobny rachunek i rozliczyć go oddzielnie (jak opisano wyżej).
Płatność częściowa księguje tylko płatność; rachunek pozostaje otwarty, a na ekranie zamówienia widnieje „już zapłacono … · pozostało …”. Paragon (ze wszystkimi płatnościami) pojawia się przy ostatniej płatności, tak jak przy zwykłym rozliczeniu. Płatność kartą przez integrację jest dokładnie na kwotę częściową. Jeśli część już zapłacono, nie można przenosić pozycji do innej grupy ani dodawać rabatów; usuwanie jest możliwe tylko wtedy, gdy pozostało wystarczająco do zapłaty. Każda płatność częściowa trafia do dziennika zdarzeń.
Szybka sprzedaż i na wynos (bez stolika)
W prawym górnym rogu ekranu stolików znajdują się Szybka sprzedaż i Na wynos. Oba od razu otwierają zamówienie bez stolika. Szybka sprzedaż to sprzedaż przy ladzie (VAT na miejscu); Na wynos używa stawki VAT na wynos dla każdego produktu. W polu „Nazwa klienta” dodajesz nazwisko; pojawia się ono na paragonie („Na wynos – Kowalski”) i u góry bonu kuchennego. Otwarte zamówienia bez stolika widać pod przyciskami pomieszczeń („Bez stolika: Na wynos #12 – Kowalski”), dzięki czemu łatwo je odnaleźć. Jeśli wrócisz, nic nie sprzedając, puste zamówienie zniknie samo.
Oba przyciski można włączyć lub wyłączyć dla każdego lokalu w Ustawienia → Lokal, tuż pod jasnym/ciemnym motywem (domyślnie włączone). Wyłączone = przycisk ukryty; już otwarte zamówienia bez stolika pozostają widoczne.
Dostawa i przedziały czasowe
Zamówienia, które przyjmujesz sam w kasie, na przykład telefonicznie lub przy ladzie, według tych samych zasad co w sklepie internetowym: strefy dostawy i maksymalna liczba zamówień na przedział czasowy. Włączasz w Ustawienia → Lokal → Dostawa i przedziały czasowe, bezpośrednio pod przyciskami Szybka sprzedaż i Na wynos (domyślnie wyłączone).
- Przycisk Dostawa na ekranie stolików (obok Na wynos): wpisz imię, telefon i adres (z włączonym Szybkie wprowadzanie adresu: wyszukiwanie po kodzie pocztowym i numerze domu). Kasa wyszukuje strefę dostawy i pokazuje koszt dostawy, minimum i "gratis od". Jeśli adres jest poza strefami, dostawa nie jest możliwa.
- Strefy dostawy: według kodu pocztowego (zakresy i pojedyncze kody, np.
5000-5049, 5051, 5052 AB), w promieniu w km od lokalu (w linii prostej) lub jako obszar na mapie, który sam rysujesz. Promień i obszar działają tylko z adresami w Holandii (położenie przez PDOK). Dla każdej strefy: koszt dostawy, minimum, gratis od i dodatkowe minuty; obowiązuje pierwsza pasująca strefa od góry, więc rodzaje można łączyć (np. najpierw kilka kodów pocztowych, potem obszar, potem promień dla reszty). Brak ustawionych stref = dostawa wszędzie, bez kosztów i minimum. Strefy sklepu internetowego ustawiasz osobno (zarządzanie sklepem). - Obszar na mapie: przy strefie dostawy wybierz rodzaj Obszar na mapie, a następnie Rysuj na mapie. Klikaj mapę, aby dodać punkty (co najmniej 3); przeciągnij punkt, aby go przesunąć, kliknij punkt, aby go usunąć, i przeciągnij kółko w połowie krawędzi, aby dodać punkt pomiędzy. Mapa pokazuje też strefy z promieniem i lokal. Kafelki mapy pochodzą z OpenStreetMap, więc mapa wymaga internetu; sama dostawa nie (poza wyszukaniem adresu). Jeśli adresu nie da się wyszukać, kasa informuje o tym zamiast "poza strefami dostawy".
- Koszt dostawy pojawia się w zamówieniu jako pozycja "Koszt dostawy" i jest przeliczany po każdej zmianie (gratis od, brak produktów = brak kosztów), dopóki nic nie zostało zapłacone. Poniżej minimum nie można rozliczyć; ekran zamówienia pokazuje, ile jeszcze brakuje, z przyciskiem Jednak na wynos (koszt dostawy i minimum nie obowiązują).
- Godzina: Jak najszybciej (teraz + czas dostawy, plus dodatkowe minuty strefy) lub przedział czasowy z dzisiaj. Jeśli dla Thuisbezorgd ustawiono godziny otwarcia, obowiązują one także tutaj.
- Maksimum na przedział (0 = bez limitu; przedział od 5 do 60 minut): łącznie dla Na wynos i Dostawa; liczą się też zamówienia ze sklepu internetowego w kasie. Jeśli ustawiono maksimum, także Na wynos pyta o godzinę, a pełnych przedziałów nie można wybrać. Dwie kasy jednocześnie o ostatnie miejsce: dostaje je tylko jedna.
- Na bonie kuchennym są adres, imię, telefon i godzina; w "Bez stolika" i u góry bonu kuchennego np. "Dostawa – 18:30 Kowalski".
Rozszerzenia (wszystko domyślnie wyłączone; bez tych ustawień wszystko działa dokładnie jak powyżej):
- Własne godziny otwarcia dla na wynos i dostawy (dla każdego dnia tygodnia, np.
16:00-21:00lub11:30-14:00, 17:00-22:00; po północy też można:17:00-01:00; puste = w tym dniu zamknięte). Wył. = jak dotychczas (godziny z Thuisbezorgd, jeśli są, w przeciwnym razie cały dzień). - Dni zamknięte (np.
25-12-2026, 26-12-2026): w te dni bez na wynos i dostawy. - Zamawianie z wyprzedzeniem: od 0 (tylko dziś, jak dotychczas) do 14 dni. W oknie Dostawa/Na wynos najpierw wybierasz dzień; późniejszy dzień jest drukowany na bonie kuchennym przed godziną.
- Duży ruch: tyle dodatkowych minut przy "jak najszybciej" (kasa i sklep internetowy). Można to też szybko ustawić przyciskiem Sklep internetowy na górnym pasku.
- Adresy belgijskie (kod pocztowy z 4 cyfr): przy promieniu lub obszarze na mapie kasa wyszukuje położenie przez OpenStreetMap (Nominatim; wymagane ulica i miejscowość).
- Sklep internetowy korzysta z ustawień kasy: kasa jest nadrzędna. Sklep internetowy używa wtedy z kasy stref dostawy, czasu dostawy i odbioru, przedziału czasowego, maksimum na przedział, godzin otwarcia (jeśli są tu ustawione), dni zamkniętych i dni naprzód oraz wlicza do przedziału zamówienia przyjęte w kasie. Wył. = sklep internetowy ma własne ustawienia (panel sklepu), jak dotychczas. Włączanie i wyłączanie na wynos/dostawy pozostaje w sklepie internetowym.
Kod: lib/bezorgen.ts, routes/bezorgen.ts, BezorgDialoog.tsx, BezorgInstellingen.tsx, BezorgKaart.tsx i lib/kaart.ts (mapa, bez dodatkowego pakietu; ten sam kod jest w sklepie internetowym jako public/kaart.js).
Telefonia: rozpoznawanie klienta przy zamówieniu telefonicznym
Ustawienia → Telefonia (domyślnie wyłączone; wyłączenie zachowuje wszystko). Dwa osobne przełączniki:
- Wyszukiwanie klienta po numerze telefonu przy dostawie i na wynos: gdy wpiszesz numer na ekranie dostawy, kasa pokaże klienta z adresem i wcześniejszymi zamówieniami; Przejmij dane wypełnia nazwisko, e-mail i adres. Działa też bez centrali telefonicznej.
- Identyfikacja numeru: gdy dzwoni klient, centrala telefoniczna (lub aparat, FRITZ!Box, modem albo telefon z Androidem) przekazuje numer. Na ekranach pojawia się powiadomienie, kto dzwoni: nazwisko, adres, ostatnie zamówienia (z daniami i kwotą, także ze sklepu internetowego, Thuisbezorgd i platform dostaw), suma i rezerwacja. Przyciskiem Przyjmij dostawę lub Przyjmij na wynos otwiera się ekran dostawy z wszystkim już wypełnionym (przy włączonej opcji Dostawa i przedziały czasowe); zamówienie zostaje przypisane do rozmowy, a powiadomienie znika ze wszystkich ekranów. Przycisk 📞 na górnym pasku: rozmowy z ostatnich 24 godz. Można wyłączyć dla każdego ekranu (Pokazuj powiadomienia na tym ekranie).
Przeszukiwane są: karta lojalnościowa, zamówienia z dostawą i na wynos z kasy, sklep internetowy, Thuisbezorgd, platformy dostaw i rezerwacje. Numery są ujednolicane (+31 6 1234 5678, 0031612345678 i 06-12345678 to ten sam numer; także numery belgijskie).
Jak numer trafia do kasy (można kilka naraz; ta sama rozmowa liczy się raz):
| Źródło | Dla | Konfiguracja |
|---|---|---|
| Webhook / action URL | 3CX (integracja CRM), Aircall, Voys / VoIPGRID, Yeastar seria P, aparaty z action URL przy połączeniu przychodzącym (Fanvil, Grandstream, Mitel 6800/6900, Snom, Yealink: działa z każdą centralą i operatorem), usługi integracji (Zapier, Make, n8n, Power Automate) | adres z Ustawienia → Telefonia (/api/telefonie/oproep?sleutel=...&nummer=...), GET lub POST, JSON, formularz lub query; także przez portal: https://<portaal>/telefonie/<kassa-id>/oproep?sleutel=... |
| Asterisk (AMI) | Asterisk, FreePBX, Issabel, VitalPBX, Grandstream UCM | adres, port (5038; Grandstream UCM 7777), użytkownik AMI i hasło (uprawnienia call) |
| FRITZ!Box | FRITZ!Box z telefonią | adres (fritz.box) i port 1012; jednorazowo włącz callmonitor przez #96*5* |
| Modem USB caller ID | analogowa linia stacjonarna z prezentacją numeru | port szeregowy (COM3, /dev/ttyACM0), baud i polecenie inicjujące (domyślnie AT+VCID=1) |
| Telefon z Androidem | wbudowany telefon w telefonie z Androidem należącym do lokalu | aplikacja HorecaPOS na tym telefonie, Ustawienia → Telefonia → Sparuj ten telefon (Android 10+: wybierz aplikację jako aplikację do identyfikacji numeru) |
Odpowiedź zawiera dzwoniącego, także jako contact (firstname, lastname, phone, email, address) dla szablonu CRM 3CX. Rozmowy wychodzące i wewnętrzne nie są pokazywane; Tylko te linie ogranicza do wybranych linii lub aparatów. Rozmowy są usuwane po okresie przechowywania (domyślnie 30 dni, RODO). Rozmowa testowa symuluje dzwonienie z numeru.
Kod: apps/pos-server/src/lib/telefonie.ts, routes/telefonie.ts, packages/shared/src/telefonie.ts; ekrany Telefonie.tsx, BezorgDialoog.tsx; Android android-app/native/java/Beller*.java. Dziennik zdarzeń: Telefonia.
Własni dostawcy: kursy, rozliczenie gotówki i śledzenie dostawy
Dla lokali z własnymi dostawcami. Włącz w Ustawienia → Lokal → Dostawa → Własni dostawcy (domyślnie wyłączone). Aplikacja dla dostawcy nie jest potrzebna: dostawca używa strony w przeglądarce własnego telefonu (kto chce, może używać aplikacji Optimum Bezorger: zobacz Aplikacja dostawcy poniżej).
Tworzenie kursu. W kasie jest przycisk Kursy (z liczbą dostaw, które jeszcze muszą wyjechać, plus kursów w drodze).
- W sekcji Gotowe do dostawy zaznacz zamówienia, które jadą. To zamówienia z dostawą z kasy, sklepu internetowego i Thuisbezorgd (tylko własna dostawa; nie te z dostawcą Thuisbezorgd).
- Wybierz dostawcę (pracownika) i drobne, które zabiera (domyślnie kwota z ustawienia), i stuknij Utwórz kurs.
- Pojawia się kod QR. Dostawca skanuje go własnym telefonem i widzi dla każdego adresu nazwisko, adres z przyciskiem Trasa (nawigacja), Zadzwoń, uwagę, preferowaną godzinę i kwotę do pobrania. Jest kalkulator reszty (klient daje 50 € → reszta 31,50 €). Logowanie nie jest potrzebne. Udostępnij link tylko dostawcy: kto go ma, widzi adresy z tego kursu. Przyciskiem Kod QR dla dostawcy tworzysz nowy link; stary przestaje wtedy działać.
- Stuknij Wyjazd, gdy dostawca wyjeżdża. Drobne wychodzą z szuflady (wypłata, z podaniem powodu). Klient dostaje wiadomość, że zamówienie jest w drodze:
- przy zamówieniu z kasy SMS-em i/lub e-mailem, jeśli włączone są Wiadomości do klienta (zob. Dostawa i przedziały czasowe);
- w sklepie internetowym zgodnie z jego ustawieniami (e-mail, SMS lub powiadomienie push);
- przy Thuisbezorgd przez Thuisbezorgd.
Jeśli kurs jeszcze nie wyjechał, można go anulować.
- W trasie dostawca stuka dla każdego adresu Dostarczono, gotówka, Dostarczono, karta (własny terminal płatniczy) lub Dostarczono (już zapłacono). Kasa widzi to od razu. Jeśli dostawca nie może tego zgłosić, można to zrobić także w kasie. Po powrocie do lokalu dostawca stuka Jestem z powrotem w lokalu.
Rozliczenie gotówki. Po kursie stuknij Rozliczenie (uprawnienie Zarządzanie szufladą kasową):
- Dla każdego zamówienia wybierz gotówka, karta przy drzwiach, już zapłacono lub nie dostarczono (zwrot). To, co zgłosił dostawca, jest już wypełnione.
- Kasa rozlicza każde zamówienie z otwartą kwotą bez nowego paragonu (klient ma już paragon; ponowny wydruk w Paragonach). Niedostarczone zamówienie zostaje zdjęte z kursu i pozostaje otwarte, aby mogło pojechać następnym kursem.
- Widzisz oczekiwaną kwotę: drobne plus otrzymana gotówka. Wpisz, ile oddaje dostawca, albo policz według banknotów i monet (Licz według banknotów i monet). Kasa pokazuje, czy się zgadza, albo ile jest za dużo lub za mało.
- Drobne wracają do szuflady (wpłata). Różnica jest widoczna przy kursie i w dzienniku zdarzeń, a także jako różnica kasowa w raporcie Z.
Śledzenie dostawy (włączane osobno w ustawieniu). Przy statusie w drodze klient dostaje link do strony śledzenia w portalu. Ten link jest w SMS-ie lub e-mailu, a w sklepie internetowym na stronie statusu (Śledź swojego dostawcę). Na stronie śledzenia widać:
- czy zamówienie jest przygotowywane, w drodze czy dostarczone;
- przewidywaną godzinę: od lokalizacji dostawcy przez adresy, które są wcześniej, a w przeciwnym razie preferowaną godzinę;
- ile adresów jest jeszcze wcześniej (bez pokazywania innych adresów);
- z opcją Dostawca na żywo na mapie także dostawcę, lokal i własny adres na mapie (OpenStreetMap). Dostawca sam włącza udostępnianie lokalizacji na telefonie (Udostępnij moją lokalizację). Lokalizacja jest przesyłana tylko wtedy, gdy strona jest otwarta; strona nie pozwala wygasić ekranu.
Strony wyświetlają się w języku telefonu (wszystkie języki portalu). W kasie przy kursie widać, kiedy ostatnio przesłano lokalizację (z linkiem do mapy).
Prywatność. Portal przechowuje dane kursu (nazwiska, adresy, numery telefonów, lokalizację) tylko w czasie trwania kursu. Przy rozliczeniu wszystko jest usuwane, a w przeciwnym razie po 24 godz. Klient widzi tylko własne zamówienie. Lokalizacja dostawcy jest widoczna tylko w trakcie kursu i przestaje być widoczna, gdy dostawca wróci.
Planowanie kursów (opcjonalne)
Włącz je w Ustawienia → Lokal → Dostawa → Planowanie kursów (domyślnie wyłączone; działa z własnymi dostawcami). W oknie Kursy pojawi się wtedy przycisk Zaproponuj kursy. Kasa łączy w kursy zamówienia, które jeszcze czekają na wyjazd:
- zamówienia leżące blisko siebie, których wybrane godziny mieszczą się w przedziale czasu (domyślnie 30 minut), trafiają razem;
- do maksymalnej liczby adresów na kurs (domyślnie 4), o ile kurs (dojazd, wszystkie adresy i powrót do lokalu) nie trwa dłużej niż maksimum (domyślnie 45 minut);
- dla każdego kursu najlepsza kolejność, odległość (km), czas przejazdu tam i z powrotem oraz dla każdego adresu przewidywany przyjazd przy wyjeździe teraz. Jeśli jest późniejszy niż wybrana godzina, pojawia się później niż wybrano.
Przyciskiem Użyj tego kursu zaznaczysz te zamówienia w tej kolejności; wybierz dostawcę i stuknij Utwórz kurs. Przy kursie, który jeszcze nie wyjechał, Najlepsza kolejność ustawia adresy w najszybszej kolejności (także na telefonie dostawcy). Przy każdym kursie widać odległość i czas przejazdu.
Ustawienia: adresy na kurs, maksymalny czas kursu, okno czasowe, prędkość kuriera (rower ~15, skuter ~25, samochód ~35 km/h w mieście) i minuty na adres (parkowanie, dzwonienie, rozliczenie; domyślnie 2). Te wartości może ustawić także kierownik: w oknie Kursy przyciskiem Ustaw planowanie kursów (uprawnienie Ustaw planowanie kursów, domyślnie włączone dla kierownika; do zmiany w Ustawienia → Uprawnienia). Włączanie i wyłączanie planowania kursów oraz usługa wyznaczania tras (adres, klucz API) pozostają u administratora.
Odległość i czas przejazdu, do wyboru przez administratora:
- Szacunek (domyślnie): odległość w linii prostej razy 1,35 (współczynnik objazdu) przy prędkości dostawcy. Działa bez internetu i bez konta.
- OSRM: trasy drogowe przez serwer OSRM. Wpisz adres (
https://lubhttp://w sieci lokalnej). Publiczny serwer demonstracyjny (https://router.project-osrm.org) jest tylko do okazjonalnego użytku; do codziennej pracy postaw własny serwer OSRM lub skorzystaj z dostawcy usługi. - OpenRouteService: trasy drogowe z własnym kluczem API (do utworzenia za darmo na openrouteservice.org, z dziennym limitem). Adres domyślnie to
https://api.openrouteservice.orgi może wskazywać na własny serwer. Klucz zostaje na kasie; ekrany pokazują tylko, że jest wpisany.
Przyciskiem Testuj sprawdzisz usługę. Jeśli usługa nie działa, planowanie wraca do szacunku i o tym informuje. Adres o nieznanej lokalizacji (brak poprawnego kodu pocztowego i numeru domu) trafia w propozycji do bez znanej lokalizacji i nie jest planowany. Eksport konfiguracji zawiera ustawienia, ale nie klucz.
Kod: lib/ritplanning.ts.
Aplikacja dostawcy (opcjonalnie)
Włącz w Ustawienia → Lokal → Dostawa → Aplikacja dostawcy (domyślnie wyłączone; działa z własnymi dostawcami i portalem zarządzania). Każdy dostawca paruje wtedy swój telefon jeden raz, zamiast skanować kod QR przy każdym kursie:
- W Sparowane telefony wybierz dostawcę (pracownika), ewentualnie nazwę telefonu, i stuknij Sparuj telefon.
- Pojawi się kod QR. Dostawca skanuje go w aplikacji Optimum Bezorger (przycisk Sparuj) albo aparatem telefonu: strona otworzy się wtedy w przeglądarce. Działa też bez aplikacji i można ją dodać do ekranu głównego.
- Parowanie jest ważne, dopóki go nie unieważnisz; telefon od razu przestaje wtedy cokolwiek widzieć. Nowe parowanie dla tego samego pracownika zastępuje stare (na przykład przy nowym telefonie).
W aplikacji lub na stronie widać wszystkie własne kursy (każdy kurs, który kasa tworzy dla tego dostawcy), z tymi samymi przyciskami co przy kursie: Trasa, Zadzwoń, kwota do pobrania z kalkulatorem reszty, Dostarczono i Jestem z powrotem w lokalu. Osobno można włączyć:
- Samodzielne branie zamówień: dostawca widzi dostawy, które jeszcze czekają na kurs, zaznacza, co zabiera, i stuka Zabierz. Kasa tworzy kurs (lub dodaje je do kursu, jeśli ten dostawca ma już kurs, który jeszcze nie wyruszył); standardowe drobne jadą razem z nim. Tego, co wziął już ktoś inny, nie da się już wybrać.
- Samodzielny wyjazd: Wyruszam w aplikacji działa tak samo jak w kasie (drobne z szuflady, klienci dostają powiadomienie).
- Mapa na żywo: w Kursy jest przycisk Mapa z lokalem, wszystkimi dostawcami, którzy są w pracy, i adresami, które trzeba jeszcze obsłużyć. Dostawca sam włącza i wyłącza W pracy. Aplikacja przekazuje lokalizację także przy wyłączonym ekranie (Android: powiadomienie na pasku, dopóki udostępnianie jest włączone); strona internetowa tylko wtedy, gdy jest otwarta. Bez tego ustawienia lokalizacja jest udostępniana tylko w trakcie kursu ze śledzeniem dostawy.
Aplikacja na Androida jest w Google Play i na stronie pobierania portalu (/download/). Wersja na iPhone'a jest gotowa, ale pojawi się dopiero, gdy będzie konto deweloperskie Apple; do tego czasu iPhone'y korzystają ze strony internetowej. Przy kursie, który dostawca wziął sam, widnieje wzięte przez dostawcę w aplikacji.
Kod: lib/bezorgersapp.ts, w portalu src/volgen.mjs, a aplikacja w repozytorium horecapos-bezorger.
W dzienniku zdarzeń widać, kto utworzył kurs, wysłał go, zgłosił dostarczenie i rozliczył, wraz z kwotami. Wyłączenie: brak przycisku Kursy; kursy i ustawienia zostają zachowane.
W portalu: /bezorger/<sleutel> i /volg/<code>. Kod: lib/bezorgers.ts, routes/bezorgers.ts, Bezorgers.tsx oraz w portalu src/volgen.mjs.
Powiadomienie o zbyt długim czasie realizacji
Zamówienie na wynos lub z dostawą gotowe później, niż obiecano: kasa to wykrywa, zgłasza i może od razu wysłać klientowi przeprosiny, opcjonalnie z bonem rabatowym. Włącz to w Ustawienia → Lokal → Dostawa → Powiadomienie o zbyt długim czasie realizacji (domyślnie wyłączone).
- Które zamówienia: na wynos i z dostawą z obiecanym czasem, z kasy (dostawa i przedziały czasowe), ze sklepu internetowego oraz z Thuisbezorgd.nl / Takeaway.com.
- Opóźnione: tyle minut (domyślnie 10) po obiecanym czasie nadal nie gotowe ani w drodze. Gotowe lub w drodze oznacza: wszystko gotowe na ekranie kuchennym, status gotowe lub w drodze w sklepie internetowym lub w Thuisbezorgd, wiadomość ✉ Gotowe / ✉ W drodze do klienta albo opłacone. Kasa sprawdza co minutę.
- Powiadomienie: przycisk Opóźnione na górnym pasku z liczbą (z dźwiękiem przy nowym), z obiecanym czasem każdego zamówienia i liczbą minut opóźnienia. Zamówienie znika samo, gdy jest gotowe lub w drodze, albo po kliknięciu Załatwione; poniżej są te z ostatnich 24 godzin, z godziną, o której były gotowe. Wszystko trafia do dziennika zdarzeń.
- Sklep internetowy: strona statusu gościa pokazuje, że trwa to dłużej, z nowym przewidywanym czasem.
- Przy Thuisbezorgd nie jest to możliwe (klient należy do Thuisbezorgd): tam tylko powiadomienie. Można użyć własnego tekstu;
{naam},{zaak},{code},{korting}i{geldig}są uzupełniane automatycznie. - Bon rabatowy (tylko z włączonymi Kodami rabatowymi): wraz z przeprosinami osobisty kod rabatowy na następne zamówienie (np.
SORRY-7K4Q2M), kwota lub procent, jednorazowy, ważny przez określoną liczbę dni, w kasie i w sklepie internetowym. Kody nie pojawiają się na liście Kodów rabatowych. Jeśli wysłanie się nie uda, kod wygasa. Przyciskiem w kasie tylko z uprawnieniem Udziel rabatu. - Wył.: powiadomienia i wydane kody pozostają zapisane (także w kopii zapasowej); ustawienie jest uwzględniane w eksporcie konfiguracji.
Kod: lib/telaat.ts, routes/telaat.ts, TeLaat.tsx i packages/shared/src/telaat.ts.
Przycisk Zamów: co robi i kiedy go potrzebujesz
Dotknięcie produktu i dotknięcie Zamów to dwa różne kroki:
- Dotknięcie produktu od razu dodaje go do rachunku (na liście po lewej) jako nowy. Widzisz go tylko ty: kuchnia i bar jeszcze nic o nim nie wiedzą. Nowa pozycja to szkic: możesz ją jeszcze usunąć albo zmienić ilość lub opcje, bez storna.
- Zamów wysyła wszystkie nowe pozycje naraz: bony trafiają do drukarek w kuchni i przy barze (oraz na ekran kuchenny), a pozycje mają potem status zamówione. Usunąć je można wtedy już tylko przez Storno (uprawnienie storno). Na przycisku widać, ile nowych pozycji czeka, np. Zamów (3); jeśli nie ma nowych pozycji, przycisk jest szary.
Dlaczego dwa kroki? Przy stoliku przyjmujesz całe zamówienie (napoje, przystawkę, danie główne), poprawiasz je, jeśli gość zmieni zdanie, i wysyłasz je naraz do kuchni, z jednym bonem na stanowisko zamiast bonu na każdy produkt. Dzięki temu kuchnia może zacząć na długo przed płatnością.
Co jeszcze dzieje się po dotknięciu Zamów:
- Dania: danie 1 od razu trafia do kuchni; dania 2, 3 i 4 idą jako CZEKA, a kuchnia zaczyna dopiero, gdy wywołasz to danie (zob. Dania).
- Rundy: każde Zamów to jedna runda; na tym opiera się ↻ Kolejna runda.
- Stan magazynu się zmniejsza, a dozowany nalewak zostaje odblokowany.
- All-you-can-eat: jeśli to za dużo, za wcześnie lub za późno dla danego pakietu, kasa najpierw pyta, czy mimo to zezwolić.
- Belgia (GKS 2.0): pozycje trafiają najpierw jako pro forma do czarnej skrzynki; jeśli to się nie uda, nic nie idzie do kuchni i pozostają nowe.
- Brak połączenia: zamówienie zostaje zapisane i trafia do kuchni, gdy tylko połączenie wróci. Drukarka wyłączona: zamówienie i tak przechodzi, bon trafia do kolejki wydruku (zob. Drukarka kuchenna wyłączona lub brak ekranu kuchennego).
Można też od razu rozliczyć. Jeśli dotkniesz Rozliczenie, gdy na rachunku są jeszcze nowe pozycje, kasa najpierw automatycznie je zamówi, aby kuchnia i bar zawsze dostały swój bon. Przy barze lub na wynos nie musisz więc najpierw dotykać Zamów: dotknij produktów i od razu Rozliczenie. Jeśli automatyczne zamówienie się nie uda (brak połączenia, reguła all-you-can-eat, czarna skrzynka), ekran rozliczenia pozostaje zamknięty i widzisz, dlaczego.
Wolisz, żeby bar nie dostawał bonu, gdy rozliczasz od razu? W Ustawienia → Lokal → Zamawianie i rozliczenie zaznacz Bezpośrednie rozliczenie bez bonu zamówienia. Wtedy do kuchni i baru trafia tylko to, co wysyłasz przyciskiem Zamów; to, co rozliczasz od razu, nie otrzymuje bonu zamówienia.
Duży lub mały przycisk Rozliczenie
Po zaznaczeniu Duży przycisk "Rozliczenie" na ekranie zamówienia tuż pod zamówionymi produktami jest duży przycisk Rozliczenie: szeroki, wysoki i z kwotą, żeby łatwo go trafić. Jeśli część rachunku jest już zapłacona, przycisk pokazuje kwotę do zapłaty. Mały przycisk na dole obok Zamów wtedy znika.
Z dużym przyciskiem również przyciski na ekranie rozliczenia są duże: Rozliczenie (przy Karcie, Karcie podarunkowej i innych metodach płatności), a przy Gotówce Odliczona gotówka i Rozliczenie są szerokie i wysokie, łatwe do trafienia, nawet brudnymi palcami (na przykład u rzeźnika). Metody płatności są nieco większe, a przyciski napiwku nieco mniejsze, aby wszystko mieściło się na ekranie.
Przy nowej instalacji pole jest odznaczone: wtedy mały przycisk na dole obok Zamów i ekran rozliczenia ze zwykłymi przyciskami. Wolisz duży? W Ustawienia → Lokal, tuż pod motywem jasnym/ciemnym, zaznacz Duży przycisk "Rozliczenie". Kasa, która była już w użyciu, zachowuje dotychczasowe ustawienie. Wybór dotyczy wszystkich kas i tabletów lokalu.
Oznaczanie produktu jako „wyprzedany”
Każdy może na ekranie zamówienia długo przytrzymać produkt (lub kliknąć go prawym przyciskiem myszy) i wybrać Wyprzedane. Produkt staje się wtedy szary i nie można go zamówić na żadnej kasie. W ten sam sposób przywracasz go przyciskiem Znów dostępne. Każda zmiana trafia do dziennika zdarzeń. Administrator nadal może to zrobić także w Ustawienia → Produkty. Również serwer kasy odrzuca produkt oznaczony jako wyprzedany („Cola” jest niedostępna), więc także z tabletu, który nie otrzymał jeszcze zmiany, lub zamówienia zapisane offline; taki tablet pokaże wtedy „Nie udało się wysłać”.
Ekran kuchenny (KDS)
Obok (a nie zamiast) drukarek bonów kuchennych kuchnia lub bar może korzystać z ekranu. Otwórz na tablecie/komputerze w kuchni http://<kassaserver>:3000/keuken, zaloguj się kodem PIN i wybierz stanowisko: to te same nazwy co drukarki (kuchnia, bar, ...), więc na ekranie jest dokładnie to, co trafiłoby na ten bon. „Wszystko” pokazuje wszystkie stanowiska.
- Jeden bon na zamówienie, najstarsze najpierw, ze stolikiem/na wynos, numerem i czasem oczekiwania (pomarańczowy po 10, czerwony po 20 minutach).
- Dania są pokazane osobno; danie, które nie zostało jeszcze wywołane, jest szare jako „CZEKA na wywołanie”. Storna są przekreślone.
- Dotknij pozycji, aby oznaczyć ją jako gotową, lub Gotowe dla całego bonu. Obsługa dostaje wtedy na górnym pasku „Kuchnia: Stolik 5 jest gotowy”. Dzięki Ustawienia → Lokal → Ekran kuchenny → Dźwięk dla obsługi (domyślnie wyłączone) kasa dodatkowo wydaje sygnał („ding-dong”, bez pliku dźwiękowego). Przeglądarka pozwala na dźwięk dopiero po pierwszym dotknięciu ekranu; włącz głośność tabletu.
- Przywróć pokazuje, co w ostatniej godzinie zgłoszono jako gotowe, więc przypadkowo odznaczone pozycje można przywrócić.
Ekran aktualizuje się od razu sam. Bony kuchenne nadal się drukują; kto nie korzysta z ekranu, niczego nie zauważy.
Ekran kuchenny: przekazywanie, kolejność i danie
Ustawienia → Drukarki → Ekran kuchenny. Każdą część włącza się osobno, domyślnie wyłączona; wyłączenie zachowuje wszystko.
- Przekazywanie między stanowiskami, na przykład zimne → ciepłe → wydawka. Dla każdego stanowiska ustawiasz stałe następne stanowisko; na bonie pojawia się wtedy przycisk → ciepłe (i zawsze Przekaż do…, aby wybrać inne stanowisko). Przechodzą tylko otwarte pozycje tego stanowiska. Stanowisko nie musi mieć drukarki: wpisz stanowiska takie jak wydawka w Stanowiska bez drukarki. Gotowe (i powiadomienie dla obsługi) pojawia się dopiero na ostatnim stanowisku. W widoku "Wszystko" przy przekazanej pozycji widać, gdzie teraz jest. Każdy krok widać przy pozycji i w dzienniku zdarzeń.
- Zmiana kolejności: przeciągaj bony (mysz) lub przesuwaj je za pomocą ◀ ▶ (ekran dotykowy). Kolejność obowiązuje dla stanowiska i dla wszystkich ekranów tego stanowiska; nowe bony trafiają na koniec.
- Następne danie z ekranu kuchennego: przy bonie z oczekującym daniem widnieje Poproś o danie 2. Obsługa dostaje wtedy "Kuchnia prosi o danie 2 dla Stolik 5" (z dźwiękiem) i wywołuje jak zawsze; na ekranie kuchennym widnieje "Danie 2 zamówione · n min", aż danie zostanie wywołane. Albo wybierz Wywołaj: wtedy ekran kuchenny sam wywołuje danie, z bonem roboczym "WYWOŁANIE DANIA 2", tak jak przycisk w kasie.
Drukarka kuchenna wyłączona lub brak ekranu kuchennego
Kasa zawsze działa dalej, także gdy drukarka w kuchni lub barze jest wyłączona (albo skończył się papier lub odłączył kabel), a także bez ekranu kuchennego:
- Zamawianie zawsze działa. Pozycje od razu mają status zamówione, rachunek się zgadza i można normalnie rozliczać. Drukarki są obsługiwane równocześnie, a każda dostaje najwyżej około 4 sekund: wyłączona drukarka nie każe długo czekać innym (ani obsłudze).
- Kolejka wydruku. Bon kuchenny, którego nie udało się wydrukować, trafia do kolejki wydruku. Serwer kasy próbuje go wydrukować ponownie co 30 sekund przez kwadrans; gdy tylko drukarka znów działa, bon wychodzi z nagłówkiem WYDRUKOWANO PÓŹNIEJ. Jeśli kolejny bon na tej drukarce się wydrukuje, oczekujące bony drukują się od razu po nim.
- Po kwadransie ponawianie zatrzymuje się samo; nadal można użyć Drukuj ponownie teraz.
- Ekran kuchenny. Jeśli zamówienie jest na ekranie kuchennym, kuchnia widzi je tam także przy wyłączonej drukarce. Kto nie używa ekranu kuchennego, nic nie traci: kasa nigdzie nie czeka na „Gotowe” z kuchni.
- Kolejka jest przechowywana tylko w pamięci serwera kasy (po restarcie jest pusta).
- Dotyczy to też paragonu: jeśli się nie wydrukuje, rozliczenie i tak zostało wykonane (kasa zgłasza „drukowanie nie powiodło się”), a kopię możesz wydrukować później w Paragony.
Dania (przystawka, danie główne ...)
Przyciski dań są widoczne tylko wtedy, gdy są potrzebne: gdy tylko na zamówieniu jest menu (produkt złożony) lub gdy coś jest już w daniu od 2 do 4. Przy zwykłych produktach, takich jak cola, nie widzisz ich i wszystko trafia od razu do kuchni. Nie trzeba nic ustawiać.
Pod listą zamówienia znajduje się Danie 1 2 3 4. Domyślnie włączone jest danie 1 i wszystko działa jak zawsze: „Zamów” wysyła wszystko od razu do kuchni, bez nagłówków dań na bonie kuchennym. Jeśli przed dotknięciem produktów wybierzesz danie 2 (lub wyższe), to:
- po „Zamów” trafiają one już do kuchni, pod nagłówkiem „-- Danie 2 · CZEKA na wywołanie --”, aby kuchnia mogła się przygotować;
- na liście zamówienia widnieje „Danie 2 · czeka” z przyciskiem Wywołaj;
- po wywołaniu kuchnia dostaje bon „ WYWOŁANIE DANIA 2 ” z tym, co trzeba teraz przygotować.
Danie 1 zawsze idzie od razu. Jeśli danie 2 zostało już wywołane, później dozamówiona pozycja w daniu 2 też idzie od razu.
Alergeny dla każdego produktu
Domyślnie wyłączone: wtedy alergeny nigdzie nie są widoczne. Włącz w Ustawienia → Lokal → Wprowadzaj i pokazuj alergeny dla produktów.
- Ustawienia → Produkty: przy każdym produkcie zaznacz 14 alergenów UE (gluten, skorupiaki, jaja, ryby, orzeszki ziemne, soja, mleko, orzechy, seler, gorczyca, sezam, siarczyny, łubin, mięczaki). Na liście produktów skróty widnieją za nazwą.
- Ekran zamówienia: na każdym przycisku produktu małe skróty (np.
Gl Me), a przycisk ⚠ Alergeny na pasku grup pokazuje pełne alergeny każdego produktu z wybranej grupy, z objaśnieniem skrótów. - Zmiany alergenów trafiają do dziennika zdarzeń (stare → nowe). Gdy ustawienie jest wyłączone, wcześniej wprowadzone alergeny pozostają zapisane.
All-you-can-eat
Domyślnie wyłączone. Włączenie w Ustawienia → Lokal → All-you-can-eat (tylko administrator). Tworzysz jeden lub więcej pakietów, np. Ryba, Mięso i Sushi, każdy z:
- nazwą (pojawia się na paragonie: „Ryba dorosły”, „Ryba dziecko”);
- ceną za dorosłego i za dziecko (z VAT) oraz stawką VAT (domyślnie NL
LAAG, BEB); - daniami, które należą do pakietu (€ 0): całe grupy produktów i/lub pojedyncze produkty (także z innych grup, np. frytki przy Rybie i Mięsie);
- limitem czasu w minutach (0 = brak);
- rundami: najwyżej tyle dań na osobę na rundę (0 = bez limitu) i co najmniej tyle minut między dwiema rundami (0 = brak);
- opłatą za marnowanie za sztukę (0 = brak).
Za pomocą ↑ ↓ ustalasz kolejność. Ma ona znaczenie, gdy danie należy do kilku pakietów: trafia wtedy do najwyższego pakietu wybranego przez grupę. Usuń usuwa pakiet dla nowych stolików; otwarte stoliki zachowują swoje pozycje cenowe (można tam jeszcze zmniejszyć liczbę osób, ale nie zwiększyć).
Przy stoliku:
- Na ekranie zamówień nad paragonem znajduje się + All-you-can-eat. Wybierz dla każdego pakietu liczbę dorosłych i dzieci; można mieszać (np. 2× Ryba i 2× Mięso). Cena trafia jako pozycje na rachunek; nie są one wysyłane do kuchni. Liczba gości grupy staje się łączną liczbą uczestników (jeśli kasa rejestruje gości).
- Pasek pokazuje dla każdego pakietu: liczbę osób, pozostały czas (czerwony, gdy czas minął), która to runda wraz z maksimum oraz ile zostało do następnej rundy. Dania należące do pakietu mają na przyciskach oznaczenie AYCE, a na rachunku etykietę AYCE za € 0. Wszystko, co nie należy do żadnego wybranego pakietu (napoje, desery ...), jest płatne jak zwykle.
- Zamawianie: każde „Zamów” z darmowymi daniami to runda, osobno dla każdego pakietu (tylko pakiety, z których są dania). Pozycje wybrane offline i wysłane później nie są blokowane.
- Zmień: zmiana liczby osób w każdym pakiecie. Zmniejszenie liczby osób liczy się jako storno (uprawnienie „storno”). Ustawienie pakietu na 0 (lub Zatrzymaj dla wszystkiego) jest możliwe, dopóki na rachunku nie ma jeszcze dań z tego pakietu.
- Dopłata (tylko gdy wybrany pakiet ma opłatę za marnowanie): wybierz liczbę (oraz pakiet, jeśli jest ich więcej); na rachunek trafia „Opłata za marnowanie × liczba”.
- Rozliczenie, dzielenie, rabaty i paragon działają jak zawsze: ceny pakietów, dopłata i napoje to zwykłe pozycje z własnym VAT.
- Jeśli administrator wyłączy all-you-can-eat, gdy grupy są w trakcie, nowo wybrane dania znów kosztują zwykłą cenę; to, co już jest na rachunku, pozostaje.
- W sklepie internetowym (opcjonalnie, domyślnie wyłączone): przy Także przy zamawianiu przy stoliku przez kod QR (sklep internetowy) gość, który zamawia przy stoliku z pakietem, widzi należące do niego dania jako W cenie za € 0, a na górze stan (osoby, runda, czas). Każde zamówienie to runda, z tymi samymi zasadami co Zamów; za dużo, za wcześnie lub za późno sklep od razu odrzuca. Napoje i inne dania gość płaci normalnie; wszystko trafia na rachunek stolika. Wyłączone = sklep liczy zwykłe ceny, jak dotychczas.
Karty podarunkowe
Dwa przełączniki w Ustawienia → Lokal → Karty podarunkowe:
- Karta podarunkowa jako forma płatności przy rozliczeniu: domyślnie wł., jak zawsze. Wył. = przycisku Karta podarunkowa nie ma przy rozliczeniu (ani przy zwrot pieniędzy przez przy zwrocie), a serwer kasy odrzuca płatność kartą podarunkową.
- Sprzedaż kart podarunkowych z saldem: domyślnie wył. Wł.:
- Na ekranie zamówienia jest przycisk Karta podarunkowa: wybierz kwotę (€ 10, 25, 50, 100 lub inna kwota) i pozwól kasie wygenerować kod albo zeskanuj kod z wydrukowanej wcześniej karty. Karta trafia jako pozycja na rachunek (kod VAT BON: bez obrotu, bez VAT, nie trafia do kuchni). Tam możesz też sprawdzić saldo dla klienta.
- Po rozliczeniu karta jest aktywna, a drukarka paragonów drukuje kartę podarunkową z kwotą, kodem i kodem QR.
- Realizacja: przy rozliczeniu wybierz Karta podarunkowa i zeskanuj lub wpisz kod (przycisk Saldo pokazuje saldo). Kwota jest odejmowana od salda. Jeśli saldo jest niższe niż rachunek, całe saldo zostaje wykorzystane jako płatność częściowa, a resztę płacisz kartą lub gotówką. Saldo można wykorzystywać w częściach.
- Puste pole kodu = karta podarunkowa bez kodu, jak dotychczas (np. stary papierowy bon).
- Raport → Karty podarunkowe (uprawnienie Zarządzanie kartami podarunkowymi, domyślnie kierownik i administrator): wyszukiwanie po kodzie, otwarte saldo, historia każdej karty, blokowanie (zgubiona/skradziona) i korekta salda z podaniem powodu. Trafia to do dziennika zdarzeń.
- Raporty: sprzedane karty podarunkowe nie liczą się do obrotu i są wykazywane osobno (Sprzedane karty podarunkowe); otrzymane pieniądze widać jednak przy formach płatności. To, co zapłacono kartą podarunkową, jest zwykłym obrotem (z VAT) przy formie płatności Karta podarunkowa.
- Księgowość: sprzedane karty księgowane są po stronie Ma, a zrealizowane po stronie Winien na koncie Karty podarunkowe (zobowiązania wobec klientów).
- Sprzedaną kartę podarunkową można zwrócić przez Paragony → Zwrot, dopóki nie została użyta (saldo = wartość). Po zwrocie karta jest unieważniona (saldo 0, zablokowana; widnieje w historii karty). Jeśli była już (częściowo) użyta, ustaw saldo na 0 w Raport → Karty podarunkowe i zwróć resztę osobno. Rabat na kartę podarunkową nie jest możliwy.
Doładowywane saldo (opcjonalnie)
Dla klubów, stołówek sportowych, domów młodzieży i wydarzeń: karta podarunkowa z saldem staje się kartą doładowywaną. Włączasz w Ustawienia → Lokal → Doładowywane saldo, pod kartami podarunkowymi (domyślnie wył.; działa tylko, gdy włączone jest Sprzedawaj karty podarunkowe z saldem).
- Karta lub opaska: sprzedaj kartę podarunkową z opcją Karta z nadrukiem i zeskanuj kartę (czytnik NFC/RFID działający jak klawiatura albo kod kreskowy). Numer karty jest wtedy kodem; gość płaci nią tak jak kartą podarunkową.
- Doładowanie: ekran zamówień → Karta podarunkowa → Doładuj saldo: zeskanuj kartę podarunkową lub kartę i wpisz kwotę. Trafia ona jako pozycja na rachunek (kod VAT BON: bez przychodu, bez VAT, tak jak sprzedana karta podarunkowa), a po rozliczeniu jest na saldzie. W historii karty widnieje Doładowano.
- Maksymalne saldo na kartę podarunkową lub kartę (domyślnie € 500, można ustawić do € 5.000).
- Wypłać pozostałe saldo (pole wyboru, domyślnie wył.; uprawnienie Zarządzanie szufladą kasową): po Sprawdź saldo pojawia się Wypłać pozostałe saldo. Saldo spada do € 0, a kwota widnieje jako wypłata z szuflady w raporcie X i Z (Zwrot salda …).
- Doładowanie można cofnąć przez Paragony → Zwrot, dopóki saldo wynosi jeszcze co najmniej tę kwotę; karta podarunkowa lub karta pozostaje ważna.
- Doładowanie w kiosku (opcjonalnie): zobacz Kiosk samoobsługowy.
Bony żywieniowe
Tylko dla lokali w Belgii, domyślnie wyłączone: Ustawienia → Lokal → Rozliczenie → Bony żywieniowe. Bony żywieniowe to świadczenie pracownicze: pracodawca zasila nimi kartę pracownika (Edenred, Monizze lub Pluxee). Gość płaci nimi na zwykłym terminalu płatniczym; połączenie z wydawcami nie jest potrzebne.
- Wł.: przy rozliczeniu jest przycisk Bon żywieniowy. Wybierz wydawcę (tylko wydawców akceptowanych przez lokal) i poproś gościa, aby przyłożył kartę do terminala płatniczego, tak jak przy płatności kartą. Bez integracji z terminalem: gość płaci na samym terminalu płatniczym, a ty dotykasz Rozliczenie.
- Bez napiwku i bez reszty przy bonach żywieniowych. Jeśli saldo jest za niskie, gość płaci resztę w inny sposób (rachunek pozostaje otwarty, dopóki wszystko nie zostanie zapłacone).
- Tylko dla wybranych grup produktów (opcjonalnie, np. jedzenie, ale nie alkohol): wtedy bonami żywieniowymi można zapłacić maksymalnie kwotę tych produktów na rachunku. Ekran rozliczenia pokazuje ile; resztę gość płaci w inny sposób.
- Na paragonie: Bon żywieniowy Pluxee (z nazwą wydawcy na końcu).
- Raport Z i raport X: osobny wiersz dla każdego wydawcy (Bon żywieniowy Edenred, … Monizze, … Pluxee).
- Księgowość: osobne konto księgowe dla każdego wydawcy (Bony żywieniowe Pluxee (należności) itd., domyślnie 416100, 416200 i 416300), ponieważ pieniądze przychodzą od wydawcy, a nie z banku terminala płatniczego.
- Wymagane: umowa z każdym wydawcą, którego bony akceptujesz, oraz terminal płatniczy, który akceptuje te karty (zapytaj o to dostawcę terminala płatniczego).
Obca waluta
Płatność gotówką w innej walucie, np. od turystów z Wielkiej Brytanii lub USA albo w regionie przygranicznym we frankach szwajcarskich. Domyślnie wył.: Ustawienia → Lokal → Rozliczenie → Obca waluta. Dodaj waluty (CHF, CZK, DKK, GBP, HUF, NOK, PLN, SEK, TRY, USD) z kursem dla każdej waluty: ile euro liczysz za 1 jednostkę (np. 1 GBP = € 1,15).
- Wpisany ręcznie: stały kurs; zmień go sam, gdy się zmieni.
- Na żywo (EBC): dzienny kurs Europejskiego Banku Centralnego (kursy referencyjne, w każdy dzień roboczy około 16:00; bezpłatnie, bez konta). Z narzutem w procentach (0-20) kurs jest o tyle niższy, więc lokal nie płaci sam za wymianę. Kasa sama pobiera kursy, gdy są starsze niż 6 godzin; Aktualizuj teraz pobiera je od razu. Bez internetu zostaje ostatni kurs.
- Wł.: przy rozliczeniu jest przycisk Obca waluta. Wybierz walutę; kasa pokazuje, ile to wynosi w tej walucie. Wpisz, ile daje gość: kasa przelicza kwotę i wydaje resztę w euro. Jeśli gość nie chce reszty, zaznacz Reszta jako napiwek: reszta trafia na paragon jako napiwek, w Belgii w tej walucie (GKS 2.0, UC296).
- Jeśli gość daje mniej niż całą kwotę, jest to część; pozostałą kwotę płaci w inny sposób.
- Na paragonie: waluta, kwota i kurs oraz reszta w euro.
- Raport X i Z: osobny wiersz dla każdej waluty (Obca waluta GBP, w euro), a przy szufladzie kasowej to, co leży w szufladzie w tej walucie. Reszta w euro jest odejmowana od oczekiwanej kwoty w szufladzie; same waluty liczysz osobno.
- Księgowość: liczy się jako gotówka (kasa), w euro.
Dodatkowe przyciski przy zamawianiu i rozliczeniu
Przyciski do funkcji, których nie potrzebuje każdy lokal. Domyślnie wszystko jest wyłączone; każdy przycisk włączasz w Ustawienia → Lokal → Zamawianie i rozliczenie (uprawnienie Ustawienia lokalu, płatności i drukarek). Wyłączone = przycisku nie ma nigdzie w kasie, a serwer kasy odrzuca operację. W Holandii wszystko działa bez czarnej skrzynki; w Belgii przycisk działa dopiero wtedy, gdy ta funkcja została przetestowana z czarną skrzynką (przy przycisku jest to zaznaczone, dopóki tak nie jest).
Przy otwieraniu stolika:
- Rejestruj liczbę gości: pytanie "Ile osób?" przy wolnym stoliku, goście na planie sali i na ekranie zamówień oraz goście w raportach. Zobacz Liczba gości.
Przy zamawianiu (ekran zamówienia, dla tego, co stukniesz potem):
- Sumuj takie same produkty (bez przycisku, domyślnie włączone): jeśli ponownie dotkniesz tego samego produktu (te same opcje, jeszcze niezamówiony), ilość wzrośnie zamiast dodania nowej pozycji: 4 Cola w jednej pozycji z ceną razy 4. Przyciskiem − odejmiesz jedną sztukę, także jeśli już została zamówiona (storno jednej). Z uwagą, miejscem lub na wynos pozostaje to osobną pozycją; to, co już zostało zamówione, pozostaje osobną pozycją (nowa runda).
- − i + (przed ceną w każdym wierszu): − odejmuje jedną sztukę, + dodaje jedną (ten sam produkt, opcje i uwaga; gdy Sumuj takie same produkty jest wyłączone, nowy wiersz). Jeszcze niezamówione i na 0: wiersz znika. Już zamówione: jedna mniej to storno, ten wiersz zostaje przekreślony (dla kuchni i raportów); jedna więcej staje się nowym wierszem, który trzeba jeszcze zamówić. Dotknięcie samej ceny niczego już nie usuwa. Przy zestawie tylko −.
- Na wynos (tylko na miejscu): gość zabiera ten produkt ze sobą, np. butelkę wody lub deser. Ta pozycja dostaje stawkę VAT na wynos (w Belgii etykieta C), reszta rachunku stawkę VAT na miejscu. Na paragonie przy pozycji widnieje wynos.
- Miejsce (przy stoliku): stukaj dalej, aby wybrać miejsce 1, 2, 3 ...; pozycje dostają ten numer miejsca (także na bonie kuchennym). W Belgii każda pozycja trafia do czarnej skrzynki z centrum kosztów miejsca (CHAIR, UC4123). Jeszcze raz po miejscu 12 = znów bez miejsca.
- Przyjmij zwrot: następny produkt zostaje dodany z -1, np. pusta butelka lub kubek (kaucja). Działa tylko dla produktów z opcją Zwrotny (kaucja) (Ustawienia → Produkty). Jeśli cały rachunek jest ujemny (tylko zwrot kaucji, bez sprzedaży), Rozliczenie staje się zwrotem pieniędzy: gotówką lub kartą (zwrot na samym terminalu). W Belgii jako zwrot (REFUND, UC4108 i UC4114).
- Zrealizuj SPV: gość płaci za produkt lub menu bonem single purpose voucher (bon właśnie na ten produkt, np. "1 menu all-in"). Stuknij Zrealizuj SPV, a potem produkt na paragonie: zostaje dodany z -1 (ta sama cena i VAT, w przypadku menu ze składnikami), z dopiskiem SPV. Nie trafia do kuchni; można go normalnie usunąć. Produkt-bon sprzedajesz z góry jak zwykły produkt; w Ustawienia → Produkty zaznacz SPV (bon). W Belgii pozycja trafia przy sprzedaży do czarnej skrzynki jako VOUCHER (UC271).
- Rozlicz zaliczkę: zobacz niżej.
- Cena otwarta (bez przycisku, dla produktu): przy produkcie z opcją Cena otwarta kasa pyta o cenę, np. danie dnia lub zaliczkę.
Przy rozliczeniu:
- Bezpośrednie rozliczenie bez bonu zamówienia (to nie przycisk): domyślnie Rozliczenie najpierw zamawia to, co nie zostało jeszcze zamówione, aby kuchnia i bar zawsze dostały swój bon (zob. Przycisk Zamów). Włączone: to, co rozliczasz od razu, bez wcześniejszego dotknięcia Zamów, nie otrzymuje bonu zamówienia, np. przy barze, gdzie bierzesz to sam. To, co już zostało zamówione, się nie zmienia.
- Rozlicz osobno (przy stoliku, w Podziel rachunek): wybierz, co jeden gość płaci teraz, także część pozycji (½ dla pół butelki). Staje się to osobną częścią, którą od razu rozliczasz; reszta zostaje na rachunku, bez wcześniejszego dzielenia rachunku ani przenoszenia do innej grupy. Rabat procentowy na cały paragon jest uwzględniany proporcjonalnie. Wstecz bez płacenia = wszystko z powrotem na rachunku. W Belgii sprzedaż zostaje w miejscu stolika, bez zmiany stolika (UC4103bis, UC4104).
- Gość wyszedł bez płacenia (uprawnienie Zamknij bez płatności, domyślnie tylko kierownik i administrator): rachunek zostaje zamknięty jako sprzedaż bez płatności, z powodem w dzienniku zdarzeń. Na raporcie X i Z oraz w raporcie dziennym widnieje jako Niezapłacone (gość wyszedł); w zapisie księgowym na nieściągalne (domyślnie 4985 / 643000). W Belgii sprzedaż bez płatności (UC4109).
Później (Paragony):
- Popraw cenę (uprawnienie Poprawianie ceny paragonu, domyślnie tylko kierownik i administrator): cena rozliczonego paragonu była błędna, np. 50% rabatu zamiast 5%. Kasa tworzy nowy paragon bez stolika z pozycjami starego paragonu cofniętymi (ujemnie, po cenie wtedy zapłaconej) i tymi samymi produktami ponownie po zwykłej cenie. Nadaj tam właściwy rabat i rozlicz różnicę (lub zwróć pieniądze, jeśli nowa cena jest niższa). Stary paragon pozostaje bez zmian; raz na paragon i nie wtedy, gdy coś już zwrócono. W Belgii stare pozycje idą jako CORRECTION (UC4116).
Kod: apps/pos-server/src/lib/kassaopties.ts, routes/kassaopties.ts; ekran KassaOpties.tsx. Dziennik zdarzeń: Zmieniono ustawienie, Zrealizowano SPV, Popraw paragon, Niezapłacone.
Rozlicz zaliczkę
Zaliczkę (przedpłatę, np. na przyjęcie lub rezerwację) sprzedajesz jako zwykły produkt z włączoną opcją Zaliczka (Ustawienia → Produkty; zawsze ma cenę otwartą). Utwórz po jednym na każdą stawkę VAT, jeśli zaliczka ma być według stawki (np. Zaliczka jedzenie i Zaliczka napoje), albo jeden produkt, jeśli jest częścią oferty. Gość płaci zaliczkę z góry i dostaje paragon.
Włączanie: Ustawienia → Lokal → Zamawianie i rozliczenie → Rozlicz zaliczkę (domyślnie wyłączone). Przy końcowym rozliczeniu stuknij na ekranie zamówienia Rozlicz zaliczkę i wpisz numer paragonu zaliczki. Kasa dodaje pozycje zaliczki z tego paragonu do rachunku z ujemną ilością (ten sam produkt, cena i VAT). Tego, co już rozliczono, nie można rozliczyć ponownie. Jeśli zaliczka jest wyższa niż rachunek, gość dostaje różnicę z powrotem (zwrot). W Belgii rozliczone pozycje trafiają do czarnej skrzynki jako zwrot (REFUND) (UC4110, UC4111, UC4113). Dziennik zdarzeń: Rozliczono zaliczkę.
Paragon e-mailem
Domyślnie wył. Włączenie w Ustawienia → Lokal → Paragon także e-mailem.
SMTP_HOST=smtp.voorbeeld.nl
SMTP_PORT=587
SMTP_GEBRUIKER=kassa@voorbeeld.nl
SMTP_WACHTWOORD=...
SMTP_AFZENDER=bon@voorbeeld.nl
Po uzupełnieniu uruchom kasę ponownie. Potem przy Rozliczenie pojawi się pole Wyślij też paragon e-mailem (opcjonalnie): puste = tylko wydruk jak zawsze; wpisany adres e-mail = ten sam paragon (ze specyfikacją VAT i wierszami fiskalnymi) trafia też e-mailem do gościa, z nazwą lokalu jako nadawcą.
- Adres e-mail nie jest zapisywany; w dzienniku zdarzeń widnieje tylko "paragon N wysłany do a***@domein.nl" i czy się udało.
- Jeśli wysyłka się nie powiedzie (np. błędne dane logowania), paragon i tak jest rozliczony i wydrukowany; komunikat mówi, co poszło nie tak.
- Nie przy płatności częściowej (podział rachunku): paragon powstaje przy ostatniej płatności, więc tam wpisujesz adres.
- Wysyłka później: w Paragony przy paragonie jest przycisk Wyślij e-mailem (uprawnienie Drukowanie kopii paragonu). Wysyła paragon z oznaczeniem KOPIA, tak jak wydrukowaną kopię (w Belgii rejestrowany jako kopia).
- Nie są potrzebne żadne dodatkowe pakiety: kasa sama komunikuje się z serwerem poczty (STARTTLS na 587, TLS na 465).
Rezerwacje
Włączenie w Ustawienia → Lokal → Rezerwacje (domyślnie wyłączone). Tam ustawiasz też, na ile minut wcześniej zarezerwowany stolik pojawia się na planie sali (domyślnie 60) oraz domyślny czas trwania rezerwacji (domyślnie 120 minut).
- Przycisk Rezerwacje na górnym pasku: przegląd dnia (◀ ▶) z liczbą rezerwacji, osób i nieobecności. + Nowa rezerwacja: nazwisko, telefon, e-mail, liczba osób, data, godzina, czas trwania, stolik (można później) i uwaga. Rezerwacje wprowadza personel; rezerwacji online (jeszcze) nie ma.
- Jeśli na tym samym stoliku w tym przedziale czasu jest już rezerwacja, kasa to zgłasza; można wybrać „Zapisz mimo to”.
- Potwierdzenie e-mailem (zaznaczenie lub później „Wyślij e-mailem”), jeśli podano adres e-mail i jest serwer poczty (
SMTP_HOST, zob. Paragon e-mailem). - Na planie sali zarezerwowany wolny stolik jest fioletowy z napisem „R 19:30 Jansen (4)”. Po dotknięciu: „Jansen jest” otwiera stolik dla 4 osób z „Jansen” jako nazwą grupy; „Inni goście” otwiera go zwyczajnie.
- W przeglądzie: Przybył (otwiera stolik; bez stolika najpierw go wybierasz), Zmień, Nieobecność, Anuluj i Przywróć. Wszystko trafia do dziennika zdarzeń.
- Rezerwacje z platform online: zobacz Platformy rezerwacyjne poniżej.
Integracja kasy z TheFork: stolik otwarty przy przybyciu, rachunek z powrotem
Dzięki POS API TheFork kasa współpracuje z TheFork Manager (domyślnie wyłączone), oprócz pobierania rezerwacji opisanego wyżej. Włączasz w Ustawienia → Platformy rezerwacyjne → Integracja kasy z TheFork; działa przez portal zarządzania.
- Gdy w TheFork Manager ustawisz gościa na Przybył lub Przy stoliku, w kasie otwiera się stolik o tej samej nazwie, z liczbą gości i uwagą: imię, alergie i dieta, przedpłata, oferta/rabat i punkty lojalnościowe (Yums). Jeśli na tym stoliku jest już otwarte zamówienie, zostaje ono połączone. Brak stolika o tej nazwie: komunikat, a stolik wybierasz w Platformy.
- Po rozliczeniu rachunek trafia do TheFork (suma i pozycje z nazwą, grupą produktów, ilością i kwotą); TheFork ustawia wtedy rezerwację na Wyszedł. Przy dzielonym rozliczeniu jeden rachunek z sumą. Jeśli się nie uda, kasa próbuje ponownie co kwadrans (przez dwa dni) albo przyciskiem Wyślij ponownie w Platformach.
- Parowanie: kasa pokazuje kod parowania; wpisz go w TheFork Manager (Integracje → kasa). ID restauracji TheFork (Customer-id) wpisuje administrator albo przychodzi ono automatycznie z pierwszym zamówieniem.
- Pola wyboru: otwieraj stolik automatycznie, imię, alergie i przedpłata jako uwaga, rachunek do TheFork.
- Warunek: Pin Voordeel ma klucz API TheFork (tylko dla partnerów) i zarejestrował tam kasę jako POS (przycisk w portalu zarządzania); TheFork uruchamia integrację po sesji testowej.
Dokumentacja TheFork: https://docs.thefork.io/POS-API/introduction
Lista oczekujących dla gości bez rezerwacji
Dla gości bez rezerwacji, którzy czekają na stolik. Włącz w Ustawienia → Lokal → Lista oczekujących (bez rezerwacji) (domyślnie wyłączone). Widoczne tylko, gdy SMS przez CM.com jest skonfigurowany; w przeciwnym razie listy oczekujących nie ma nigdzie w kasie (nawet w ustawieniach). Działa niezależnie od rezerwacji: także gdy są wyłączone. Tam jest też treść SMS-a (puste = "Hallo {naam}, uw tafel bij {zaak} is klaar. Wilt u zich melden bij de bediening?"; {naam}, {zaak} i {personen} zostaną uzupełnione).
- Przycisk Lista oczekujących na górnym pasku, z liczbą czekających (pomarańczowy, gdy ktoś czeka). + Na listę oczekujących: imię, telefon (do SMS-a), liczba osób, podany czas oczekiwania i życzenie (taras, krzesełko dla dziecka).
- Lista jest w kolejności zgłoszeń, z czasem oczekiwania każdej osoby (na czerwono, gdy trwa dłużej niż podano), a u góry liczba czekających, osób i średni czas oczekiwania z dzisiaj.
- Jeśli SMS się nie uda, widać przyczynę. Można wysłać SMS ponownie.
- Posadź: wybierz stolik; kasa otwiera go z liczbą gości (jeśli kasa rejestruje gości) i nazwiskiem jako nazwą grupy (tak jak przy przybywającej rezerwacji).
- Wyszedł (wyszedł lub zrezygnował) i Przywróć. Pod listą widać, kto dziś został posadzony lub wyszedł, i jak długo czekał.
- Prywatność: numery telefonów są usuwane po jednym dniu; kto po 12 godzinach jest jeszcze na liście, znika z niej automatycznie. Dodanie, wezwanie (tylko z ostatnimi 3 cyframi numeru) i posadzenie są zapisywane w dzienniku.
- Dlaczego nie w Rezerwacjach? Rezerwacja jest na później (data, godzina, stolik z góry); lista oczekujących jest na teraz (kolejność, czas oczekiwania, SMS, gdy stolik jest wolny). Dlatego osobny przełącznik i przycisk, z tym samym "otwórz stolik" co przy rezerwacji.
- Online na listę oczekujących (opcjonalnie, domyślnie wyłączone; tylko ze sklepem internetowym): przy Goście mogą też sami zapisać się przez sklep internetowy w sklepie jest Lista oczekujących (i jest do tego kod QR przy drzwiach, w zarządzaniu sklepem w Stoliki i QR). Gość podaje imię, telefon, liczbę osób i życzenie i na bieżąco widzi swoje miejsce. W kasie jest na liście z oznaczeniem online; wywoływanie, sadzanie i wyszedł działają jak zawsze, a gość widzi to też w telefonie (tam może też zrezygnować).
Karta lojalnościowa / punkty
Włączenie w Ustawienia → Lokal → Karta lojalnościowa / punkty (domyślnie wyłączone, wtedy nigdzie nic tego nie widać). Tam ustawiasz też: punkty za euro (0 = tylko karty pieczątek), po ilu punktach przysługuje nagroda i ile euro rabatu wynosi ta nagroda.
- Przy kasie nad paragonem widnieje „+ Karta lojalnościowa”: wyszukaj klienta po nazwisku lub numerze telefonu albo utwórz nowego klienta (nazwisko, opcjonalnie telefon i e-mail). Potem nazwisko z saldem punktów jest widoczne na paragonie.
- Wymiana: przy wystarczającej liczbie punktów „Wymień 100 punktów: € 5 rabatu”; przy pełnej karcie pieczątek „Darmowa kawa” (ta kawa musi być na paragonie). Powstaje pozycja rabatowa; każdy może ją z powrotem usunąć.
- Punkty i pieczątki są dodawane i odejmowane dopiero przy rozliczeniu: punkty od kwoty po rabacie (bez sprzedanych kart podarunkowych), pieczątki za każdą sztukę produktu z kartą pieczątek (darmowy produkt się nie liczy).
- Na paragonie: zebrane, wymienione, saldo i stan kart pieczątek.
- Raport → Klienci (uprawnienie Zarządzanie kartą lojalnościową): wyszukiwanie klientów, zmiana danych, korekta punktów (z powodem), historia i usuwanie (RODO: nazwisko, telefon i e-mail są usuwane; historia pozostaje anonimowa). Na dole karty pieczątek dla produktów (np. 10 kawy = 1 gratis).
- Zwrot nie cofa automatycznie zebranych punktów; w razie potrzeby skoryguj je w Raport → Klienci.
- Karta lojalnościowa z numerem (opcjonalnie): w Raport → Klienci → (klient) wpisz numer karty (lub zeskanuj kartę w tym polu). Ze skanerem kodów kreskowych zeskanowanie tej karty wiąże klienta z paragonem, przy kasie i w kiosku. Wyszukiwać po numerze karty możesz też przez + Karta lojalnościowa.
Profil gościa: VIP, wymagania dietetyczne i preferencje (opcjonalnie)
Włączasz w Ustawienia → Lokal → Profil gościa, pod kartą lojalnościową (domyślnie wyłączone; działa tylko przy włączonej karcie lojalnościowej). Następnie:
- Na ekranie zamówień pod przypisanym klientem jest "+ Profil gościa": zaznacz VIP, wybierz wymagania dietetyczne (wegetariańska, wegańska, peskatariańska, halal, koszerna) i alergie (14 alergenów) oraz wpisz preferencje (np. "stały stolik przy oknie", maksymalnie 300 znaków). Potem widać je przy kliencie na ekranie zamówień, alergie na czerwono. Można je też zmienić w Raport → Klienci → (klient) → Profil gościa.
- Gdy dotkniesz produktu z alergenem gościa (zob. Alergeny dla każdego produktu), kasa najpierw zapyta, czy mimo to go dodać. Liczy się tylko to, co wpisano przy produkcie; w razie wątpliwości zawsze pytaj kuchnię.
- VIP otrzymuje ★ na planie sali: przy otwartym rachunku i przy wyświetlanej rezerwacji tego klienta. Gdy przychodzą goście z rezerwacji, kasa przypisuje klienta z rezerwacji do rachunku.
- Wymagania dietetyczne i alergie (oraz VIP) pojawiają się na bonie kuchennym dla kuchni i baru:
GAST: VIP · Vegetarisch · allergie: Noten. - Wymagania dietetyczne i alergie to dane o zdrowiu: wpisuj je tylko za zgodą gościa. W dzienniku zdarzeń zapisuje się tylko to, że profil został zmieniony, a nie same wymagania. Usunięcie klienta usuwa też profil gościa.
Ulubione / szybkie przyciski
Domyślnie wył. Ustawienia → Lokal → Ulubione / szybkie przyciski:
- Najczęściej sprzedawane: na początku paska grup przycisk ★ Ulubione z 12 produktami najczęściej sprzedawanymi w ciągu ostatnich 14 dni (aktualizowane automatycznie). Ekran zamówienia otwiera się na ulubionych.
- Wybór własny: na ekranie zamówienia przytrzymaj produkt (lub kliknij prawym przyciskiem) i wybierz ★ Ulubiony (szybki przycisk); ponownie = usunięcie. Uprawnienie Zarządzanie produktami. Wszystkie kasy widzą to od razu.
- Nabijanie, opcje, menu, happy hour i „brak” działają w ulubionych dokładnie tak jak w zwykłych grupach.
Kolejna runda
Na ekranie zamówienia jest przycisk ↻ Kolejna runda (gdy tylko coś jest na rachunku, nawet jeśli nie zostało jeszcze zamówione). Jedno dotknięcie dodaje ostatnią rundę (wszystko, co poszło jednym „Zamów”, albo to, co właśnie nabiłeś) jeszcze raz jako nowe pozycje; potem po prostu Zamów. Obowiązują aktualne ceny (także happy hour).
- Długie przytrzymanie (lub prawy przycisk myszy): wybierz sam. Za pomocą ◀ ▶ przechodzisz do wcześniejszych rund, każdy produkt możesz włączyć/wyłączyć (np. odznaczyć jedzenie) i zmienić ilość za pomocą − / +. Opcje i uwagi są przenoszone.
- Wyprzedane produkty i menu nie są przenoszone (menu nabijasz osobno). Działa też bez połączenia.
- Pozycje są dodawane tak, jak widnieją na rachunku: przy włączonej opcji Sumuj takie same produkty jedna pozycja na produkt (2 Cola), przy wyłączonej każda pozycja osobno (2 razy 1 Cola).
Czas przy stoliku na planie sali
Na każdym zajętym stoliku widnieje ⏱ 45m · 12m: jak długo stolik jest zajęty i ile czasu minęło od ostatniego nabicia (dotknij i przytrzymaj stolik lub najedź na niego myszą, aby zobaczyć dokładne godziny). Jeśli przez jakiś czas nic nie zamówiono, stolik dostaje pomarańczową ramkę: warto podejść. Liczbę minut ustawiasz w Ustawienia → Lokal → Czas przy stoliku (domyślnie 20, 0 = bez pomarańczowej ramki). Jeśli jeszcze nic nie nabito, czas liczy się od otwarcia stolika.
Jeśli przy jednym stoliku siedzi kilka grup (z własnymi rachunkami), dla każdej grupy jest osobny wiersz, np. G1 ⏱ 50m · 12m i Jansen ⏱ 10m (nazwa grupy, w przeciwnym razie numer grupy). Grupa, która zbyt długo nic nie zamawia, dostaje pomarańczową etykietę, a stolik pomarańczową ramkę.
Przenoszenie całego stolika
Na ekranie zamówień jest Przenieś stolik. Wybierz salę (np. Taras) i stolik: wszystkie grupy ze stolika przechodzą razem, każda z własnym rachunkiem. Jeśli wybierzesz zajęty stolik, stoliki zostaną połączone (grupy zostaną dołączone). Jeśli chcesz przenieść tylko część, użyj jak dotąd Podziel / przenieś. Jeśli wszystko ma być na jednym rachunku, użyj Połącz.
Praca offline (tablet bez Wi-Fi)
Jeśli połączenie między tabletem a serwerem kasy zostanie przerwane (Wi-Fi na tarasie, serwer chwilowo wyłączony), pojawia się żółty pasek, a tablet pracuje dalej z ostatnio zapisanymi stolikami, produktami i otwartymi zamówieniami:
- otwieranie stolików, nabijanie produktów i Zamów są zapisywane na tablecie (także po restarcie) i widoczne na liście zamówień z przerywaną ramką („jeszcze niewysłane”);
- gdy tylko połączenie wróci, wszystko trafia po kolei do serwera i dopiero wtedy bon kuchenny idzie do kuchni. Każdy pakiet ma klucz, więc nic nie dociera podwójnie. Jeśli ktoś inny w międzyczasie otworzył stolik, produkty trafiają do tego zamówienia;
- rozliczenie, rabat, podział itp. są możliwe tylko z połączeniem; „Rozliczenie” czeka, aż wszystko z tego stolika zostanie wysłane.
Liczba osób
Opcjonalne i domyślnie wyłączone: Ustawienia → Lokal → Zamawianie i płatność → Rejestruj liczbę gości. Wyłączone = jak najmniej dotknięć: wolny stolik otwiera się jednym dotknięciem, nigdzie nie widać gości, a raport, pulpit i podsumowanie dnia nie pokazują gości ani wydatków na gościa.
Włączone: gdy dotkniesz wolnego stolika, kasa pyta, ile jest osób (duże przyciski 1-8 lub wpisanie; "Pomiń" = 1). Na planie sali przy zajętym stoliku widać "3/4 os." (osoby/miejsca, na żółto, jeśli siedzi więcej osób niż jest miejsc). Na ekranie zamówień zmieniasz to przyciskiem "3 os." na pasku grup; przy kilku grupach stolik sumuje wszystkie grupy.
Bez liczby gości wszystko nadal działa: Podziel po równo przy płatności zaczyna od 2, all-you-can-eat sam pyta o liczbę dorosłych i dzieci, a rezerwacje i lista oczekujących zachowują własną liczbę osób (stolik otwiera się wtedy bez gości).
Rejestr HACCP
Każdy lokal gastronomiczny musi monitorować i dokumentować bezpieczeństwo żywności: w Holandii zgodnie z Hygiënecode voor de Horeca (kodeks higieny dla gastronomii, kontrola NVWA), w Belgii zgodnie z autokontrolą FAVV (przewodnik G-023). Włącz Rejestr HACCP w Ustawienia → Przepisy prawne (domyślnie wyłączony).
- Punkty pomiarowe (administrator): np. chłodnia, zamrażarka, utrzymywanie na ciepło, temperatura wewnętrzna po obróbce cieplnej, schładzanie i przyjęcie towaru, z minimum i/lub maksimum w °C oraz częstotliwością (codziennie, dwa razy dziennie, co tydzień lub przy użyciu). Dodaj listę standardową tworzy punkt wyjścia (chłodzenie do 7 °C, w Belgii do 4 °C; zamrażarka do -18 °C; utrzymywanie na ciepło od 60 °C; obróbka cieplna od 75 °C).
- Sprzątanie i kontrola: zadania dzienne, tygodniowe (ewentualnie w stały dzień) lub miesięczne, z pomieszczeniem i instrukcją, np. dezynfekcja desek do krojenia, filtry tłuszczu, kontrola szkodników, sprawdzenie termometru.
- Rejestrowanie (każdy zalogowany): przycisk HACCP na górnym pasku z liczbą pozycji otwartych na dziś. Wpisz temperaturę lub odhacz zadanie (Zrobione lub Nie udało się). Jeśli temperatura jest poza limitem, wymagane jest działanie korygujące (np. "zamknięto drzwi, wyrzucono produkt"). Wpisów nie można zmieniać; błąd poprawiasz nowym wpisem.
- Zestawienie (uprawnienie Obrót za okres): dla danego okresu wszystkie wpisy, liczba odchyleń i pominięte wpisy na każdy dzień; jako CSV (Excel) lub do wydruku / zapisu jako PDF na potrzeby kontroli.
System nalewania i przepływomierze
Każde nalanie zgłoszone przez komputer nalewaka lub przepływomierz trafia na rachunek, więc nic nie "wycieka". Włącz to w Ustawienia → System nalewania (domyślnie wyłączone).
- Źródła (administrator): komputer nalewaka lub system przepływomierzy. Wybierz markę; kasa uzupełni ustawienia wstępne. Z Holandii i Belgii: Van Duijnen Horeca (automatyka nalewania, Dashbar), Beconet (Multi-Tap), TapSystems, Horecatechniek Nederland, Heineken SmartDispense, WeissBeerger / AB InBev oraz BarTrack; dalej Gruber, Addimat, WMF / Hogatron (E-Protokoll), Drinkotec (ex-Hartec), , Berg, Easybar, Azbar, Scanabar, PourMyBeer, iPourIt, BeerBoard, US BeerSAVER, Bevchek, Capton/BarVision, Kegtron, Kegbot Kegboard, "inteligentny kran" lub własny system. Połączenie jest możliwe na pięć sposobów (Kegboard: zob. Dozowane nalewanie i Kegboard poniżej):
- Pola:
kraan(lubtap,plu),ml(lubcl,liter,volumezeenheid) alboporties,id(to samo nalanie dwa razy = zaksięgowane raz),tijdstip,tafel,bediening; jedno nalanie, lista lub{ "taps": [...] }. - Sieć (TCP): kasa łączy się z komputerem nalewaka (adres i port) lub sama nasłuchuje na porcie.
- Port szeregowy: port COM lub USB-szeregowy, 1200–115200 baud, 8N1, 7E1 lub 7O1.
- Przy sieci i porcie szeregowym ustawiasz format wiadomości (jedna wiadomość na linię lub STX … ETX z ewentualną kontrolą XOR i odsyłaniem ACK/NAK) oraz wzorzec wiadomości z częściami
kraanlubplui ewentualnieml,cl,liter,porties,tafel,bedieningiid(np.kraan;mllub tylko PLU na szklankę). Dostawcy podają dokładny format tylko instalatorom; zapytaj dostawcę komputera nalewaka. Testowe nalanie wysyła nalanie tak, jak zrobiłby to komputer nalewaka.
- Pola:
- Krany (administrator): dla każdego kranu lub PLU produkt i sposób, w jaki trafia na rachunek: za szklankę (szklanka w ml; nalanie 520 ml przy szklankach 250 ml = 2 szklanki; od 50% liczy się szklanka) lub za litr (cena produktu to cena za litr; na rachunku np. "Pils 0,33 l" na właściwą kwotę).
- Na rachunku: jeśli komputer nalewaka zgłosi stolik, nalanie trafia od razu na otwarte zamówienie tego stolika. W przeciwnym razie jest w Nalane: na ekranie zamówienia pojawia się pasek "… nalań bez rachunku"; wybierz nalania i stuknij Na ten rachunek. Pozycje mają od razu status zamówione (żaden bon nie idzie już do baru), a zapas jest odejmowany. Przycisk Nalane na górnym pasku pokazuje wszystko, co nie ma jeszcze rachunku.
- Odrzucanie (uprawnienie Storno): płukanie, stłuczka, degustacja, personel, za darmo lub inne (z wyjaśnieniem); trafia to do dziennika. Za mało na szklankę (np. płukanie) należy odrzucić.
- Przegląd (uprawnienie Obrót w okresie): dla każdego kranu nalane, na rachunku, odrzucone (według powodu), anulowane i jeszcze otwarte, w litrach, z odsetkiem sprzedanego, oraz jako CSV.
- Zgłoszonych nalań nie można zmieniać (tylko rozliczyć).
Dozowane nalewanie i Kegboard
Przy dozowanym nalewaniu kran otwiera się dopiero po nabiciu szklanki na kasie i tylko na tę ilość. Dzięki temu nic nie zostanie nalane bez rachunku. Działa to tylko przy włączonym systemie nalewania i włącza się to dla każdego kranu osobno (domyślnie wyłączone).
- Na kran (administrator, Ustawienia → System nalewania → Krany): zaznacz Dozowane nalewanie i wybierz, jak długo kran może być otwarty po nabiciu (10–600 sekund, domyślnie 120). Przy Kegboard podaj też przekaźnik (zawór elektromagnetyczny). Dozowane nalewanie działa tylko na szklankę.
- Nabicie: przy Zamów (lub przy bezpośrednim Rozliczeniu) kasa tworzy dla każdej pozycji rachunku z tym produktem zwolnienie (liczba szklanek × szklanka w ml) i wysyła je do komputera nalewaka. Nalanie, które potem nadejdzie, należy do tej pozycji. Nie trafia więc drugi raz na rachunek ani do Nalane. Nalanie bez zwolnienia trafia normalnie do Nalane.
- Storno pozycji przed nalaniem: kran znów się zamyka. Zwolnienie, które nie zostało nalane na czas, wygasa; kran nigdy nie otworzy się później.
- Zwolnienia na ekranie zamówień (pasek nad rachunkiem): podgląd tego, co trwa, Zatrzymaj i Zwolnij ponownie. Ponowne zwolnienie jest możliwe tylko, jeśli nic jeszcze nie nalano, więc nigdy nie zostanie zwolnione nic ponad to. Testowe zwolnienie (administrator) zwalnia jedną szklankę bez rachunku; trafia to do dziennika.
- Jak zwolnienie trafia do komputera nalewaka:
- Kegboard (Kegbot, open source, ESP32 z przepływomierzami i zaworami elektromagnetycznymi; w pełni otwarty protokół): kasa wysyła grant dla kranów z tym produktem, przekaźników i ilości. Płytka sama zamyka kran, gdy ilość zostanie osiągnięta lub czas minie.
- Sieć/port szeregowy: konfigurowalne polecenie zwolnienia z
{kraan},{ml},{porties},{sec}i{id}(np.V{kraan};{ml}), wysyłane w formacie wiadomości źródła (linia lub STX … ETX z XOR). Opcjonalnie jest też polecenie stopu. Dokładne polecenie podaje dostawca.
- Łączenie Kegboard: przy + Źródło wybierz markę Kegbot Kegboard. Płytka zgłasza się przy źródle; kliknij Zezwól (lub Odrzuć). Płytka otrzymuje wtedy jednorazowo własny klucz, który kasa przechowuje tylko jako hash. Inne urządzenie lub błędny klucz niczego nie zmienia w połączonej płytce; jeśli płytka zgubiła klucz, najpierw użyj Rozłącz. Źródło pokazuje firmware, liczniki i przekaźniki płytki. Kranami są numery liczników (0, 1 …). Karta przyłożona do płytki zostanie odrzucona: płatność odbywa się przy kasie. Gdy system nalewania jest wyłączony, płytka przechowuje swoje wiadomości i wysyła je później.
- Przy źródle ustawiasz, po ilu sekundach bez przepływu kran się zamyka (5–300, domyślnie 30). Dla każdego kranu wpisujesz numer licznika, przekaźnik (zawór elektromagnetyczny) i jak długo kran może być otwarty po nabiciu.
Sterowanie muzyką z kasy
Personel steruje muzyką z ekranu dotykowego kasy, więc przy barze nie jest potrzebny osobny ekran. Włącz to w Ustawienia → Lokal → Ekrany i obsługa → Sterowanie muzyką z kasy (domyślnie wyłączone). Na górnym pasku pojawi się wtedy przycisk Muzyka: dla każdego źródła (np. Bar i Taras) Odtwórz, Pauza, Następny, Poprzedni, Głośniej, Ciszej i suwak głośności, wraz z tym, co teraz gra. Powrót do kasy zamyka panel. Po wyłączeniu źródła pozostają zapisane.
- Playlista (Sonos, Bluesound i VLC): kolejka z tym, co teraz gra. Dotknij utworu, aby go odtworzyć; przyciskiem Dostosuj usuwasz utwory (✕), przesuwasz je wyżej lub niżej (↑ ↓; Sonos i Bluesound) albo czyścisz playlistę. Przyciskiem Wybierz inną muzykę odtwarzasz ulubioną pozycję Sonos (np. stację lub kanał Tunify) lub playlistę Sonos albo ustawienie wstępne BluOS.
- Na osobnym ekranie: to samo sterowanie i duża playlista pod adresem
http://<kassaserver>:3000/muziek, np. na drugim monitorze obok kasy lub tablecie przy barze (jeśli na tym samym urządzeniu już zalogowano, w przeciwnym razie z PIN-em). - Na tablecie lub telefonie: kod QR z adresem tego osobnego ekranu w sieci lokalu. Pracownik skanuje go własnym tabletem lub telefonem (w sieci Wi-Fi lokalu) i loguje się własnym kodem PIN; przyciskiem Wyloguj ekran znów się zamyka. Zobacz Drugi ekran na tablecie lub telefonie.
Administrator dodaje źródła przyciskiem + Źródło muzyki, wybiera sposób podłączenia i sprawdza je przyciskiem Testuj:
- Soundtrack (soundtrack.io): przez publiczne API, z tokenem API (do uzyskania od Soundtrack) i strefą dźwiękową (Wczytaj strefy). Odtwarzanie, pauza, następny, głośność i to, co gra.
- Sonos: adres IP głośnika (w grupie: głośnik, który prowadzi grupę). Działa ze wszystkim, co gra na Sonosie, np. Tunify, Spotify lub radio.
- Bluesound (BluOS): adres IP odtwarzacza; działa również ze wszystkim, co na nim gra, np. Tunify.
- VLC na komputerze muzycznym: włączony interfejs webowy (Narzędzia → Preferencje → Pokaż ustawienia: Wszystkie → Interfejs → Główne interfejsy: Web, z hasłem w Lua); adres IP (ewentualnie z
:poort, domyślnie 8080) i hasło. - Własny komputer muzyczny (adresy internetowe): dla komputera lub urządzenia muzycznego z adresem internetowym dla każdego przycisku; GET lub POST oraz
{volume}(0-100) w adresie dla głośności. Bez adresu Głośniej/Ciszej kasa ustawia głośność krokowo. - Odtwarzacz internetowy serwisu muzycznego: adres internetowy odtwarzacza internetowego lub strony sterowania (np. odtwarzacz internetowy Tunify lub Media Tools) otwiera się w kasie przyciskiem Muzyka; jeśli serwis nie może być wyświetlany w innym ekranie, użyj Otwórz w osobnym oknie.
Kasa komunikuje się z odtwarzaczami z serwera, więc muszą one być w tej samej sieci co kasa (Soundtrack przez internet). Sterować może każdy zalogowany; do konfiguracji potrzebne jest uprawnienie Ustawienia lokalu, płatności i drukarek. Token i hasło nigdy nie są ponownie wyświetlane i nie trafiają do dziennika zdarzeń; w dzienniku zapisywana jest tylko konfiguracja (wł./wył., źródła), a nie każde naciśnięcie przycisku. Eksport konfiguracji obejmuje tylko wł./wył. (źródła należą do jednego lokalu).
Drugi ekran na tablecie lub telefonie
Muzykę i kamery można też wyświetlić na własnym tablecie lub telefonie pracownika, jako drugi ekran obok kasy. W oknie Muzyka lub Kamery jest przycisk Na tablecie lub telefonie: pokazuje kod QR z adresem, np. http://192.168.1.20:3000/muziek lub .../camera.
- Połącz tablet lub telefon z siecią Wi-Fi lokalu.
- Zeskanuj kod QR aparatem (lub wpisz adres w przeglądarce).
- Zaloguj się własnym kodem PIN. Widzisz tylko to, do czego masz uprawnienia: muzykę wszyscy, kamery tylko z uprawnieniem Podgląd obrazu z kamer.
- Gotowe: Wyloguj w prawym górnym rogu. Jeśli logowanie wygasło (np. tablet leżał nieużywany przez noc), ekran znów poprosi o PIN.
Wskazówka: dodaj stronę do ekranu głównego tabletu (w przeglądarce: Dodaj do ekranu głównego), wtedy otwiera się jak aplikacja.
Dlatego kasa ustala adres IP komputera kasowego w sieci (jeśli komputer ma ich kilka, np. Wi-Fi i kabel, wybierasz sieć). W portalu zarządzania (kasa zdalnie) jest to adres portalu. Kod QR kasa tworzy sama, bez internetu.
Parowanie tabletów: jednym przyciskiem na tablet (opcjonalnie)
Jeszcze prościej: sparuj tablet jeden raz, a kasa jednym przyciskiem wyśle muzykę lub kamery na ten tablet. Włącz to w Ustawienia → Lokal → Ekrany i obsługa → Tablety jako drugi ekran (domyślnie wyłączone).
- Na tablecie: otwórz
http://<kassaserver>:3000/tablet(przy ustawieniu jest Na tablecie lub telefonie z kodem QR), zaloguj się kodem PIN i nadaj tabletowi nazwę, np. Tablet Bar. Sparuj. - W kasie: w oknie Muzyka lub Kamery jest teraz przycisk Na Tablet Bar (z zieloną kropką, gdy tablet jest włączony). Dotknij go: tablet sam otworzy ten ekran. Przy muzyce przekazywane jest też wybrane źródło (np. Taras).
- Na tablecie: Zamknij wraca do oczekiwania; Rozłącz ten tablet usuwa parowanie.
Pozostaw stronę na tablecie otwartą; jeśli tablet jest wyłączony lub uśpiony, otworzy ekran, gdy tylko zostanie włączony. Tablet pozostaje zalogowany jako pracownik, który się na nim zalogował: wysyłanie i oglądanie kamer jest możliwe tylko z uprawnieniem Podgląd obrazu z kamer. Przy ustawieniu administrator widzi, które tablety są sparowane i czy są włączone, i może zmienić ich nazwę lub je usunąć. Tablet przechowuje własny klucz; kasa przechowuje tylko jego hash. Wyłączenie: sparowane tablety pozostają zapisane. W dzienniku widać, kto sparował, zmienił nazwę lub usunął tablet.
Ekran wywoławczy dla zamówień na wynos
Ekran dla gości z W przygotowaniu po lewej i Gotowe po prawej, z dużymi numerami, jak w budce z frytkami czy restauracji fast food. Włącz go w Ustawienia → Lokal → Ekrany i obsługa → Ekran wywoławczy dla zamówień na wynos (domyślnie wyłączony).
Parowanie nie jest potrzebne: na telewizorze z przeglądarką (smart TV, przystawka lub mini PC), tablecie lub drugim monitorze otwórz adres kasy z /oproep, np. http://192.168.1.20:3000/oproep. Przy ustawieniu i w oknie Wezwij są przyciski Na osobnym ekranie i Na tablecie lub telefonie (kod QR z adresem). Logowanie nie jest potrzebne: ekran pokazuje tylko numery. Dotknij raz ekranu, aby przeglądarka mogła odtwarzać dźwięk.
Co się na nim pojawia:
- zamówienia na wynos z kasy, sklepu internetowego i Thuisbezorgd (oraz opcjonalnie zamówienia przy ladzie bez stolika, przy szybkiej sprzedaży) z ostatnich 12 godzin;
- gdy tylko coś zostało wysłane do kuchni lub baru (albo zamówienie internetowe ma status w przygotowaniu), numer pojawia się w W przygotowaniu;
- Gotowe ustawia się samo, gdy ekran kuchenny zgłosi całe zamówienie jako gotowe lub zamówienie internetowe ma status gotowe. Numer krótko miga, a ekran wydaje dźwięk ding-dong;
- gotowy numer zostaje tyle minut, ile ustawiono (domyślnie 10), albo do Odebrano;
- zamówienia z kiosku (zob. Kiosk samoobsługowy) są tam zawsze, gdy tylko są opłacone lub zostaną opłacone przy kasie, także przy "na miejscu", z numerem odbioru z ich paragonu;
- opcjonalnie także zamówienia dla kurierów Thuisbezorgd, Uber Eats, Deliveroo i HubRise (pole Także zamówienia dla kurierów …): z numerem zamówienia platformy i nazwą platformy pod spodem, żeby kurier widział, kiedy jego zamówienie jest gotowe. Odebrane zgłasza wtedy też platformie, że kurier je ma (jak w oknie platformy).
Numer: w sklepie internetowym, Thuisbezorgd i platformach dostaw numer zamówienia, który gość lub kurier już ma; w innym przypadku numer odbioru (od 1 do 999). Jest wydrukowany dużą czcionką na paragonie, z wyjaśnieniem, że numer pojawi się na ekranie, gdy zamówienie będzie gotowe (w języku paragonu).
Opcjonalnie (domyślnie wyłączone, w ustawieniu):
- Ogłaszanie numeru głosem: przy nowym gotowym numerze ekran mówi np. "Numer 42, zamówienie jest gotowe." w wybranym języku (niderlandzki, angielski, niemiecki, francuski, hiszpański, włoski, portugalski, polski, turecki lub arabski). Głos pochodzi z przeglądarki ekranu i brzmi inaczej na każdym urządzeniu; po otwarciu dotknij ekranu raz. Po dzwonku, jeśli dźwięk też jest włączony.
- Status zamówienia na telefonie: pod numerem odbioru na paragonie pojawia się kod QR. Gość skanuje go, widzi swój numer i status (zamówione, w przygotowaniu, gotowe, odebrane) i dostaje powiadomienie, gdy zamówienie jest gotowe. Działa przez portal zarządzania, więc kasa musi być z nim połączona. Nie dla sklepu internetowego i Thuisbezorgd (mają własny status) ani dla kiosku (ma własne ustawienie).
W kasie jest przycisk Wezwij (z liczbą zamówień w przygotowaniu):
- Gotowe ręcznie ustawia numer jako gotowy (bez ekranu kuchennego lub gdy tak jest szybciej). Przy zamówieniu ze sklepu internetowego lub Thuisbezorgd status też się zmienia, więc gość również dostaje powiadomienie.
- Wstecz przenosi go z powrotem do W przygotowaniu.
- Odebrano usuwa go z ekranu (z opcją Cofnij).
W ustawieniu wybierasz też, czy imię ma być widoczne obok numeru (domyślnie nie, ze względu na prywatność) i czy ekran ma wydawać dźwięk. Wyłączenie: brak przycisku Wezwij i brak numeru odbioru na paragonie; ustawienia zostają zachowane. W dzienniku widać, kto co ręcznie ustawił jako gotowe, wstecz lub odebrano.
Rejestracja wejścia i wyjścia
Domyślnie rejestracja czasu pracy jest wył.: wtedy nie jest nigdzie widoczna w kasie (brak przycisku na górnym pasku, brak na ekranie logowania, brak zakładki Godziny pracy). Włącz ją w Ustawienia → Lokal, w sekcji Rejestracja czasu pracy personelu:
- Wył.: nie używać. Jeśli później wyłączysz rejestrację czasu, nie będzie jej już nigdzie widać, ale już zarejestrowane godziny zostaną zapisane (nic nie jest usuwane); po ponownym włączeniu znów się pojawią.
- Wł.: pracownicy mogą rejestrować wejście i wyjście. Po zalogowaniu kasa pyta, czy chcesz zarejestrować wejście (można wybrać Nie teraz). Na górnym pasku widnieje wtedy Zarejestruj wejście lub Zarejestrowano wejście 17:02; dotknij tego, aby zarejestrować wyjście.
- Obowiązkowe: po zalogowaniu najpierw zarejestruj wejście, inaczej nie możesz korzystać z kasy. Rejestracja wyjścia od razu cię wylogowuje.
Kto nie korzysta z kasy (np. kuchnia), rejestruje czas na ekranie logowania: dotknij Wejście / wyjście i wpisz swój PIN. Przełącza to między wejściem a wyjściem, bez logowania.
Gdy rejestracja czasu jest włączona, administrator widzi w Ustawienia → Godziny pracy:
- kto jest teraz w pracy (i może zarejestrować wyjście za kogoś, kto o tym zapomniał);
- przepracowane godziny każdego pracownika w danym okresie, ze wszystkimi zmianami, oraz pobieranie jako CSV (godziny także jako liczba dziesiętna dla kadr i płac);
- edycję lub dodawanie zmian (dotknij zmiany lub + Dodaj zmianę). Każda zmiana trafia do dziennika zdarzeń ze starymi i nowymi godzinami.
W Belgii każde wejście i wyjście jest też zgłaszane do czarnej skrzynki. Jeśli jest niedostępna, rejestracja nie zostanie wykonana (tak jak rozliczenie). Czy spełnia to dokładnie belgijskie wymogi rejestracji personelu, wymaga jeszcze potwierdzenia.
Ważenie i etykiety (waga)
Gdy waga jest włączona (Ustawienia → Waga), produkty mogą mieć cenę za kilogram. Wszystkie inne produkty pozostają na sztuki.
- Ważenie: dotknij produktu z ceną za kilogram (przycisk pokazuje np.
12,95/kg). Okno Ważenie pokazuje na żywo wagę z wagi (np. Aclas OS6X lub wagi, na której działa sama kasa); zielony = stabilna. Połóż produkt na wadze i dotknij Dodaj, gdy waga się ustabilizuje. Cena to cena za kg × waga (zaokrąglona do grosza); pojemnik (tara) produktu jest odejmowany automatycznie. Jeśli produkt ma opcje, pojawią się potem. - Więcej wag: jeśli jest kilka wag, wybierz u góry okna, na której ważysz. Każda kasa/tablet zapamiętuje wybór.
- Ręcznie: brak wagi (lub dozwolone wpisywanie ręczne) – wtedy wpisz wagę:
0,512lub1,2to kilogramy,512lub512 gto gramy. - Etykieta z TS6X: zeskanuj kod kreskowy etykiety skanerem na ekranie zamówienia (po prostu skanuj, nic nie musi być otwarte) albo dotknij Etykieta i zeskanuj lub wpisz 13 cyfr. Produkt (PLU) i waga pochodzą z etykiety. Jeśli na etykiecie jest cena, kasa nalicza dokładnie tę cenę.
- Na ekranie, paragonie i ekranie klienta widnieje waga, np.
Gehakt 6,63, a pod spodem0,512 kg x € 12,95/kg; na bonie kuchennym0,512 kg Gehakt. Podział, przenoszenie i zwrot odbywają się w kilogramach. - Produkt ważony działa tylko z połączeniem z serwerem kasy (waga przychodzi przez serwer kasy).
Uber Eats, Deliveroo i HubRise
Oprócz Thuisbezorgd.nl / Takeaway.com do kasy trafiają też zamówienia z Uber Eats (Holandia i Belgia), Deliveroo (tylko Belgia; Deliveroo wycofało się z Holandii pod koniec 2022) i wszystko, co jest w HubRise (m.in. Uber Eats, Deliveroo, Just Eat/Takeaway.com i mniejsze aplikacje do zamawiania). Każdą platformę włączasz osobno w Ustawienia → Platformy dostaw (domyślnie wyłączone; wyłączenie zachowuje wszystko). Karta pokazuje dla każdej platformy, w jakich krajach działa, i ostrzega, jeśli nie działa w kraju lokalu.
- Włącz, a potem Zaloguj się do Uber Eats i połącz sklep (lokal loguje się własnym kontem Uber Eats). Jeśli konto ma kilka sklepów, wpisz ID sklepu (store id) i zaloguj się ponownie. Uber Eats musi najpierw zatwierdzić Pin Voordeel jako partnera.
- Deliveroo: bezpośrednio, przez portal. Wpisz site id (location id) i ID marki (brand id). Bez tabletu (domyślnie): kasa akceptuje lub odrzuca; z tabletem: lokal akceptuje na tablecie, a portal zgłasza tylko, czy zamówienie jest w kasie.
- HubRise: kasa sama pobiera zamówienia (co 20 sekund, portal niepotrzebny).
- Dla każdej platformy: automatycznie akceptuj, bon kuchenny od razu do kuchni/baru oraz (Uber Eats, Deliveroo) wysyłaj menu automatycznie po zmianie i Wyślij menu teraz. W menu są produkty zaznaczone w Produkty w menu Uber Eats i Deliveroo, z opcjami wyboru; stan wyprzedane też jest wysyłany.
Zamówienia. Zamówienie staje się zwykłym zamówieniem (bezorgen lub afhalen, nazwa grupy <platform> <nummer>) z cenami platformy: produkty rozpoznawane po ID (z menu), kodzie lub numerze PLU; nieznany = osobna pozycja z ceną platformy (i komunikat); koszty dostawy, dopłaty i rabaty jako osobne pozycje; jeśli suma nadal się nie zgadza, pozycja "Różnica". Bon kuchenny idzie od razu do kuchni/baru. Przycisk Platformy na górnym pasku (z liczbą trwających zamówień; pomarańczowy, gdy jest coś do akceptacji): akceptuj lub odrzuć (z powodem), w przygotowaniu, gotowe, w drodze, dostarczono lub odebrano, anuluj oraz Zakończ (zapłacono online). To, co platforma obsługuje, wraca do niej (Uber Eats: akceptacja, odrzucenie, anulowanie; Deliveroo: akceptacja, odrzucenie, w przygotowaniu, gotowe, odebrano; HubRise: wszystkie statusy). Jeśli lokal dostarcza sam (własna dostawa), zamówienie jest też w Kursach, a wyjazd i dostarczenie trafiają automatycznie do platformy. Anulowanie przez platformę powoduje wygaśnięcie zamówienia. Jeśli kasa przez ponad 2 minut nie ma połączenia z portalem, portal odrzuca nowe zamówienie z Uber Eats i informuje Deliveroo (z tabletem), że się nie udało, aby lokal zobaczył to na tablecie.
Kod: apps/pos-server/src/lib/bezorgplatforms.ts, routes/bezorgplatforms.ts; ekrany Bezorgplatforms.tsx. Strona portalu: horecapos-portaal/src/platforms.mjs. Dziennik zdarzeń: Platformy dostaw (wł./wył., ustawienia, zamówienia). Wszystko jest w kopiach zapasowych kasy.
Mniejsze platformy w Holandii i Belgii (Homie, Hebtrek, sneleten.nl, Bistroo ...) nie mają publicznej integracji z kasą; jeśli są w HubRise, działają przez HubRise. Poza tym: zobacz backlog.
Automat płatniczy (zamknięty system obsługi gotówki)
Domyślnie wyłączone: gotówka działa jak zawsze. Przy zamkniętym systemie obsługi gotówki personel nie dotyka gotówki: klient lub pracownik wkłada pieniądze do automatu, który je liczy, sprawdza pod kątem fałszywych banknotów i wydaje resztę.
- Automaty, z którymi kasa komunikuje się bezpośrednio:
- CashDro (3, 4+, 5, 7, S Compact; NuKassa, KluisKassa): przez sieć (web service). Na CashDro włącz Web Integration i utwórz osobnego użytkownika dla kasy.
- Cashmatic (SelfPay 460/860/1060; w Belgii Xpos): przez sieć (port 50301) z użytkownikiem Cashmatic.
- Azkoyen Cashlogy (POS1000, POS1500): przez CashlogyConnector na komputerze z Windows przy automacie (port 8092).
- CashKeeper: przez CKMonitor na komputerze z Windows (port 16501).
- Glory CASHINFINITY (CI-5, CI-10, CI-10X; także przez Cikam): przez sterownik (FCC) automatu. Nadal w wersji beta: zleć sprawdzenie pierwszej integracji firmie Glory lub swojemu dealerowi.
- Zewnętrzny: inne oprogramowanie steruje automatem i komunikuje się z kasą (np. Cikam, ImaCash dla 25 marek, oprogramowanie CashGuard/StrongPoint (Merlin), PayComplete (SUZOHAPP), Gunnebo SafePay lub francuskie marki, takie jak CashMag).
- Automat testowy: bez sprzętu, do ćwiczeń lub prezentacji. Przyciskiem Testuj połączenie sprawdzasz adres i logowanie. Umieść automat we własnej sieci (nigdy otwartej na internet) i używaj osobnego użytkownika dla kasy, nie administratora.
- Rozliczenie przez Gotówka: Zapłać w automacie płatniczym rozpoczyna płatność na kwotę (zaokrągloną dla gotówki, jeśli to włączone, plus napiwek; przy dzieleniu rachunku – daną część). Ekran pokazuje, ile wpłacono i ile jest zwracane; kasa rozlicza dopiero wtedy, gdy automat zgłosi gotowe. Anuluj = automat zwraca pieniądze. Jeśli automat nie mógł wydać całej reszty (za mało monet), pokazywane jest, ile trzeba wydać z szuflady kasowej. Udana płatność, która nie została jeszcze rozliczona (np. tablet się wyłączył), zostaje odnaleziona przy tym zamówieniu.
- Gotówka tylko przez automat (domyślnie włączone): serwer kasy przyjmuje gotówkę tylko przy udanej płatności w automacie dokładnie dla tego zamówienia i tej kwoty. Wyłączone = także zwykła gotówka w szufladzie.
- Szuflada kasowa (Raport → Szuflada kasowa, uprawnienie Zarządzanie szufladą kasową): Sprawdź stan (dla każdej monety i banknotu, przy Cashmatic, Cashlogy, Glory i automacie testowym), Wypłać z podaniem powodu (np. reszta do szuflady), Uzupełnianie i Odbiór nadwyżki (reszta zostaje; przy Cashmatic). Oczekiwane w szufladzie kasowej nie obejmuje pieniędzy w automacie (są pokazane osobno poniżej: W automacie płatniczym), ale obejmuje resztę, którą trzeba było wydać z szuflady.
Przycisk ©
W prawym dolnym rogu każdego ekranu (PIN, plan sali, zamówienia i kuchnia) jest mały przycisk ©. Otwiera dane OptimumPOS: logo, adres, telefon, e-mail i stronę internetową. Ikona jest zapisana lokalnie w aplikacji, więc działa też bez internetu. Ta sama ikona jest ikoną aplikacji (karta i ekran główny).
Część 2 · Kierownik
Pierwsze kroki
Kierownik może domyślnie wszystko to, co obsługa, a ponadto m.in. udzielać rabatów, wykonywać zwroty, zamykać dzień, zarządzać szufladą kasową oraz przeglądać dziennik zdarzeń i magazyn. Większość z tego znajduje się pod przyciskiem Raport:
- Stan pośredni (X): dotychczasowy obrót, bez zamykania dnia.
- Szuflada kasowa: pogotowie kasowe, wpłaty/wypłaty i otwieranie szuflady.
- Zamknij dzień (Z): na koniec dnia; potem zaczyna się nowy dzień.
- Wcześniejsze raporty Z, Obrót w okresie i Pulpit.
- Dziennik zdarzeń, Karty podarunkowe i Klienci.
Magazyn
Domyślnie wył. Włączenie w Ustawienia → Lokal → Prowadź stan magazynowy. Wył. = nigdzie niewidoczne w kasie.
- Dla każdego produktu wybierasz w Ustawienia → Produkty → (produkt) → Magazyn:
- Nie: jak zawsze;
- Na produkt: każda sprzedaż odejmuje 1 (np. butelki, puszki), z poziomem ostrzegawczym dla „prawie brak”;
- Przez składniki: receptura, np. hamburger = 1 bułka + 150 g mięsa + 1 plaster sera. Każda sprzedaż odejmuje składniki.
- Ustawienia → Magazyn (uprawnienie Zarządzanie magazynem, domyślnie kierownik i administrator):
- Produkty i Składniki: stan, z oznaczeniem brak / prawie brak; filtr „tylko (prawie) brak” i eksport do CSV.
- Dla każdego produktu lub składnika księgujesz Przyjęcie (+) (dostawa), Inwentaryzacja (=) (policzona ilość staje się nowym stanem) lub Odpisz (−) (stłuczka, po terminie; powód obowiązkowy).
- Tworzenie składników z jednostką (szt., g, kg, ml, cl, l, porcja, butelka, beczka) i poziomem alertu.
- Historia: wszystkie zmiany (sprzedaż, storno, przyjęcie, inwentaryzacja, odpis) z informacją kto i kiedy. Operacje zarządcze trafiają też do dziennika zdarzeń.
- Odliczanie następuje przy Zamów (lub przy rozliczeniu dla tego, co zostało od razu rozliczone). Storno przywraca stan. Podział i przenoszenie nie liczą się podwójnie. Przy menu odliczane są dania, a nie pozycja menu. Zwroty (korekta) nie przywracają stanu (zwróconego towaru zwykle nie da się już sprzedać); w razie potrzeby zaksięguj to jako przyjęcie.
- Gdy stan wynosi zero (lub składnika nie wystarczy na jeszcze jedną porcję), produkt na wszystkich kasach automatycznie dostaje status wyprzedane. Przy niskim stanie na przycisku produktu widnieje pozostało N. Po przyjęciu lub inwentaryzacji produkt od razu można znów zamawiać. Serwer kasy również odrzuca wtedy produkt ("Pils" jest niedostępny (stan 0)), więc także z tabletu, który jeszcze o tym nie wiedział.
- Stan może spaść poniżej 0 (np. dwa tablety jednocześnie lub zamówienie offline); inwentaryzacja go koryguje.
- Lista zamówień: Ustawienia → Magazyn → Lista zamówień. Dla każdego produktu (na produkt) i każdego składnika oprócz poziomu alertu ustawiasz też uzupełnij do i dostawcę. Na liście zamówień jest wszystko, co jest na poziomie alertu lub poniżej (bez poziomu alertu: przy 0), pogrupowane według dostawcy, z propozycją uzupełnij do − stan. Ilości można zmieniać oraz zaznaczać/odznaczać. Potem Drukuj (drukarka paragonów), Kopiuj (do e-maila lub WhatsAppa), Eksport (CSV), a po dostawie Dostarczono: zaksięguj jako przyjęcie (księguje wszystko za jednym razem). Zaznaczając pole u góry, widzisz też to, czego jeszcze nie brakuje, aby zamówić więcej.
- Opcje wyboru: przy grupie opcji (Ustawienia → Produkty → Opcje wyboru) jest przycisk Magazyn. Dla każdej opcji podaj składniki na sztukę, np. Dodatkowy ser = 1 plaster sera, Frytki = 150 g frytek. Gdy opcja zostanie wybrana, te składniki są odejmowane za każdą sztukę (także gdy sam produkt nie prowadzi stanu; przy storno wracają). Jeśli składnika brakuje, opcja jest na kasie oznaczona jako (wyprzedane) i nie można jej wybrać.
Zamawianie u dostawców
Domyślnie wyłączone. Włączenie w Ustawienia → Magazyn → Zamawianie u dostawców (tylko z włączoną opcją Prowadź stan magazynowy). Wyłączone = lista zamówień działa jak zawsze.
- Dostawcy (zakładka Dostawcy): wybierz jednego z listy lub utwórz własnego dostawcę. Lista obejmuje hurtownie i cash & carry (Sligro, Sligro-ISPC/Sligro-M, HANOS, Makro, De Kweker, Horeca Totaal, Van Zon, zegro, Lekkerland), foodservice (Bidfood i Bidfood Belgium, Solucious, Chefs Culinar, Java, Q-Food, Agora Culinair, VHC Jongens/Kreko/Actifood, Hocras, Van Hoeckel ...), hurtownie napojów (De Klok, Henk Smit, Horesca, De Monnik, Hansen, Dranken Geers ...), browary i napoje bezalkoholowe (Heineken przez Sligro, AB InBev/BEES, Alken-Maes, Haacht, Duvel Moortgat, Martens, Coca-Cola, Spadel, Grolsch, Bavaria), dostawców świeżych produktów (Van Gelder, Driessen, FiliusKaas, Bakkers Brigade, Rungis ...), non-food (Bunzl, Takeaware, Supplierz), internetowy sklep z winami Vinify.nl i platformy zamówień (Apicbase, Exact Horeko, Growzer, inOne, Cuisin.io, OrderXL). Na liście są tylko dostawcy z kraju lokalu. Gdy wybierzesz jednego, sposób zamawiania, plik i kolumny są już ustawione; przy każdym dostawcy jest opisane, jak się u niego zamawia.
- Dla każdego dostawcy: numer klienta, zamawiaj przez:
- E-mail: zamówienie jako e-mail (z tabelą) na adres e-mail do zamówień, opcjonalnie z kopią, z listą zamówienia w załączniku: CSV, Excel, CSV dla Care4Fresh (wiele hurtowni świeżych produktów), UBL 2.1 Order (Peppol BIS Order), EANCOM ORDERS (D96A w Holandii, D01B/HO2C w Belgii) lub cXML. Odpowiedzi przychodzą na adres e-mail lokalu.
- Plik: kasa tworzy plik, ty wgrywasz go w sklepie internetowym dostawcy (np. Bunzl Snel bestellen:
artikel;aantal, Takeaware:SKU,Quantity). Separator, wiersz nagłówka i kolumny można ustawić (artikel,ean,omschrijving,aantal,eenheid,prijs,totaal; przezartikel=SKUnadajesz nagłówkowi własną nazwę). - Integracja (cXML): cXML OrderRequest z numerem klienta i wspólnym sekretem na adres zamówień dostawcy, tak jak systemy zakupowe wysyłają do Sligro, HANOS i Bidfood. Adres, numer klienta i sekret otrzymasz od dostawcy (Sligro: koppelingen@sligro.nl). Sekret nigdy nie wraca na ekran.
- Przy obu integracjach można też podać nazwę użytkownika i hasło (Basic) oraz dodatkowe nagłówki (jeden na wiersz, np.
X-Api-Key: ...). - Przesyłanie (SFTP/FTPS): kasa sama umieszcza plik (EANCOM, UBL, CSV, Excel ...) w folderze na serwerze dostawcy, tak jak wiele hurtowni przyjmuje zamówienia EDI. SFTP (SSH), FTPS (jawny na porcie 21 lub niejawny na porcie 990) albo, tylko we własnej sieci, FTP. Logowanie hasłem lub kluczem SSH (OpenSSH, PEM lub PuTTY .ppk; ed25519, ECDSA lub RSA). Utwórz klucz tworzy parę kluczy w kasie; klucz publiczny wysyłasz do dostawcy. Testuj połączenie loguje się i szuka folderu. Odcisk palca serwera SFTP jest zapisywany przy pierwszym połączeniu, a potem sprawdzany (inny serwer nie dostanie hasła); przy FTPS z własnym certyfikatem ustalasz odcisk palca certyfikatu. Nie jest potrzebne żadne dodatkowe oprogramowanie.
- Drukuj: zamówienie na drukarce paragonów, do przekazania telefonicznie.
- Hasła, klucze, tokeny i nagłówki nigdy nie wracają na ekran (puste = bez zmian, Wyczyść = usuń).
- Poproś o integrację: dla dostawcy kasa przygotowuje e-mail z prośbą o integrację (cXML, EDI przez SFTP/FTPS, UBL/Peppol lub własne API dostawcy) z danymi lokalu (nazwa, adres, numer VAT, numer klienta, GLN) i tym, co jest potrzebne; przy EDI z kluczem publicznym. Dostosuj i wyślij; kopia i odpowiedzi trafiają na adres e-mail lokalu. Data zgłoszenia jest widoczna przy dostawcy. W przypadku Sligro trafia ono na koppelingen@sligro.nl, w innym przypadku wpisujesz adres swojego opiekuna klienta.
- Własny dostawca (spoza listy) może wszystko oprócz tego, co musi zaoferować sam dostawca: e-mail, plik i drukowanie działają zawsze; integracja lub przesyłanie tylko z danymi tego dostawcy.
- Dni zamówień i dostawa: dni zamówień, godzina graniczna, czas dostawy (żądana data dostawy w zamówieniu) i minimalna kwota zamówienia. Automatycznie: w dni zamówień od tej godziny kasa sama przygotowuje zamówienie (ty je sprawdzasz) albo od razu je wysyła (e-mailem, przez przesyłanie lub integrację; poniżej minimalnej kwoty zamówienia tylko przygotowuje). Raz dziennie na dostawcę.
- Na produkt (Ustawienia → Produkty → (produkt) → Magazyn, przy Na produkt) i na składnik: Zamawiaj u (dostawca), numer zamówieniowy u tego dostawcy, EAN, na opakowanie (skrzynka 24 = 24), nazwa opakowania i cena zakupu za opakowanie. Poziom alertu to moment, w którym należy zamówić; uzupełnij do – ile ma być wtedy na stanie.
- Zamówienia zakupu (zakładka Zamówienia zakupu):
- Propozycja zamówienia dla każdego dostawcy: wszystko, co jest na poziomie alertu lub poniżej. To, co już zamówione, ale jeszcze nie dotarło (w drodze), jest uwzględniane, aby nic nie zamówić podwójnie. Propozycja = uzupełnij do − stan − w drodze (bez uzupełnij do: do poziomu alertu), zaokrąglona w górę do pełnych opakowań. Dostosuj ilości i Utwórz zamówienie.
- Zamówienie jest najpierw przygotowane: ilości, pozycje dowolne (bez produktu, np. serwetki), uwagę i datę dostawy można jeszcze zmienić. Potem Wyślij (w sposób przypisany do dostawcy lub jednorazowo inaczej). Jeśli się nie powiedzie (np. dostawca odrzuca), pokazywany jest powód i możesz spróbować ponownie.
- Przyjęte: dla każdej pozycji przyjęta ilość (domyślnie zamówiona ilość); stan magazynowy rośnie według opakowań (2 skrzynki po 24 = 48), a zamówienie jest widoczne w historii.
- Każdy plik (CSV, Excel, UBL, EANCOM, cXML) można też pobrać osobno.
- Wysłanie, niepowodzenie, przyjęcie i anulowanie trafiają do dziennika zdarzeń. Zwykła Lista zamówień nadal działa; jeśli produkt ma dostawcę z listy, pojawia się tam pod jego nazwą.
Zarządzanie opiniami
Czytanie opinii z Google i Trustpilot i odpowiadanie na nie w kasie. Włączasz w Ustawienia → Punkty i opinie → Zarządzanie opiniami (domyślnie wyłączone, wtedy nigdzie nic tego nie widać). Czytanie i odpowiadanie w Raport → Opinie (uprawnienie Czytanie opinii i odpowiadanie na nie, domyślnie także dla kierownika). Po wyłączeniu połączenia i opinie zostają zachowane.
- Każdy lokal dotyka potem tylko Połącz z Google i loguje się własnym kontem Google profilu firmy. Klucz Places można też skonfigurować centralnie (koszty ponosi wtedy dostawca). Trustpilot jest dla każdego lokalu osobno: każdy lokal ma własne konto Trustpilot Business (API należy do płatnej subskrypcji), z którego pochodzą klucz, sekret i business user ID. W kasie przy każdym sposobie widać "Kto się tym zajmuje?".
- Aplikacja dostawcy (przez portal klienta): jeśli aplikacja Google i/lub aplikacja Trustpilot dostawcy są w portalu klienta (zob. README horecapos-portaal, "Reviews: aplikacje dostawcy"), administrator wybiera w Logowanie i klucze opcję Aplikacja dostawcy (domyślnie przy nowym połączeniu, jeśli portal ma aplikację). Lokal stuka Połącz z Google lub Zaloguj się przez Trustpilot i loguje się własnym kontem; kasa sama czeka na zakończenie logowania (co 3 sekund, maksymalnie 15 minut) i jednorazowo pobiera tokens z portalu. Odświeżanie również odbywa się przez portal. W kasie nie jest potrzebny client-ID, secret ani klucz API; przy Trustpilot potrzebna jest jednak domena oraz, do odpowiedzi, business user ID. Trustpilot publiczny odczytuje wtedy dane za pomocą klucza portalu. Wymaga
PORTAAL_URLiPORTAAL_SLEUTEL. Własna aplikacja lub klucz API działa nadal tak, jak opisano poniżej. - Do kogo należą opinie: pozostają we własnym Profilu Firmy w Google i na własnej stronie Trustpilot lokalu, a kasa przechowuje je tylko we własnej bazie danych kasy. Odpowiedzi pojawiają się pod nazwą lokalu. Portal tylko przekazuje logowanie (w pamięci, maksymalnie 15 minut, do jednorazowego pobrania) i nie przechowuje opinii ani tokens; nazwa aplikacji dostawcy widnieje tylko na ekranie zgody.
- Zarejestruj się samodzielnie: przy każdej platformie jest link, aby samodzielnie utworzyć Profil Firmy w Google (business.google.com/create) lub konto Trustpilot Business (business.trustpilot.com), a przy Trustpilot także link do planów (business.trustpilot.com/plans). Rejestracja i płatność odbywają się bezpośrednio na platformie; nie ma do tego API.
- Następnie Połącz z Google i zaloguj się na konto, które zarządza Profilem Firmy. Jedna lokalizacja w profilu = wybrana od razu; więcej = wybór w kasie.
- Google Places (tylko odczyt): z Place ID i kluczem API do Places API (lub
GOOGLE_PLACES_API_KEY): średnia, liczba opinii i 5 najtrafniejszych opinii. W ten sposób nie można odpowiadać. - Trustpilot Business (odczyt i odpowiedzi): klucz API i sekret API aplikacji w Trustpilot Business (Integrations → API; lub
TRUSTPILOT_API_KEYiTRUSTPILOT_API_SECRET), domena lokalu (kasa sama wyszukuje business unit) oraz, do odpowiedzi, business user ID osoby, która odpowiada. - Trustpilot publiczny (tylko odczyt): tylko klucz API.
- Kasa pobiera co 30 minut (i od razu po połączeniu; Pobierz teraz). Adresu e-mail i numeru zamówienia gościa (które przekazuje Trustpilot) kasa nie przechowuje.
- Raport → Opinie: średnia, liczba na gwiazdkę, bez odpowiedzi i nieprzeczytane; filtrowanie według platformy, gwiazdek, braku odpowiedzi i nieprzeczytanych. Dla każdej opinii Odpowiedz (najwyżej 4000 znaków; każdy może to przeczytać), Zmień odpowiedź, Usuń odpowiedź i Przeczytane. Nowa lub zmieniona opinia jest nieprzeczytana. W dzienniku zdarzeń widnieją review_beantwoord i review_antwoord_weg.
- Rozłączenie zachowuje pobrane opinie.
Marketing SMS i e-mail
Wiadomości do klientów z kartą lojalnościową, którzy wyrazili na to zgodę. Bez karty lojalnościowej nie da się włączyć żadnego z nich.
- Zgoda dla każdego klienta i kanału: przy nowym kliencie przy kasie są pola "Klient chce otrzymywać akcje SMS-em" i "... e-mailem" (domyślnie odznaczone). W Raport → Klienci widzisz i zmieniasz zgodę (z datą jej udzielenia) oraz urodziny (tylko dzień i miesiąc). Wypisanie: odznacz pola i zapisz.
- Menu od razu zaktualizowane: gdy włączysz lub wyłączysz marketing albo kartę lojalnościową, kasa w ciągu kilku sekund ponownie wysyła menu do sklepu internetowego (tylko jeśli coś się zmieniło), więc pole wyboru od razu się pojawia lub znika.
- Zgoda przez sklep internetowy: jeśli lokal ma sklep internetowy, przy płatności jest pole wyboru "Chcę otrzymywać oferty e-mailem/SMS-em" (tylko włączone kanały; domyślnie odznaczone). Gdy wpłynie takie zamówienie, kasa wyszukuje klienta po numerze telefonu (w przeciwnym razie po adresie e-mail), w razie potrzeby go tworzy i zapisuje zgodę z datą. Brakujący numer lub adres istniejącego klienta zostaje uzupełniony; w dzienniku pojawia się klant_toestemming ze źródłem webshop.
- Raport → Marketing (uprawnienie Zarządzanie kartą lojalnościową): na górze widać, ilu klientów zgodziło się na SMS, a ilu na e-mail.
- Akcje (jednorazowe): nazwa, SMS lub e-mail, (temat,) tekst z
{naam},{zaak}i{punten}, a w razie potrzeby tylko klienci, których od pewnego czasu nie było lub którzy mają co najmniej tyle punktów. Podgląd pokazuje, do ilu klientów trafi akcja, wiadomość tak, jak zobaczy ją klient, i liczbę SMS-ów na klienta. Wyślij test na własny numer lub adres. Potem Wyślij: kasa wysyła w tle (maksymalnie 1000 naraz) i liczy, co wysłano, a co się nie udało. Nikt nie dostanie tej samej akcji dwa razy; jeśli kasa przerwie w połowie, Kontynuuj wysyłanie wznawia od tych, którzy jeszcze nic nie dostali. - Wysyłka przez Mailchimp lub Klaviyo (przy połączeniu z wybraną listą, zob. niżej): przy akcji e-mailowej w Wysyłaj przez wybierasz kasę (własny serwer poczty, jak wyżej), Mailchimp lub Klaviyo. Kasa najpierw aktualizuje listę (wypisania, punkty), tworzy tam kampanię dokładnie dla wybranych klientów, którzy są na liście (Mailchimp: stała grupa w audience; Klaviyo: osobna lista dla akcji), i wysyła ją z domyślnym nadawcą audience lub konta.
{naam}i{punten}Mailchimp/Klaviyo uzupełnia dla każdego klienta; link do wypisania z usługi jest na dole. Bez limitu 1000 na raz i bez osobistego kodu rabatowego ({code}). Jeśli się nie uda, akcja pozostaje szkicem z komunikatem. Zakładka Marketing jest dostępna także wtedy, gdy aktywna jest tylko integracja (wtedy tylko akcje przez Mailchimp/Klaviyo; Wyślij test działa przez serwer poczty kasy). Wiadomości automatyczne kasa zawsze wysyła sama; w Mailchimp/Klaviyo tworzysz je jako Customer Journey lub Flow. Klucz Klaviyo: także uprawnienia do zapisu dla Campaigns i Templates (jeśli już się logowałeś: zaloguj się ponownie). - Jako powiadomienie push przez sklep internetowy (gdy w panelu sklepu internetowego włączone są Powiadomienia push z ofertami): w Wysyłaj przez wybierz Powiadomienie push (sklep internetowy jako aplikacja), z tytułem (maks. 60 znaków) i krótkim tekstem (maks. 200 znaków; uzupełniane jest tylko
{zaak}, bo sklep internetowy nie wie, kim jest gość). Kasa wysyła promocję przez portal zarządzania do sklepu internetowego, a ten wysyła ją do gości, którzy włączyli tam Oferty jako powiadomienia; dotknięcie otwiera menu sklepu. Po kilku sekundach przy promocji widać, ile dotarło. Maks. 3 dziennie, łącznie z tym, co lokal wysyła z zarządzania sklepem; w przeciwnym razie promocja pozostaje szkicem z podanym powodem. Karta Marketing jest dostępna także wtedy, gdy włączona jest tylko ta funkcja (bez karty lojalnościowej i e-mail marketingu). Bez kodu rabatowego i selekcji (dni, punkty); test: na swoim telefonie włącz w sklepie internetowym Oferty jako powiadomienia. - Automatycznie: wiadomość urodzinowa (w dniu urodzin, raz w roku) i "Tęsknimy za Tobą" (po tylu dniach bez wizyty, jeden raz za każdym razem, gdy klient przestaje przychodzić). Włączane/wyłączane osobno; wychodzą tylko w ciągu dnia (10:00–20:00).
- Osobisty kod rabatowy (opcjonalnie, dla każdej wiadomości lub promocji; tylko gdy Kody rabatowe są włączone w Ustawienia → Lokal): każdy klient dostaje własny kod, np.
TERUG-7K4Q2M(urodzinyJARIG-…, promocjaACTIE-…), procentowy lub kwotowy, opcjonalnie z minimalną kwotą zamówienia, do użycia jeden raz, ważny przez ustawioną liczbę dni od wysłania (domyślnie 30), w kasie i/lub w sklepie internetowym. Wstaw{code}i{geldig}w tekście tam, gdzie chcesz; w przeciwnym razie kasa wstawi pod wiadomością "Uw kortingscode: … (10% korting, aan de kassa of in de webshop, geldig t/m …)". Podgląd i Wyślij test pokazują przykładowy kod (TERUG-VOORBEELD, nie działa). Jeśli wysyłka się nie powiedzie, kod nie zostanie utworzony. Przy promocji widać, ile kodów wydano i użyto. - Wypisanie jest pod każdą wiadomością: w SMS-ie "Wypisać się? Zadzwoń ... lub powiedz nam przy następnej wizycie", w e-mailu link do wypisania na adres e-mail lokalu (również przycisk Anuluj subskrypcję w Gmail i Outlook). Odpowiedź na e-mail trafia do lokalu.
- Prywatność (RODO): tylko klienci ze zgodą i numerem lub adresem; w dzienniku zdarzeń nie ma numerów ani adresów, jest tylko liczba wysłanych i nieudanych dla każdej akcji. Gdy usuniesz klienta, znika on też z listy wysyłkowej.
- Koszty: SMS-y idą przez twoje własne konto CM.com (ponad 160 znaków = więcej SMS-ów na klienta). Gmail i inne serwery pocztowe mają limit dzienny; przy wielu klientach wysyłaj w częściach.
Napiwki na pracownika
W Ustawienia → Lokal → Napiwek (tylko gdy "Pokaż przyciski napiwku przy rozliczeniu" jest włączone) wybierasz, jak napiwki na pracownika są wykazywane w stanie pośrednim (X), raporcie Z (paragon i e-mail) i Obrocie w okresie (także w CSV):
| Opcja | Podział |
|---|---|
| Wył. (domyślnie) | tylko suma napiwków, jak zawsze |
| Każdy własne napiwki | napiwki z rachunków, które dana osoba sama rozliczyła |
| Pula według godzin | wszystkie napiwki razem, według zarejestrowanych godzin pracy w tym okresie (wymaga rejestracji czasu pracy; nikt nie zarejestrowany = po równo) |
| Pula po równo | wszystkie napiwki razem, po równo między osoby obecne w pracy (bez rejestracji czasu: kto coś nabił lub rozliczył) |
Pojedyncze grosze trafiają do osoby najbliższej kolejnego grosza, dzięki czemu suma zawsze się zgadza. To tylko zestawienie: kasa niczego nie wypłaca (można to zrobić przez "Wypłata z szuflady"). Stare raporty Z pozostają bez zmian.
Raport Z e-mailem
W Ustawienia → Lokal → Wysyłaj raport Z na wpisz jednorazowo adres e-mail administratora (więcej adresów: oddzielone przecinkiem, maks. 3). Po Zamknij dzień raport Z trafia wtedy automatycznie na ten adres, obok wydrukowanego paragonu. Puste = bez wysyłki, jak zawsze.
- Wysyłka odbywa się w tle, dzięki czemu wolny serwer poczty nie opóźnia zamknięcia dnia.
- Nie udało się lub potrzebna ponownie: Raport → Wcześniejsze raporty Z → (raport) → Wyślij ponownie e-mailem (z oznaczeniem KOPIA).
Podsumowanie dnia (opcjonalnie)
Jeśli w Wysyłaj raport Z na jest adres, pod nim znajduje się pole Z krótkim podsumowaniem dnia na początku wiadomości (domyślnie wyłączone). Włączone = na początku wiadomości z raportem Z kilka linijek prostym językiem, wyłącznie z własnych danych kasy (bez AI, nic nie wychodzi na zewnątrz):
- przychód, paragony i goście oraz wydatki na paragon, w porównaniu z tym samym okresem tydzień wcześniej (w procentach); jeśli wtedy nic nie było, jest to zaznaczone;
- 5 najlepiej sprzedających się produktów oraz co się wyróżnia: produkty, których sprzedano co najmniej 3 więcej lub mniej niż w poprzednim tygodniu;
- liczba storn (w porównaniu z poprzednim tygodniem) i najbardziej ruchliwa godzina (paragony i przychód).
Sam raport Z (paragon i e-mail) pozostaje dokładnie taki sam. Podgląd z dzisiaj pokazuje podsumowanie od ostatniego zamknięcia dnia do teraz. Podsumowanie jest po niderlandzku, tak jak e-mail z raportem Z.
Pulpit
Zakładka Pulpit w Raporcie (uprawnienie Obrót w okresie), tylko do odczytu:
- Przychód na godzinę jako wykres: wybrany dzień (niebieski) obok tego samego dnia tydzień wcześniej (szary). Dzisiejszy dzień jest porównywany z poprzednim tygodniem do tej samej godziny, aby procent był rzetelny. Za pomocą ◀ ▶ lub daty wybierasz inny dzień.
- Kafelki: obrót (± % względem poprzedniego tygodnia), paragony i średnio na paragon, średnie wydatki na gościa (tylko na miejscu; na wynos/dostawa się nie liczą) dla tego dnia i dla wybranego okresu.
- Top 10 produktów i najbardziej ruchliwe godziny z ostatnich 7, 28 lub 90 dni. Najbardziej ruchliwe godziny to mapa cieplna dzień tygodnia × godzina (średni obrót na dzień otwarcia) z trzema najruchliwszymi godzinami nad nią – przydatne przy układaniu grafiku.
Sprzedane karty podarunkowe nie liczą się do obrotu, a rabaty i nagłówki menu nie trafiają do top 10 (tak jak w innych raportach). Dzień trwa od 00:00 do 24:00.
Dodatkowe raporty
Trzy dodatkowe zakładki w Raport, każda włączana osobno w Ustawienia → Lokal → Zarządzanie i raporty → Dodatkowe raporty (domyślnie wył.: wtedy brak zakładki). Wymagają tego samego uprawnienia co Obrót w okresie i służą tylko do odczytu. Okres: ten tydzień, poprzedni tydzień, ten miesiąc, poprzedni miesiąc, ostatnie 90 dni, ten rok lub własny wybór (najwyżej nieco ponad rok).
- Menu engineering: dla każdego produktu, jak często był sprzedawany (udział we wszystkich sprzedanych sztukach) w zestawieniu z tym, ile przynosi na sztuce (marża = cena sprzedaży bez VAT minus koszt własny). Każdy produkt dostaje klasyfikację: Gwiazda (popularny i wysoka marża: zostawić bez zmian), Koń roboczy (popularny, niska marża: nieco podnieść cenę lub obniżyć koszt), Zagadka (mało sprzedawany, wysoka marża: lepiej wyeksponować) i Pies (mało sprzedawany, niska marża: usunąć z menu lub zastąpić). Popularny = co najmniej 70% równego udziału; wysoka marża = co najmniej średnia marża na sprzedaną sztukę. Koszt własny pochodzi z Apicbase (Ustawienia → Receptury), w przeciwnym razie z ceny zakupu produktu (cena zakupu za opakowanie podzielona przez liczbę sztuk w opakowaniu), a w przeciwnym razie z receptury ze składnikami mającymi cenę zakupu (Magazyn). Produkty bez kosztu własnego są osobno na dole. Opcjonalnie według grupy produktów (
?groep=). - Promocje i kody: dla każdego kodu rabatowego, każdej akcji z Marketingu (kody osobiste łącznie) i każdego happy hour: ile razy użyto (paragony; przy happy hour także sztuki), ile rabatu, obrót i średnia na paragon.
- Straty: co odpisano z magazynu (Ustawienia → Magazyn, Odpisz (−)), według powodu (wielkość liter i spacje nie mają znaczenia) oraz według produktu lub składnika, z wartością według kosztu własnego; a także co anulowano po wysłaniu do kuchni lub baru, z wartością sprzedaży i kosztu.
Rabaty
Kierownik lub administrator widzi na ekranie zamówienia obok sumy przycisk % Rabat:
- na cały paragon lub na jedną pozycję;
- jako procent (10, 15, 20, 25, 50, 100% = gratis lub własna wartość) albo jako stała kwota;
- zawsze z powodem (Personel, Stały klient, Reklamacja, Promocja, Użytek własny lub wpisany samodzielnie).
Rabat pojawia się jako osobna pozycja na paragonie ("Rabat 10%", z powodem pod spodem) z tą samą stawką VAT, dzięki czemu suma i zestawienie VAT się zgadzają. Na całym paragonie rabat jest dzielony według stawek VAT. Usuwanie: stuknij kwotę pozycji rabatu. Jeśli pozycja z własnym rabatem zostanie anulowana, ten rabat przepada razem z nią. Gdy usuniesz produkt z paragonu z rabatem procentowym na cały paragon, kasa przelicza ten rabat od tego, co zostało (w Belgii UC226); stała kwota pozostaje i przy rozliczeniu jest ponownie rozdzielana na pozycje. Jeśli przy rabacie 100% nie ma nic do zapłaty, zamknij przez "Zamknij (nic do zapłaty)". Rabaty widnieją w dzienniku zdarzeń oraz w raporcie X/Z i zestawieniu okresowym jako "w tym rabat". Przy zwrocie paragonu z rabatem rabat jest uwzględniany proporcjonalnie.
Kody rabatowe (opcjonalnie)
Kody z rabatem na cały paragon, np. na promocję (ZOMER10). Włączasz w Ustawienia → Lokal → Kody rabatowe (domyślnie wyłączone); kody tworzysz w Ustawienia → Kody rabatowe (uprawnienie Zarządzanie produktami):
- rabat procentowy lub stała kwota, opcjonalnie z minimalną kwotą zamówienia, ważnością od/do i maksymalną liczbą użyć (puste = bez limitu);
- dla każdego kodu: w kasie i/lub w sklepie internetowym (kasa wysyła kody razem z menu; użycia liczą się łącznie dla kasy i sklepu).
Na ekranie zamówień jest przycisk Kod rabatowy (każdy może wpisać kod; kod jest wcześniej utworzony przez lokal). Rabat pojawia się na paragonie jako pozycja "Kod rabatowy KOD", rozdzielony na stawki VAT; jeden kod na paragon i nie po (częściowej) zapłacie. Jeśli usuniesz pozycję lub zamówienie zostanie anulowane, użycie przestaje się liczyć. Usunięcie użytego kodu wyłącza go (raporty pozostają poprawne). Wszystko jest w dzienniku zdarzeń (Kod rabatowy). Kod: lib/kortingscodes.ts, routes/kortingscodes.ts, Kortingscodebeheer.tsx, KortingscodeDialoog.tsx.
Nie ma ich na liście w Ustawienia → Kody rabatowe (jest za to liczba na promocję w Raport → Marketing) i trafiają do sklepu internetowego, dopóki są ważne i niewykorzystane.
Raporty i zamknięcie dnia
Przycisk Raport na górnym pasku:
- Stan pośredni (X): obrót, VAT, formy płatności, podział na grupy i szuflada kasowa od ostatniego zamknięcia dnia. Można też wydrukować. Niczego nie zamyka.
- Zamknij dzień (Z) (kierownik lub administrator): policz szufladę kasową (pokazywana jest różnica względem pogotowia kasowego + gotówki), wpisz pogotowie kasowe na następny dzień, zamknij. Raport Z otrzymuje kolejny numer, jest zapisywany i drukowany na drukarce paragonów. Nie jest możliwe, dopóki są otwarte zamówienia. Opcjonalnie: Liczenie według monet i banknotów (pomoc w liczeniu) wpisuje za ciebie policzoną kwotę; zestawienie monet/banknotów trafia wtedy też do raportu Z. Ręczne wpisanie sumy działa jak zawsze.
- Szuflada kasowa (kierownik lub administrator, opcjonalnie):
- Wypłata z szuflady (wpłata do banku, wydatek, wypłacony napiwek) lub wpłata do szuflady (drobne) z kwotą i powodem. Szuflada się otwiera i drukowany jest paragon z miejscem na parafkę do przechowania przy pieniądzach (można wyłączyć). Uwzględniane jest to w oczekiwane w szufladzie i wykazywane pozycja po pozycji w raporcie X i Z.
- Wpisanie lub korekta dzisiejszej kwoty początkowej (zwykle wpisujesz ją przy zamknięciu dnia na następny dzień).
- Otwórz szufladę bez sprzedaży, z powodem.
- Wszystko trafia do dziennika zdarzeń. Jeśli z tego nie korzystasz, zamknięcie dnia działa dokładnie jak dotychczas (pogotowie kasowe + gotówka = oczekiwane w szufladzie).
- Pod obrotem widnieje liczba gości (osoby z rozliczonych zamówień) i średnio na gościa, także na wydrukowanym raporcie X/Z.
- Obrót w okresie (kierownik lub administrator): dziś, wczoraj, ten/poprzedni tydzień, ten/poprzedni miesiąc, ten rok lub własny zakres od–do. Pokazuje obrót, VAT, formy płatności, napiwki, gości, grupy produktów, dzień po dniu i według pracownika. Przez Eksportuj (Excel/CSV) otrzymujesz plik dla księgowego (średniki i przecinki dziesiętne, otwiera się bezpośrednio w holenderskim Excelu).
- Wcześniejsze raporty Z: lista z obrotem i różnicą kasową; otwieranie i drukowanie kopii (z oznaczeniem "KOPIA").
Eksport do księgowości
Raport → Obrót w okresie → Eksport do księgowości (dziennik) (uprawnienie Obrót w okresie) tworzy plik CSV z jednym zapisem księgowym na dzień, gotowy do wczytania w e-Boekhouden, Exact, SnelStart, Twinfield itp. (przez ich import CSV lub zapisów memoriałowych), albo w jednym z poniższych formatów (UBL, XAF i gotowe formaty dla 14 programów).
Na każdy dzień jeden dowód księgowy (KASSA-JJJJMMDD), który zawsze się bilansuje (Winien = Ma):
| Strona | Co |
|---|---|
| Winien | wpływy według formy płatności (gotówka, karta, karta podarunkowa, online, inne), łącznie z napiwkami |
| Ma | obrót według stawki VAT (netto) i należny VAT według stawki |
| Ma | napiwki (do wypłaty personelowi, nie stanowią obrotu) |
| +/- | różnica z zaokrągleń (zaokrąglanie gotówki do 5 centów) |
| +/- | wpłaty/wypłaty z szuflady (obsługa kasy) w korespondencji z kontem przejściowym oraz różnica kasowa z raportu Z |
Zwroty i rabaty są już uwzględnione w paragonach i obniżają obrót. Kolumny: Datum; Boekstuk; Dagboek; Rekening; Omschrijving; Debet; Credit; Btw-code; Btw-% (średniki, przecinki dziesiętne). Po pobraniu kasa informuje, czy są dni, które się nie bilansują lub mają różnicę większą niż zaokrąglenie.
Obok przycisku wybierasz format (wybór jest zapamiętywany w przeglądarce). Ten sam dziennik, ale sformatowany tak, by program mógł go od razu wczytać. Lista pokazuje tylko formaty dla kraju lokalu (Ustawienia → Lokal), najpierw standardy (CSV, UBL, XAF), potem programy alfabetycznie:
| Format | Plik | Wczytanie w programie |
|---|---|---|
| Ogólny (CSV) | journaal_…csv | każdy program z importem CSV/memoriałowym (przypisz kolumny) |
| UBL 2.1 / Peppol (XML), NL i BE | journaal_…_ubl.xml (więcej dni: .zip) | za każdy dzień faktura "wpływy dzienne" na Kassaverkopen (już opłacona) zgodnie z Peppol BIS Billing 3.0, z jedną pozycją na stawkę VAT i kontem przychodu w AccountingCost; tylko obrót i VAT (metody płatności, napiwki, zaokrąglenia, szuflada i różnice kasowe nie należą do faktury). Do przesłania m.in. do Adsolut, Billit, BUNNI, DigiBoox, Expert/M, Moneybird, Popsy, Rompslomp, Storecove i TriFact365; nie do wysyłania przez sieć Peppol. Nazwa, numer VAT i adres pochodzą z Ustawienia → Lokal |
| XML Auditfile Financieel (XAF 4.0), NL | journaal_…_xaf.xaf | plik audytowy holenderskiej administracji podatkowej (Belastingdienst) (XSD XmlAuditfileFinancieel4.0): jeden plik za okres, księga główna, kody VAT, okresy i za każdy dzień transakcja memoriałowa; do wczytania m.in. w Caseware, Exact Reeleezee i Visma Cash |
| AccountView (XML), NL | journaal_…_accountview.xml | Operacje XML (VFPData, jeden transact na wiersz zapisu z dj_code, period, inv_date, inv_nr, acct_nr, trn_desc i amount: winien dodatnio, ma ujemnie), jeden dowód dziennie w zapisie memoriałowym; wczytanie przez definicję importu (Document → Importeren → Importdefinitie aanmaken, typ XML), nazwy pól są takie jak w samym AccountView, więc wystarczy raz przypisać je 1:1. Zleć sprawdzenie pierwszego importu |
| AFAS Profit (XML) | journaal_…_afas.xml | XML dla UpdateConnector FiEntries (operacje finansowe), jedno księgowanie na dzień z rokiem, okresem, administracją i dziennikiem; wczytaj w Profit przez Importuj → XML; wpisz numer administracji (domyślnie 1) |
| Asperion (CSV), NL | journaal_…_asperion.csv | format FMUTA (Extra → Import financiële mutaties), za każdy dzień wiersz nagłówka i wiersze zapisów; definicję importu ustawia Asperion przez helpdesk |
| Raport dzienny (HTML), NL i BE | journaal_…_dagstaat.html | czytelny raport dzienny za każdy dzień (obrót według stawki VAT, metody płatności, napiwki, różnice kasowe) i sumy; do wydruku jako PDF lub wysłania e-mailem, dla programów bez importu (Accountable, Dext, Dexxter, Jortt, Kleisteen, MoneyMonk) |
| e-Boekhouden.nl (CSV) | journaal_…_eboekhouden.csv | Data; Nr dowodu; Opis; Konto księgowe; Kwota (winien dodatnio, ma ujemnie); kod VAT GEEN (VAT jest już na kontach VAT); Import → Operacje, rodzaj memoriał |
| Exact Online (XML) | journaal_…_exact.xml | eExact-XML (temat GLTransactions): jedno księgowanie memoriałowe na dzień (typ 90) w dzienniku; Import/eksport → Importuj XML |
| InformerOnline (TXT), NL | journaal_…_informer.txt | zapisy memoriałowe rozdzielone tabulatorami (Geavanceerd → Memoriaal → uploaden); dziennik musi być numerem 1–99 (w przeciwnym razie 90) |
| KING ERP (XML), NL | journaal_…_king.xml | KING_JOURNAAL: jedna partia księgowań (nieostateczna) z jednym zapisem księgowym na dzień |
| KOMAS (CSV), NL | journaal_…_komas.csv | format swobodny KOMAS (0401 Importeren journaalposten): Datum; Grootboek; Omschrijving; Bedrag |
| Odoo (CSV), NL i BE | journaal_…_odoo.csv | Księgowość → Journal Entries → Import records; dziennik i konto według nazwy lub kodu |
| Sage BOB 50 (Excel), BE | journaal_…_bob.xlsx | Importation de données externes → Opérations diverses (kolumny przypisuje się jeden raz) |
| SAP Business One (ZIP), NL i BE | journaal_…_sapb1.zip | Data Transfer Workbench, Journal Entries: JournalEntries.csv i JournalEntries_Lines.csv |
| SnelStart (CSV) | journaal_…_snelstart.csv | Data; Nr dowodu; Opis; Konto księgowe; Winien; Ma (dd-mm-rrrr, przecinek dziesiętny, bez BOM); import memoriałowy, dziennik wybierasz przy wczytywaniu |
| Twinfield (XML) | journaal_…_twinfield.xml | transakcje dziennika jako szkic (destiny="temporary"), księgowy zatwierdza je ostatecznie; wpisz kod administracji (puste = administracja, do której importujesz) |
| Winbooks (CSV), BE | journaal_…_winbooks.csv | K_DOC.CSV, za każdy dzień jeden dokument w dzienniku (Winbooks sam nadaje numery) |
| Yuki (XML) | journaal_…_yuki.xml | Journal-XML (GeneralJournal), jedno księgowanie memoriałowe na dzień, taka sama struktura jak integracja na żywo; ID administracji opcjonalne |
Przegląd: który program księgowy w jaki sposób
Według segmentu, alfabetycznie. NL/BE = w którym kraju działa program: w Ustawienia → Księgowość → Program księgowy widzisz tylko programy dla kraju lokalu (programy holenderskie nie działają w Belgii i odwrotnie). Na żywo = kasa sama księguje każdego dnia (wybór w Ustawienia → Księgowość → Program księgowy); na wniosek = istnieje API, ale najpierw wymaga ono rejestracji partnerskiej lub zatwierdzenia przez dostawcę (daj nam znać). Plik = format w Eksport do księgowości. Gdzie możliwe jest jedno i drugie, możesz używać obu. Lista znajduje się w packages/shared/src/boekhoudcatalogus.ts i pojawia się też w Ustawienia → Księgowość.
| Program | NL | BE | Na żywo | Plik | Uwaga |
|---|---|---|---|---|---|
| Małe firmy i samozatrudnieni | |||||
| Accountable | – | ✓ | – | Raport dzienny (HTML, do PDF lub e-maila) | |
| AccountView (Visma) | ✓ | – | na wniosek | AccountView (XML), Ogólny (CSV) | Plik: operacje XML dla definicji importu (Document → Importeren); ogólny CSV też działa z definicją importu. Na żywo przez API AccountView.Net po złożeniu wniosku w AccountView. |
| Acumulus | ✓ | – | ✓ | – | Na żywo jako opłacona faktura sprzedaży za każdy dzień, z jedną pozycją na stawkę VAT. |
| AFAS Profit | ✓ | – | ✓ | AFAS Profit (XML) | |
| Asperion | ✓ | – | na wniosek | Asperion (CSV) | Na żywo po rejestracji jako partner API w Asperion. |
| Billit | – | ✓ | na wniosek | UBL 2.1 / Peppol (XML) | Przesyłanie UBL przez Fast input; na żywo po zatwierdzeniu przez Billit. |
| BUNNI | ✓ | – | – | UBL 2.1 / Peppol (XML) | Brak jeszcze publicznej dokumentacji API. |
| Dexxter | – | ✓ | – | Raport dzienny (HTML, do PDF lub e-maila) | |
| DigiBoox (Visma DigiBTW) | ✓ | – | – | UBL 2.1 / Peppol (XML) | |
| e-Boekhouden.nl | ✓ | – | – | e-Boekhouden.nl (CSV) | Również dla byłych klientów Ficsus. |
| Exact Online | ✓ | ✓ | ✓ | Exact Online (XML) | |
| Exact Reeleezee | ✓ | – | – | XML Auditfile Financieel (XAF 4.0) | |
| Horus | – | ✓ | ✓ | – | |
| InformerOnline | ✓ | – | – | InformerOnline (TXT) | |
| Jortt | ✓ | – | – | Raport dzienny (HTML, do PDF lub e-maila) | Brak importu: zaksięguj obrót dzienny jako przychód z raportem dziennym jako załącznikiem. |
| KING | ✓ | – | na wniosek | KING ERP (XML) | Na żywo po rejestracji partnerskiej w KING Software. |
| Kleisteen | ✓ | – | – | Raport dzienny (HTML, do PDF lub e-maila) | |
| KOMAS (Adfinis) | ✓ | – | – | KOMAS (CSV) | |
| Minox | ✓ | – | na wniosek | – | Na żywo po połączeniu partnerskim przez Minox. |
| Moneybird | ✓ | – | ✓ | UBL 2.1 / Peppol (XML) | |
| MoneyMonk | ✓ | – | – | Raport dzienny (HTML, do PDF lub e-maila) | MoneyMonk otrzyma w 2026 API do integracji. |
| Octopus | – | ✓ | na wniosek | – | Na żywo po uzyskaniu software house ID w Octopus. |
| Popsy / Allegro | – | ✓ | – | UBL 2.1 / Peppol (XML) | |
| Rompslomp | ✓ | – | – | UBL 2.1 / Peppol (XML) | |
| Sage BOB 50 | – | ✓ | – | Sage BOB 50 (Excel) | |
| Silvasoft | ✓ | ✓ | ✓ | – | Na żywo jako zapis sprzedaży za każdy dzień, z jedną pozycją na stawkę VAT; metody płatności, napiwki i różnice kasowe nie są przekazywane. |
| SnelStart | ✓ | – | ✓ | SnelStart (CSV) | |
| Twinfield | ✓ | – | ✓ | Twinfield (XML) | |
| Visma Cash | ✓ | – | na wniosek | XML Auditfile Financieel (XAF 4.0) | API z kluczem z CASHWeb; format rekordów dla zapisów księgowych jest jeszcze potwierdzany. |
| Visma eAccounting | ✓ | – | na wniosek | – | Na żywo po zatwierdzeniu przez Visma (rejestracja partnerska). |
| Winbooks | – | ✓ | na wniosek | Winbooks (CSV) | |
| Wolters Kluwer Adsolut | – | ✓ | na wniosek | UBL 2.1 / Peppol (XML) | UBL z kontem przychodu w każdej pozycji; włącz w Adsolut "grootboekrekening verwerken bij verkopen". |
| Wolters Kluwer Expert/M | – | ✓ | – | UBL 2.1 / Peppol (XML) | |
| Yuki | ✓ | ✓ | ✓ | Yuki (XML) | |
| Międzynarodowe | |||||
| QuickBooks Online | ✓ | ✓ | ✓ | ogólny CSV | Brak wersji holenderskiej lub belgijskiej: sprawdź ustawienia VAT. |
| Xero | ✓ | ✓ | ✓ | ogólny CSV | |
| Zoho Books | ✓ | ✓ | ✓ | ogólny CSV | |
| Enterprise i sieci | |||||
| Exact Globe+ | ✓ | ✓ | – | Exact Online (XML) | Ten sam XML co Exact Online; zleć sprawdzenie pierwszego importu. |
| Microsoft Dynamics 365 Business Central | ✓ | ✓ | ✓ | – | |
| Odoo | ✓ | ✓ | ✓ | Odoo (CSV) | |
| Oracle NetSuite | ✓ | ✓ | na wniosek | ogólny CSV | |
| SAP Business One | ✓ | ✓ | ✓ | SAP Business One (ZIP) | |
| Unit4 ERPx | ✓ | ✓ | – | ogólny CSV | |
| Platformy i agregatory | |||||
| Apicbase | ✓ | ✓ | na wniosek | – | Sprzedaż na paragon dla magazynu i food cost: integracja w Ustawienia → Receptury (nie jako program księgowy). |
| Caseware | ✓ | ✓ | – | XML Auditfile Financieel (XAF 4.0) | |
| Combidesk | ✓ | – | na wniosek | – | Combidesk sam buduje i utrzymuje integrację (m.in. z Exact, Moneybird, SnelStart i Twinfield); na wniosek jako partner. |
| Dext | ✓ | ✓ | – | Raport dzienny (HTML, do PDF lub e-maila) | Wyślij raport dzienny (PDF) e-mailem na swój adres Dext. |
| Jamix | ✓ | ✓ | na wniosek | – | Sprzedaż dla stanów magazynowych i food cost przez interfejs JAPI firmy Jamix; rozwiązanie indywidualne na wniosek u Jamix. |
| Omniboost | ✓ | ✓ | na wniosek | – | Przez program partnerski Omniboost łączy dalej z wieloma systemami księgowymi i hotelowymi. |
| Storecove (Peppol) | ✓ | ✓ | na wniosek | UBL 2.1 / Peppol (XML) | |
| TriFact365 | ✓ | – | – | UBL 2.1 / Peppol (XML), Raport dzienny (HTML, do PDF lub e-maila) | |
| Każdy inny program | ✓ | ✓ | – | ogólny CSV, UBL lub XAF (NL) |
Poproś księgowego, by sprawdził pierwszy import. Format jest w packages/shared/src/journaalexport.ts (z testami).
Ustawienia → Księgowość (uprawnienie Ustawienia lokalu, płatności i drukarek): kod dziennika (domyślnie MEM) i konto księgi głównej dla każdej pozycji. Puste = konto przykładowe (NL: 8000/8010/8020 obrót, 1500/1510 VAT, 1000 kasa, 1100 karta; BE: 7000xx obrót, 451000 VAT, 570000 kasa). Niech księgowy wpisze właściwe konta.
Integracja z programem księgowym
Integracje na żywo z Acumulus, AFAS Profit, Microsoft Dynamics 365 Business Central, Exact Online, Horus, Moneybird, Odoo, QuickBooks Online, SAP Business One, Silvasoft, SnelStart, Twinfield, Xero, Yuki i Zoho Books. Po każdym dniu kasa księguje ten sam dziennik co eksport powyżej (przychód i VAT według stawki, metody płatności, napiwek, zaokrąglenie, szuflada i różnica kasowa) jako księgowanie memoriałowe w wybranym programie, z dziennikiem i kontami księgowymi z Ustawienia → Księgowość. Włączony jest zawsze najwyżej jeden program.
- Lista jest podzielona według segmentu (małe firmy i samozatrudnieni, międzynarodowe, enterprise i sieci) i pokazuje tylko programy, które działają w kraju lokalu; serwer odrzuca program z innego kraju (400) i nie księguje nim (409). Tuż pod nią administrator otrzymuje dokładnie pola tego programu; połączenie i lista zaksięgowanych dni są pod kontami księgowymi, a pod nimi przegląd wszystkich programów dla tego kraju. Jeśli podczas aktualizacji włączone były dwa (w starszej wersji było to możliwe), Exact Online pozostaje włączony, a drugi program zostaje wyłączony.
| Program | Kraj | Połączenie przez | Co księguje kasa |
|---|---|---|---|
| Acumulus | NL | kod umowy, użytkownik i hasło użytkownika API | za każdy dzień opłacona faktura sprzedaży z jedną pozycją na stawkę VAT; błędy Acumulus wysyła e-mailem na ACUMULUS_FOUTMAIL |
| AFAS Profit | NL | środowisko, token, administracja | zapis memoriałowy (FiEntries) |
| Business Central | NL, BE | dzierżawa (tenant), środowisko, firma, identyfikator klienta i klucz tajny aplikacji Microsoft Entra (API.ReadWrite.All) | pozycje w dzienniku ogólnym z kodem z pola Dziennik |
| Exact Online | NL, BE | logowanie (OAuth, własna aplikacja: zobacz Exact Online poniżej; Belgia: start.exactonline.be) | księgowanie memoriałowe w dzienniku (np. 90) |
| Horus | BE | logowanie (OAuth, aplikacja poniżej), opcjonalnie teczka | operacja różna |
| Moneybird | NL | token API, opcjonalnie administracja | zapis memoriałowy (general journal document) |
| Odoo | NL, BE | adres, baza danych, użytkownik, klucz API | zapis w dzienniku o krótkim kodzie (np. MISC) |
| QuickBooks Online | NL, BE | logowanie (OAuth, aplikacja poniżej; QUICKBOOKS_OMGEVING) | journal entry; konta według numeru |
| SAP Business One | NL, BE | adres Service Layer, baza danych, użytkownik, hasło | zapis w dzienniku (JournalEntries) |
| Silvasoft | NL, BE | użytkownik i klucz API | zapis sprzedaży na kontrahenta Kassaverkopen, jedna pozycja na stawkę VAT (metody płatności, napiwki i różnice kasowe nie są przekazywane) |
| SnelStart | NL | klucz integracji i klucz subskrypcji | zapis memoriałowy |
| Twinfield | NL | logowanie (OAuth, aplikacja poniżej), opcjonalnie biuro | transakcja w dzienniku |
| Xero | NL, BE | logowanie (OAuth, aplikacja poniżej), opcjonalnie organizacja | manual journal; konta według kodu |
| Yuki | NL, BE | klucz API, opcjonalnie administracja | zapis memoriałowy (GeneralJournal) |
| Zoho Books | NL, BE | logowanie (OAuth, aplikacja poniżej; domyślnie europejskie centrum danych), opcjonalnie organizacja | zapis w dzienniku; konta według kodu |
- OAuth (Horus, QuickBooks, Twinfield, Xero, Zoho): jednorazowa rejestracja aplikacji w programie.
- W przypadku kilku programów pól API nie da się w pełni potwierdzić na podstawie publicznej dokumentacji (m.in. Horus, Zoho Books, znak w Business Central i struktura w SAP Business One): pierwsze księgowanie zawsze zlecaj do sprawdzenia księgowemu.
- Exact Online: księguje dziennik jako księgowanie memoriałowe w wybranej administracji.
- Wybierasz w Ustawienia → Księgowość → Program księgowy → Exact Online (domyślnie Wył.). Belgia: kasa automatycznie używa
start.exactonline.be. - Ustawienia → Księgowość → Exact Online: Połącz z Exact Online otwiera logowanie do Exact; potem widać, z którą administracją kasa jest połączona. W polu Dziennik wpisz kod dziennika memoriałowego w Exact (np.
90) i upewnij się, że konta księgowe istnieją w Exact. - Kiedy: zaraz po Zamknij dzień i dalej co godzinę, dla wszystkich minionych dni (do wczoraj włącznie) od Księguj od (domyślnie dzień połączenia; wcześniejsze dni księgowy już ma). Każdy dzień jeden raz; dni bez przychodu są pomijane. Zaksięguj teraz działa zawsze.
- Błędy (konto nie istnieje w Exact, dzień się nie bilansuje, brak internetu) są pokazane z przyczyną przy danym dniu; kasa spróbuje ponownie później, a kolejne dni czekają, aż się uda (tak kolejność pozostaje poprawna). W dzienniku zdarzeń: "exact_geboekt".
- VAT jest na kontach księgowych VAT (bez kodu VAT, tak jak w eksporcie). Poproś księgowego, by sprawdził pierwsze księgowania.
- Exact: połączenie działa, dopóki kasa z niego korzysta (co 10 minut nowy token, za każdym razem nowy refresh token). Jeśli zostanie cofnięte lub długo nieużywane, kasa poprosi o Połącz ponownie. Rozłącz usuwa tokeny; to, co zaksięgowano, zostaje.
- Wybierasz w Ustawienia → Księgowość → Program księgowy → Exact Online (domyślnie Wył.). Belgia: kasa automatycznie używa
- AFAS Profit: numer środowiska (np.
12345; produkcja, test lub akceptacja), token konektora aplikacji z UpdateConnector FiEntries i numer administracji (domyślnie 1). Dziennik = kod dziennika memoriałowego w AFAS (np.90). - Dziennik = numer lub nazwa dziennika memoriałowego; jeśli jest tylko jeden, kasa bierze ten. Konta księgowe muszą być numerami.
- Twinfield: logowanie przez OAuth. Bez tej aplikacji kasa nie może się połączyć. Kasa wyszukuje klaster i administrację (puste = pierwsza); dziennik = kod dziennika memoriałowego (np.
MEMO). Księguje ostatecznie (destiny="final"). - Yuki: klucz API administracji (Yuki → Ustawienia → Usługi sieciowe); puste pole administracji = pierwsza dla tego klucza. Księguje memoriał (GeneralJournal); Yuki nie używa kodu dziennika.
- Kiedy: zaraz po Zamknij dzień i co godzinę, za wszystkie minione dni od Księguj od (domyślnie dzień połączenia; przy innym programie znów od tego dnia). Każdy dzień raz na program; dni bez przychodu są pomijane; przy błędzie przyczyna jest pokazana przy danym dniu, a kolejne dni czekają. Zaksięguj teraz działa zawsze. W dzienniku zdarzeń: "boekhoudpakket_geboekt".
- Klucze i tokeny nigdy nie są wyświetlane (przy ponownym łączeniu pozostaw puste = zachowaj). Na kopii kasy w portalu nic nie jest księgowane.
Plik audytowy kasy (XAA)
Dla lokali w Holandii w Raport → Obrót w okresie obok eksportu do księgowości jest przycisk Plik audytowy kasy (XAA): XML Auditfile Afrekensystemen 3.2 holenderskiej administracji podatkowej (Belastingdienst) i XML Platform (SRA) za wybrany okres (maksymalnie nieco ponad rok; uprawnienie Obrót w okresie). To plik, który Belastingdienst zaleca do przekazywania danych kasy podczas kontroli lub księgowemu; zasady opisuje Handreiking voor een betrouwbaar afrekensysteem (Wytyczne dotyczące wiarygodnego systemu kasowego) (docs/xaa).
W pliku (auditfile_kassa_<van>_tm_<tot>.xml, schemat docs/xaa/XmlAuditfileAfrekensystemen3.2.xsd):
- dane podstawowe: lokal (nazwa, numer VAT, adres), kody VAT, wszyscy pracownicy (z rolą i datą utworzenia; plus
SYSTEEMdla tego, co kasa robi sama, np. sklep internetowy i integracje) oraz wszystkie artykuły z ich grupą; - zdarzenia: wszystko z dziennika zdarzeń w danym okresie (logowanie i wylogowanie, otwarcie szuflady kasowej, zamknięcie dnia, zmiana ustawień i cen, storno, rabat, zwrot, kopia paragonu, wejście i wyjście ...) oraz otwarcie dnia kasowego z pogotowiem kasowym, każde z kodem Belastingdienst (18001 logowanie, 18003 szuflada, 18006 zmiana instalacji, 18008 raport Z, w pozostałych przypadkach 18999);
- transakcje kasowe: każdy paragon (sprzedaż, zwrot i proforma, z numerem paragonu, pracownikiem i statusem fiskalnym, jeśli nie jest w porządku) ze wszystkimi pozycjami (artykuł, grupa, ilość, cena, VAT; także rabaty, karty podarunkowe, nagłówki menu i pozycje anulowane przed płatnością, te z kwotą 0), VAT według stawki, zaokrąglenie, płatności według formy płatności (gotówka, karta, karta podarunkowa, online; napiwek osobno) oraz wpłaty do szuflady kasowej i wypłaty z niej.
Kwoty są dodatnie z C (sprzedaż, wpływ) lub D (zwrot, wypłata); czas według czasu holenderskiego z przesunięciem. Wszystkie klucze to identyfikatory z bazy danych bez myślników, więc można je odnaleźć w kasie.
Podpisywanie (rozdział 6 specyfikacji): jeśli Optimum POS skonfigurowało certyfikat, plik audytowy jest podpisany i umieszczony w kopercie (XML Signature), a plik nazywa się …_ondertekend.xml; w przeciwnym razie jest to zwykły plik audytowy, o czym kasa informuje przy pobieraniu.
Płatność na fakturę
Klienci firmowi (firma, która co tydzień odbiera lunch, hotel, stowarzyszenie) kupują na fakturę i płacą później, na podstawie faktury. Włącz to w Ustawienia → Faktury → Płatność na fakturę (tylko przy włączonych Fakturach; domyślnie wyłączone).
- Klienci: w Raport → Na fakturę dodajesz klientów firmowych z danymi do faktury (nazwa, adres, numer VAT, numer KvK/firmy, identyfikator Peppol, e-mail), opcjonalnie limit kredytowy (ile maksymalnie może pozostawać otwarte) i własny okres płatności (w przeciwnym razie ten z faktur) oraz czy faktura jest wysyłana od razu.
- Rozliczenie: metoda płatności Na fakturę, wybierz klienta (z tym, co jest już otwarte, i limitem). Paragon to zwykła sprzedaż: obrót i VAT w tym dniu, w Belgii normalnie przez czarną skrzynkę, na paragonie "Na fakturę". Kasa od razu tworzy fakturę (UBL/Peppol i do wydruku) na kwotę, która pozostaje otwarta, z terminem płatności i wysyła ją zgodnie z ustawieniami faktur (e-mail, Peppol przez Billit/Storecove/Banqup lub własny adres). Na fakturę to jedna kwota za resztę rachunku (wcześniej można zapłacić część w inny sposób), bez napiwku; karty podarunkowej nie można sprzedać na fakturę. Powyżej limitu kasa odmawia.
- Płatność: klient płaci w lokalu gotówką, kartą lub kartą podarunkową (Raport → Na fakturę → Płatność otrzymana; także częściowo). To nie jest nowa sprzedaż ani nowy paragon: gotówka trafia jako gotówka do szuflady (szuflada się otwiera), wszystko jest na raportach X i Z w Wpłaty za faktury. Gdy wszystko jest zapłacone, faktura ma status "zapłacona". Płatności online nie są tu uwzględnione.
- Przelew: jeśli w Dane na fakturze podano IBAN, pojawia się on na fakturze (i w UBL) z dopiskiem "Można też zapłacić w lokalu". Jeśli klient zapłacił przelewem, zapisz to przez Płatność otrzymana → Przelew (bank): nie w szufladzie, ale w raportach X i Z w pozycji Wpłaty za faktury. Bez IBAN widnieje "Do zapłaty w lokalu". W Belgii na fakturze i w UBL pojawia się ustrukturyzowany komunikat (+++123/4567/89012+++, z numeru faktury), aby bank przekazał go dalej.
- Bank: rozliczanie przelewów bez przepisywania, patrz niżej.
- Środki (pieniądze z góry): w Raport → Na fakturę → Wpłać środki wpłacasz pieniądze z góry na konto klienta, gotówką (szuflada się otwiera) lub kartą, np. na serię lunchów. Przy następnej sprzedaży na fakturę środki są najpierw odejmowane od faktury; jeśli faktura jest wyższa, reszta pozostaje do zapłaty. Saldo widnieje przy kliencie (saldo € ...), na raportach X i Z w Wpłaty za faktury (Wpłata środków, Ze środków klienta) oraz w zapisie księgowym jako otrzymane z góry (domyślnie 1640 / 460000). W Belgii wpłata trafia do czarnej skrzynki jako wpłata pieniędzy (signMoneyInOut) (UC4100).
- Faktura zbiorcza (dla klienta, domyślnie wyłączona): przy opcji Jedna faktura za wszystkie paragony klient przy sprzedaży na rachunek nie dostaje jeszcze faktury. Paragon pozostaje otwarty u klienta (Paragony jeszcze niezafakturowane, wlicza się do limitu) i można go już opłacić. Przyciskiem Utwórz fakturę zbiorczą (np. na koniec miesiąca) wszystkie otwarte paragony trafiają na jedną fakturę, każda pozycja poprzedzona numerem paragonu; to, co już zapłacone, jest na niej oznaczone jako zapłacone. Zwrot na rachunek pojawia się jako pozycje ujemne. Wyłączone = jak zawsze faktura za każdą sprzedaż. W Belgii jedna faktura ze wszystkimi paragonami w czarnej skrzynce (signInvoice, UC4121 i UC4122).
- Belgia: jeśli klient później zapłaci za sprzedaż na fakturę (gotówką, kartą, kartą podarunkową lub przelewem), kasa zgłasza to jako korektę płatności na paragonie: z kredytu klienta na rzeczywistą metodę płatności (signPaymentCorrection, UC4118).
- Przegląd: otwarte faktury z terminem płatności (po terminie na czerwono), dla każdego klienta faktury i płatności. W Ustawienia → Faktury kolumna Otwarte.
- Księgowość: w dzienniku sprzedaż na fakturę trafia na Należności (domyślnie 1300 w Holandii, 400000 w Belgii; do ustawienia w Ustawienia → Księgowość), a płatność przechodzi z kasy, karty, karty podarunkowej lub banku (domyślnie 1050 / 550000) na należności. XAA: metoda płatności "Na fakturę".
- Uprawnienie: Rozliczanie na fakturę i przyjmowanie wpłat za faktury (domyślnie obsługa nie, kierownik tak). Wszystko jest zapisywane w dzienniku zdarzeń.
- Wyłączone: klienci, faktury i płatności zostają zachowane (także w kopii zapasowej); przełącznik jest uwzględniany w eksporcie konfiguracji, klienci nie (należą do jednego lokalu).
- W sklepie internetowym (opcjonalnie, domyślnie wyłączone): przy Także w sklepie internetowym klienci firmowi zamawiają online na fakturę (odbiór i dostawa). W Raport → Na fakturę tworzysz dla każdego klienta kod klienta i przekazujesz go klientowi; kasa przechowuje tylko zaszyfrowaną wersję, więc widzisz go tylko raz. Nowy kod klienta = stary przestaje działać; Usuń kod klienta = ten klient nie może już zamawiać online na fakturę. Sklep pilnuje limitu. W oknie Sklep internetowy kończysz takie zamówienie przyciskiem Zakończ (na fakturę): rozliczenie na fakturę, od razu z fakturą.
Bank: rozliczanie przelewów
W Raport → Na fakturę → Bank kasa szuka do każdego wpływu odpowiedniej faktury z płatnością na fakturę:
- Wczytaj wyciąg bankowy: plik z bankowości internetowej w formacie CAMT.053 (XML, wszystkie banki w Holandii i Belgii), MT940 (.sta/.940) lub CODA (.cod, Belgia). Tylko wpływy; dwukrotne wczytanie wyciągu nie tworzy zdublowanych pozycji.
- Wyszukiwanie: po numerze faktury lub ustrukturyzowanym komunikacie w tytule przelewu (pewne), w przeciwnym razie po kwocie (i nazwie): wtedy jest to propozycja. Każdą pozycję możesz rozliczyć (z propozycją lub inną fakturą), zignorować albo później rozliczyć mimo to. Rozliczenie = Przelew (bank) z datą bankową, nigdy więcej niż pozostało do zapłaty; nie w szufladzie.
- Połączenie z bankiem (PSD2, opcjonalne): w Ustawienia → Faktury → Połączenie z bankiem kasa sama co godzinę pobiera wpływy przez Enable Banking (banki w Holandii, Belgii i reszcie Europy). Wybierz bank i zaloguj się do niego (konto firmowe); zgoda obowiązuje 180 dni, potem trzeba połączyć ponownie. Rozłączenie cofa zgodę; wpływy pozostają. Bez umowy z Enable Banking działa to tylko dla własnych kont (restricted production).
- Automatyczne rozliczanie (domyślnie wyłączone): wpływ, który na pewno należy do faktury, kasa rozlicza od razu (także przy wczytywaniu).
- Uprawnienie: rozliczanie z Rozliczanie na fakturę i przyjmowanie płatności na fakturę; konfiguracja połączenia z bankiem z Ustawienia lokalu, płatności i drukarek. Wczytywanie, łączenie, pobieranie i rozliczanie są zapisywane w dzienniku zdarzeń.
- Wyłączone: gdy płatność na fakturę jest wyłączona, kasa niczego nie pobiera; wpływy i połączenie pozostają zapisane (także w kopii zapasowej).
Obraz z kamer w kasie
Wszystkie obrazy z kamer lokalu na jednej stronie, bez osobnego ekranu czy aplikacji. Włącz to w Ustawienia → Lokal → Ekrany i obsługa → Obraz z kamer w kasie (domyślnie wyłączone). Na górnym pasku pojawi się wtedy przycisk Kamery dla osób z uprawnieniem Podgląd obrazu z kamer (domyślnie kierownik i administrator; w Ustawienia → Uprawnienia można je włączyć także dla obsługi). Wszystkie kamery są obok siebie; dotknij kamery, aby zobaczyć duży obraz. Po wyłączeniu systemy kamer pozostają zapisane.
Także jako osobny ekran: Na osobnym ekranie otwiera http://<kassaserver>:3000/camera (np. monitor za barem), a Na tablecie lub telefonie pokazuje kod QR: pracownik skanuje go własnym tabletem lub telefonem i loguje się własnym kodem PIN (również tam tylko z uprawnieniem Podgląd obrazu z kamer). Na wąskim ekranie kamery są jedna pod drugą. Zobacz Drugi ekran na tablecie lub telefonie.
Administrator dodaje systemy kamer przyciskiem + System kamer, sprawdza je przyciskiem Testuj i wybiera dla każdej kamery nazwę oraz to, czy jest na stronie:
- Hikvision, Dahua, Axis i Reolink: kamera lub rejestrator (NVR) w sieci: adres IP (ewentualnie z
:poort), użytkownik (najlepiej tylko do podglądu) i kanały, np.1-8lub1,3,5. Logowanie przez Basic lub Digest; https z własnym certyfikatem jest dozwolony. - Synology Surveillance Station: adres serwera NAS (domyślnie port 5000, z https 5001) i użytkownik; Pobierz kamery pobiera kamery wraz z nazwami.
- UniFi Protect: adres konsoli (https) i konto lokalne; Pobierz kamery.
- ONVIF: dowolna kamera lub rejestrator z ONVIF (np. Hanwha, Bosch, Uniview, Annke); Pobierz kamery wyszukuje adres zdjęcia dla każdego źródła wideo.
- Własny adres internetowy: zdjęcie (JPEG), strumień MJPEG lub adres
rtsp://. - Strona internetowa systemu kamer (np. Frigate, Blue Iris lub go2rtc): otwiera się w kasie przyciskiem Kamery (lub w osobnym oknie).
Bez ffmpeg: zdjęcie.
Prywatność: kasa pobiera obrazy z systemu kamer i jedynie je przekazuje; nic nie jest zapisywane (żadnych nagrań, żadnej pamięci podręcznej). Użytkownicy i hasła pozostają na serwerze i nigdy nie pojawiają się na ekranie ani w dzienniku zdarzeń. W dzienniku zdarzeń widać, kto oglądał kamery. Same obrazy strona pobiera z kluczem (ważnym 12 godz., dopóki pracownik jest zalogowany), ponieważ obraz w przeglądarce nie może przesłać tokenu. Eksport konfiguracji obejmuje tylko wł./wył.
Dziennik wrażliwych działań
Raport → Dziennik zdarzeń (kierownik lub administrator) pokazuje, kto co zrobił i kiedy.
- Wybierz okres (dziś, wczoraj, ten tydzień, ten/poprzedni miesiąc lub własny zakres od–do), co chcesz zobaczyć (domyślnie Wrażliwe operacje, albo np. tylko storno i rabaty, lub Wszystko) i ewentualnie jednego pracownika.
- Na górze według pracownika: liczba i kwota storn (usunięte po zamówieniu), rabatów i zwrotów, a także ile razy szuflada była otwierana bez sprzedaży, wypłaty z szuflady, kopie paragonów, pro formy i ręczne płatności kartą. Dotknij nazwiska, aby zobaczyć tylko tego pracownika. Także liczba wpisanych błędnych kodów PIN.
- Poniżej każda operacja z czasem, osobą, rodzajem i czytelnym opisem (np. "2x Cola usunięte po zamówieniu € 5,60 · stolik 4 · powód: klient nie chciał").
- Pobierz (CSV) do Excela.
Co jest rejestrowane: storna, rabaty (i ich usuwanie), zwroty, kopie paragonów, pro formy, ręczne płatności kartą, otwieranie szuflady, wpłaty/wypłaty z szuflady, pogotowie kasowe, zamknięcie dnia, przenoszenie pozycji lub stolików, zamykanie pustych zamówień, zmiana ceny/nazwy/VAT produktów, nowe lub usunięte produkty, zmiany personelu i ustawień, korekta godzin pracy, logowanie i wylogowanie, błędne PIN-y oraz rejestracja wejścia i wyjścia. Przy płatności na rachunek również: klienci, sprzedaż i płatności na rachunek, import wyciągów bankowych, połączenie z bankiem i pobieranie danych z banku. Przy powiadomieniu o zbyt długim czasie realizacji: opóźnione zamówienia i wysłane przeprosiny. Przy Mailchimp lub Klaviyo: połączenie, wybór listy, rozłączenie i wypisania stamtąd. Przy sterowaniu muzyką: wł./wył. oraz dodawanie, zmiana i usuwanie źródeł muzyki. Przy obrazie z kamer: kto oglądał kamery (najwyżej raz na pół godziny na pracownika), wł./wył. oraz systemy kamer. Przy alertach: każdy alert, jego załatwienie oraz włączanie i wyłączanie.
Alerty: oszustwa i odchylenia
Ustawienia → Alerty. Dwie części, każdą włącza się osobno i domyślnie są wyłączone; wyłączenie zachowuje wszystkie alerty i ustawienia. Konfigurować może osoba z uprawnieniem Konfiguracja alertów (domyślnie kierownik i administrator); widzieć i załatwiać alerty może ten, kto może widzieć dziennik zdarzeń. Kasa sprawdza co 5 minut (oraz po kliknięciu Sprawdź teraz); nie na kasie zapasowej.
Wykrywanie oszustw i kradzieży (na pracownika, na dzień roboczy od 05:00), każda reguła osobno włączana lub wyłączana, z własnym progiem:
- storna po rachunku pro forma: usunięte, gdy gość widział już rachunek;
- storna, rabaty i zwroty: od określonej liczby razy lub łącznie od określonej kwoty (0 = bez kwoty);
- szuflada otwarta bez sprzedaży (przycisk Otwórz szufladę);
- rachunek długo otwarty: zamówiony, ale po określonej liczbie minut wciąż nieopłacony.
Powiadomienia o odchyleniach, w porównaniu z tym samym dniem tygodnia i tą samą porą w ostatnich tygodniach (domyślnie 4; dni bez przychodu się nie liczą, co najmniej dwa dni do porównania):
- przychód do tej pory niższy (i/lub wyższy) niż zwykle o więcej niż margines, dopiero od ustawionej kwoty zwykłego przychodu;
- czas w kuchni (od zamówienia do kuchni do gotowego na ekranie kuchennym) w ostatniej godzinie powyżej marginesu lub powyżej stałej liczby minut;
- storna dzisiaj powyżej marginesu, dopiero od minimalnej liczby.
Każdy alert pojawia się raz (na regułę, pracownika i dzień; czas w kuchni najwyżej raz na godzinę) i trafia do:
- kasy: przycisk Alerty (n) na górnym pasku z alertami z ostatniego dnia, tygodnia lub 30 dni; Załatwione z notatką. Inne ekrany dostają tylko sygnał bez nazwisk;
- powiadomienie push przez ntfy (darmowa aplikacja; ntfy.sh lub własny serwer, topic i ewentualnie token), Pushover (API-token aplikacji i user key) lub Telegram (token bota i chat-id);
Dla każdego kanału jest przycisk Wiadomość testowa. Tokeny i klucze zostają na kasie (ekrany widzą tylko, czy są uzupełnione). Alert nie jest dowodem: sprawdź rachunek i dziennik zdarzeń i porozmawiaj z pracownikiem.
Paragony: kopia i zwrot (paragon korygujący)
Przycisk Paragony na górnym pasku:
- Lista paragonów od ostatniego zamknięcia dnia lub z ostatnich 7 dni; starszy paragon wyszukasz po jego numerze.
- Drukuj kopię: ten sam paragon z oznaczeniem "KOPIA" (w Belgii z blokiem FDM oryginalnego paragonu). Jest rejestrowane w dzienniku zdarzeń.
- Zwrot / korekta (kierownik lub administrator): dla każdej pozycji wybierz, ile wraca, powód i sposób zwrotu pieniędzy (gotówka, karta, karta podarunkowa, inne). Stary paragon pozostaje nietknięty: powstaje nowy paragon korygujący z własnym numerem w dzienniku (rodzaj biletu
retour, kwoty ujemne, w Belgii jako NR do FDM). Nigdy nie można zwrócić więcej, niż sprzedano. W raporcie X i Z zwrot liczy się jako obrót ujemny. - Przy CCV lub innym terminalu: najpierw zwróć pieniądze na samym terminalu, a potem zaznacz "Już zwrócono na samym terminalu".
- Gotówka z zaokrąglaniem do 5 centów: kwota do zwrotu również jest zaokrąglana.
- Zwrot na fakturę (sprzedaż na fakturę): jeśli paragon był na fakturę klienta firmowego, wybierz Na fakturę. Kwota zostaje odjęta od otwartej faktury, a kasa od razu tworzy fakturę korygującą (w UBL CreditNote, typ 381, z odwołaniem do faktury; w Belgii podpisaną przez signInvoice, UC4122). Na fakturę nie można zwrócić więcej, niż jest na niej do zapłaty; resztę zwróć gotówką lub kartą. Faktura korygująca widnieje w Faktury i wysyłasz ją jak fakturę.
Szuflada kasowa z czujnikiem i szuflada na pracownika
Domyślnie wyłączone. Ustawienie w Ustawienia → Płatności → Szuflada kasowa.
- Czujnik: wiele szuflad zgłasza przez drukarkę paragonów, czy są otwarte czy zamknięte (ESC/POS
DLE EOT 1, pin 3 portu DK). Jest to możliwe tylko z drukarką paragonów podłączoną przez sieć. Dotknij Pomiar: szuflada zamknięta i Pomiar: szuflada otwarta; jeśli jest różnica, zastosuj właściwe ustawienie (wysoki = otwarta lub niski = otwarta). Brak różnicy = ta szuflada (lub kabel) nie ma czujnika. Brak odpowiedzi drukarki = nieznany, nigdy "zamknięta".- Nie rozliczaj, dopóki szuflada jest otwarta: serwer kasy odrzuca wtedy nowe rozliczenie z komunikatem "Szuflada kasowa jest nadal otwarta".
- Własna szuflada dla każdego pracownika: drukarka paragonów może otwierać dwie szuflady (szuflada 1 i szuflada 2). Wybierz szufladę dla każdego pracownika; kasa otwiera wtedy przy rozliczeniu gotówkowym, przy wpłacie/wypłacie z szuflady i przy Otwórz szufladę szufladę osoby, która jest zalogowana. W Raport → Szuflada kasowa pojawia się wtedy Szuflada na pracownika: pogotowie kasowe na pracownika, gotówka (bez automatu płatniczego), oczekiwane, Policz i różnica dla każdej osoby (w dzienniku zdarzeń jako
ladetelling). Zwykłe zamknięcie dnia pozostaje bez zmian. - Test szuflady 1 i Test szuflady 2 otwierają szufladę w celu sprawdzenia.
- Otwórz szufladę bez sprzedaży jest (z powodem) zawsze zapisywane w dzienniku zdarzeń i w pliku audytowym kasy (XAA), zgodnie z wymogami urzędu skarbowego (Belastingdienst) (wyjątki, takie jak "no sale").
Część 3 · Administrator
Pierwsze kroki
Instalacja. HorecaPOS instalujesz instalatorem dla swojego systemu, dostępnym na stronie pobierania OptimumPOS: Android (aplikacja), Windows (instalator), macOS (instalator dla Maców z Apple Silicon i Intel), Linux (instalator graficzny albo pakiet .deb lub .rpm), Raspberry Pi (instalator graficzny lub .deb dla Raspberry Pi 3, 4 lub 5 z 64-bitowym Raspberry Pi OS) oraz Chromebook (aplikacja na Androida z Google Play). Wybierz dla wszystkich użytkowników, aby utworzyć serwer kasy, z którym łączą się tablety i ekran kuchenny, albo tylko dla mnie, aby mieć tylko kasę na tym urządzeniu. Instalator instaluje wszystko, co potrzebne, także bazę danych, i co noc wykonuje kopię zapasową. Aby zaktualizować, zainstaluj nową wersję: Twoje dane pozostają. Instalator uruchamia się w języku Twojego komputera (w przeciwnym razie po angielsku); w systemach Windows i Linux na pierwszym ekranie możesz wybrać inny język. Kasa uruchamia się potem od razu w tym języku. Pakiety .deb i .rpm oraz aplikacja na Androida używają języka systemu, w przeciwnym razie niderlandzkiego.
Administrator konfiguruje kasę w Ustawieniach. Znajdują się tam zakładki takie jak Lokal, Personel, Uprawnienia, Godziny pracy, Produkty, Happy hour, Magazyn, Plany sal, Płatności, Drukarki, Księgowość, Kopie zapasowe, Import/eksport i Baza danych. To, które zakładki widzi również kierownik, zależy od uprawnień.
Baza danych. W Ustawienia → Baza danych (tylko administrator) wybierasz między MySQL / MariaDB, wbudowaną bazą danych i PostgreSQL; przy przełączeniu wszystkie dane są przenoszone (zob. Baza danych). Jeśli Optimum POS ustawił już podczas instalacji stały adres, obowiązuje ten adres i nie ma pól do wypełnienia. W przeciwnym razie sam wypełniasz Serwer, Port, Baza danych, Użytkownik i Hasło. Kasa sama je zapisuje, potem pokazuje je ponownie wypełnione i zawsze możesz je zmienić przyciskiem Zmień dane MySQL/MariaDB lub Zmień dane PostgreSQL. Pozostawienie pustego hasła oznacza: zachowanie zapisanego hasła (dla tego samego użytkownika). Instalator i aktualizacja nie zmieniają DATABASE_URL ani wybranej bazy danych.
Księgowość
Wszystko dotyczące księgowości znajduje się w Ustawienia → Księgowość. Wpisz razem ze swoim księgowym dziennik i konta księgowe. Jeśli chcesz, aby kasa sama księgowała obrót dzienny każdego dnia, wybierz swój program u góry w Program księgowy, także Exact Online: widzisz tylko programy, które działają w kraju Twojego lokalu. Tuż pod spodem wpisujesz dane tego programu i łączysz się. W programach, do których się logujesz (np. Exact Online, Twinfield lub Xero), najpierw wypełniasz aplikację: identyfikator klienta i klucz tajny klienta. Jeśli Optimum POS ustawiło program lub daną wartość na stałe podczas instalacji, nie widzisz tego wyboru ani tego pola. Znajduje się tam też przegląd wszystkich programów: które można zintegrować na żywo, a które otrzymują plik. Plik tworzysz w Raport → Obrót w okresie → Eksport do księgowości: wybierz format swojego programu albo UBL (Peppol), XAF lub raport dzienny. Pierwsze księgowanie lub import zawsze zlecaj do sprawdzenia księgowemu.
Dla lokalu w Holandii jest tam też Plik audytowy kasy (XAA): XML Auditfile Afrekensystemen holenderskiej administracji podatkowej (Belastingdienst) ze wszystkimi paragonami, pozycjami, płatnościami i zdarzeniami kasy za wybrany okres. Przekazujesz go księgowemu lub, podczas kontroli, Belastingdienst.
Płace i grafik
Jeśli Twój personel rejestruje wejście i wyjście, w Ustawienia → Godziny pracy na dole znajduje się Płace i grafik, w dwóch blokach. W Kadry i płace wybierasz program płacowy lub (w Belgii) sekretariat socjalny i wpisujesz dla każdego pracownika jego numer kadrowy w tym programie. Następnie tworzysz za dany okres plik z przepracowanymi godzinami i obrotem na pracownika i wczytujesz go do programu płacowego. W Planowanie personelu wybierasz system planowania: w Deputy, Dyflexis i Shiftbase obrót trafia automatycznie co godzinę, w pozostałych tworzysz plik obrotu. Dzięki temu widzisz w grafiku koszty wynagrodzeń obok obrotu. Jeśli pracujesz bez rejestracji czasu pracy, i tak możesz wysyłać obrót do grafiku: znajduje się to wtedy na dole Ustawienia → Księgowość, w Obrót do grafiku. Jeśli Optimum POS ustawił coś na stałe przy instalacji, nie widzisz tego wyboru ani tego pola.
Kopie zapasowe
Kasa tworzy kopię zapasową automatycznie każdej nocy, a także zawsze przed aktualizacją. W Ustawienia → Kopie zapasowe widzisz wszystkie kopie (kiedy, przez kogo lub automatycznie, rozmiar) i możesz sam utworzyć kopię przyciskiem Utwórz kopię zapasową. Jeśli ostatnia kopia jest starsza niż dwa dni, pojawia się czerwone ostrzeżenie: skontaktuj się wtedy z Optimum POS.
Przywracanie jest możliwe przyciskiem Przywróć przy kopii zapasowej. Wszystko, co wydarzyło się po tej kopii, zostanie wtedy utracone. Musisz to zaznaczyć i ponownie wpisać swój PIN. Kasa najpierw tworzy jeszcze kopię bezpieczeństwa bieżącego stanu, a potem wylogowuje wszystkich. W Belgii nie jest to możliwe z poziomu kasy (liczniki czarnej skrzynki biegną dalej); tam robi to Optimum POS.
Baza danych
W Ustawienia → Baza danych (tylko administrator) widzisz, gdzie kasa przechowuje swoje dane. Na górze jest obecna baza danych z programem, wersją, tabelami, wierszami oraz adresem lub folderem. Dla personelu i tabletów kasa działa tak samo z każdą bazą. W systemach Windows, macOS, Linux i na Raspberry Pi wybierasz spośród trzech baz danych:
- MySQL / MariaDB: osobny program bazodanowy (MySQL 8.0 lub nowszy, MariaDB 10.6 lub nowszy), na przykład na serwerze lub NAS, który już masz. Wszystkie dane są wtedy w zwykłych tabelach w MySQL lub MariaDB, czytelne dla twojego własnego programu do raportów lub BI. Kasa liczy dokładnie tak samo jak z PostgreSQL.
- Wbudowana (PGlite): jest w samej kasie, nie trzeba nic instalować. Najlepszy wybór dla większości lokali i baza danych na Androidzie oraz Chromebooku.
- PostgreSQL: osobny program bazodanowy na komputerze kasy lub gdzieś w sieci.
Kiedy MySQL lub MariaDB? Gdy twój lokal ma już serwer MySQL lub MariaDB, gdy pracuje z nim twój administrator IT albo gdy chcesz czytać dane we własnych raportach, w Excelu lub w programie BI. W razie wątpliwości wybierz wbudowaną: działa od razu.
Co jest potrzebne dla MySQL lub MariaDB?
- MySQL 8.0 lub nowszy albo MariaDB 10.6 lub nowszy, dostępny z serwera kasy.
- Osobna baza danych dla kasy (lub dla kas jednej sieci), z zestawem znaków utf8mb4.
- Użytkownik bazy danych, który może w tej bazie tworzyć, zmieniać, zmieniać nazwy i usuwać tabele (CREATE, ALTER, DROP, INDEX, SELECT, INSERT, UPDATE, DELETE), na przykład tak:
CREATE DATABASE horecapos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'horecapos'@'localhost' IDENTIFIED BY 'wachtwoord';
GRANT ALL PRIVILEGES ON horecapos.* TO 'horecapos'@'localhost';
Jeśli MySQL lub MariaDB działa na innym komputerze, wpisz w dwóch ostatnich wierszach adres IP serwera kasy zamiast localhost.
Migracja do MySQL / MariaDB:
- W sekcji Adres MySQL/MariaDB wypełnij pola: Serwer (domyślnie localhost), Port (domyślnie 3306), Baza danych (domyślnie horecapos), Użytkownik i Hasło; dla MariaDB tak samo. Jeśli adres jest już ustawiony, pola są już wypełnione; jeśli zostawisz hasło puste, zostaje zapisane hasło (dla tego samego użytkownika). Kasa sama zapisuje adres; jeśli Optimum POS ustawił już stały adres, obowiązuje ten adres i nie ma pól. Jeśli kasa już działa na MySQL/MariaDB, dane zmienisz później przyciskiem Zmień dane MySQL/MariaDB. Szyfrowane połączenie ustawi dla ciebie Optimum POS.
- Stuknij Testuj połączenie: zobaczysz program i wersję albo powód, dla którego się nie udaje.
- Stuknij Migruj do MySQL/MariaDB, zaznacz, że rozumiesz, i wpisz swój PIN.
Migracja działa w każdym kierunku między trzema bazami danych, a wszystkie dane idą razem z nią:
- Kasa przez chwilę nie przyjmuje żądań (zwykle krócej niż minutę); potem tablety same działają dalej.
- Najpierw kasa tworzy kopię zapasową bieżącego stanu (w Ustawienia → Kopie zapasowe).
- Wszystko trafia do nowej bazy, a kasa liczy w każdej tabeli, czy wszystko jest tam dokładnie.
- Dopiero gdy wszystko się zgadza, kasa pracuje dalej na nowej bazie. Zalogowani pracownicy pozostają zalogowani.
Jeśli coś się nie uda, nic się nie zmienia i kasa pracuje dalej na starej bazie. Stara baza zostaje, więc zawsze można wrócić. Dane kasy, które już były w nowej bazie MySQL/MariaDB lub PostgreSQL, zostają zastąpione. Działa to też w Belgii: liczniki czarnej skrzynki przechodzą dokładnie.
Kopie zapasowe i przywracanie działają tak samo ze wszystkimi trzema bazami (Ustawienia → Kopie zapasowe). Kopię z jednej bazy można przywrócić w każdej innej, także kopię z PostgreSQL w MySQL lub MariaDB.
Co jest w MySQL lub MariaDB? Każda tabela kasy, z tą samą nazwą i kolumnami (czas w UTC). Każda tabela dostaje dodatkowo kolumnę klucza _hp_sleutel, a w tabelach pomocniczych _horecapos_stand, _horecapos_kolom, _horecapos_reeks i _horecapos_wijziging (dziennik zmian, przechowywany 14 dni) kasa zapisuje stan, typy kolumn, liczniki i zmiany. Inne programy czytają dane; zapisują tylko kasy.
Jak to działa: kasa liczy w szybkiej kopii roboczej na serwerze kasy i zapisuje każdą zmianę do MySQL/MariaDB w tym samym kroku. Jeśli to się nie uda, zmiana nie zostaje wykonana i kasa zgłasza błąd; dbaj więc o to, by MySQL/MariaDB był dostępny. Przy uruchomieniu kasa wczytuje wszystko z MySQL/MariaDB.
Kilka kas na jednej bazie. Tak jak w PostgreSQL, kilka kas może korzystać z tej samej bazy MySQL/MariaDB, na przykład każdy lokal sieci z własnym serwerem kasy. Zmiany zapisują się po kolei, a każda kasa najpierw przejmuje to, co zrobiły inne, więc przy jednoczesnych zmianach nic nie ginie. Gdy kasa przywróci kopię zapasową albo kasa z nowszą wersją zaktualizuje bazę, pozostałe kasy same wczytują wszystko od nowa; dlatego aktualizuj wszystkie kasy jednocześnie. Kasa wyłączona dłużej niż 14 dni przy uruchomieniu wczytuje wszystko od nowa.
Podczas instalacji wybierasz też bazę danych: MySQL / MariaDB, wbudowaną (zalecane) lub PostgreSQL z adresem. Jeśli jest niedostępna, kasa instaluje się z bazą wbudowaną; migrację możesz potem zrobić tutaj. Przy aktualizacji wybór zostaje.
Łączenie tabletów i ekranów
- Na każdym tablecie/kasie otwórz adres serwera kasy, np.
http://192.168.1.20:3000, i dodaj go jako skrót na ekranie głównym (Chrome: Dodaj do ekranu głównego). - Ekran kuchenny:
http://192.168.1.20:3000/keuken. - Ekran klienta (skierowany do klienta, opcjonalnie):
http://192.168.1.20:3000/klantscherm, zob. Ekran klienta. - Ekrany same znajdują serwer kasy (ten sam adres, port 4000).
Ekran klienta
Ekran przy kasie skierowany w stronę klienta. Klient widzi w przybliżeniu, co zamówiono, a bardzo wyraźnie kwotę i sposób płatności. Nie ma na nim obsługi: ekran tylko śledzi to, co robi kasa. Domyślnie wył.; włączenie w Ustawienia → Lokal → Ekran klienta. Na komputerze kasowym z dwoma ekranami kasa włącza go automatycznie za pierwszym razem; jeśli potem go wyłączysz, pozostanie wyłączony. Bez ekranu klienta (wyłączony lub niepodłączony) wszystko działa dokładnie jak zawsze: kasa wysyła obraz w tle, a obsługa nigdy nie zauważy błędu ani brakującego ekranu.
Co widzi klient:
- Spoczynek (nikt nie rozlicza): nazwa lokalu i własny tekst powitalny (Ustawienia → Lokal; puste = "Witamy").
- Zamawianie: produkty z ilością i kwotą (takie same pozycje razem, menu jako jedna pozycja ze składowymi drobnym drukiem pod spodem, rabat jako jedna pozycja) oraz duża suma. Kwota już zapłacona przy rozliczeniu dzielonym widnieje pod spodem. Przy Ustawienia → Lokal → Zdjęcia produktów → na ekranie klienta przy każdym produkcie widać małe zdjęcie.
- Rozliczenie: forma płatności (Karta, Gotówka, Karta podarunkowa), napiwek i duże Do zapłaty. Gotówka: ile klient daje i ile dostaje reszty, gdy tylko zostanie to wpisane w kasie. Karta: "Postępuj zgodnie z instrukcjami na terminalu płatniczym".
- Podziękowanie: po rozliczeniu przez kilka sekund "Dziękujemy!" z zapłaconą kwotą (gotówka: ile klient dostaje reszty), potem znów ekran spoczynkowy.
Podłączenie na dwa sposoby (oba ustawia się na samym urządzeniu):
- Drugi monitor przy komputerze kasowym (Windows, Linux/Raspberry Pi, macOS): automatycznie. Przy logowaniu i po instalacji kasa wyświetla ekran klienta na pełnym ekranie na najmniejszym ekranie, który nie jest ekranem głównym (przy tej samej wielkości na tym najbardziej z prawej); w systemie Windows zawsze na innym ekranie niż kasa (kasa jest na ekranie dotykowym i przy uruchomieniu również otwiera się sama). Rozmiar i położenie pochodzą z systemu, więc działa każdy format. Bez drugiego ekranu nic się nie dzieje. W systemie Windows zamknięty ekran klienta wraca sam; w systemach Linux i macOS skrót HorecaPOS ekran klienta w menu ustawia go ponownie. W systemie Windows otwiera się w trybie kiosku przeglądarki Chrome (lub Edge): na pełnym ekranie, bez paska tytułu i bez paska zadań (zamknięcie: Alt+F4). Podąża za kasą na tym samym komputerze bez kodu parowania.
- W każdej przeglądarce długie przytrzymanie nigdzie nie otwiera menu przeglądarki i nie pojawia się pytanie o przetłumaczenie strony.
- Kasa zamknięta = ekran klienta zamknięty. Jeśli oprogramowanie kasy się zatrzyma (Uruchom ponownie, aktualizacja, kasa zatrzymana lub usunięta), ekran klienta również zamyka się po nieco ponad 10 sekundach; gdy kasa znów działa, wraca sam. W systemie Windows zamyka się także wtedy, gdy zamkniesz tylko okno kasy. Pod Waylandem (Linux) kasa nie może sama zamknąć okna.
- Ekran klienta przypadkowo zamknięty? W systemie Windows wraca sam po kilku sekundach, o ile kasa jest otwarta, a drugi ekran podłączony.
- Zawsze tylko jeden ekran klienta. W systemie Windows ekran klienta działa tylko w trybie kiosku na drugim ekranie. Ekran klienta w oknie kasy (np. przywrócony przez Edge po awarii zasilania lub otwarty przyciskiem w kasie) zamyka się sam w ciągu kilku sekund; jego miejsce zajmuje wtedy właściwy ekran klienta.
- Nikt niezalogowany = tylko powitanie. Gdy kasa jest na ekranie kodu PIN (także po ponownym uruchomieniu lub wylogowaniu), ekran klienta pokazuje tylko tekst powitalny, nigdy poprzedniego rachunku.
- W systemie Windows automatyczne otwieranie można też wyłączyć polem wyboru Otwieraj ekran klienta automatycznie ... w instalatorze.
- W systemie Linux kasa przesuwa okno za pomocą wmctrl (dołączony do pakietu). W Wayland (m.in. Raspberry Pi OS z labwc) nie jest to możliwe: przenieś wtedy raz samodzielnie ekran klienta na drugi ekran (przeglądarka to zapamięta) albo wybierz X11 w raspi-config. W macOS Mac za pierwszym razem prosi o zgodę w Dostępności.
- Ręcznie: Ustawienia → Lokal → Ekran klienta → Otwórz ekran klienta (drugi monitor). W Chrome i Edge (także na Chromebooku) przycisk od razu umieszcza okno na ekranie klienta (za pierwszym razem przeglądarka prosi o zgodę); jedno kliknięcie na ekranie klienta włącza pełny ekran. W innych przeglądarkach: przeciągnij i naciśnij F11.
- Kasa Android z wbudowanym ekranem klienta (np. Sunmi D2/T2) lub monitor przez HDMI/USB-C: również automatycznie. Gdy tylko aplikacja jest na kasie, ekran klienta pojawia się na drugim ekranie; podłączanie i odłączanie działa od razu.
- Sunmi T1 mini / T2 mini z małym wyświetlaczem tekstowym (2 wiersze): aplikacja automatycznie pokazuje tam kwotę: Suma, Do zapłaty, przy gotówce Reszta, po zapłacie Dziękujemy!, a w spoczynku nazwę lokalu. Ekran klienta musi być włączony.
- iPad (ekran obsługi) z zewnętrznym ekranem przez HDMI/USB-C lub AirPlay: aplikacja automatycznie umieszcza ekran klienta na tym ekranie (przygotowane; aplikacja na iOS nie została jeszcze wydana).
- Chromebook: jako ekran obsługi w Chrome przycisk Otwórz ekran klienta (drugi monitor) działa jak opisano powyżej. W aplikacji Android ekran klienta pojawia się automatycznie na drugim ekranie, gdy tylko ChromeOS udostępni ten ekran aplikacjom Android; jeśli tak się nie dzieje, użyj osobnego urządzenia z kodem parowania.
- Osobne urządzenie (tablet lub własny komputer obok kasy): otwórz
http://<kassaserver>:3000/klantscherm. W prawym dolnym rogu ekranu widnieje kod parowania z 6 znaków. Wpisz go w kasie w Ustawienia → Lokal → Ekran klienta → Sparuj. Rozłącz przywraca na ekranie kod parowania. Parowanie jest zapisywane dla każdej kasy osobno (w przeglądarce tej kasy), więc każda kasa może mieć własny ekran klienta.
Ekran klienta nie wymaga PIN-u (nie ma tu nic do obsługi) i pokazuje tylko obraz kasy, z którą jest sparowany. Obraz jest przechowywany tylko w pamięci serwera kasy; po restarcie ekran jest pusty do następnej zmiany. Ustawienie (wł./wył. i tekst powitalny) jest uwzględniane w kopii zapasowej i w Import/eksport (Pozostałe ustawienia).
Paragon cyfrowy przez QR (opcjonalnie)
Domyślnie wył. Włączanie: Ustawienia → Lokal → Kuchnia i ekran klienta → Paragon cyfrowy (opcja pojawia się, gdy ekran klienta jest zapisany jako włączony). Po zapłacie na ekranie Dziękujemy! pojawia się kod QR; pozostaje on wtedy przez 45 sekund zamiast kilku sekund. Gość skanuje go własnym telefonem i widzi paragon dokładnie taki jak papierowy (ten sam tekst, w belgijskiej kasie także z blokiem FDM). Na telefonie może paragon wydrukować, zapisać jako PDF lub pobrać jako plik tekstowy.
- Działa to przez portal zarządzania:
https://kassa.<portaal>/__bon/<kassa>/<sleutel>. Kasa musi więc być połączona z portalem; w przeciwnym razie kod QR się nie pojawi i nic się nie zmienia. - Klucz jest losowy i niemożliwy do odgadnięcia, a działa przez 30 dni. Potem kasa sama go usuwa. Portal niczego nie przechowuje.
- Działa z drugim monitorem i z osobnym ekranem klienta. Paragon papierowy i paragon e-mailem działają dalej normalnie.
Ekran klienta w spoczynku: pokaz slajdów (opcjonalnie)
Domyślnie wył. Włączanie: Ustawienia → Lokal → Kuchnia i ekran klienta → Ekran klienta w spoczynku. Gdy na ekranie klienta nie ma rachunku, slajdy zmieniają się kolejno (domyślnie co 8 sekund, do ustawienia od 4 do 60):
- Akcje: happy hours (jeśli happy hour jest włączone), z rabatem, dniami i godzinami oraz produktami lub grupami; te trwające teraz są pierwsze, z napisem "Teraz!".
- Wyróżnione produkty (najwyżej 12, np. nowości w menu), z ceną i (jeśli zdjęcia produktów na ekranie klienta są włączone) zdjęciem. Wyprzedany produkt ekran pomija.
- Karta punktowa: punkty za euro, nagroda i karty pieczątek (tylko gdy karta lojalnościowa jest włączona).
- Własne teksty: najwyżej 5, każdy na osobnym slajdzie (np. "Od piątku nowość: nasze letnie menu").
Bez slajdów ekran klienta pokazuje ekran powitalny, jak zawsze.
Happy hour
Domyślnie wył. Włączenie w Ustawienia → Lokal → Używaj happy hour; potem pojawia się zakładka Ustawienia → Happy hour.
- Dla każdej happy hour: nazwa (widoczna na paragonie), dni, od–do (może przechodzić przez północ, np. 23:00–01:00), rabat w % lub stała cena oraz dla których grup produktów i/lub pojedynczych produktów.
- W tym przedziale czasu kasa przy nabijaniu automatycznie nalicza cenę happy hour (nigdy wyższą niż normalna; przy stałej cenie opcje wyboru dolicza się normalnie). Na przycisku produktu stara cena jest przekreślona, obok nowa cena i HH; w zamówieniu i na paragonie widnieje nazwa happy hour. To, co już nabito, zachowuje swoją cenę.
- Oferta dnia: zaznacz Cały dzień (00:00–24:00) i wybierz dzień lub dni, np. w każdy wtorek żeberka w stałej cenie.
- Sezon: zaznacz Tylko w sezonie (co roku) i wybierz od i do włącznie (dzień i miesiąc, np. od 1 czerwca do 31 sierpnia; przez przełom roku też można, np. od 1 grudnia do 28 lutego). Poza sezonem happy hour nie obowiązuje.
- Zmiany trafiają do dziennika zdarzeń.
Pory dnia i sezony
Domyślnie wyłączone. Włączenie w Ustawienia → Lokal → Pory dnia i sposób realizacji → Asortyment według pory dnia i sezonu; potem pojawia się karta Ustawienia → Pory dnia. Po wyłączeniu wszystkie produkty znów są zawsze w sprzedaży, a pory dnia zostają zachowane.
- Dla każdej pory dnia: nazwa (np. Śniadanie, Lunch, Kolacja, Karta letnia), dni, od–do (może przechodzić przez północ; Cały dzień = 00:00–24:00), opcjonalnie sezon (co roku, dzień i miesiąc) oraz które grupy produktów i/lub pojedyncze produkty do niej należą.
- Produkty i grupy produktów, które są w jednej lub kilku porach dnia, są w sprzedaży tylko wtedy, gdy trwa jedna z tych pór dnia; to, co nie jest w żadnej porze dnia, jest zawsze w sprzedaży. Ekran zamówień pokazuje tylko to, co jest teraz w sprzedaży, i sam się przełącza, gdy pora dnia się zaczyna lub kończy; serwer odrzuca resztę ("teraz niedostępne, tylko w porze Śniadanie").
- Sklep internetowy pokazuje i nalicza ten sam asortyment (w chwili zamówienia).
- Inna cena w danym dniu lub w sezonie to happy hour (oferta dnia, patrz wyżej).
- Karta dla każdej lokalizacji: każda kasa (lokal) ma własne produkty, pory dnia i ceny.
- Zmiany trafiają do dziennika zdarzeń.
Asortyment i ceny według sposobu realizacji
Domyślnie wyłączone. Włączenie w Ustawienia → Lokal → Pory dnia i sposób realizacji → Asortyment i ceny według sposobu realizacji. Po wyłączeniu wszędzie znów obowiązuje zwykła cena i wszystko jest wszędzie w sprzedaży; wpisane ceny zostają zachowane.
- W Ustawienia → Produkty dla każdego produktu: Cena na wynos i Cena z dostawą (puste = zwykła cena) oraz Sprzedawane przy (na miejscu, na wynos, dostawa; co najmniej jedno). Przy grupie produktów również Sprzedawane przy, dla wszystkich produktów w tej grupie.
- Przy zamówieniu na wynos lub z dostawą ekran zamówień pokazuje cenę dla tego sposobu realizacji i tylko to, co jest w nim sprzedawane; serwer nalicza tę cenę i odrzuca resztę. Happy hour, zestawy menu i opcje wyboru liczą się według tej ceny.
- Stawka VAT na wynos (przy produkcie) jest od tego niezależna, jak zawsze.
- Sklep internetowy przy odbiorze i dostawie pokazuje ceny i produkty dla tego wyboru (przy zmianie strona menu przeładowuje się), a przy stoliku te dla zamówień na miejscu.
- Eksport i import konfiguracji (Ustawienia → Import/eksport) obejmują ceny według sposobu realizacji, "sprzedawane przy", pory dnia i sezon happy hours.
Menu
Domyślnie wył. Włączenie w Ustawienia → Lokal → Używaj menu.
- Menu to zwykły produkt (z ceną menu), dla którego w Ustawienia → Produkty → (produkt) → Menu ustawiasz składowe:
- stała: zawsze ten produkt (np. "Napój: wino domowe");
- do wyboru: wybierz 1 (lub więcej) z grupy produktów, ewentualnie ograniczonej do określonych produktów (np. "Danie główne: wybierz 1 z Dań głównych").
- Dla każdej składowej danie (kolejność wydawania) (1 = od razu, 2/3 = czeka na wywołanie).
- Gdy nabijesz menu, wybierasz dania dla każdej składowej. Dla każdego dania (także stałego) możesz wybrać opcje wyboru jak przy pojedynczym produkcie (sposób przygotowania, dodatkowy ser; opcje obowiązkowe muszą być wybrane) i dodać uwagę. Dopłaty za opcje są doliczane do ceny menu. Menu pojawia się jako jedna pozycja z daniami (i ich opcjami) pod spodem.
- Dania trafiają jako osobne pozycje do kuchni/baru (bon kuchenny i ekran kuchenny), zgodnie ze swoim daniem (kolejnością wydawania). Sama pozycja menu nie.
- Na potrzeby VAT cena menu jest dzielona między składowe proporcjonalnie do ich normalnej ceny, dzięki czemu jedzenie i napoje mają właściwą stawkę. Na paragonie widnieje menu z ceną łączną i daniami pod spodem.
- Jeśli samo menu ma opcje wyboru (np. rozmiar), wybierasz je u góry okna menu. Widnieją przy pozycji menu na paragonie, a przy każdym daniu z menu na bonie kuchennym i ekranie kuchennym jako "(menu)".
- Usuwanie/storno dotyczy całego menu (dotknij pozycji menu).
- Podziel / przenieś: wybierz pozycję menu; dania zostaną przeniesione razem z nią. Przy 2× tym samym menu możesz też przenieść 1 (nagłówek i dania zostaną podzielone).
- Bez połączenia możesz normalnie nabijać menu; są zapisywane na tablecie i wysyłane, gdy połączenie wróci (tak jak pojedyncze produkty).
- Happy hour może dotyczyć także menu.
Receptury i koszt własny (Apicbase)
Integracja z Apicbase (receptury, koszt własny, magazyn i zakupy) przez Generic POS API Apicbase (domyślnie wyłączone, każdą część włącza się lub wyłącza osobno). Konfiguracja w Ustawienia → Receptury (uprawnienie Ustawienia lokalu, płatności i drukarek). Kasa sama komunikuje się z Apicbase (tylko ruch wychodzący, portal niepotrzebny).
- Połącz (wszystko wypełnia administrator), na jeden z trzech sposobów:
- Wklej token: w Apicbase Library Settings → API Settings → New token → Service Account Token (scope'y accounts, library, sales); wkleić access token i refresh token;
- Zaloguj się własną API-app lokalu (client-id i client secret z API Settings): Zaloguj się w Apicbase i wkleić kod, który Apicbase potem pokaże;
- Wygasły token (po 7 dniach) kasa odnawia automatycznie za pomocą refresh tokenu.
- Outlet: Pobierz outlety i wybrać outlet tego lokalu. Kasa ustawia tam POS na Generic POS API z własnym location-id (do edycji; domyślnie
HORECAPOS-…, unikalny dla każdej kasy). - Wł., z polami wyboru:
- Produkty, grupy i opcje wyboru do Apicbase: grupy produktów, produkty (PLU = numer PLU produktu, w przeciwnym razie kod, w przeciwnym razie id), opcje wyboru jako modifiers, z ceną i VAT. Automatycznie po każdej zmianie (po minucie) i codziennie. W Apicbase łączysz potem każdy produkt z kasy z recepturą;
- Każdy rozliczony paragon do Apicbase: najstarsze najpierw, najwyżej 100 naraz, w ciągu kwadransa od rozliczenia (i co 5 minut). Rabat rozkłada się na pozycje; kwoty otwarte, dopłata za opakowanie jednorazowe i kaucja występują w Apicbase jako osobne produkty; produkty ważone jako 1 szt. z łączną kwotą. Jeśli się nie uda, kasa wstrzymuje wysyłkę (Apicbase chce paragony po kolei) i próbuje ponownie później: rozliczanie nic na tym nie traci. Przy włączaniu wybierasz, od którego dnia (domyślnie od teraz);
- Pobieraj koszt na porcję (co 6 godzin): dla każdej połączonej receptury food cost (składniki i straty), z kosztami personelu, cena sprzedaży i marża według Apicbase. Liczone według najtańszego dostawcy, ostatniej zamówionej ceny lub średniej wartości magazynu;
- Przejmuj cenę sprzedaży z Apicbase (domyślnie wył.): ustawianie ceny sprzedaży połączonych produktów w kasie (zapisywane w dzienniku zdarzeń).
- Na dole: Koszt własny na produkt z kosztem własnym, kosztem własnym z personelem, ceną w kasie, kosztem własnym % i marżą. Przyciski Wyślij katalog teraz, Wyślij paragony teraz i Pobierz koszty własne teraz.
Kod: apps/pos-server/src/lib/apicbase.ts, routes/apicbase.ts; ekran Apicbase.tsx. Dziennik zdarzeń: Apicbase. Warunek: moduł API Apicbase. Dla aplikacji Pin Voordeel dla wszystkich klientów: partnerstwo i certyfikacja w Apicbase (zob. backlog). Dokumentacja: https://developers.apicbase.com/docs/generic-pos-api-guide
Oprogramowanie hotelowe: na pokój
Dla restauracji lub baru w hotelu: rachunek na pokój gościa. Domyślnie wyłączone: Ustawienia → Hotel (uprawnienie Ustawienia lokalu, płatności i drukarek).
- Jedna lista z całym oprogramowaniem hotelowym (Oprogramowanie hotelowe hotelu). Wbudowane integracje:
- Mews (Connector API: client token i access token, usługa restauracji i dla każdej stawki VAT kod VAT z Mews), apaleo (własna aplikacja z client ID i client secret, ID obiektu; dla każdej stawki VAT ewentualnie rodzaj VAT) i Cloudbeds (klucz API i ID obiektu), każda ze środowiskiem testowym i produkcyjnym;
- Oracle OPERA Cloud (OHIP), protel (protel I/O), RoomRaccoon, Booking Experts, Amadeus (XMLPOS), VIPS, Stayntouch, Clock PMS+, Guestline (Rezlynx), Hotelogix, eviivo, Little Hotelier, Shiji i Infor HMS (Databridge). Po wyborze pojawiają się dokładnie te pola, które należą do danego oprogramowania hotelowego (klucze, ID hotelu, ewentualnie adres ich API i dla każdej stawki VAT ich kod), z krótkim wyjaśnieniem, o co poprosić dostawcę. Te integracje zbudowano według dokumentacji dostawców; poproś dostawcę o potwierdzenie integracji i najpierw wypróbuj ją przyciskiem Testuj połączenie i jednym paragonem;
- demo (cztery apartamenty, pokoje od 4 do 7) do wypróbowania;
- Sirvoy, jako częściowa integracja i tylko z Sirvoy Pro. Sirvoy nie ma API, przez które kasa mogłaby coś dopisać do rezerwacji, także nie przez plik (import CSV tworzy tylko nowe rezerwacje). Dzięki temu kasa zna gości (pokój, nazwisko, przyjazd, wyjazd): wyszukiwanie przy Na pokój oraz samoobsługa w kiosku i w sklepie internetowym działają normalnie. Paragon nie trafia sam do Sirvoy: po rozliczeniu pojawia się w Ustawienia → Hotel w sekcji Do wpisania w Sirvoy, z pokojem, gościem, numerem paragonu i kwotą według stawek VAT. Hotel wpisuje go ręcznie jako dodatek do rezerwacji i klika Wpisane (cofnięcie: Jednak jeszcze nie). Potrzebne:
- najlepiej kasa połączona z portalem zarządzania: wtedy adres prowadzi przez portal (
https://<portaal>/hotel/<kassa-id>/sirvoy?sleutel=...) i w hotelu nie trzeba otwierać portu. W przeciwnym razie sama kasa musi być dostępna z internetu przez https (własna domena z certyfikatem lub przekierowanie portów; Sirvoy wymaga TLS 1.2 lub wyższego) i wpisujesz ten adres; - Adres jest widoczny tylko raz; kasa przechowuje tylko hash. Utworzenie nowego adresu = stary przestaje działać;
- najlepiej kasa połączona z portalem zarządzania: wtedy adres prowadzi przez portal (
Sirvoy wysyła coś tylko wtedy, gdy rezerwacja się zmienia: rezerwacje sprzed połączenia kasa poznaje dopiero po zmianie w Sirvoy. Wiadomości mogą przychodzić w innej kolejności; wiadomość starsza (generatedAt) niż to, co kasa już ma, jest pomijana. W hotelu = nieanulowana i bez wymeldowania, zameldowana lub przyjazd dziś lub wcześniej, a wyjazd dziś lub później. Testuj połączenie pokazuje, ile rezerwacji przyszło.
Całe oprogramowanie hotelowe jest dostępne w Holandii i/lub Belgii. Testuj połączenie sprawdza dane. Kod dla każdej integracji: apps/pos-server/src/lib/pms/<naam>.ts.
- Samoobsługa (domyślnie wyłączona): gość hotelowy sam dopisuje zamówienie do swojego pokoju, w kiosku i/lub w sklepie internetowym (odbiór i dostawa, nie przy zamawianiu przy stoliku). Wpisuje numer pokoju i nazwisko; kasa sprawdza w oprogramowaniu hotelowym, czy ten gość obecnie mieszka w tym pokoju. Z limitem na zamówienie (domyślnie € 150), a po 5 nieudanych próbach w ciągu kwadransa gość musi najpierw podejść do recepcji. Komunikat nigdy nie zdradza, kto mieszka w pokoju.
- Rozliczenie: gdy integracja jest włączona, dostępna jest metoda płatności Na pokój. Wyszukaj gościa po nazwisku lub numerze pokoju (tylko goście, którzy teraz mieszkają w hotelu) i stuknij Na pokój .... Kasa księguje paragon według stawek VAT na rachunek hotelowy gościa; gość płaci przy wymeldowaniu.
- Belgia: jeśli zamówienie jest już zarejestrowane przy stoliku w czarnej skrzynce, najpierw przechodzi ze stolika na pokój (signCostCenterChange na ROOM, UC4101); paragon trafia do czarnej skrzynki jako kredyt pokojowy (ROOM_CREDIT).
- Jeśli zaksięgowanie w oprogramowaniu hotelowym się nie uda (brak internetu), sprzedaż i tak zostaje zapisana, a księgowanie widnieje jako Nie powiodło się w Ustawienia → Hotel, z przyciskiem Ponów.
- Raporty i księgowość: Na pokój (hotel) to osobna metoda płatności na raporcie X i Z, w raporcie dziennym i w pliku audytowym (XAA).
Kod: apps/pos-server/src/lib/hotel.ts, routes/hotel.ts, integracje w lib/pms/, katalog packages/shared/src/hotelcatalogus.ts; ekran Hotel.tsx. Dziennik zdarzeń: Hotel. Sekrety (tokeny) są przechowywane tylko w bazie danych, nigdy na ekranie.
Zarządzanie winami z Vinify
Ustawienia → Zarządzanie winami (domyślnie wyłączone; wyłączenie zachowuje wszystko). Vinify prowadzi piwnicę win, kartę win i stan magazynowy i jest głównym źródłem danych o winach. Zgodnie z wymaganiami POS firmy Vinify kasa udostępnia API, przez które Vinify może:
Uwierzytelniać się wszystkimi trzema sposobami, które zna Vinify (administrator włącza, które):
- ID API i klucz API (
X-Api-IdiX-Api-Key, lubAuthorization: Bearer <id>:<sleutel>); - Klucz API i secret API z podpisem:
X-Api-Key,X-TimestampiX-Signature= hex HMAC-SHA256(secret,<timestamp>\n<METHODE>\n<pad met query>\n<sha256 van de body>), nie starszy niż 5 minut.
Klucz i secret tworzy kasa (pokazywane raz); ekrany pokazują tylko, czy są uzupełnione. Dostępne przez portal pod adresem https://<portaal>/vinify/<kassa-id>/... (bez otwartego portu w lokalu; adres jest w Ustawienia → Zarządzanie winami). Które produkty są winem: to, co tworzy Vinify, plus zaznaczone przez Ciebie grupy. Jeśli Vinify poda adres do wysyłania sprzedaży, kasa wysyła ją także sama (push, z tokenem): po każdym rozliczonym paragonie i co 5 minut to, czego jeszcze nie udało się wysłać. Vinify włącza integrację z HorecaPOS (hello@vinify.no). Wszystko w dzienniku. Nie mylić z Vinify.nl, internetowym sklepem z winami: jest na liście dostawców (Zamawianie u dostawców).
Szybkie wprowadzanie adresu za pomocą kodu pocztowego i numeru domu
Włączasz w Ustawienia → Lokal → Szybkie wprowadzanie adresu (domyślnie wyłączone; tylko dla lokalu w Holandii). Wpisz kod pocztowy i numer domu (także z literą lub dodatkiem, np. 12A lub 12-1) i stuknij Szukaj adresu: ulica, numer domu, kod pocztowy i miejscowość zostaną uzupełnione. Jeśli pod tym numerem jest kilka adresów (12, 12A, 12B), wybierasz właściwy. Potem nadal możesz wszystko zmienić.
- W danych lokalu (Ustawienia → Lokal, nad adresem).
- Przy kliencie z kartą lojalnościową: przy kasie przy nowym kliencie oraz w Raport → Klienci. Klienci dostają do tego (opcjonalny) adres: ulica i numer domu, kod pocztowy i miejscowość.
- Adresy pochodzą z bezpłatnego Locatieserver PDOK (oficjalne adresy w Holandii, BAG): nie trzeba konta ani klucza, ale potrzebny jest internet. Bez internetu lub przy adresie w Belgii po prostu wpisujesz adres sam.
Powiadomienie o nowej wersji
Włączenie w Ustawienia → Lokal → Powiadomienie o aktualizacji (domyślnie wyłączone).
- Kasa zaktualizowana: jeśli serwer kasy został zaktualizowany, a tablet ma jeszcze otwarte stare ekrany, u góry pojawia się "Kasa została zaktualizowana (wersja …)" z przyciskiem Odśwież. Tablet sprawdza to co 5 minut, gdy ekran znów staje się widoczny, i po restarcie serwera.
- Dostępna aktualizacja: jeśli kasa jest połączona z portalem zarządzania (
PORTAAL_URL/PORTAAL_SLEUTEL) i wpisano tamNIEUWSTE_VERSIE, osoby uprawnione do zarządzania ustawieniami widzą "Dostępna aktualizacja: wersja …" (z objaśnieniem zUPDATE_NOTITIE). Później ukrywa komunikat na tym tablecie do pojawienia się kolejnej nowszej wersji. Aktualizacja odbywa się jak zawsze przezscripts\windows\update.cmd(zob. Aktualizacja).
Platformy rezerwacyjne
Rezerwacje z TheFork, Formitable, Zenchef, Resengo (tylko Belgia), OpenTable (tylko Holandia), PlanPanther, RestoManager i Aqqo (tylko Holandia) same trafiają do kasy i na plan sali. Włącza się w Ustawienia → Platformy rezerwacyjne (domyślnie wyłączone). Działa tylko, gdy Rezerwacje są włączone.
- Kraj lokalu: możesz wybrać tylko platformy działające w kraju lokalu (Resengo tylko w Belgii, OpenTable i Aqqo tylko w Holandii). Serwer również to sprawdza.
- Kilka platform jednocześnie: możesz podłączyć kilka platform obok siebie, na przykład TheFork i Formitable. Dwie platformy nigdy nie dostaną tego samego stolika w tym samym przedziale czasu; druga rezerwacja wpływa wtedy bez stolika.
- + Połącz platformę: wybierz platformę i wpisz dane. Sekrety (Client secret, klucz zwrotny) nigdy nie są widoczne w przeglądzie; puste = zachowaj, Wyczyść = usuń.
- TheFork (publiczne API B2B): Restaurant-UUID, Client ID i Client Secret (do uzyskania w TheFork). Gdy kasa anuluje, anuluje również w TheFork.
- Formitable, Zenchef, Resengo, OpenTable, PlanPanther, RestoManager, Aqqo: ich API jest tylko dla partnerów lub nie jest publiczne (PlanPanther, RestoManager i Aqqo: integracja z kasą odbywa się w porozumieniu z nimi). Zdarzenia Formitable (
booking.created,.changed,.canceled,.checkin,.checkout) są rozpoznawane. - Na planie sali: jeśli stolik w kasie nazywa się tak samo jak stolik na platformie i jest wolny w tym przedziale czasu, rezerwacja trafia na ten stolik; w przeciwnym razie bez stolika (wybierz go przy przybyciu). Rezerwacja, która przyjdzie ponownie, zostaje zaktualizowana, a nie zdublowana. W przeglądzie widnieje "via TheFork".
- Status: gdy platforma anuluje lub zgłosi no-show, kasa to przejmuje. Co w kasie jest już oznaczone jako przybyłe, pozostaje przybyłe.
- Powiadomienie zwrotne (no-show z powrotem): wpisz adres zwrotny (np. swojej usługi integracyjnej). Kasa wysyła każdą zmianę z kasy (przybycie, no-show, anulowanie, rozliczenie z kwotą) jako JSON:
{ platform, id, status, statusEn, bedrag, valuta, tafel, tijdstip, gemeldOp }(kwota w centach, tylko przy rozliczeniu), zAuthorization: Bearer <terugmeld-sleutel>, jeśli go wpiszesz. Jeśli się nie uda, kasa próbuje ponownie co minutę, a błąd widać przy platformie. To, co przyszło z samej platformy, nie jest odsyłane. - Rezerwacja testowa: tworzy rezerwację tak, jak wysłałaby ją platforma.
- Usuń: połączenie i klucz znikają; rezerwacje pozostają.
- Wszystkie zmiany są w dzienniku (bez sekretów).
Programy lojalnościowe i opinie
Dwa osobne przełączniki w Ustawienia → Punkty i opinie (oba domyślnie wyłączone, wtedy nigdzie nic tego nie widać). Jeśli je wyłączysz, ustawienia i wszystko, co już się wydarzyło, zostaną zachowane.
Program lojalnościowy innej platformy: gość zbiera punkty w Joyn (Belgia) i/lub Piggy (Leat; Holandia i Belgia). Jest to niezależne od własnej karty lojalnościowej kasy; może ona działać równolegle.
- Kilka naraz: w Belgii Piggy i Joyn mogą być włączone razem, każdy z własnymi danymi (wybierz platformę, wypełnij, Zapisz; Zmień i Usuń dla każdej platformy). Gość dostaje dla każdego programu osobny kod QR na paragonie, osobny link w paragonie wysłanym e-mailem i osobny przycisk w sklepie internetowym, a punkty w każdym programie zbiera raz na zamówienie. To, co było już skonfigurowane, działa dalej.
- Kod QR na paragonie: po płatności pod paragonem pojawia się kod QR z napisem "Zeskanuj i zbieraj punkty w ...". W paragonie e-mailem jest link, a w sklepie internetowym (odbiór i dostawa) przycisk na stronie zamówienia i link w e-mailu z potwierdzeniem. Jedno zamówienie daje punkty tylko raz: paragon, e-mail i sklep internetowy używają tego samego unikalnego kodu (numeru zamówienia). "Kod QR na wydrukowanym paragonie" możesz wyłączyć; e-mail i sklep internetowy nadal dostają link.
- Piggy, sposób "Kod QR i link": wpisz adres swojego portalu klienta Piggy, Shop UUID i Account secret (Piggy Business Dashboard). Działa bez internetu: kasa sama tworzy link.
- Piggy, sposób "Od razu dopisz": wpisz dodatkowo personal access token (Piggy → Marketplace → Private App). Jeśli kasa wysyła paragon e-mailem, a gość z tym adresem e-mail jest już członkiem, kasa od razu dopisuje punkty; na paragonie widnieje wtedy "Punkty dopisane w Piggy". Kasa nigdy nie tworzy nowego członka; brak członka (lub adresu e-mail) = kod QR.
- Joyn, sposób "Kod QR i link": z partner key, shop reference i shared secret od Joyn (do uzyskania przez api-integration@joyn.be). Działa bez internetu. Kod QR jest ważny 2 godz.
- Joyn, sposób "Przez API": z shop API key (włącz połączenie w portalu sprzedawcy Joyn). Przy płatności kasa pobiera od Joyn kod punktów. Wymiana punktów odbywa się jak zawsze na Joyn-iPad.
- Utwórz link przykładowy: sprawdza, czy dane są poprawne (link na 10 €; otwórz go tylko, aby zobaczyć).
- Można wybrać tylko platformy z kraju lokalu; sekrety są przechowywane tylko w bazie danych i nigdy nie pojawiają się na ekranie (puste = bez zmian).
Proś o opinie: po wizycie jeden e-mail z przyciskiem do Google i/lub Trustpilot.
- Kilka godzin później (do ustawienia, domyślnie 3) gość dostaje e-mail w języku paragonu.
- Sklep internetowy: przy odbiorze i dostawie sklep internetowy sam wysyła e-mail, kilka godzin po zakończeniu zamówienia w kasie, w języku gościa.
- Google: wklej link do opinii z Twojego Profilu Firmy (Google → Twój Profil Firmy → Poproś o opinie,
https://g.page/r/.../review) lub wpisz Place ID. - Trustpilot: wpisz domenę swojego lokalu (przycisk prowadzi do
trustpilot.com/evaluate/<domein>). Jeśli masz w Trustpilot adres zaproszeń (Automatic Feedback Service,...@invite.trustpilot.com), wpisz go też: e-mail trafia wtedy w ukrytej kopii (UDW) do Trustpilot, z niewidocznym imieniem, adresem e-mail i numerem paragonu, a Trustpilot sam wysyła zaproszenie (wtedy bez własnego przycisku Trustpilot). Tylko Trustpilot z adresem zaproszeń: kasa wysyła e-mail tylko dla Trustpilot. - Nie za często: ten sam gość (adres e-mail) dostaje najwyżej jedną prośbę w danym okresie (domyślnie 90 dni; 0 = za każdym razem). Kasa przechowuje w tym celu tylko hash adresu; sam adres e-mail jest usuwany, gdy tylko e-mail zostanie wysłany (jeśli się nie uda, po trzech próbach, a w innym razie po 14 dniach).
- Kod QR na paragonie (opcjonalnie): także kod QR do opinii pod wydrukowanym paragonem.
- Podgląd e-maila i Usuń oczekujące e-maile (adresy są wtedy od razu usuwane). Dziennik zdarzeń pokazuje review_gevraagd z a***@domena.pl.
- Google i Trustpilot zabraniają nagradzania za opinię i proszenia tylko zadowolonych gości ("review gating"). Dlatego kasa prosi wszystkich tak samo i nic nie daje w zamian za opinię.
- Czytanie opinii i odpowiadanie na nie w kasie: zobacz Zarządzanie opiniami poniżej.
Integracja z Mailchimp i Klaviyo
Twoi klienci z kartą lojalnościową we własnym programie mailingowym: w Ustawienia → Lokal → Mailchimp i Klaviyo (pod marketingiem SMS i e-mail). Nie ma przełącznika: bez integracji z wybraną listą nic się nie dzieje.
- Połącz: za pomocą klucza API (Mailchimp: Profiel → Extra → API keys; Klaviyo: klucz prywatny
pk_…z uprawnieniami zapisu do Lists, Profiles, Subscriptions, Events, Campaigns i Templates). Klucz tajny klienta i klucz nigdy nie są ponownie wyświetlane (puste = bez zmian). Następnie wybierz listę (Mailchimp: audience). - Klienci: kto wyraził zgodę na e-maile, trafia na listę (zapisany), z imieniem, nazwiskiem, telefonem, datą urodzin i punktami (Mailchimp: pole
PUNTEN, które kasa tworzy sama; Klaviyo: właściwośćpunten). Zgoda cofnięta, adres e-mail zmieniony lub klient usunięty: wypisany. Ponownie wysyłane jest tylko to, co się zmieniło. Z integracją kasa (i pole "oferty" w sklepie internetowym) prosi też nowych klientów o zgodę na e-maile, którą można zmienić w Raport → Klienci, także bez wbudowanego e-mail marketingu. - Wypisanie: kto wypisze się w Mailchimp lub Klaviyo, traci też zgodę na e-maile w kasie (dziennik zdarzeń: "wypisany w Mailchimp"). Kogoś, kto sam się wypisał, kasa nie zapisuje ponownie.
- Zamówienia: każdy opłacony paragon klienta z listy jest przesyłany jako zdarzenie (Mailchimp:
bestelling, z kwotą, numerem paragonu i liczbą; Klaviyo:Placed Order, z wartością w euro). Dzięki temu tworzysz w programie mailingowym automatyczne e-maile, np. po pierwszym zamówieniu lub gdy ktoś nie był od miesiąca. Paragony sprzed wyboru listy nie są przesyłane. - Akcje: w Raport → Marketing akcję możesz wysłać także przez Mailchimp lub Klaviyo (zob. Marketing SMS i e-mail); kasa tworzy wtedy tam kampanię i ją wysyła.
- Aktualizacja: co 5 minut lub przyciskiem Aktualizuj teraz. Rozłączenie: usunięte z kasy; w Mailchimp i Klaviyo wszystko zostaje. Klucze są przechowywane w bazie danych (w kopii zapasowej tak, w eksporcie konfiguracji nie).
Kod: lib/mailinglijst.ts, routes/mailinglijst.ts i MailingKoppelingen.tsx.
BI i eksport danych
Dane sprzedaży do Power BI, Looker Studio, Excel, Google Sheets, Tableau, Qlik Sense, Metabase, usługi BI (na przykład YourBI, BI4Horeca lub Moore DRV) albo własnej hurtowni danych. Włącz w Ustawienia → BI i eksport danych (domyślnie wyłączone). Tylko odczyt: przez integrację nie można nic zmienić w kasie. Brak danych gości.
- Dane: paragony (także korygujące), sprzedane produkty (pozycje paragonów), płatności, obrót dzienny, obrót godzinowy, storna, produkty, pracownicy (bez PIN-u) i przepracowane godziny. Kwoty w euro z kropką jako separatorem dziesiętnym, godziny według czasu lokalu.
- + Integracja: wybierz pakiet i sposób. Każdy pakiet obsługuje jeden lub więcej sposobów; możesz mieć kilka integracji jednocześnie (także dla tego samego pakietu).
- Pakiet sam pobiera dane (API): kasa jednorazowo wydaje klucz tylko do odczytu. Okres przez
?van=&tot=(RRRR-MM-DD) lub stały adres z?periode=(vandaag, gisteren, 7d, 30d, 90d, 365d, week, maand, vorigemaand, jaar); maksymalnie 366 dni, maksymalnie 200.000 wierszy. Klucz wAuthorization: Bearer,X-Sleutellub?sleutel=. - Przez portal: jeśli kasa jest połączona z portalem klienta, ten sam adres działa także spoza lokalu, bez otwierania portu:
https://<portaal>/bi/<kassa-id>/<gegevens>?periode=90d&formaat=csv&sleutel=.... Dzięki temu usługa Power BI odświeża dane według harmonogramu (bez bramy), a Google Sheets może je pobierać przez=IMPORTDATA("...")(to także źródło dla Looker Studio). Kasa pokazuje adres przy integracji. - Przegląd sieci przez portal klienta (kilka lokali): jeden adres i jeden klucz dla wszystkich Twoich kas razem. W każdej kasie, która ma brać udział, włącz Przegląd sieci przez portal klienta (pod przełącznikiem BI) i utwórz klucz w portalu klienta w Moje kasy → BI dla wszystkich lokali. Następnie:
https://<portaal>/bi/keten/<gegevens>?periode=90d&formaat=csv&sleutel=hpk_.... Portal pobiera dane z każdej kasy i łączy je, zkassaIdizaakw każdym wierszu. Kasy, które są offline lub nie biorą udziału, są wymienione wontbrekend(JSON) i w nagłówkuX-Ontbrekend. Sama kasa nie potrzebuje do tego własnego klucza; wyłączenie w kasie lub w portalu klienta to zatrzymuje. - Z tokenem jest on wysyłany jako
Authorization: Bearer, a wX-HorecaPOS-Handtekeningznajduje się podpis (sha256=HMAC treści). Jeśli się nie uda, kasa ponawia próbę co minutę; nic nie zostanie wysłane podwójnie. Z opcją od wysyła też starsze paragony. - Kasa dostarcza pliki: codziennie (o wybranej godzinie, za dzień poprzedni; pominięte dni są nadrabiane) lub co godzinę (dziś do teraz), jako CSV (przecinek lub średnik dla holenderskiego Excela) albo JSON, do folderu na komputerze kasy (na przykład folderu OneDrive lub SharePoint dla Power BI lub Excela), na serwer FTP(S) lub SFTP albo e-mailem. Nazwy plików:
horecapos_<gegevens>_<datum>.csv. - Wyślij test (push) i Eksportuj teraz (plik) przy integracji.
- Pobierz samodzielnie: wybierz dane, okres i format.
- Szablon Power BI (
.pbit): gotowy raport dla Power BI Desktop, przyciskiem Pobierz szablon Power BI w BI i eksport danych. Najpierw utwórz połączenie API (Power BI). W modelu: tabela na każdy zbiór danych z właściwymi typami, kalendarz (rok, miesiąc, tydzień, dzień tygodnia), relacje (data → kalendarz, pozycje paragonu → produkty, przepracowane godziny → pracownicy) i miary (obrót brutto i netto, VAT, napiwki, paragony, goście, średnia na paragon i na gościa, sprzedana ilość, obrót produktów, zapłacono, storna, przepracowane godziny, obrót na przepracowaną godzinę). Trzy strony: Przegląd (kluczowe wskaźniki, obrót na dzień, dzień tygodnia i godzinę, metody płatności), Produkty (na grupę i na produkt) i Personel (godziny i obrót na pracownika). Przez portal usługa Power BI odświeża go też według harmonogramu. - Sekrety (token, hasło, klucz) nigdy nie są widoczne w przeglądzie; puste = zachowaj, Wyczyść = usuń. Wszystko trafia do dziennika (bez sekretów).
Płace i grafik
Przy włączonej Rejestracji czasu pracy (Ustawienia → Lokal) w Ustawienia → Godziny pracy na dole znajduje się Płace i grafik (uprawnienie Zarządzanie ustawieniami), w dwóch osobnych blokach. Gdy rejestracja jest wyłączona, nie ma godzin: wtedy tylko blok Planowanie personelu (obrót, na żywo lub jako plik obrotu) znajduje się na dole Ustawienia → Księgowość, pod nagłówkiem Obrót do grafiku:
- Kadry i płace (payroll): wybierz program płacowy lub (Belgia) sekretariat socjalny, wypełnij jego pola i dla każdego pracownika jego numer kadrowy w tym programie. Następnie tworzysz za dany okres plik z przepracowanymi godzinami (zamknięte zmiany, na pracownika na dzień wejścia) i obrotem na pracownika (bez VAT, to, co on/ona rozliczył/a): gotowe pliki dla Loket.nl (Variabele gegevens, suma na pracownika za okres, wiersz nagłówka
aanslnr;persnr;ploeg;<looncomponent>) i SD Worx Belgia (Tijdsregistratie, stałe pozycje, na pracownika na dzień), w pozostałych przypadkach lista godzin (CSV: Datum; Personeelsnummer; Naam; Uren; Omzet excl. btw). Pracownicy bez numeru kadrowego nie trafiają do pliku Loket ani SD Worx; kasa informuje, kto to jest. - Planowanie personelu (WFM): wybierz system planowania. Ponowne wysłanie nadpisuje dane. Ponadto lista obrotu (CSV na dzień i godzinę, bez VAT i z VAT) oraz dla Strobbo plik Excel do Importeer omzet.
- Tylko programy działające w kraju lokalu, według grup i alfabetycznie; serwer odrzuca program z innego kraju (400).
- Klucze i tokeny nigdy nie są wyświetlane na ekranie.
- Dotyczy księgowości: koszty wynagrodzeń księguje program płacowy w księgowości, obrót księguje kasa (Ustawienia → Księgowość). AFAS Payroll i Exact Online Loon działają w tym samym środowisku co księgowość AFAS i Exact.
- Na kopii kasy w portalu nie jest to możliwe (robi to kasa w lokalu).
- W przypadku części programów API nie jest publiczne lub jest dostępne tylko dla partnerów (m.in. Loket, Nmbrs, Nostradamus, Employes, Shyfter, Planday, Eitje): są oznaczone jako na wniosek; do tego czasu plik. Układ plików SD Worx i Strobbo pochodzi z ich dokumentacji: zleć sprawdzenie pierwszego importu.
| Program | NL | BE | Na żywo | Plik | Uwaga |
|---|---|---|---|---|---|
| Oprogramowanie płacowe i biura płacowe | |||||
| ADP | ✓ | ✓ | na wniosek | Lista godzin na pracownika i dzień (CSV) | Integracja przez ADP (na wniosek); do tego czasu lista godzin na pracownika i dzień. |
| AFAS Payroll | ✓ | – | na wniosek | Lista godzin na pracownika i dzień (CSV) | Kadry i płace w AFAS Profit (to samo środowisko co księgowość w AFAS); integracja na wniosek, do tego czasu lista godzin. |
| BCS HR | ✓ | – | na wniosek | Lista godzin na pracownika i dzień (CSV) | Integracja przez BCS (na wniosek); do tego czasu lista godzin. |
| Buddee | ✓ | – | na wniosek | Lista godzin na pracownika i dzień (CSV) | Oprogramowanie kadrowo-płacowe; integracja na wniosek, do tego czasu lista godzin na pracownika i dzień. |
| Employes | ✓ | – | na wniosek | Lista godzin na pracownika i dzień (CSV) | Employes ma API do przepracowanych godzin (token klienta); integracja nastąpi po uzgodnieniu z Employes. Do tego czasu lista godzin. |
| Exact Online Loon | ✓ | – | na wniosek | Lista godzin na pracownika i dzień (CSV) | Kadry i płace w Exact Online (to samo środowisko co księgowość w Exact); integracja na wniosek, do tego czasu lista godzin. |
| Humanwave | ✓ | – | na wniosek | Lista godzin na pracownika i dzień (CSV) | Integracja przez Humanwave (na wniosek); do tego czasu lista godzin. |
| Loket.nl | ✓ | – | na wniosek | Loket.nl Variabele gegevens (CSV), Lista godzin na pracownika i dzień (CSV) | Plik do Werkgever → Collectieve mutaties → Importeren → Variabele gegevens (godziny na pracownika za okres). Na żywo przez API Loket po rejestracji w Loket. |
| Nmbrs | ✓ | – | na wniosek | Lista godzin na pracownika i dzień (CSV) | Lista godzin na pracownika i dzień do przeniesienia do Nmbrs. Na żywo przez API Nmbrs po zarejestrowaniu aplikacji w Nmbrs. |
| Salar (Van Winckel) | ✓ | – | – | Lista godzin na pracownika i dzień (CSV) | Lista godzin na pracownika i dzień dla biura rachunkowego; format importu Salar nie jest publiczny. |
| Sekretariaty socjalne | |||||
| Acerta | – | ✓ | na wniosek | Lista godzin na pracownika i dzień (CSV) | Sekretariat socjalny: układ pliku świadczeń otrzymasz od Acerta; do tego czasu lista godzin. |
| Group S | – | ✓ | na wniosek | Lista godzin na pracownika i dzień (CSV) | Sekretariat socjalny: układ pliku świadczeń otrzymasz od Group S; do tego czasu lista godzin. |
| Liantis | – | ✓ | na wniosek | Lista godzin na pracownika i dzień (CSV) | Sekretariat socjalny z API, które Liantis udostępnia dla każdej firmy osobno; do tego czasu lista godzin. |
| Partena Professional | – | ✓ | na wniosek | Lista godzin na pracownika i dzień (CSV) | Sekretariat socjalny: układ pliku świadczeń otrzymasz od Partena; do tego czasu lista godzin. |
| SD Worx | ✓ | ✓ | – | SD Worx Tijdsregistratie (TXT), Lista godzin na pracownika i dzień (CSV) | Belgia: plik Tijdsregistratie (stałe pozycje, na pracownika na dzień) do "Tijdsregistratie importeren". Holandia: lista godzin. |
| Securex | – | ✓ | na wniosek | Lista godzin na pracownika i dzień (CSV) | Sekretariat socjalny: integracje odbywają się przez partnerów; do tego czasu lista godzin. |
| Planowanie i rejestracja godzin | |||||
| Book'u | – | ✓ | na wniosek | Obrót na dzień i godzinę (CSV) | Book'u składa zgłoszenia Dimona; integracja z kasą na wniosek. Do tego czasu lista obrotu. |
| Deputy | ✓ | ✓ | ✓ | Obrót na dzień i godzinę (CSV) | Na żywo: obrót na godzinę trafia co godzinę do Deputy (Sales). Stały token tworzysz w Deputy w integracjach API. |
| Dyflexis | ✓ | – | ✓ | Obrót na dzień i godzinę (CSV) | Na żywo: obrót na godzinę trafia co godzinę do Dyflexis (information streams). Token API otrzymasz od Dyflexis. |
| Eitje | ✓ | – | na wniosek | Obrót na dzień i godzinę (CSV) | Eitje integruje się przez swój program partnerski; do tego czasu lista obrotu na dzień i godzinę. |
| Exact Horeko | ✓ | – | na wniosek | Obrót na dzień i godzinę (CSV) | Integracja przez Horeko (na wniosek); do tego czasu lista obrotu. |
| Fooks | ✓ | – | na wniosek | Obrót na dzień i godzinę (CSV) | Fooks sam buduje integracje z kasami; do tego czasu lista obrotu na dzień i godzinę. |
| L1NDA | ✓ | – | na wniosek | Obrót na dzień i godzinę (CSV) | L1NDA buduje integracje z kasami razem z partnerami; do tego czasu lista obrotu na dzień i godzinę. |
| Mr. Einstein | ✓ | – | na wniosek | Obrót na dzień i godzinę (CSV) | HR, grafik i koszty płac dla gastronomii; Mr. Einstein buduje integracje z kasami razem z dostawcą kasy (wniosek przez mreinstein.nl/contact). Do tego czasu lista obrotu na dzień i godzinę. |
| Nostradamus | ✓ | ✓ | na wniosek | Obrót na dzień i godzinę (CSV) | Nostradamus przyjmuje obrót przez swój interfejs kasowy (token API i domena lokalu, po złożeniu wniosku w Nostradamus); do tego czasu lista obrotu na dzień i godzinę. |
| Plan-Me | – | ✓ | na wniosek | Obrót na dzień i godzinę (CSV) | Plan-Me składa zgłoszenia Dimona; integracja z kasą na wniosek. Do tego czasu lista obrotu. |
| Planday | ✓ | ✓ | na wniosek | Obrót na dzień i godzinę (CSV) | Planday ma otwarte API dla systemów kasowych; integracja nastąpi po uzgodnieniu. Do tego czasu lista obrotu. |
| Shiftbase | ✓ | – | ✓ | Obrót na dzień i godzinę (CSV) | Na żywo: obrót dzienny trafia co godzinę do dziennika działu w Shiftbase. Klucz API tworzysz w Shiftbase w App center. |
| Shyfter | – | ✓ | na wniosek | Obrót na dzień i godzinę (CSV) | Shyfter składa zgłoszenia Dimona i przyjmuje obrót dzienny przez swoje API; integracja nastąpi po uzgodnieniu z Shyfter. Do tego czasu lista obrotu. |
| Strobbo | ✓ | ✓ | – | Import obrotu Strobbo (Excel), Obrót na dzień i godzinę (CSV) | Plik Excel do Planning → € → Importeer omzet (obrót na dzień na stanowisko pracy). |
| Tamigo | ✓ | ✓ | na wniosek | Obrót na dzień i godzinę (CSV) | Integracja przez Tamigo (na wniosek); do tego czasu lista obrotu. |
| Werktijden.nl | ✓ | – | – | Obrót na dzień i godzinę (CSV), Lista godzin na pracownika i dzień (CSV) | Werktijden.nl samo rejestruje godziny i (jeszcze) nie przyjmuje obrotu przez swoje API; listy służą do porównania. |
| XPS Logic | ✓ | – | na wniosek | Obrót na dzień i godzinę (CSV) | XPS Logic jest przeznaczony dla pracowników elastycznych i tymczasowych; integracja na wniosek. Do tego czasu lista obrotu. |
Wymogi prawne w Belgii i Holandii
Czego wymaga prawo i co robi w tym celu HorecaPOS (poproś księgowego o potwierdzenie, co dotyczy Twojego lokalu):
| Kraj | Wymóg | HorecaPOS |
|---|---|---|
| Belgia | Zarejestrowany system kasowy (GKS 2.0) z czarną skrzynką dla lokali gastronomicznych, które muszą go spełniać (m.in. przy obrocie z posiłków powyżej € 25.000 rocznie, bez VAT) | połączenie z czarną skrzynką (FDM), obowiązkowe dane na paragonie i liczniki w raporcie Z (kraj Belgia w Ustawienia → Lokal, FDM_API_KEY i FDM_TERMINAL_ID); na górze w Ustawienia → Lokal wybierasz, czy lokal podlega GKS: Tak = rozliczanie tylko z działającą czarną skrzynką, Nie = bez niej, z oświadczeniem administratora (co roku ponownie); dopóki nic nie wybrano, nie można się rozliczać. Kasa liczy obrót z posiłków i ostrzega powyżej 25.000 € |
| Belgia | E-fakturowanie przez Peppol: od 1 stycznia 2026 faktury między belgijskimi firmami będącymi podatnikami VAT muszą być obowiązkowo ustrukturyzowane i elektroniczne (UBL, Peppol BIS 3); paragony kasowe dla konsumentów nie są tym objęte | eksport dziennego obrotu jako UBL zgodnie z Peppol BIS Billing 3.0 do programu księgowego (Eksport księgowy); oraz faktury do rachunku dla klientów firmowych (Ustawienia → Faktury): UBL zgodnie z Peppol BIS Billing 3.0 plus faktura do druku, wysyłka e-mailem, przez Billit do sieci Peppol, na własny adres lub pobranie (zob. Faktury dla klientów firmowych) |
| Belgia | VAT w gastronomii od 1 marca 2026: posiłki na wynos i napoje bezalkoholowe 12% (na miejscu i na wynos), alkohol 21%, posiłki, które klient przygotowuje sam (fondue, gourmet) 6% | Asystent VAT (Ustawienia → Przepisy i regulacje): rodzaj dla każdego produktu, właściwa stawka od razu lub od wybranej daty; opisy stawek A/B/C zostały zaktualizowane |
| Holandia | Alcoholwet: żadnego alkoholu dla osób poniżej 18 lat, także przy sprzedaży online i dostawie (sprawdzenie wieku przy doręczeniu) | Weryfikacja wieku: produkty z alkoholem; w sklepie internetowym klient sam potwierdza 18+ (pole niezaznaczone wstępnie) z informacją, że wiek zostanie sprawdzony przy doręczeniu; "18+" na bonie kuchennym, bonie dostawy i paragonie |
| Holandia | Jednorazowe kubki i pojemniki (SUP): od 2024 osobna, widoczna cena za plastikowe opakowania jednorazowe przy odbiorze i dostawie | Opłata za opakowania jednorazowe dla każdego produktu, jako osobna pozycja na paragonie (VAT produktu) i osobno w obrocie |
| Holandia | Kaucja za puszki i plastikowe butelki | Kaucja dla każdego produktu (€ 0,15 / € 0,25), osobna pozycja bez VAT przy odbiorze i dostawie, osobno w obrocie |
| Holandia | Płatność gotówką: od 1 stycznia 2026 nie wolno przyjmować € 3.000 lub więcej gotówką za towary | Ostrzeżenie przy odbiorze i dostawie (także przy automacie gotówkowym); można potwierdzić, trafia do dziennika |
| Holandia i Belgia | Zmiana VAT: stawka lub produkt otrzymuje od wybranej daty inny procent VAT | Planowanie zmiany VAT: kasa wykonuje ją w danym dniu (w Belgii dla każdego produktu, litery A/B/C/D są stałe) |
| Holandia | Zakwaterowanie (noclegi) 21% od 1 stycznia 2026 | stawka VAT ustawiana dla każdego produktu |
| UE | Dyrektywa Omnibus: przekreślona cena "przed" może być tylko najniższą ceną z ostatnich 30 dni | sklep internetowy przekreśla cenę tylko względem najniższej ceny z 30 dni (kasa przechowuje historię cen; cotygodniowe happy hours są uwzględniane) |
| UE | European Accessibility Act (od 28 czerwca 2025): dostępne sklepy internetowe (WCAG 2.1 AA) | sklep internetowy działa z klawiaturą i czytnikiem ekranu (link "Przejdź do treści", widoczny fokus, etykiety) i ma deklarację dostępności (link w stopce) |
| Holandia | XML Auditfile Financieel (XAF): standard holenderskiej administracji podatkowej (Belastingdienst) do przekazywania (części) ksiąg; XAF 4.0 jest obowiązkowy od 2027 | eksport jako XAF 4.0 (Eksport do księgowości) |
| Holandia | Wiarygodny system kasowy: przechowywanie danych kasy (wszystkich paragonów, korekt i zdarzeń) i możliwość przekazania ich w formie cyfrowej podczas kontroli; Belastingdienst zaleca do tego XML Auditfile Afrekensystemen (XAA) | eksport jako XAA 3.2 (Raport → Obrót w okresie → Plik audytowy kasy), opcjonalnie podpisany certyfikatem dostawcy |
| Belgia | Rejestracja obecności w zarejestrowanym systemie kasowym: rejestrowanie początku i końca czasu pracy pracowników w systemie kasowym | Rejestracja czasu pracy (Ustawienia → Lokal; Obowiązkowe = najpierw zarejestruj wejście) jest rejestrowana w czarnej skrzynce |
| Belgia | Dimona: każde zatrudnienie (także flexi-jobs i studenci) zgłosić do RSZ przed jego rozpoczęciem | robi to Twój sekretariat socjalny lub narzędzie do planowania (np. Shyfter, Book'u, Plan-Me); HorecaPOS dostarcza przepracowane godziny i obrót (Ustawienia → Godziny pracy → Płace i grafik) |
| Holandia | Ewidencja czasu pracy i odpoczynku (ustawa o czasie pracy, Arbeidstijdenwet) | Rejestracja czasu pracy z przepracowanymi godzinami każdego pracownika, z możliwością korekty przez administratora (z dziennikiem zmian), oraz lista godzin dla programu płacowego |
| Holandia i Belgia | HACCP / bezpieczeństwo żywności: dokumentowanie temperatur (chłodzenie, zamrażarka, utrzymywanie na ciepło, obróbka cieplna, schładzanie, przyjęcie towaru) i sprzątania; NL Hygiënecode voor de Horeca (NVWA), BE autokontrola FAVV (przewodnik G-023) | Rejestr HACCP w kasie (Ustawienia → Przepisy prawne, przycisk HACCP u góry): punkty pomiarowe z limitami, zadania sprzątania i kontroli, obowiązkowe działanie korygujące przy odchyleniu, bez możliwości zmiany, zestawienie pominiętych wpisów jako CSV lub wydruk (zob. Rejestr HACCP) |
| Holandia i Belgia | Obowiązek przechowywania (NL 7 lat, BE 10 lat) | paragony, raporty Z i dziennik zdarzeń są przechowywane w bazie danych i w kopiach zapasowych; dziennika zdarzeń nie można zmienić ani usunąć z poziomu kasy |
Przepisy i regulacje
Ustawienia → Przepisy i regulacje (administrator; asystent VAT także z uprawnieniem Zarządzanie produktami). Domyślnie wszystko jest wyłączone; bez tych ustawień kasa działa jak zawsze.
- Weryfikacja wieku przy alkoholu (18+): w Produktach zaznacz Zawiera alkohol (lub użyj asystenta VAT). Przy odbiorze i dostawie z alkoholem na bonie kuchennym, paragonie i ekranie zamówień pojawia się "18+". W sklepie internetowym klient sam potwierdza, że ma ukończone 18 lat (pole nie jest wstępnie zaznaczone), i widzi, że wiek zostanie sprawdzony przy doręczeniu.
- Opłata za opakowania jednorazowe (Holandia): kwota dla każdego produktu (ceny orientacyjne: kubek € 0,25, pojemnik na posiłek € 0,50, mały pojemnik € 0,05). Przy odbiorze i dostawie kasa sama dodaje pozycję "Opłata za opakowania jednorazowe" na paragonie (z VAT produktu); przenosi się ona automatycznie z produktami (baza danych ją śledzi, także po usunięciu, przeniesieniu lub zmianie rodzaju zamówienia) i jest wykazywana osobno w obrocie. Na miejscu bez opłaty. Thuisbezorgd.nl i sklep internetowy naliczają własną opłatę.
- Kaucja (Holandia): dla każdego produktu (€ 0,15 puszka/butelka, € 0,25 duża butelka), pozycja "Kaucja" bez VAT, tylko przy odbiorze i dostawie.
- Gotówka od € 3.000 (Holandia, od 1-1-2026 zakazana przy towarach): przy odbiorze i dostawie komunikat przy płatności i przy automacie gotówkowym; pracownik może potwierdzić (np. catering jako usługa), co trafia do dziennika. Jedzenie i picie na miejscu to usługa: bez komunikatu.
- Asystent VAT: rodzaj dla każdego produktu (posiłek, napój bezalkoholowy, napój alkoholowy, żywność bez przygotowania, inne; najpierw propozycja na podstawie nazwy i grupy). Kasa pokazuje właściwą stawkę na miejscu i na wynos (Belgia od 1-3-2026: posiłki i napoje bezalkoholowe 12%, także na wynos; alkohol 21%; żywność bez przygotowania 6%. Holandia: 9% i 21%) i stosuje ją od razu lub od wybranej daty.
- Planowanie zmiany VAT: produkt do innej stawki lub (tylko Holandia) stawka z nowym procentem, od wybranej daty. Kasa wykonuje to sama tego dnia (sprawdza co kwadrans i przy uruchomieniu).
Faktury (w Belgii obowiązkowe między firmami) opisano w części Faktury dla klientów firmowych. Do zrobienia: GKS 2.0, dopytać o stan certyfikacji (zob. docs/backlog-concurrenten.md).
Faktury dla klientów firmowych
Ustawienia → Faktury (administrator; domyślnie wyłączone): włącz Faktury dla klientów firmowych (UBL / Peppol). Gdy jest włączone, poniżej znajdziesz Płatność na fakturę, Dane na fakturze, Usługi Peppol, Połączenie z bankiem (z płatnością na fakturę) i listę wszystkich faktur. W Belgii e-fakturowanie między firmami jest obowiązkowe od 1-1-2026.
- Faktury dla klientów biznesowych: Paragony → wybierz paragon → Faktura. Wpisz klienta (lub wybierz wcześniejszego); kasa tworzy numerowaną fakturę (np. F2026-0001, numeracja roczna) jako UBL zgodnie z Peppol BIS Billing 3.0 oraz jako fakturę do wydruku lub zapisania w PDF. Wysyłka e-mailem (oba pliki jako załączniki, opcjonalnie kopia do księgowego), przez Billit do sieci Peppol (
BILLIT_API_KEY,BILLIT_PARTY_ID), przez Storecove (STORECOVE_API_KEY,STORECOVE_LEGAL_ENTITY_ID; odbiorca wynika z Peppol-ID klienta, np. 0208 → BE:EN, 0106 → NL:KVK, w przeciwnym razie e-mailem przez Storecove) lub przez Banqup od Unifiedpost (BANQUP_CLIENT_ID,BANQUP_CLIENT_SECRET,BANQUP_SPACE_ID;BANQUP_SANDBOX=1dla środowiska testowego; Banqup sprawdza UBL i sam go dostarcza), na własny adres (FACTUUR_HTTP_URL, np. program księgowy lub inna usługa Peppol) albo pobranie. Jedna faktura na paragon; paragon jest już opłacony, więc "zapłacono". Numer KvK/numer przedsiębiorstwa, IBAN, Peppol-ID, prefiks i termin płatności w Dane na fakturze. Wszystkie faktury na dole zakładki (uprawnienie Obrót za okres). - Klucze, sekrety i nagłówki nigdy nie są wyświetlane (tylko "uzupełniono"; puste pole = bez zmian, Wyczyść = usunięcie) ani zapisywane w dzienniku (tylko to, które pola się zmieniły). Są przechowywane w bazie danych (
vestiging.peppol_gegevens): w kopiach zapasowych tak, w eksporcie konfiguracji nie.
Kiosk samoobsługowy
Goście zamawiają sami na słupku lub tablecie, jak w fast foodzie, i płacą przy kasie albo kartą przy kiosku. Ekrany zamówień są częścią samej kasy, więc menu, ceny, opcje, zestawy, happy hours, pory dnia, zdjęcia, alergeny, języki i paragon pochodzą z kasy i nie trzeba ich nigdzie indziej ustawiać. Na kiosku działa aplikacja PinPortal Kiosk 2 (Android, także Sunmi, oraz Windows, Linux i macOS), która wyświetla stronę i drukuje paragon. Domyślnie wyłączone.
Włączanie i ustawianie (administrator): Ustawienia → Lokal → Ekrany i obsługa → Kiosk samoobsługowy.
- Wybierz, co gość może wybrać: Na miejscu i/lub Na wynos (na wynos liczy cenę na wynos i stawkę VAT na wynos, jeśli są ustawione).
- Tekst powitalny, po ilu sekundach bez dotyku kiosk wraca do początku (koszyk jest wtedy czyszczony) oraz które grupy produktów są na kiosku (nic nie zaznaczone = wszystkie).
- Coś jeszcze?: zaznacz grupy produktów (np. napoje, desery); przy koszyku kiosk proponuje wtedy kilka produktów z tych grup.
- Płatność, dla każdego kiosku (zob. Dodawanie i łączenie kiosku):
- Przy kasie (domyślnie, jak w starym kiosku): gość zamawia, otrzymuje numer odbioru i płaci przy kasie. Przy kiosku nie jest potrzebny terminal płatniczy.
- Kartą przy kiosku: gość płaci na terminalu płatniczym przy kiosku.
- Gość wybiera: przy kasie lub kartą. Jeśli kiosk nie ma terminala, płaci się przy kasie.
- Do kuchni (przy płatności przy kasie): od razu po zamówieniu w kiosku (domyślnie) albo dopiero po zapłacie przy kasie.
- Paragon: na drukarce kiosku (domyślnie), na drukarce paragonów kasy albo bez paragonu (tylko numer na ekranie). Przy płatności przy kasie kiosk drukuje kartkę z numerem i jeszcze nie zapłacono; paragon pojawia się przy rozliczeniu przy kasie.
- Status zamówienia na telefonie (opcjonalnie, domyślnie wyłączone): na paragonie z kiosku i na ekranie końcowym pojawia się kod QR. Gość skanuje go, widzi swój numer i status (zamówione, w przygotowaniu, gotowe) i dostaje powiadomienie, gdy zamówienie jest gotowe. Działa to przez portal zarządzania, więc kasa musi być z nim połączona.
- Alkohol i produkty na wagę nigdy nie są na kiosku: bez obsługi nie da się sprawdzić wieku i nie ma wagi.
- Skaner kodów kreskowych (opcjonalnie, domyślnie wszystko wyłączone): zaznacz, co może zrobić skan w kiosku:
- produkt do koszyka (kod przy produkcie);
- kod rabatowy;
- kartę lojalnościową (gość zbiera punkty);
- kartę podarunkową lub przedpłaconą jako płatność. Jeśli saldo wystarcza, zamówienie jest od razu opłacone. W przeciwnym razie karta pokrywa część, a gość płaci resztę kartą lub przy kasie (wtedy jest to dozwolone także w kiosku tylko z płatnością kartą). Po takiej częściowej płatności gość nie może już anulować; zamówienie widnieje w kasie jako Kiosk … · numer.
Sam skaner ustawiasz w kiosku: w aplikacji PinPortal Kiosk 2 w zarządzaniu → Skaner kodów kreskowych (jako klawiatura, wbudowany skaner lub port COM), z testem skanera. Skaner działający jako klawiatura działa też bez aplikacji.
- Doładuj saldo (opcjonalnie, domyślnie wył.; działa tylko, gdy doładowywane saldo jest włączone): na ekranie startowym kiosku pojawia się wtedy Doładuj saldo. Gość skanuje swoją kartę lub kartę podarunkową (albo wpisuje kod), widzi saldo i wybiera kwotę. Kwoty ustawiasz sam (od 1 do 6, domyślnie € 10, € 20 i € 50). Płatność odbywa się tak, jak ustawiono dla kiosku: kartą albo przy kasie z numerem odbioru. Po rozliczeniu kwota jest na saldzie. Takie doładowanie nie trafia do kuchni, nie pojawia się na ekranie wywoławczym i nie dostaje kodu QR. Obowiązuje tu również maksymalne saldo z ustawienia Doładowywane saldo.
- Na mój pokój (integracja hotelowa, domyślnie wyłączona; Ustawienia → Hotel → Samoobsługa): przy koszyku pojawia się wtedy Dopisz do mojego pokoju. Gość hotelowy wpisuje numer pokoju i nazwisko; jeśli zgadza się to z gościem, który obecnie mieszka w tym pokoju, zamówienie trafia do kuchni i jest zapłacone na pokój (zob. Oprogramowanie hotelowe: dopisywanie do pokoju).
- Belgia (czarna skrzynka): to, czego jeszcze nie przetestowano z czarną skrzynką, jest w kiosku automatycznie wyłączone (bon podarunkowy lub saldo jako płatność, doładowanie, kod rabatowy, zestawy, opcje z dopłatą, happy hour), tak samo jak przy kasie.
Dodawanie i łączenie kiosku
- W sekcji Kioski wpisz nazwę (np. Kiosk wejście) i wybierz Dodaj kiosk. Dostaniesz kod połączenia z 6 cyfr (ważny 30 minut).
- Wybierz przy kiosku, jak płaci gość: domyślnie przy kasie. Jeśli to kiosk z terminalem, wybierz kartą lub gość wybiera i wybierz terminal płatniczy tego kiosku (z Ustawienia → Płatności).
- Otwórz na kiosku stronę kiosku:
- w lokalu: w aplikacji w zarządzaniu → Vast adres adres podany przy ustawieniu, np.
http://192.168.1.20:3000/kiosk; - lub przez portal zarządzania (https, także gdy kiosk nie jest w tej samej sieci): połącz adres kiosku podany przy ustawieniu z kodem kiosku w aplikacji, tak jak w starym kiosku.
- w lokalu: w aplikacji w zarządzaniu → Vast adres adres podany przy ustawieniu, np.
- Wpisz kod połączenia na kiosku. Gotowe: kiosk zapamiętuje swój klucz. Połącz ponownie daje nowy kod; Usuń rozłącza go.
Przy każdym kiosku widać, czy jest online.
Jak zamawia gość
- Ekran startowy z tekstem powitalnym; gość wybiera język (wszystkie języki kasy) i dotyka, aby zamówić.
- Na miejscu lub na wynos.
- Menu według grup produktów, ze zdjęciami, ceną (z happy hour), alergenami i tym, co wyprzedane. Produkty z wyborem lub zestaw otwierają okno wyboru.
- Koszyk: zmiana ilości i ewentualnie Coś jeszcze?.
- Zamów (płatność przy kasie): gość widzi swój numer odbioru duży na ekranie wraz z kwotą, dostaje kartkę i płaci przy kasie. W kasie zamówienie jest otwarte jako Kiosk Wejście · 42 (numer podany przez gościa); rozliczenie jak zawsze. Potem widnieje jako opłacone na ekranie wywoławczym i trafia do kuchni, jeśli miało to nastąpić dopiero po zapłacie.
- Zapłać kartą: kasa przesyła kwotę na terminal tego kiosku (to samo połączenie płatności co przy kasie). Jeśli się nie uda, gość może spróbować ponownie lub anulować (albo, jeśli może wybierać, jednak zapłacić przy kasie). Dopiero po udanej płatności zamówienie trafia do kuchni i zostaje rozliczone. Gość widzi swój numer odbioru duży na ekranie i dostaje paragon.
- Po kilku sekundach kiosk wraca do początku.
W razie awarii: powiadomienie i tryb awaryjny (w aplikacji kiosku, zarządzanie → Bij storing; domyślnie wyłączone). Gdy kiosk nie może połączyć się z kasą, pokazuje Even gesloten. Dwa dodatki:
- Teams, Slack, Discord, ntfy, Home Assistant, Make lub Zapier), a także komunikat hersteld, gdy znów działa. Przyciskiem Testmelding sturen sprawdzasz adres.
- Tryb awaryjny: kiosk zapisuje proste menu, które przekazuje mu strona kiosku: produkty bez wyborów i zestawów, w cenie na miejscu (lub na wynos, jeśli to jedyna opcja).
- Jeśli kasy nie ma przez jakiś czas (domyślnie 60 sekund), gość zamawia z tego menu.
- Gość płaci kartą lub przy ladzie. Płatność kartą jest możliwa tylko wtedy, gdy Pinbetaling jest włączone w aplikacji.
- Drukowane są dwa bony awaryjne: jeden dla gościa (N1, N2 …) i jeden dla lady/kuchni. Jest na nich informacja, że nie są paragonem.
- Gdy kasa wraca, strona kiosku wprowadza zamówienia awaryjne do kasy jako Nood N… <kiosk>. Nie trafiają do kuchni (ta miała już bon awaryjny) i nie pojawiają się na ekranie wywoławczym.
- Zapłacone kartą i ta sama kwota co w kasie: rozliczone jako Ręczna płatność kartą. W przeciwnym razie (płatność przy ladzie lub inna kwota) zamówienie pozostaje otwarte dla obsługi.
- Wszystko jest zapisane w dzienniku zdarzeń.
- Belgia: przy zarejestrowanym systemie kasowym (GKS, czarna skrzynka) każda sprzedaż musi od razu przejść przez kasę i FDM. Tryb awaryjny jest wtedy prawdopodobnie niedozwolony; najpierw to sprawdź. W Belgii aplikacja kiosku włącza go tylko po dodatkowym potwierdzeniu, a kasa wyświetla ostrzeżenie przy kiosku.
W kasie zamówienie z kiosku jest zwykłym zamówieniem (na wynos lub na miejscu, o nazwie Kiosk Wejście) na pracownika Kiosk. Kasa tworzy go sama; nikt nie może się na niego zalogować. Nie ustawiaj go jako nieaktywnego, bo kiosk nie będzie mógł zamawiać. Zamówienia z kiosku są w raportach, w Paragonach i na ekranie wywoławczym. Zamówienie niedokończone w kiosku (niezamówione lub nieopłacone kartą) wygasa samo po 30 minutach.
Płatność kartą w trybie testowym (Ustawienia → Płatności)? Wtedy kiosk naprawdę nie pobiera płatności; przydatne do wypróbowania. Bez internetu płatność kartą nie jest możliwa; kiosk mówi wtedy, że można zamówić przy ladzie.
Awaria: jeśli kasa jest nieosiągalna, aplikacja kiosku pokazuje "Chwilowo nieczynne" i sama wznawia działanie. Jeśli kiosk działa przez portal zarządzania i zniknie internet, aplikacja może przełączyć się na kasę w sieci lokalnej (w aplikacji: zarządzanie → Rozszerzenia → W razie awarii użyj sieci lokalnej); kiosk sam przekazuje ten adres.
Wyłączanie: kiosk pokazuje, że jest chwilowo zamknięty. Kioski i ustawienia zostają zachowane. W dzienniku są włączenie/wyłączenie, ustawienia, dodane i usunięte kioski, łączenie oraz anulowane zamówienia.
Cyfrowa tablica menu
Menu z cenami na telewizorze (lub innym monitorze z przeglądarką), prosto z kasy. Domyślnie wył.; włączanie: Ustawienia → Lokal → Ekrany i obsługa → Cyfrowa tablica menu. Następnie otwórz na telewizorze http://<kassaserver>:3000/menubord (lub użyj przycisku Na osobnym ekranie / Na tablecie lub telefonie z kodem QR). Bez logowania i bez parowania.
- Dla każdej grupy produktów produkty z ceną, w kolejności z kasy. Sam wybierasz, które grupy (i w jakiej kolejności), od 1 do 4 kolumn, ciemny lub jasny wygląd, własny nagłówek (puste = nazwa lokalu), zdjęcia produktów i alergeny.
- Zawsze aktualne: tablica co 10 sekund pobiera menu (i od razu przy zmianie), więc wyprzedany produkt (przekreślony z napisem Wyprzedane lub usunięty z tablicy), pusty magazyn, happy hour (cena promocyjna z przekreśloną ceną normalną, a u góry nazwa i godzina zakończenia) i pory dnia (tylko to, co jest teraz w sprzedaży) same wyświetlają się poprawnie.
- Jeśli nie wszystko mieści się na ekranie, strony zmieniają się kolejno (domyślnie co 12 sekund, do ustawienia od 5 do 120).
Personel i kody PIN
Ustawienia → Personel (tylko administrator): dodawanie pracowników, zmiana nazwy, roli i PIN-u oraz dezaktywacja.
- Role: obsługa (zamawianie, rozliczanie, raport X), kierownik (dodatkowo rabat, zwrot, zamknięcie dnia, szuflada kasowa i dziennik zdarzeń) oraz administrator (wszystko, także wszystkie Ustawienia). To ustawienia domyślne; uprawnienia obsługi i kierownika można zmienić (zob. Uprawnienia według roli).
- PIN od 4 do 8 cyfr, unikalny wśród aktywnych pracowników. Kody PIN są przechowywane w bazie danych wyłącznie w postaci zaszyfrowanej (hash) i nie da się ich odczytać.
- Trwałe usunięcie nie jest możliwe (paragony i dziennik zdarzeń odwołują się do pracownika); nieaktywny = nie może się już zalogować.
- Zawsze pozostaje co najmniej jeden aktywny administrator.
- Inna rola, nowy PIN lub dezaktywacja: bieżące sesje tego pracownika są natychmiast kończone.
- Belgia: opcjonalnie numer rejestru krajowego do rejestracji personelu.
- Język: język ekranów dla tego pracownika (lub "Język urządzenia"). Po zalogowaniu kasa od razu działa w tym języku; pracownik może go też sam zmienić za pomocą flagi w prawym dolnym rogu (zob. Języki).
- Wskazówka: zmień demonstracyjne kody PIN 1111 i 2222, zanim kasa zacznie działać produkcyjnie.
Logowanie kartą (opcjonalnie)
Domyślnie wyłączone. Włączenie: Ustawienia → Personel, pole Logowanie kartą (NFC, RFID lub iButton). Wymagane: czytnik kart USB działający jak klawiatura (do kart NFC lub RFID, breloków, opasek lub kluczy iButton). Taki czytnik "wpisuje" numer karty i naciska Enter; sterownik ani integracja nie są potrzebne.
- Przypisywanie: dotknij pracownika, potem Przypisz kartę i przyłóż kartę do czytnika. Karta należy do jednego pracownika. Usuń kartę, jeśli zaginęła.
- Logowanie: na ekranie logowania przyłóż kartę do czytnika. PIN nadal działa normalnie.
- Rejestracja wejścia i wyjścia (jeśli jest włączona): na ekranie logowania Wejście / wyjście i karta do czytnika.
- Numer karty jest zapisany w bazie danych tylko w postaci zaszyfrowanej (hash), tak jak PIN. Nieaktywni pracownicy nie mogą się zalogować także kartą.
- Wył.: logowanie tylko kodem PIN, jak zawsze. Przypisane karty pozostają zapisane.
Uprawnienia według roli
Ustawienia → Uprawnienia (tylko administrator): dla każdej roli zaznacz, co mogą obsługa i kierownik. Domyślnie wszystko jest dokładnie tak jak powyżej (tak jak kasa działała zawsze); pole różniące się od domyślnego jest kolorowe.
| Uprawnienie | Obsługa | Kierownik |
|---|---|---|
| Usuwanie pozycji po zamówieniu (storno) | tak | tak |
| Udzielanie / usuwanie rabatu | nie | tak |
| Oznaczanie produktu jako „brak” | tak | tak |
| Drukowanie kopii paragonu | tak | tak |
| Zwrot (korekta) | nie | tak |
| Rozliczanie na fakturę i przyjmowanie wpłat za faktury (tylko przy włączonej płatności na fakturę) | nie | tak |
| Stan pośredni (raport X) | tak | tak |
| Zamknięcie dnia (raport Z) | nie | tak |
| Obrót w okresie | nie | tak |
| Zarządzanie szufladą kasową | nie | tak |
| Zarządzanie kartami podarunkowymi (tylko przy kartach podarunkowych z saldem) | nie | tak |
| Czytanie opinii i odpowiadanie na nie (tylko przy włączonym zarządzaniu opiniami) | nie | tak |
| Zarządzanie kartą lojalnościową (tylko przy włączonej karcie lojalnościowej) | nie | tak |
| Przeglądanie dziennika zdarzeń | nie | tak |
| Podgląd obrazu z kamer (tylko przy włączonym obrazie z kamer) | nie | tak |
| Zarządzanie magazynem (tylko przy włączonym magazynie) | nie | tak |
| Zarządzanie produktami | nie | nie |
| Zarządzanie planami sal | nie | nie |
| Ustawienia lokalu, płatności i drukarek | nie | nie |
| Przeglądanie i edycja godzin pracy | nie | nie |
- Administrator może zawsze wszystko. Zmiana personelu i uprawnień zawsze pozostaje zarezerwowana dla administratora (w przeciwnym razie ktoś mógłby nadać sobie więcej uprawnień).
- Przyciski i zakładki, do których rola nie ma uprawnień, są dla niej ukryte; serwer kasy również to sprawdza. Jeśli kierownik dostanie np. Zarządzanie produktami, zobaczy przycisk Ustawienia tylko z zakładką Produkty.
- Zmiany obowiązują od razu na wszystkich kasach i trafiają do dziennika zdarzeń. Przywróć domyślne przywraca wszystko do stanu pierwotnego.
Dane lokalu
Ustawienia → Lokal (tylko administrator): nazwa, adres, kod pocztowy, miejscowość, telefon i numer VAT placówki. Widnieją one na górze każdego paragonu i pro formy. Tu można też ustawić tekst na dole paragonu (może mieć kilka wierszy; puste = bez tekstu; domyślnie "Dziękujemy i do zobaczenia!"), a pod nim język paragonu (domyślnie niderlandzki; zob. Języki). Podgląd paragonu zmienia się na żywo. Po zapisaniu następny paragon od razu używa nowych danych. Kraju i danych fiskalnych (GKS) celowo nie można tu zmienić. W Belgii numer VAT jest obowiązkowy. Zaznaczenie Zaokrąglaj płatności gotówkowe do 5 centów (domyślnie wyłączone) powoduje zaokrąglanie sumy przy gotówce (€ 6,62 → € 6,60, € 6,63 → € 6,65); różnica widnieje na paragonie jako "Zaokrąglenie". Karta zawsze rozliczana jest co do grosza.
Zarządzanie produktami
Zaloguj się jako administrator i wybierz Ustawienia → Produkty.
- Dodawanie, zmiana (nazwa, cena, grupa, stawka VAT na miejscu i na wynos, nazwa na paragonie, kod, wyprzedane) i usuwanie grup produktów i produktów. Grupy i produkty mogą mieć własny kolor; produkt z kolorem ma kolorowy przycisk na ekranie zamówienia (tekst automatycznie biały lub ciemny dla czytelności).
- Kolejność zmieniasz, przeciągając grupę lub produkt za ≡. Działa to myszą i palcem na tablecie. Dokładnie ta kolejność obowiązuje potem na ekranie zamówienia; otwarte ekrany kasy aktualizują się od razu.
- Usunięcie usuwa produkt z kasy, ale stare zamówienia i dziennik fiskalny nadal go znają. Grupę można usunąć dopiero, gdy jest pusta.
- Opcje wyboru: otwórz produkt lub grupę produktów i w "Opcje wyboru" dodaj grupy opcji, takie jak "Sposób przygotowania" (dokładnie jedna, obowiązkowa), "Sos" (najwyżej jeden) lub "Dodatki" (kilka, z minimum i maksimum; puste maksimum = bez limitu). Każda opcja ma nazwę i dopłatę (może być ujemna, np. -0,50). Grupy opcji grupy produktów dotyczą wszystkich produktów w tej grupie, oprócz własnych opcji produktu. Kolejność za pomocą ▲▼. Usunąć można zawsze: istniejące zamówienia i paragony same przechowują wybrane opcje. Serwer również sprawdza opcje obowiązkowe i maksimum.
- Zdjęcie produktu: zob. Zdjęcia produktów.
- Cena za kilogram, numer PLU i tara (tylko gdy waga jest włączona): zob. Konfiguracja wagi. Bez zaznaczenia produkt pozostaje na sztuki.
Zdjęcia produktów
Każdy produkt może mieć zdjęcie.
- Dodawanie zdjęcia: Ustawienia → Produkty → wybierz produkt → Wybierz zdjęcie (na tablecie lub telefonie można też od razu użyć aparatu). Zdjęcie jest pomniejszane w przeglądarce do najwyżej 512 × 512 pikseli (JPEG, zwykle 20–80 kB) i od razu zapisywane; Inne zdjęcie je zastępuje, Usuń zdjęcie je usuwa. Na liście produktów przed nazwą widnieje mała miniatura. Tylko z uprawnieniem Zarządzanie produktami; jpg, png i webp, najwyżej 512 kB.
- Wyświetlanie wybiera administrator w Ustawienia → Lokal → Zdjęcia produktów, niezależnie od siebie i domyślnie wył.:
- Zdjęcie produktu na przyciskach ekranu zamówień: zdjęcie u góry przycisku produktu, z nazwą i ceną pod spodem.
- Zdjęcie produktu przy produktach na ekranie klienta: mała miniatura przed każdą pozycją na ekranie klienta (sam ekran klienta też musi być włączony). Produkty bez zdjęcia pozostają bez zmian; gdy opcja jest wyłączona, wszystko działa dokładnie jak dotychczas.
Skaner kodów kreskowych
Skanerem kodów kreskowych przy kasie skanujesz produkty, kody rabatowe, karty lojalnościowe i karty podarunkowe. Włączysz go w Ustawienia → Skaner (karta obok drukarek i wagi; domyślnie wyłączony). Zaznacz, co robi skan na ekranie zamówień:
- Produkt na paragon: produkt z tym kodem (Ustawienia → Produkty, pole Kod; np. kod kreskowy EAN z opakowania). Przy wyborach, menu lub cenie za kilogram najpierw otwiera się okno wyboru lub waga, tak jak przy dotknięciu. To samo robi Skanowanie na ekranie zamówień w Drukuj etykiety; to nadal działa jak dotąd.
- Kod rabatowy na paragon (jeśli kody rabatowe są włączone).
- Karta lojalnościowa: klient z tym numerem karty trafia na paragon (jeśli karta lojalnościowa jest włączona). Jeśli zeskanujesz nieznany kod na paragonie z klientem, kasa zapyta, czy to jego nowa karta.
- Karta podarunkowa lub przedpłacona: kasa pokazuje saldo (jeśli karty podarunkowe z saldem są włączone). Płatność odbywa się w Rozliczenie → Karta podarunkowa; tam też możesz zeskanować kartę.
Kasa szuka najpierw wśród produktów, potem wśród kart lojalnościowych, kart podarunkowych i kodów rabatowych. Skanowanie działa na ekranie zamówień, gdy nie jesteś w polu wprowadzania. W polu wprowadzania kod po prostu trafia do tego pola.
Test skanera: w Ustawienia → Skaner przy każdym skanie widzisz kod i co kasa z nim robi, nawet gdy skaner jest jeszcze wyłączony. Jeśli nie działa:
- Ustaw skaner jako klawiaturę (USB-HID), z Enter po kodzie. W większości skanerów tak już jest.
- Wbudowany skaner (np. w kasie Sunmi) ustawiasz w ustawieniach skanera urządzenia na wprowadzanie z klawiatury.
- Etykietami wagi TS6X (waga i cena) zajmuje się sama waga, także przy włączonym skanerze.
W kiosku skaner ustawiasz osobno (Ustawienia → Lokal → Kiosk); zobacz Kiosk samoobsługowy.
Drukowanie etykiet
Etykiety produktów z nazwą, ceną i kodem kreskowym, na drukarce etykiet (Brother, Dymo, Zebra ...) zainstalowanej na komputerze lub tablecie. Włączasz w Ustawienia → Lokal → Drukuj etykiety (domyślnie wyłączone). Tam wybierasz też format etykiety (38 × 25, 57 × 32, 62 × 29 lub 100 × 50 mm) oraz czy mają się na niej znaleźć cena i kod kreskowy. Wydruk próbny drukuje jedną etykietę testową.
- Ustawienia → Produkty → (produkt) → Etykiety: wybierz liczbę i Drukuj.
- Zakupy → (otrzymane zamówienie) → Drukuj etykiety: dla każdego produktu tyle etykiet, ile dotarło (otrzymane jednostki zamówienia × ilość w jednostce zamówienia; bez składników). Maksymalnie 500 etykiet naraz.
- Kasa otwiera okno drukowania: wybierz w nim drukarkę etykiet i format papieru rolki. Każda etykieta to jedna strona.
- Kod kreskowy to kod produktu (Ustawienia → Produkty): 8 lub 13 cyfr z poprawną cyfrą kontrolną = EAN (12 cyfr: cyfra kontrolna zostanie dodana), w przeciwnym razie Code 128 (litery, cyfry i znaki interpunkcyjne, do 30 znaków). Bez kodu nie ma kodu kreskowego.
- Skanowanie na ekranie zamówień (pole wyboru, domyślnie wyłączone): skaner kodów kreskowych działający jak klawiatura dodaje produkt o tym kodzie, z normalnymi wyborami (opcje, waga, alergia). Nie razem z wagą TS6X, która ma własne etykiety z wagą i ceną.
- Uprawnienie: Zarządzanie produktami lub Zarządzanie magazynem.
Konfiguracja wagi (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)
Osobna zakładka Ustawienia → Waga (uprawnienie Ustawienia lokalu, płatności i drukarek, domyślnie tylko administrator; zakładka jest zawsze widoczna, także gdy waga jest jeszcze wyłączona). Domyślnie wył.: wtedy kasa działa dokładnie jak dotychczas. Nie widzisz zakładki?
Automatyczne wyszukiwanie. Jeśli nic jeszcze nie skonfigurowano, kasa przy otwarciu tej sekcji sama rozpoczyna wyszukiwanie (przycisk Szukaj robi to ponownie):
- czy kasa (serwer) sama działa na wadze PC lub AI firmy Aclas (TS6X, TS3X, TS5EX/NX/GX, iS6X, iS2X, iR6X, Ti6X, iL8X; marka/model urządzenia: Windows przez WMI, Android przez
getprop, Linux przez DMI) i odpowiada Aclas Scale Module? Wtedy ta waga zostaje ustawiona jako Na tym urządzeniu, a także waga etykietująca; na Linuksie (brak Scale Module) wbudowana waga na znalezionym porcie wewnętrznym (/dev/ttyS...) jako "TS6X (ingebouwd)", z modelem; - czy do portu COM/USB podłączona jest OS6X? Każdy port jest sprawdzany przy 9600, 4800, 2400 i 19200 bodach: najpierw krótkie nasłuchiwanie (ciągłe), potem wysłanie
W(Toledo), a w przeciwnym razie Dialog 06 (9600, 7 bitów danych, parzystość nieparzysta: zapytanie o status).
Znaleziona = wpisana do formularza z przyciskiem Włącz i używaj: jedno dotknięcie i działa. (Wyszukiwanie wysyła W do każdego wolnego portu COM; zajęty port, np. przez terminal płatniczy, jest pomijany.)
Wszystkie wagi Aclas. Dla każdej wagi wybierasz model; kasa wie wtedy, jak można ją podłączyć. Są dwa rodzaje:
- Na tym urządzeniu (ustawiasz raz): kasa działa na wadze (waga PC lub AI). Z Windows lub Androidem waży przez Aclas Scale Module, bez portu, prędkości i protokołu; z Linuksem (brak Scale Module) przez wewnętrzny port wagi (zwykle
/dev/ttyS0lub/dev/ttyS1), z portem, prędkością i protokołem. Na kasę jest tylko jedna; wyszukiwanie znajduje ją samo. Waga PC lub AI (TS6X, iS6X ...) jest zawsze Na tym urządzeniu: może być na liście tylko raz, a pozostałych modeli PC/AI nie da się już wybrać. TS6X w innym miejscu lokalu może nadal drukować etykiety (włącz wtedy tylko Skanowanie etykiet). - Podłączone (kilka naraz): waga jest podłączona do serwera kasy kablem (RS232/USB), przez Bluetooth lub sieć. Tyle, ile potrzeba (najwyżej 8), każda z własną nazwą.
Jedna lista, dwa pola. Wszystkie wagi są na jednej liście. Dla każdej wagi zaznaczasz, co robi: Ważenie przy kasie (kasa pobiera wagę przy zamówieniu) i/lub Skanuj etykiety (waga drukuje etykietę z kodem kreskowym, którą kasa skanuje, i otrzymuje PLU z kasy). Waga PC lub AI, np. TS6X, potrafi oba; waga etykietująca LS tylko etykiety. Etykiety mogą pochodzić z jednej wagi na lokal.
| Model | Rodzaj | Złącza | W kasie |
|---|---|---|---|
| OS6X | Waga POS | RS232, USB, Bluetooth | podłączona, kilka naraz |
| OS2X | Waga POS | RS232, USB | podłączona, kilka naraz |
| CS6X, CS3X | Waga kasowa | RS232, USB, Ethernet, wifi | podłączona, kilka naraz |
| TS6X, TS3X, TS5EX, TS5NX, TS5GX | Waga PC (Windows, Android, Linux) | RS232, USB, Ethernet, wifi | na tym urządzeniu (1x), także jako waga etykietująca |
| iS6X, iS2X, iR6X, Ti6X, iL8X | Waga AI z rozpoznawaniem produktów (Windows, Android, Linux) | RS232, USB, Ethernet, wifi | na tym urządzeniu (1x), także jako waga etykietująca |
| iS5X, OiT2X | Waga AI (tylko Linux) | RS232, USB, Ethernet | podłączona lub jako waga etykietująca |
| LS2S, LS2RX, LS2CX, LS2NX, LS5SX, LS5RX, LS5CX, LS5NX, LS6CX, LS6RX, LS6NX | Waga etykietująca | RS232, Ethernet, wifi | skanowanie etykiet i PLU |
| PS1CX, PS1DX, PS6CX, PS6DX | Waga obliczeniowa | RS232 | podłączona, kilka naraz |
| PS1BX | Waga obliczeniowa bez złącza | brak | waga ręcznie |
| LH15X | Waga wisząca z drukarką etykiet | RS232, Ethernet, wifi | podłączona lub jako waga etykietująca |
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 i Zebra. Uwzględniono popularne modele tych marek, dla których wiadomo, jak kasa się z nimi komunikuje (do przetestowania = protokół nie jest dosłownie podany w żadnym źródle; kasa wybiera najbardziej oczywisty). Wszystkie podłączone (kilka naraz) albo jako waga etykietująca, której etykietę kasa skanuje:
| Marka | Model | Rodzaj | Połączenie | Protokół (fabryczny) | W kasie |
|---|---|---|---|---|---|
| A&D | EK-i (m.in. EK-610i), HV-WP | Waga kasowa (tylko waga) | RS232, EK-i także USB | Ciągłe (tryb stream), 2400 bodów, 7E1 | podłączona, kilka naraz |
| Adam Equipment | Swift | Waga obliczeniowa | RS232, USB (opcja) | Ciągłe (ciągle do PC), 9600 8N1 (do przetestowania) | podłączona, kilka naraz |
| Avery Berkel | FX110, FX120, FX131 (do zabudowy ze skanerem) | Waga kasowa | RS232, FX131 także USB | Mettler Toledo 82/7 = Toledo 8217 (kasa wysyła W), 9600 bodów, 7E1 | podłączona, kilka naraz |
| Avery Berkel | FX125 | Waga obliczeniowa | RS232 | Checkout-Dialog 06 (9600, 7O1) | podłączona, kilka naraz |
| Avery Berkel | Xs, XTs, XTi | Waga etykietująca | Ethernet, Wi-Fi, USB | własne PLU na wadze | skanowanie etykiet |
| Avery Weigh-Tronix | 7820, 7829, ZP900 | Waga kasowa | RS232, 7820 także USB, ZP900 także USB i Ethernet | NCI (kasa wysyła W), 9600 bodów, 7E1 | podłączona, kilka naraz |
| Balanzas Marques | BM1000P TOP | Waga kasowa (tylko waga) | RS232 | METTLER (kasa wysyła W, Toledo), 9600 bodów, 7E1 | podłączona, kilka naraz |
| Balanzas Marques | BM5 Junior Tower Label, BM500 ETQ | Waga etykietująca | Ethernet, USB, RS232, BM500 ETQ także wifi | własne PLU na wadze | skanowanie etykiet |
| Baxtran | TW, VW, XTA, XTA-P | Waga obliczeniowa | RS232 | Toledo (kasa wysyła W), 9600 bodów, 7E1 | podłączona, kilka naraz |
| Bizerba | CS 300 (także do zabudowy) | Waga kasowa | RS232 | Checkout-Dialog 06 (9600, 7O1) | podłączona, kilka naraz |
| Bizerba | K-Class Flex, KH II | Waga etykietująca | Ethernet | własne PLU na wadze | skanowanie etykiet |
| Brecknell | 6702U, 6710U, 6720U | Waga kasowa | RS232, USB (wirtualny port COM) | NCI (kasa wysyła W), 9600 bodów, 7E1 | podłączona, kilka naraz |
| CAS | PD-II, PDN, PDI, PDS-B | Waga kasowa | RS232, PDN także USB i Bluetooth, PDI także USB | ECR type 2 = Toledo (kasa wysyła W), 9600 bodów, 7E1 | podłączona, kilka naraz |
| CAS | CL3000, CL5500, CL7200 | Waga etykietująca | Ethernet, USB, RS232, CL5500 i CL7200 także wifi | własne PLU na wadze | skanowanie etykiet |
| Datalogic | Magellan 9300i, 9400i, 9800i (skaner z wagą) | Waga kasowa | RS232 (osobny port wagi), USB | Mettler Toledo 8217 (kasa wysyła W), 9600 bodów, 7E1 | podłączona, kilka naraz |
| Dibal | KS-400, D-POS 400 | Waga kasowa | RS232, D-POS 400 także USB | Checkout-Dialog 06 (9600, 7O1) | podłączona, kilka naraz |
| Dibal | G-325, PI-100 | Waga obliczeniowa | RS232 | Checkout-Dialog 06 (9600, 7O1) | podłączona, kilka naraz |
| Dibal | M-500 (Mistral), D-900, CS-2200 | Waga etykietująca | Ethernet, Wi-Fi, USB | własne PLU na wadze | skanowanie etykiet |
| DIGI | DS-781 | Waga obliczeniowa | RS232 | DIGI Type B (kasa wysyła ENQ), 9600 8N1 | podłączona, kilka naraz |
| DIGI | SM-120, SM-6000 | Waga etykietująca | Ethernet, Wi-Fi | własne PLU na wadze | skanowanie etykiet |
| Dini Argeo | DFW, DGT, 3590E | Waga kasowa (tylko waga) | RS232, USB, Ethernet, DFW i 3590E także wifi | Ciągłe (ST,GS, 0.512,kg), 9600 8N1 | podłączona, kilka naraz |
| Excell Precision | TPE, AM4, FD4-P, FDP4-P, GE4, GEP4 | Waga obliczeniowa | RS232 | Ciągłe (ST,GS,+0.876kg), 9600 8N1 (poza TPE do przetestowania) | podłączona, kilka naraz |
| Gram | XFOC RS, XFOC+ RS, ZFOC RS | Waga obliczeniowa | RS232, USB (kabel od Gram) | Gram (kasa wysyła ENQ, potem DC1), 9600 8N1 (XFOC do przetestowania) | podłączona, kilka naraz |
| Ishida | Uni-3, Uni-5, Uni-7, Uni-9 | Waga etykietująca | Ethernet, Wi-Fi, USB | własne PLU na wadze | skanowanie etykiet |
| Kern & Sohn | RPB, RFC | Waga obliczeniowa | RS232, USB | Checkout-Dialog 06 (Prot = DLG-06, 9600, 7O1) | podłączona, kilka naraz |
| Kern & Sohn | RFE (cena), IFB, EOC | Waga obliczeniowa / kasowa | RS232 | Ciągłe, 9600 8N1 | podłączona, kilka naraz |
| Mettler Toledo | Ariva-S | Waga kasowa | RS232, USB (wirtualny port COM) | Toledo 8217 (kasa wysyła W), 9600 bodów, 7E1 | podłączona, kilka naraz |
| Mettler Toledo | Viva | Waga kasowa | RS232 | Toledo 8217, 9600 bodów, 7E1 | podłączona, kilka naraz |
| Mettler Toledo | bPlus, UC Evo | Waga etykietująca | Ethernet, Wi-Fi | własne PLU na wadze | skanowanie etykiet |
| Minebea Intec | Signum, Combics, Midrics, Puro | Waga kasowa (tylko waga) | RS232, USB, Signum i Combics także Ethernet | Ciągłe (SBI, automatyczny wydruk), 9600 8N1 | podłączona, kilka naraz |
| Ohaus | Aviator 7000 | Waga obliczeniowa | RS232 lub USB | Checkout-Dialog 06 (9600, 7O1) | podłączona, kilka naraz |
| Ohaus | Valor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000 | Waga kasowa (tylko waga) | RS232, USB, Ethernet | Ciągłe (Auto Print Continuous), 9600 8N1 | podłączona, kilka naraz |
| Precia Molen | DP400 | Waga kasowa | RS232, USB | Checkout-Dialog 06 (9600, 7O1) | podłączona, kilka naraz |
| Precia Molen | DPOS CR, C 210 B, C 210 C | Waga obliczeniowa | RS232 | Checkout-Dialog 06 (9600, 7O1; C 210 do przetestowania) | podłączona, kilka naraz |
| Precia Molen | Corail 500 | Waga etykietująca | Ethernet, Wi-Fi | własne PLU na wadze | skanowanie etykiet |
| Precisa | XB, XT, LS, LX (wagi precyzyjne) | Waga kasowa (tylko waga) | RS232, LS i LX także USB | Ciągłe (tryb wydruku CONTINUOUS), 9600 8N1 | podłączona, kilka naraz |
| Rice Lake | BenchPro BP-S, BenchPro BP-R | Waga kasowa | RS232 | BP-S Toledo 8213, BP-R NCI (obie: kasa wysyła W), 9600 bodów, 7E1 (do przetestowania) | podłączona, kilka naraz |
| Rongta | RLS1000, RLS1100 | Waga etykietująca | Ethernet, RS232, wifi | własne PLU na wadze | skanowanie etykiet |
| Sartorius | Entris, Quintix | Waga kasowa (tylko waga) | RS232, USB | Ciągłe (SBI, automatyczny wydruk), 9600 8N1 | podłączona, kilka naraz |
| Star Micronics | mG-T12, mG-T30, mG-T60, mG-S8200 | Waga kasowa (tylko waga) | RS232, USB (wirtualny port COM) | Ciągłe, 9600 8N1 (do przetestowania) | podłączona, kilka naraz |
| T-Scale | PA10, PA15, PEA10 | Waga etykietująca | Ethernet | własne PLU na wadze | skanowanie etykiet |
| UWE | ASEP | Waga obliczeniowa | RS232 | Ciągłe, 9600 8N1 (do przetestowania) | podłączona, kilka naraz |
| Wedderburn | TSDS983 | Waga kasowa | RS232 | DIGI Type B (kasa wysyła ENQ), 9600 8N1 (do przetestowania) | podłączona, kilka naraz |
| Wedderburn | TSDS781T, TSDS782T | Waga obliczeniowa | RS232 | DIGI Type B, 9600 8N1 (do przetestowania) | podłączona, kilka naraz |
| Wedderburn | TSSM120 | Waga etykietująca | Ethernet, RS232 | własne PLU na wadze | skanowanie etykiet |
| Wintec | ScalePOS ACS-S60E (kasa z wbudowaną wagą) | Waga kasowa | wewnętrzny COM6 (Windows) lub COM4 (Android) | Ciągłe, 9600 8N1 (do przetestowania) | podłączona |
| Zebra | MP7000, MP72 (skaner z wagą) | Waga kasowa | RS232 (port AUX) | SASI = Toledo (kasa wysyła W), 9600 bodów, 7E1 (do przetestowania) | podłączona, kilka naraz |
- A&D EK-i i HV-WP: ustaw wagę na stream (EK-i:
prt 0; fabrycznie jest ustawiona na klawisz PRINT), a kasę na Ciągłe z 2400 bodów i 7E1 (fabryczne ustawienie A&D). Komunikat toST,+00512.00 g(US= w ruchu,OL= za ciężko). - Adam Equipment Swift: ustaw wagę na ciągle do PC (8N1); kasa jest wtedy ustawiona na Ciągłe.
- Avery Berkel FX110, FX120 i FX131: na wadze wybierz protokół Mettler Toledo 82/7, a kasę ustaw na Odpytywanie (Toledo) z 7E1 (9600 bodów). Dialog 06 też działa. FX125 (z wyświetlaczem ceny) nie obsługuje Toledo: tam Dialog 06. Kasa ustawi to sama po wybraniu modelu.
- Avery Weigh-Tronix 7820, 7829 i ZP900 oraz Brecknell 6702U, 6710U i 6720U: NCI, protokół Weigh-Tronix. Kasa wysyła
W(tak jak przy Toledo), waga odpowiada wagą (1.234KG) i wierszem statusu, który mówi, czy jest w ruchu, przeciążona czy za lekka. Kasa jest ustawiona na Odpytywanie (Toledo) z 7E1 (9600 bodów). USB działa jako wirtualny port COM. W ZP900 podłącz kasę do portu 2 (NCI). W 67xxU można na wadze ustawić też 8213 (SCP03). - Balanzas Marques BM1000P TOP: przy porcie COM wybierz protokół B (METTLER) oraz 9600 bodów, 7 bitów danych, parzystość parzysta; kasa jest wtedy ustawiona na Odpytywanie (Toledo) z 7E1.
- Baxtran TW, VW, XTA i XTA-P (wagi kalkulacyjne; VW i XTA-P z kolumną): w menu RS232 wagi wybierz protokół Toledo, 9600 bodów i 7 bitów danych z parzystością parzystą (7E1); kasa jest wtedy ustawiona na Odpytywanie (Toledo) z 7E1. Kasa ustawi to sama po wybraniu modelu. CONT (waga sama wysyła) też działa: ustaw wtedy kasę na Ciągłe z tą samą prędkością i bitami danych. Podłączenie kablem RS232 (9-pinowym) lub kablem USB-RS232.
- Bizerba CS 300: Checkout-Dialog 06 (specyfikacja Bizerba): kasa wysyła cenę za kg, legalizowana waga liczy kwotę. Jeśli waga prosi o kody kontrolne, otrzymasz je od Bizerba lub dostawcy.
- CAS PD-II, PDN, PDI i PDS-B (PDS-B m.in. w LRE): wybierz na wadze ECR type 2 (Toledo), a kasę ustaw na Odpytywanie (Toledo) z 7E1 (9600 bodów).
- Datalogic Magellan 9300i, 9400i i 9800i: ustaw Scale Interface Type osobnego portu wagi na Mettler Toledo 8217, a kasę na Odpytywanie (Toledo) z 7E1.
- Dibal KS-400, D-POS 400, G-325 i PI-100: na wadze wybierz protokół Checkout_Dialog06 (protokół 24) oraz 9600 bodów, 7 bitów danych, parzystość nieparzysta (typ parametru 5); kasa jest wtedy ustawiona na Dialog 06. D-POS 400 łączy się też przez USB.
- DIGI DS-781: ustaw wagę na Type B / polecenie standardowe (data transmission
00011); kasa wysyłaENQi otrzymuje netto, tarę, cenę za kg i kwotę. - Dini Argeo DFW, DGT i 3590E: ustaw port szeregowy na ciągłe wysyłanie (9600 8N1); kasa jest wtedy ustawiona na Ciągłe.
- Excell Precision TPE (oraz 4. generacja AM4, FD4-P, FDP4-P, GE4, GEP4): ustaw wyjście RS232 na ciągłe (9600 8N1); kasa jest wtedy ustawiona na Ciągłe.
- Gram XFOC RS, XFOC+ RS i ZFOC RS: protokół Gram (9600 8N1). Kasa wysyła
ENQ, waga odpowiadaACK, kasa wysyłaDC1, a waga wysyła wagę:SOH STX S/U/F teken gewicht eenheid BCC ETX EOT(S= stabilna,U= w ruchu,F= błąd; BCC = XOR od statusu do jednostki włącznie). Podłączenie przez RS232 lub kablem USB od Gram. - Kern & Sohn RPB i RFC: ustaw na wadze
Prot = DLG-06(złącze kasy to opcja 965-419); kasa jest wtedy ustawiona na Dialog 06. RFE, IFB i EOC: ciągłe wysyłanie (8N1), kasa na Ciągłe. - Mettler Toledo Ariva/Viva: ustaw wagę na protokół Toledo (8217), a kasę na Odpytywanie (Toledo) z Bity danych / parzystość = 7E1 (Mettler: 9600 bodów, 7 bitów danych, parzystość parzysta; Ariva łączy się też przez USB jako wirtualny port COM). Kasa ustawi to sama po wybraniu modelu.
- Minebea Intec Signum, Combics, Midrics i Puro oraz Sartorius Entris i Quintix: SBI z automatycznym wydrukiem (9600 8N1); kasa jest wtedy ustawiona na Ciągłe. Komunikat to
N + 0.512 kg; bez jednostki waga jest jeszcze w ruchu. - Ohaus Aviator 7000: w ustawieniach wagi (krok 20) wybierz protokół Dialog 06; kasa jest wtedy ustawiona na Dialog 06. RS232 lub USB, w zależności od kabla.
- Ohaus Valor 7000, Ranger 3000/4000/7000 i Defender 3000 (ważenie bez ceny): ustaw wagę na Auto Print Continuous (9600 bodów, 8N1), a kasę na Ciągłe. Waga wysyła
0.512 kg G;?po wadze oznacza, że jeszcze się rusza. Ranger 7000 łączy się też przez Ethernet (port TCP 9761). - Precia Molen DP400, DPOS CR i C 210 (wagi handlowe należą od 2025 do Dibal): Dialog 06 (9600 7O1), tak jak Dibal. Jeśli przy C 210 nie działa, spróbuj Odpytywanie (Toledo) z 7E1.
- Precisa XB, XT, LS i LX: ustaw tryb wydruku na CONTINUOUS i 9600 8N1, bez daty, godziny i ID w wierszu; kasa jest wtedy ustawiona na Ciągłe. Bez jednostki waga jest jeszcze w ruchu.
- Rice Lake BenchPro BP-S (Toledo 8213) i BP-R (NCI): kasa jest ustawiona na Odpytywanie (Toledo) z 7E1.
- Star Micronics mG-T i mG-S8200: przez RS232 lub USB (wirtualny port COM, ze sterownikiem Star) na Ciągłe.
- UWE ASEP: RS232 do PC/kasy, kasa na Ciągłe (do przetestowania).
- Wedderburn TSDS983, TSDS781T i TSDS782T to wagi DIGI pod własnym numerem: DIGI (Type B), tak jak DIGI DS-781. Jeśli to nie działa, spróbuj Odpytywanie (Toledo) z 7E1.
- Wintec ScalePOS ACS-S60E: kasa działa na samym ScalePOS; wbudowana waga jest na COM6 (Windows) lub COM4 (Android), 9600 8N1. Wybierz Ciągłe; jeśli nic nie wysyła, Szukaj znajdzie właściwy protokół.
- Zebra MP7000 i MP72: port AUX RS232 jest fabrycznie ustawiony na SASI (9600 7E1, kasa wysyła
W): kasa na Odpytywanie (Toledo) z 7E1. - Wagi etykietujące tych marek (Avery Berkel, Balanzas Marques, Bizerba, CAS, Dibal, DIGI, Ishida, Mettler Toledo, Precia Molen, Rongta, T-Scale, Wedderburn) to samodzielne systemy z własnym plikiem PLU. Włącz przy wadze Skanuj etykiety i ustaw ten sam kod kreskowy co na wadze (EAN-13, początek 20–29, PLU oraz waga lub cena). PLU ustawiasz na samej wadze lub w oprogramowaniu marki; Wyślij do TS6X i Pobierz plik PLU są dostępne tylko dla Aclas.
Ta sama lista jest w kasie w Ustawienia → Waga → Wszystkie wagi (ACLAS_MODELLEN w packages/shared/src/weegschaal.ts, z marką dla każdego modelu).
Jak najmniej do wpisania: po wybraniu modelu kasa ustawia resztę tak, jak marka fabrycznie: połączenie Port COM / USB na pierwszym wolnym porcie, 9600 bodów (A&D: 2400) i protokół marki (Toledo: Aclas z 8N1, a z 7E1 Avery Berkel FX, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Brecknell, CAS, Datalogic, Mettler Toledo, Rice Lake i Zebra; Dialog 06: Avery Berkel FX125, Bizerba, Dibal, Kern & Sohn RPB/RFC, Ohaus Aviator i Precia Molen; DIGI Type B: DIGI i Wedderburn; Gram: Gram; Ciągłe: A&D, Adam Equipment, Dini Argeo, Excell Precision, pozostałe Kern & Sohn, Minebea Intec, pozostałe Ohaus, Precisa, Sartorius, Star Micronics, UWE i Wintec) oraz nazwę (np. OS6X, OS6X 2). Waga PC lub AI staje się Na tym urządzeniu (np. TS6X (ingebouwd); na Linuksie na porcie wewnętrznym /dev/ttyS0). Jeśli coś się nie zgadza, Szukaj znajdzie właściwy port, prędkość i protokół.
Na tym urządzeniu (Aclas Scale Module): waga pokazuje legalizowaną wagę; kasa wysyła cenę za kg i tarę (jako tarę wstępną) i przejmuje kwotę obliczoną przez wagę, tak jak przy Dialog 06.
- Android: aplikacja Aclas AclasScaleDriver (
com.aclas.aclasscaledriver) zwykle jest już na wadze; jeśli nie, zainstalujaclas-android/AclasScaleDriver.apk. Aplikacja HorecaPOS komunikuje się bezpośrednio z usługą tej aplikacji, więc dodatkowa biblioteka nie jest potrzebna. - Linux: Aclas nie ma Scale Module dla Linuksa. Po prostu wybierz model (np. TS6X): połączenie to wtedy Na tym urządzeniu (port wewnętrzny) na
/dev/ttyS0, 9600 bodów, Toledo. Wbudowana waga jest zwykle na/dev/ttyS0lub/dev/ttyS1; wyszukiwanie je sprawdza i wpisuje właściwy port, prędkość i protokół. Również tutaj tylko raz.
Oprogramowanie Aclas jest w zestawie z kasą: Scale Module dla Windows (aclas-module), AclasScaleDriver dla Androida (aclas-android) i Aclas Sync SDK dla Windows i Linuksa (aclas-sdk). Aclas pozwala nam je dołączać. Instalatory dla Windows i Linuksa zawierają je; nic nie trzeba osobno pobierać ani instalować.
Bluetooth (np. OS6X): najpierw sparuj wagę. Windows tworzy z niej port COM (Ustawienia Bluetooth → Więcej opcji Bluetooth → Porty COM), Linux /dev/rfcomm0: wpisz ten port. W aplikacji Android wpisujesz adres Bluetooth (00:11:22:AA:BB:CC); aplikacja raz prosi o zgodę na Urządzenia w pobliżu i łączy się przez Bluetooth SPP.
Wagi AI (rozpoznawanie produktów): kamera rozpoznaje produkt w oprogramowaniu Aclas na wadze. Ważenie działa przez Scale Module (na tym urządzeniu) lub port RS232; wagi etykietujące AI drukują po rozpoznaniu etykietę z kodem kreskowym, którą kasa skanuje (jak przy TS6X).
Aclas AI Recognition Plugin (waga AI z kasą na niej, np. iS6X z Windows): wtyczka Aclas rozpoznaje produkt i wpisuje jego kod kreskowy do kasy, tak jak skaner (z Enter na końcu); ekran zamówień dodaje produkt z wagą do zamówienia. Tak to ustawisz:
- Włącz przy wadze Skanuj etykiety z tym samym kodem kreskowym co we wtyczce. Zalecane: zaczyna się od
27, PLU 5 cyfr, waga (typ Aclas 17): kasa sama liczy wtedy z ceną za kilogram. Z ceną (typ 12, zaczyna się od22) też działa. - Wyłącz przy tej wadze Ważenie przy kasie: wtyczka i Scale Module nie mogą jednocześnie korzystać z wagi. Waga produktu pochodzi z kodu kreskowego. Jeśli wtyczka odpowie przy Szukaj, kasa zaproponuje takie ustawienie i nie uruchomi Scale Module. Bez kodu aktywacyjnego wtyczka waży i liczy kwotę, ale nie rozpoznaje produktów.
- W samej wtyczce: kod kreskowy w Scale and Barcode Format Settings → Default Barcode Format (typ 17), a w ustawieniach okna punkt, w którym wtyczka klika i wpisuje kod. Wybierz do tego puste miejsce na ekranie zamówień, nie przycisk. Nowych produktów lokal uczy wtyczkę sam na wadze (trening AI).
- Nadaj produktom ważonym numer PLU i wyślij PLU do wagi (Wyślij do TS6X lub plik PLU); wtyczka rozpoznaje po numerze PLU.
- Kasa pozwala wtyczce rozpoznawać tylko wtedy, gdy ekran zamówień jest otwarty na samej wadze (
POST /aiplugin/resume, przy zamykaniu/aiplugin/suspend, port 5003 na wadze; za pierwszym razem także EmployeeMode: ekran klienta wagi nie pokazuje produktów). Na innych kasach i tabletach oraz przez portal zarządzania nic się nie dzieje. - Wtyczka zawsze startuje w trybie Resume i nie potrafi przekazać swojego stanu. Dlatego ekran zamówień co 30 sekund ponownie wysyła resume; jeśli to ustanie (ekran zamknięty, restart wtyczki lub wagi), kasa w ciągu minuty przełącza wtyczkę na Suspend i tak ją zostawia.
- Wtyczka wymaga kodu aktywacyjnego od Aclas dla każdej wagi (powiązanego z numerem seryjnym). Działa teraz na Windows; wersja Aclas na Androida pojawi się później (kasa robi tam to samo).
Aclas OS6X (waga POS przy kasie, RS232/USB; tak samo działają inne podłączone wagi):
- Jedna lub więcej wag (najwyżej 8), każda z nazwą (np. Lada, Bar) i własnym połączeniem: port COM / USB (
COM3w Windows,/dev/ttyUSB0w Linux/Android) z prędkością albo sieć przez konwerter szeregowy-sieć (adres IP i port TCP, np. 4001). - Protokół: Odpytywanie (Toledo) = kasa wysyła
W, a waga odpowiada wagą (Toledo 8217, tak zwykle ustawiona jest OS6X; także komunikaty niestabilna/przeciążona/poniżej zera) lub Ciągłe = waga sama stale wysyła wagę (ST,GS, 0.512kg,US= niestabilna) lub Dialog 06 (legalizowana), patrz niżej, lub DIGI (Type B) = kasa wysyłaENQ, a DIGI odpowiada statusem, netto, tarą, ceną za kg i kwotą (37 znaków:<status> <toestand> CR 0<netto> CR 4<tarra> CR U<kiloprijs> CR T<bedrag> CR LF; stan bit 1 = stabilna, bit 2 = poniżej zera, bit 3 = za ciężko, bit 4 = za lekko), lub Gram = kasa wysyłaENQ, czeka naACK, wysyłaDC1i odczytujeSOH STX <S/U/F> <teken> <gewicht> <eenheid> <BCC> ETX EOT. Ustaw na wadze ten sam protokół i prędkość. Bity danych / parzystość: 8N1 (Aclas, Adam Equipment, DIGI, Dini Argeo, Excell Precision, Gram, Kern & Sohn, Minebea Intec, Ohaus, Precisa, Sartorius, Star Micronics, UWE, Wedderburn, Wintec) lub 7E1 (A&D, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Brecknell, CAS, Datalogic, Mettler Toledo 8217, Rice Lake, Zebra); Dialog 06 to zawsze 7O1. Odpytywanie odczytuje też NCI (Avery Weigh-Tronix, Brecknell, Rice Lake BP-R): naWwaga odpowiadaLF 1.234KG CR LF S00 CR ETX; wiersz statusu (S+ 2 lub 3 bajty) mówi, czy waga jest w ruchu (bajt 1 bit 0), za lekka (bajt 2 bit 0) czy przeciążona (bajt 2 bit 1);^^^^^= za ciężko,_____= za lekko. - Dialog 06 (Checkout-Dialog 06, europejski protokół dla legalizowanej wagi przy kasie): kasa wysyła cenę za kilogram (i tarę produktu) do wagi; waga waży, sama oblicza kwotę i pokazuje cenę za kilogram, wagę i kwotę na własnym (legalizowanym) wyświetlaczu. Kasa przejmuje wagę i kwotę; w oknie ważenia widnieje "obliczone przez wagę". Zawsze 9600 bodów, 7 bitów danych, parzystość nieparzysta, 1 bit stopu (prędkość w ustawieniach nie ma wtedy znaczenia). Przebieg:
EOT STX 01 ESC <kiloprijs 6> ESC ETX(z tarą: rekord03z 4 cyframi gramów) → ACK;ENQ→STX 02 ESC 3 ESC <gram 5> ESC <kiloprijs 6> ESC <bedrag 6> ETX; NAK →EOT STX 08 ETX→STX 09 ESC <code> ETX(22 = jeszcze niegotowa, wtedy ponownie po 100 ms; 20 = w ruchu; 21 = najpierw podnieś; 30/31 = za lekko; 32 = za ciężko; 11 = nieprawidłowa cena). Kody kontrolne: wiele wag Dialog 06 od czasu do czasu (np. co 30 ważeń) prosi o kody kontrolne oprogramowania kasowego (rekord 11 → rekord 10). Te kody i sposób ich obliczania producent wagi przekazuje wyłącznie dostawcy kasy. Wpisz je w Kody kontrolne (pary po 4 znaki szesnastkowe, np.74AE 1B2C); kasa wysyła je, gdy waga o nie poprosi. Jeśli waga liczy ze zmienną liczbą (Z), a więc stałe kody nie pasują, kasa to zgłasza; poproś wtedy dostawcę o skonfigurowanie wagi bez tej kontroli lub użyj Toledo. - Wagi są podłączone do komputera lub urządzenia, na którym działa serwer kasy; wszystkie kasy i tablety ważą przez serwer kasy i w oknie ważenia wybierają, której wagi używają. Testuj waży jeden raz.
- Sieć działa wszędzie.
- Wpisywanie wagi także ręcznie: wł. = wagę można wpisać także przy podłączonej wadze; bez OS6X jest to zawsze możliwe.
Skanuj etykiety (pole przy wadze: Aclas TS6X, inna waga PC lub AI, seria LS lub LH15X; waga + drukarka etykiet, jedna na lokal):
- Adres IP: potrzebny tylko do Naar TS6X sturen. Ważenie i skanowanie etykiet działają bez niego. Jeśli kasa działa na samej TS6X, zostaw go pustym: kasa wysyła wtedy do siebie (127.0.0.1). Jeśli ta sama waga waży też przy kasie, oba pola są zaznaczone przy tej samej wadze (wyszukiwanie tak to ustawia).
- Skanuj etykiety: skanowanie etykiet na ekranie zamówień. Ustaw wygląd kodu kreskowego, tak jak na TS6X: zaczyna się od (20–29, domyślnie
28), liczba cyfr PLU (4, 5 lub 6), a potem waga w gramach lub cena w centach oraz cyfra kontrolna (EAN-13). Pod ustawieniem jest przykład. - Numery PLU: w Ustawienia → Produkty produkt ważony otrzymuje cenę za kilogram, ewentualnie tarę i numer PLU (unikalny). Numer PLU wybierasz z listy (Brak PLU, następny wolny, Inny numer…); po zaznaczeniu Cena za kilogram następny wolny numer jest już wpisany. Potrzebne tylko do etykiet i PLU TS6X: bez TS6X może pozostać Brak PLU.
- Bezpośrednie wysyłanie działa w Windows i Linuksie; w Androidzie i macOS użyj pliku PLU. Przy pierwszej instalacji sprawdź nazwy pól pliku PLU i kody w
aclas-plu.ps1z instrukcją SDK dostarczonej wagi (jedno miejsce do zmiany:ACLAS_PLU_KOLOMMENwpackages/shared/src/weegschaal.ts).
Portal zarządzania: komunikat do portalu zawiera funkcję Waga (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) z wł./wył. i wagami według modelu (np. TS6X (op dit apparaat), 2x OS6X, PS1CX, Ariva-S, DS-781, LS6RX, 5 producten per kilo); bez adresów IP, portów COM i adresów Bluetooth.
Prawo legalizacyjne: waga, na której sprzedajesz, musi być legalizowana (klasa III, jak OS6X). Przy Toledo/ciągłym kasa liczy z wagą podaną przez wagę; przy Dialog 06 legalizowana waga sama oblicza cenę.
Kod: packages/shared/src/weegschaal.ts (protokoły, etykiety, plik PLU), apps/pos-server/src/lib/weegschaal.ts i routes/weegschaal.ts; ekrany WeegschaalInstellingen.tsx i WeegDialoog.tsx.
Thuisbezorgd.nl / Takeaway.com
Zamówienia z Thuisbezorgd.nl trafiają bezpośrednio do kasy, bez pośrednika (bez Deliverect, HubRise itp.): Just Eat Takeaway JET Connect komunikuje się z portalem zarządzania Pin Voordeel, a kasa pobiera stamtąd swoje wiadomości.
W Belgii platforma nazywa się Takeaway.com: ta sama firma (Just Eat Takeaway) i ta sama integracja. W belgijskim lokalu ekrany, powiadomienia, bon kuchenny i portal zarządzania wszędzie pokazują Takeaway.com zamiast Thuisbezorgd.nl. Poniżej Thuisbezorgd oznacza oba.
Dlaczego przez portal? Kasa potrzebuje tylko PORTAAL_URL i PORTAAL_SLEUTEL (zob. Portal zarządzania) i wysyła wyłącznie żądania wychodzące.
Konfiguracja (Ustawienia → Platformy dostaw → Thuisbezorgd.nl / Takeaway.com, uprawnienie Ustawienia lokalu, płatności i drukarek; wcześniej było to w Ustawienia → Lokal):
- Włącz Używaj Thuisbezorgd (działa od razu, niezależnie od Zapisz).
- Zgłoś do Thuisbezorgd. Lokal wybiera następnie w Thuisbezorgd (Partner Hub lub opiekun klienta) OptimumPOS / Pin Voordeel jako kasę. JET rozpoczyna wtedy sesję wdrożeniową; portal odnajduje zgłoszoną kasę (po kodzie pocztowym i nazwie, w przeciwnym razie Pin Voordeel łączy sesję ręcznie w portalu), wysyła konfigurację i prosi kasę o menu. Potem integracja zaczyna działać.
- Zaznacz produkty, które można zamawiać przez Thuisbezorgd (według grup lub pojedynczo), ewentualnie z opisem dla Thuisbezorgd. Menu (cena, opcje wyboru jako modyfikatory, alergeny, VAT) jest przesyłane automatycznie; PLU = id produktu/opcji. Po zmianie w katalogu kasa aktualizuje menu w ciągu 30 sekund; tylko "brak"/"znów dostępne" idzie przez API dostępności.
- Godziny otwarcia Thuisbezorgd: osobno dla dostawy i na wynos (np.
16:00-22:00, kilka bloków oddzielonych przecinkiem). Zapisuje się je przyciskiem Zapisz godziny otwarcia pod spodem i trafiają do Thuisbezorgd jako service times, gdy tylko integracja będzie gotowa. - Tymczasowo zamknięte / Ponownie otwarte (w NL/BE najpóźniej następnego ranka o 07:00 znów otwarte).
Zamówienia. Zamówienie staje się zwykłym zamówieniem bez stolika (bezorgen lub afhalen, nazwa grupy TB <ordernummer>) z cenami zapłaconymi przez klienta, plus koszty dostawy/opłata serwisowa jako osobna pozycja i rabat Thuisbezorgd jako pozycja rabatowa; jeśli suma mimo to się nie zgadza, dodawana jest pozycja "Różnica Thuisbezorgd". Bon kuchenny trafia od razu do kuchni/baru (można wyłączyć). Kasa w ciągu kilku sekund potwierdza zamówienie portalowi, który zgłasza to do JET; jeśli nie uda się to w ciągu 3 minut lub kasa jest offline, JET otrzymuje "nieudane", a lokal wraca do Orderpada.
Przycisk Thuisbezorgd na górnym pasku (z liczbą bieżących zamówień): lista, klient i adres, czas przygotowania/dostawy oraz oś czasu (track & trace): przyjęte, kurier w drodze do lokalu, kurier w lokalu, w drodze do klienta, dostarczone (od JET), plus własne etapy (w przygotowaniu, gotowe, w drodze/dostarczone przy własnej dostawie, odebrane). Mapy na żywo z kurierem JET Connect nie udostępnia kasie; widzi ją klient w aplikacji Thuisbezorgd. Nowe zamówienie, anulowanie i "kurier w lokalu" wywołują pomarańczowy pasek i dźwięk. Zakończ (zapłacono online) rozlicza formą płatności online; jeśli klient płaci przy drzwiach, po prostu rozlicz. Anulowanie przez Thuisbezorgd unieważnia zamówienie i drukuje bon kuchenny "ANULOWANE".
Kod: apps/pos-server/src/lib/thuisbezorgd.ts, routes/thuisbezorgd.ts; ekrany ThuisbezorgdInstellingen.tsx i Thuisbezorgd.tsx. Po stronie portalu: horecapos-portaal/src/thuisbezorgd.mjs (zob. README portalu).
Licznik w portalu zarządzania. Liczba zamówień Thuisbezorgd na dzień jest przesyłana w zgłoszeniu do portalu zarządzania (verkoopTelling w lib/portaal.ts): przyjęte i nieanulowane, w dniu wpłynięcia. Zamówienie Thuisbezorgd rozliczone w kasie (także przez Zakończ (zapłacono online)) nie jest tam liczone ponownie jako na wynos/dostawa. Dane Thuisbezorgd są w bazie danych kasy, więc trafiają normalnie do kopii zapasowych kasy.
Sklep internetowy i zamówienia online
Każdy lokal może mieć własny sklep internetowy: stronę zamówień (i aplikację) we własnej identyfikacji wizualnej do zamówień na wynos, z dostawą, zamawiania przy stoliku przez kod QR i rezerwacji, z płatnością online (MultiSafepay lub Buckaroo) albo płatnością przy odbiorze/dostawie. Sklep internetowy to osobny projekt, horecapos-webshop (Node.js, zob. tamtejsze README), i działa na tym samym serwerze co portal zarządzania.
Włączanie i konfiguracja odbywa się w zarządzaniu sklepem: przycisk Zarządzaj sklepem w portalu klienta (właściciel) lub przy instalacji w portalu zarządzania (Pin Voordeel). Znajdziesz tam wł./wył., adres internetowy (<zaak>.<webshopdomein> lub własna domena), identyfikację wizualną (kolory, logo, zdjęcie nagłówka, czcionka), godziny otwarcia i przedziały czasowe dla zamówień na wynos i z dostawą, strefę dostawy (kody pocztowe, promień lub obszar na mapie, z kosztami i minimum), płatności, kody rabatowe, teksty, języki, kody QR dla stolików, rezerwacje i aplikację (do zainstalowania jako PWA; aplikacja na Androida przez Trusted Web Activity) oraz powiadomienia push (opcjonalne, domyślnie wyłączone): gość włącza powiadomienie na stronie swojego zamówienia i dostaje powiadomienie push, gdy zamówienie jest gotowe lub w drodze; chętni dostają też od czasu do czasu ofertę, którą lokal wysyła z zarządzania sklepem (karta Powiadomienia push). Działa na Androidzie i komputerach (Chrome, Edge, Firefox, Samsung Internet), w aplikacji na Androida oraz na iPhonie i iPadzie (iOS 16.4 lub nowszy), jeśli gość doda sklep do ekranu początkowego. Nie są wysyłane SMS-y ani e-maile i nie jest zapisywane żadne imię ani numer. Szczegóły w README sklepu internetowego.
Menu. Kasa wysyła menu automatycznie: wszystkie aktywne produkty (nie na wagę), według grup produktów, z ceną, opcjami wyboru, alergenami, wyprzedaniem i zdjęciem produktu, a także stoliki i dane lokalu oraz informację, które kanały marketingowe są włączone (dla pola "otrzymywać oferty" przy płatności, zob. Marketing SMS i e-mail). Dzieje się to przy uruchomieniu, gdy tylko sklep zostanie włączony, w ciągu 30 sekund od zmiany w katalogu i w ciągu kilku sekund od zmiany w Ustawienia → Lokal, np. marketingu lub karty lojalnościowej (albo przyciskiem Wyślij menu teraz). Produkt można wyłączyć ze sklepu w zarządzaniu sklepem (ukryj) lub w bazie danych przez artikel.webshop = false.
Zamówienia. Na wynos i dostawa stają się zwykłym zamówieniem bez stolika (nazwa grupy WEB <bestelnummer>) z cenami, które widział gość, plus koszt dostawy i koszty transakcji jako osobne pozycje oraz kod rabatowy jako pozycja rabatowa; jeśli suma mimo to się nie zgadza, dodawana jest pozycja "Różnica sklep internetowy". Napiwek gościa nie liczy się jako obrót: trafia do płatności jako napiwek przy Zakończ (zapłacono online). Zamówienie przy stoliku (kod QR) trafia na otwarty rachunek tego stolika (zapłacone online: jako osobna grupa przy tym stoliku). Bon kuchenny od razu idzie do kuchni/baru (można to wyłączyć w oknie Sklep internetowy). Kasa w ciągu kilku sekund potwierdza numerem paragonu; gość otrzymuje wtedy "przyjęte" i e-mail. Jeśli kasa jest offline, sklep nie przyjmuje zamówień (gość od razu to widzi) i wysyła e-mail do lokalu, gdy zamówienie czeka zbyt długo. Rezerwacje ze sklepu trafiają do Rezerwacje (tylko jeśli rezerwacje są włączone w kasie). Jeśli ustawiono maksimum na przedział (Dostawa i przedziały czasowe), liczą się w nim też zamówienia ze sklepu z godziną w tym przedziale.
Belgia (czarna skrzynka). Zamówienie ze sklepu internetowego trafia od razu jako zamówienie (signOrder) do czarnej skrzynki, przed bonem roboczym, tak jak Zamów przy kasie. Jeśli to się nie uda, nie trafia do kasy, a sklep internetowy wysyła je później ponownie. To, czego jeszcze nie przetestowano z czarną skrzynką, jest wyłączone w menu sklepu internetowego (bony podarunkowe, kody rabatowe, na fakturę, na pokój, zestawy, opcje z dopłatą, happy hour i napiwek) i zostaje odrzucone, jeśli stary sklep internetowy mimo to je wyśle. Zakończ sprawdza napiwek, płatność na fakturę i na pokój tak jak kasa.
Na pokój (integracja hotelowa, Ustawienia → Hotel → Samoobsługa → W sklepie internetowym): menu otrzymuje kamer: { maxBedrag }; sklep internetowy wysyła betaling.wijze = "kamer" z kamer i achternaam. Kasa sprawdza gościa w oprogramowaniu hotelowym (nie przy stoliku, nie z bonem podarunkowym) i zapisuje go przy zamówieniu; Zakończ (na pokój) rozlicza na pokój i księguje paragon na rachunek hotelowy. Faktura zbiorcza przy płatności na fakturę: paragon pozostaje wtedy jako otwarta pozycja.
Przycisk Sklep internetowy na górnym pasku (z liczbą bieżących zamówień): lista, klient i adres, żądana godzina lub "jak najszybciej", sposób płatności i oś czasu. Etapy W przygotowaniu, Gotowe i W drodze gość widzi na żywo w sklepie (i e-mailem, jeśli lokal tego chce). Rozliczone w kasie = Zakończone; Anuluj anuluje tylko pozycje tego zamówienia ze sklepu, drukuje bon kuchenny "ANULOWANE", a zamówienie zapłacone online sklep zwraca. Przybycie, niestawienie się lub anulowanie rezerwacji również wraca do sklepu. Nowe zamówienie lub rezerwacja pokazuje pomarańczowy pasek i odtwarza dźwięk.
Kod: apps/pos-server/src/lib/webshop.ts, routes/webshop.ts; ekran Webshop.tsx. Po stronie portalu: horecapos-portaal/src/webshop.mjs.
Kasa i sklep internetowy zgodne (każdą część włącza się osobno, domyślnie wyłączone; starszy sklep internetowy ignoruje nowe pola). To, co jest włączone w kasie, działa też w sklepie internetowym:
- Happy hour: sklep internetowy nalicza tę samą cenę co kasa w danym momencie (przekreślona cena normalna i nazwa happy hour), także z sezonem.
- Pory dnia i sposób realizacji (jeśli są włączone): sklep internetowy pokazuje tylko to, co jest teraz w sprzedaży, a przy odbiorze i dostawie cenę i produkty dla tego wyboru (przy stoliku: na miejscu). Menu otrzymuje dla każdego produktu
prijzen(afhalen,bezorgen) inietBijoraz listędagdelen. - Zestawy menu: gość wybiera dania (stałe i do wyboru, z ich opcjami); w kasie pojawia się to jako pozycja zestawu z daniami pod spodem i rozdzieloną ceną zestawu (VAT na danie się zgadza). Dania należące tylko do zestawu są wysyłane jako
menuArtikelen. Stary sklep internetowy bez wyborów: zestaw trafia na paragon jako zwykły produkt, jak dotychczas. - Brak w magazynie = wyprzedane, także opcje wyboru ze składnikiem, który się skończył.
- Alergeny: wyłączone w kasie = brak w sklepie internetowym.
- Karta lojalnościowa: gość może przy płatności zbierać punkty (na numer telefonu lub e-mail); kasa przypisuje klienta do zamówienia, a punkty są dodawane przy rozliczeniu (wymiana odbywa się w lokalu). Sklep internetowy pokazuje saldo.
- Karty podarunkowe (Ustawienia → Lokal → Karty podarunkowe → Sprzedaż kart podarunkowych w sklepie internetowym, tylko z saldem): gość kupuje kartę i płaci online; kasa tworzy kartę, która jest od razu aktywna, a kod wraca przez portal do sklepu internetowego (status i e-mail). Jeśli włączona jest też Karta podarunkowa jako metoda płatności, gość przy odbiorze na wynos może wybrać "kartą podarunkową w lokalu".
- Kody rabatowe (Ustawienia → Kody rabatowe, z przełącznikiem w Lokal): dla każdego kodu w kasie i/lub w sklepie internetowym; użycia liczą się łącznie.
- Pauza i duży ruch: przycisk Sklep internetowy na górnym pasku: Wstrzymaj sklep internetowy (z tekstem dla gościa) i Duży ruch (dodatkowe minuty). Trafia do sklepu internetowego w ciągu kilku sekund.
- Rezerwacja online według zasad kasy (Ustawienia → Lokal → Rezerwacje): maks. osób, dni naprzód, przedział czasowy, minimalne wyprzedzenie i godziny dla każdego dnia tygodnia.
- Dostawa i przedziały czasowe: zob. Sklep internetowy korzysta z ustawień kasy w Dostawa i przedziały czasowe.
- All-you-can-eat przy stoliku (Ustawienia → Lokal → All-you-can-eat → Także przy zamawianiu przy stoliku przez kod QR): jeśli przy stoliku trwa pakiet, gość widzi należące do niego dania jako W cenie za € 0, z rundami, maksimum na osobę, czasem oczekiwania i limitem czasu. Resztę płaci normalnie; wszystko trafia na rachunek stolika. Jeśli stan przy stoliku właśnie się zmienił, kasa odrzuca zamówienie i gość zamawia ponownie.
- Na fakturę (Ustawienia → Faktury → Płatność na fakturę → Także w sklepie internetowym): zob. W sklepie internetowym w części Płatność na fakturę.
- Online na listę oczekujących (Ustawienia → Lokal → Lista oczekujących): zob. Online na listę oczekujących w części Lista oczekujących dla gości bez rezerwacji.
- Upsell: "Coś jeszcze?" (opcjonalnie, domyślnie wyłączone; Ustawienia → Lokal → Rozliczenie → Upsell w sklepie internetowym): wybierz grupy produktów (np. napoje, sosy, desery) i liczbę sugestii. W sklepie internetowym przy koszyku i przy rozliczeniu pojawiają się wtedy produkty z tych grup, których jeszcze nie ma w koszyku (tylko to, co jest teraz w sprzedaży, niewyprzedane i bez obowiązkowych wyborów); gość dodaje je jednym dotknięciem. Brak wybranych grup = wyłączone, jak dotychczas. Kiosk ma własny upsell (zob. Kiosk samoobsługowy).
Menu sklepu internetowego ma do tego versie: 2 z polami menuArtikelen, allergenenAan, happyhours, menus, klantenkaart, cadeaubon, kortingscodes, pauze, drukteMin, volgt, bezetting, reserveren.online, ayce, opRekening, wachtlijst i upsell. Potwierdzenie dla portalu zawiera ponadto cadeaubonnen (kody), klant (punkty) i plek (lista oczekujących).
Licznik w portalu zarządzania. Na wynos i dostawa przez sklep internetowy są liczone osobno (webshop, webshopGeannuleerd w verkoopTelling), w dniu wpłynięcia, i nie są liczone ponownie jako na wynos/dostawa. Zamówienia przy stoliku liczą się normalnie jako stolik.
Płatności kartą i terminale płatnicze
Ustawienia → Płatności (tylko administrator):
- Terminale: dla każdego terminala nazwa, ID terminala i własny klucz API z PinPortal (Klant → Bewerk klant → Overige → API Keys). Po zapisaniu widoczna jest tylko końcówka klucza; nigdy nie wraca on do przeglądarki. Przyciskiem Testuj połączenie sprawdzasz klucz i terminal.
- Tryb testowy: symuluje terminal (po ok. 7 s sukces; kwota kończąca się na 13 centów jest odrzucana). Przydatne do testów bez terminala płatniczego.
Jeśli jest co najmniej jeden terminal z kluczem API (lub włączony tryb testowy), Rozliczenie → Karta / Bancontact automatycznie rozpoczyna płatność na terminalu na kwotę obliczoną przez serwer.
Dopóki integracja jest włączona, serwer akceptuje "kartę" tylko z udaną płatnością terminalową dokładnie dla tego zamówienia i tej kwoty. Żądania są wysyłane, tak jak w oficjalnym PHP-SDK, jako zwykły formularz, z zapasowym API (api-backup.pinvandaag.com), gdy główne API nie odpowiada. Każda odpowiedź API widnieje z [pin] w oknie serwera, co pomaga przy awariach. Udana płatność, która nie została jeszcze przetworzona (np. awaria tabletu), zostanie odnaleziona przy następnym rozliczeniu tego zamówienia.
Napiwek (karta, gotówka i karta podarunkowa)
Na ekranie rozliczenia przy każdej formie płatności jest rząd przycisków napiwku: Brak, 5%, 10%, 15% (zaokrąglone w górę do 10 centów), Zaokrąglenie (do następnego pełnego euro) i Inna kwota. Przy karcie klient płaci kwotę + napiwek za jednym razem na terminalu; przy gotówce napiwek jest uwzględniany w reszcie i w szufladzie kasowej. Na paragonie widnieje kwota zapłacona kartą z "w tym napiwek" pod spodem; SUMA i VAT pozostają bez zmian, bo napiwek nie jest obrotem. W raporcie X/Z napiwki są podane według formy płatności oraz jako "Napiwki łącznie".
Administrator ustawia przyciski napiwku w Ustawienia → Lokal → Napiwek: wł./wył., jakie procenty (najwyżej 4, np. "5, 10, 15"), czy dostępny jest przycisk "Zaokrąglenie" i przy których formach płatności (karta, gotówka, karta podarunkowa) można dać napiwek. "Brak" i "Inna kwota" są zawsze dostępne.
"Niech będzie …" jest zawsze dostępne, przy każdej formie płatności, także gdy przyciski napiwku są wyłączone (bez ustawień): klient sam zaokrągla rachunek w górę, a różnica jest napiwkiem. Są przyciski z następnym pełnym euro i kolejnymi okrągłymi kwotami (np. € 28,00 → 29, 30, 40; € 44,00 → 45, 50, 60) oraz Inna suma, by samemu wpisać sumę. Ponowne dotknięcie wybranego przycisku = bez zaokrąglenia. Najwyżej € 500 napiwku (ten sam limit co serwer kasy).
Brak internetu
Kasa działa w sieci lokalnej i nie potrzebuje internetu; potrzebuje go tylko płatność kartą przez integrację. Jeśli lokal nie ma internetu, na górnym pasku widnieje Brak internetu · karta ręcznie (sprawdzane co minutę). Na ekranie rozliczenia pojawia się wtedy, a także po nieudanym uruchomieniu płatności na terminalu, przycisk Już zapłacono na terminalu: wprowadź kwotę na samym terminalu i w ten sposób ją zarejestruj.
Plany sal i stoliki
Ustawienia → Plany sal (tylko administrator):
- Dodawanie planów sal (np. Sala, Taras, Ogród zimowy), zmiana nazwy, usuwanie i zmiana kolejności za pomocą ◀ ▶.
- Dodawanie stolików przyciskami nad siatką (okrągły, kwadratowy, długi, stolik barowy) i przeciąganie ich myszą lub palcem na miejsce. Niebieski róg wybranego stolika powiększa go lub pomniejsza.
- Dla każdego stolika ustawienie nazwy/numeru, liczby osób (krzesełka wokół stolika się liczą) i kształtu; duplikowanie lub usuwanie.
- Klawiaturą: strzałki przesuwają (Shift = większy krok), Delete usuwa.
- Zmiany obowiązują dopiero po Zapisz; "Cofnij" przywraca wszystko.
- Stolika ani planu sali z otwartym zamówieniem nie można usunąć. Usunięte stoliki pozostają zachowane w starych zamówieniach.
Przeniesienie konfiguracji do drugiego lokalu
Ustawienia → Import/eksport (tylko administrator). Jeśli masz w pełni skonfigurowany jeden lokal, wyeksportuj konfigurację do pliku .json i zaimportuj go w kasie drugiego lokalu. Do wyboru dla każdej części:
- Produkty: grupy, produkty, ceny (także według sposobu realizacji), VAT, opcje wyboru, menu, happy hours (z sezonem), pory dnia, alergeny, składniki/receptury, karty pieczątek, pakiety all-you-can-eat i zdjęcia produktów.
- Plany sal: sale i stoliki.
- Pozostałe ustawienia: wszystkie opcje lokalu, drukarki (bez adresu IP), uprawnienia według roli i księgowość.
Nigdy nie są przenoszone: nazwa, adres, kod pocztowy, miejscowość, telefon, e-mail, numer VAT i tekst na dole paragonu lokalu, adres e-mail do raportu Z, terminale płatnicze i ich klucze, personel i kody PIN oraz cały obrót, paragony, klienci i stany magazynowe.
Import jest mocno zabezpieczony: duże czerwone ostrzeżenie, pole "Rozumiem...", ponowne wpisanie własnego PIN-u administratora, brak otwartych zamówień, ten sam kraj (stawki VAT) i wcześniej automatyczna kopia zapasowa. Import odbywa się w jednej transakcji: jeśli coś pójdzie nie tak, nic się nie zmienia. Istniejące produkty, grupy, składniki i stoliki nie są kasowane, lecz usuwane z kasy (jak przy Usuwaniu), dzięki czemu stare paragony i raporty nadal się zgadzają.
Import z innej kasy
Przejście bez przepisywania wszystkiego. Zawsze dostępne (bez przełącznika): w Ustawienia → Import/eksport (tylko administrator) znajduje się sekcja Import z innej kasy.
- Co: produkty (nazwa, cena z VAT, VAT, grupa, kod/PLU, stan magazynowy) lub klienci karty lojalnościowej (nazwa, telefon, e-mail, punkty, adres, kod pocztowy, miejscowość; imię i nazwisko są łączone).
- Plik: eksport z poprzedniej kasy (Dobizzz/DoPos, Lightspeed, MplusKASSA, unTill, Tebi ...) lub własna lista: CSV (; , tabulator lub |; UTF-8 lub Excel w wersji niderlandzkiej) albo Excel (.xlsx), pierwszy arkusz, z nazwami kolumn w pierwszym wierszu. Stary plik .xls najpierw zapisz jako .xlsx lub CSV.
- Podgląd: kasa rozpoznaje kolumny po nazwie (Omschrijving, Verkoopprijs incl. BTW, BTW %, Omzetgroep, Artikelnummer, GSM, Spaarpunten ...) i pokazuje pierwsze wiersze (10). Jeśli kolumna się nie zgadza, wybierz ją sam. Nic się nie zmienia aż do Importuj.
- Produkty: ceny jako 3,50, € 3,50 lub 1.234,50; VAT jako 21, 9%, 0,09, wysoki lub niski (nieznany lub pusty: stawka, którą wybierzesz, domyślnie najwyższa). Grupy produktów, które jeszcze nie istnieją, zostaną utworzone (bez grupy: "Zaimportowane").
- Magazyn (kolumna Voorraad, Stock, Aantal ...): jeśli Prowadź stan magazynowy jest włączone (Ustawienia → Lokal), produkt prowadzi stan magazynowy, a stan ustawia się na tę ilość (inwentaryzacja w historii magazynu, powód "Zaimportowane"). Puste: stan pozostaje bez zmian.
- Plik przykładowy (CSV): lista do samodzielnego wypełnienia (Naam;Productgroep;Prijs;Btw;Voorraad;Code), na przykład w Excelu.
- Klienci: punkty są dodawane jako korekta "Zaimportowano z innej kasy" (widoczna w historii). Zgoda na SMS lub e-mail nie jest przenoszona (RODO): trzeba zapytać o nią ponownie. Najpierw włącz kartę lojalnościową.
- Istniejące produkty (ten sam kod lub, bez kodu, ta sama nazwa) i klienci (ten sam telefon lub e-mail) są pomijani albo aktualizowani, jeśli to zaznaczysz (w produktach nazwa, cena, VAT, grupa i stan magazynowy). Powtórzone wiersze w pliku są brane tylko raz.
- Na koniec: ile nowych, zaktualizowanych i pominiętych, z informacją przy każdym wierszu, co się nie zgadzało (np. brak ceny). Maksymalnie 5000 wierszy naraz. W dzienniku zdarzeń jest to zapisane jako "Zaimportowano konfigurację".
Języki (42, m.in. turecki, arabski, darija, berberyjski, polski, bułgarski, węgierski, rosyjski, serbski, albański, perski, tigrinia, amharski, somalijski, papiamento, sranan tongo, hindi, urdu, indonezyjski, wietnamski, syryjsko-aramejski, chiński i ukraiński)
Obok przycisku © w prawym dolnym rogu na każdym ekranie jest przycisk z językiem (np. NL i flaga). Dotknij go, aby otworzyć menu wyboru: języki są ułożone alfabetycznie, z nazwą we własnym języku przed flagą: Bahasa Indonesia (indonezyjski), Čeština (czeski), Darija (arabski marokański w piśmie łacińskim), Deutsch, English, Español, Français, Hrvatski (chorwacki), Italiano, Kurdî (Kurmancî), Latviešu (łotewski), Lietuvių (litewski), Magyar (węgierski), Nederlands, Papiamentu (papiamento), Polski, Português, Română, Shqip (albański), Slovenčina (słowacki), Soomaali (somalijski), Sranantongo, Srpski (serbski, w piśmie łacińskim), Tarifit (berberyjski rifeński), Tiếng Việt (wietnamski), Türkçe, dalej w cyrylicy Български (bułgarski), Русский (rosyjski) i Українська (ukraiński), następnie języki w piśmie arabskim: اردو (urdu), الدارجة (darija), العربية (arabski), دری (dari), فارسی (perski, farsi), پښتو (paszto) i کوردی (سۆرانی) (kurdyjski sorani), potem w piśmie syryjskim ܣܘܪܝܝܐ (syryjsko-aramejski, Suryoyo), w dewanagari हिन्दी (hindi), w piśmie ge'ez ትግርኛ (tigrinia) i አማርኛ (amharski), w piśmie tifinagh ⵜⴰⵎⴰⵣⵉⵖⵜ (tamazight, berberyjski), a na końcu 中文(简体)(chiński, pismo uproszczone). Wszystkie ekrany, przyciski, komunikaty i komunikaty o błędach serwera kasy są tłumaczone.
- Dla każdego pracownika: wybrany język jest zapisywany przy zalogowanym pracowniku (
gebruiker.taal). Gdy zaloguje się ktoś z innym językiem, kasa od razu się przełącza. Na samym urządzeniu zapamiętywany jest ostatnio używany język, dzięki czemu także ekran PIN jest już w tym języku. Jeśli wybierzesz język (na ekranie PIN lub po zalogowaniu) i zalogujesz się (ponownie) w ciągu 10 minut, ten wybór ma pierwszeństwo i staje się językiem tego pracownika. Zmiana przeładowuje ekran; pozostajesz zalogowany, a otwarty rachunek pozostaje otwarty. - Pierwsze uruchomienie na urządzeniu: jeśli na tablecie lub komputerze nie ustawiono jeszcze języka, kasa uruchamia się w języku wybranym podczas instalacji. Jeśli nie wybrano żadnego języka, używa języka samego urządzenia (przeglądarki lub systemu operacyjnego, także w aplikacji na Androida), a jeśli go nie ma na liście – niderlandzkiego. Potem każde urządzenie zapamiętuje swój wybór.
- Europa Wschodnia: polski, czeski, słowacki, węgierski, rumuński, bułgarski, chorwacki (także dla bośniackiego), litewski, łotewski, ukraiński i rosyjski: języki większości migrantów zarobkowych z Europy Środkowej i Wschodniej w Holandii i Belgii.
- Bałkany: serbski (w piśmie łacińskim, tak jak pisze większość Serbów w Niderlandach i Belgii; także dla czarnogórskiego) i albański (Albania, Kosowo i Macedonia Północna).
- Róg Afryki: tigrinia (Erytrea) i amharski (Etiopia), oba w piśmie ge'ez, oraz somalijski (w piśmie łacińskim).
- Iran: perski (farsi). Urządzenie ustawione na perski z Afganistanu (fa-AF) dostaje dari, pozostałe farsi.
- Niderlandy Karaibskie i Surinam: papiamento (Papiamentu, pisownia z Curaçao i Bonaire; także dla Aruby) oraz sranan tongo.
- Azja: hindi (dewanagari; także dla sarnami hindustani), urdu (od prawej do lewej), indonezyjski i wietnamski (alfabet łaciński, także na paragonie).
- Marokańskie: darija (arabski marokański, język mówiony) zarówno w piśmie arabskim, jak i łacińskim (tak jak wielu Holendrów marokańskiego pochodzenia pisze w komunikatorach), obok standardowego arabskiego. Berberyjskie: tarifit (rifeński, w piśmie łacińskim; większość Holendrów marokańskiego pochodzenia pochodzi z Rifu) oraz standardowy marokański tamazight w piśmie tifinagh.
- Od prawej do lewej: arabski (standardowy arabski), urdu, darija w piśmie arabskim, dari i paszto (Afganistan), perski (farsi, Iran), kurdyjski sorani (Irak/Iran) oraz syryjsko-aramejski (Suryoyo, w piśmie syryjskim). Kwoty, kody i klawisze numeryczne pozostają od lewej do prawej. Kurdyjski kurmandżi (Turcja/Syria) jest zapisywany alfabetem łacińskim.
- Bon kuchenny (kuchnia/bar): domyślnie w języku pracownika, który przekazuje zamówienie. Dla każdej drukarki w Ustawienia → Drukarki → Język bonu kuchennego można też ustawić stały język (np. język kucharza), w alfabecie łacińskim: Nederlands, Čeština, Darija, Deutsch, English, Español, Français, Hrvatski, Italiano, Kurdî, Latviešu, Lietuvių, Magyar, Papiamentu, Polski, Português, Română, Shqip, Slovenčina, Soomaali, Sranantongo, Srpski, Tarifit, Tiếng Việt, Bahasa Indonesia lub Türkçe. Bułgarski, rosyjski i ukraiński są drukowane na bonie kuchennym w transkrypcji łacińskiej (drukarka paragonów nie obsługuje cyrylicy). Pisma arabskiego, syryjskiego, dewanagari, ge'ez i tifinagh oraz chińskiego nie da się wydrukować na drukarce paragonów: wtedy darija jest drukowana alfabetem łacińskim, tamazight jako tarifit, a pozostałe po niderlandzku. Stałe teksty (TAFEL, Gang, WACHT op afroep, AFROEP GANG, LATER GEPRINT, Afhalen, Balie) są tłumaczone; nazwy produktów i uwagi pozostają takie, jak je wprowadzono. Drukarki ustawione dotąd na niderlandzki stosują teraz język pracownika.
- Paragon (dla wszystkich klientów): domyślnie po niderlandzku, niezależnie od języka ekranów. Inny język wybierasz w Ustawienia → Lokal → Język paragonu (tuż pod tekstem na dole paragonu); tylko języki w piśmie łacińskim. Dotyczy to też pro formy, paragonu zwrotu, kopii, bonu podarunkowego i paragonu wysyłanego e-mailem. Kwoty, kody VAT, numer VAT lokalu i wiersze fiskalne (Belgia) pozostają bez zmian; własny tekst na dole paragonu pozostaje taki, jak wpisał go lokal.
- Produkty, grupy i opcje mają nazwy nadane przez lokal; nie są one tłumaczone.
- Język dla każdego pracownika ustawisz także w Ustawienia → Personel.
- Wprowadzenie i instrukcja są również dostępne we wszystkich tych językach. Przyciskiem © otwierają się w języku kasy; u góry flagami wybierasz inny język (nie zmienia to niczego w kasie).
Dla programistów: każdy widoczny tekst jest w kodzie jako vt('Nederlandse tekst') (apps/pos-web/lib/i18n.ts); tekst niderlandzki jest kluczem. Tłumaczenia znajdują się w apps/pos-web/lib/vertalingen/<taal>.ts. Jeśli brakuje tłumaczenia, kasa pokazuje tekst niderlandzki; test i18n (pos-web) sprawdza, czy każdy tekst jest przetłumaczony na każdy język i czy miejsca {0} się zgadzają. Komunikaty serwera kasy pozostają po niderlandzku i są tłumaczone w przeglądarce (także z {0}, np. nazwą produktu w komunikacie).
Konfiguracja drukarek
Nowa kasa nie ma żadnych drukarek. Zaloguj się jako administrator (demo: 1111) i wybierz Ustawienia na górnym pasku.
- Drukarki: dodaj tyle drukarek, ile ma lokal (np. kasa, kuchnia, bar, pizza), każdą z połączeniem (zwykle sieć: adres IP i port 9100) i szerokością papieru. Przyciskiem Wydruk testowy sprawdzasz, czy działa. U góry wybierasz, która drukarka drukuje paragon i pro formę (i otwiera szufladę kasową). Dla każdej drukarki wybierasz też język bonu kuchennego (zob. Języki); paragon pozostaje po niderlandzku.
- Połączenie dla każdej drukarki:
- Sieć (adres IP): adres IP i port (zwykle 9100). Tak działało to zawsze i tak będzie działać dalej: istniejące drukarki są automatycznie ustawione na sieć.
- USB: w Linuksie urządzenie, na przykład
/dev/usb/lp0. Na Androidzie drukarka USB podłączona do urządzenia (kabel OTG; puste = pierwsza drukarka USB). W Windows i macOS wybierz Drukarka systemowa. - Szeregowa (COM / ttyUSB): port COM (Windows),
/dev/ttyUSB0lub/dev/ttyS0(Linux, Android) albo/dev/cu.…(macOS), z prędkością (zwykle 9600, 19200 lub 38400 bodów). Także dla drukarki Bluetooth, którą Windows lub Linux paruje jako port COM lub/dev/rfcomm0. - Bluetooth: w aplikacji HorecaPOS na Androidzie, z adresem Bluetooth sparowanej drukarki (np. mobilnej drukarki paragonów). Najpierw sparuj drukarkę w ustawieniach Bluetooth Androida.
- Drukarka systemowa (Windows / CUPS): drukarka w takiej postaci, w jakiej zna ją Windows lub CUPS (Linux, macOS), z jej własnym sterownikiem albo jako Generic / Text Only. Paragon trafia do drukarki w surowej postaci (RAW), bez formatowania przez sterownik.
- Wbudowana (Sunmi, iMin ...): drukarka wbudowana w kasę z Androidem.
- Szukaj pokazuje drukarki i porty, które widzi kasa. Wybierz jedną, a adres zostanie wpisany.
- Protokół: ESC/POS (prawie wszystkie drukarki paragonów, także drukarki Star w trybie ESC/POS) lub Star (Star Line Mode). Przy Star kasa sama konwertuje paragon; wygląda on tak samo.
- Ekran obsługi z własną drukarką: ekran obsługi z Androidem i aplikacją HorecaPOS (np. terminal ręczny z mobilną drukarką Bluetooth albo Sunmi jako ekran obsługi) może sam drukować. Zarejestruj go na samym urządzeniu (Ustawienia → Drukarki → Ekrany obsługi z własną drukarką) i przy drukarce wybierz Podłączona do. Ekran obsługi pobiera swoje wydruki z kasy; pozostaw na nim otwartą aplikację. Jeśli to się nie uda (aplikacja zamknięta, poza zasięgiem Wi-Fi), bon kuchenny trafia do kolejki wydruku, tak jak przy wyłączonej drukarce sieciowej. Wyrejestruj urządzenie przywraca drukarki na samą kasę.
- Drukarka dla grupy / produktu: dla każdej grupy artykułów wybierz, na której drukarce drukowany jest bon kuchenny. Dla pojedynczego produktu możesz to nadpisać własną drukarką lub "bez bonu kuchennego".
Takie same produkty są przy drukowaniu łączone: dwa razy 1x Cola daje 2x Cola, na bonie kuchennym i na paragonie. Łączone są tylko produkty z tymi samymi opcjami i uwagą.
Instalator dla Linuksa dodaje użytkownika kasy do grup lp i dialout, aby kasa mogła korzystać z drukarek USB i szeregowych.
Potrzebujesz pomocy?
Optimum POS · 085 560 00 60 · support@optimumpos.nl · pon.–pt. 9:00–20:00, sob.–niedz. 14:00–20:00