HorecaPOS使用手册 简介 进入收银台
ZH

HorecaPOS 使用手册

本手册分为三部分:首先是员工(服务员),然后是经理,最后是管理员。每部分都建立在前一部分之上:经理能做服务员能做的一切,管理员则拥有全部权限。

您的角色具体可以做什么,由管理员在设置 → 权限中设定。如果看不到某个按钮,说明您的角色(尚)无此权限。

本手册也内置在收银系统中:点击每个屏幕右下角的©按钮并选择使用手册,或打开 http://<kassa-pc>:3000/handleiding。另请参阅简介和API 文档。

第 1 部分 · 员工

快速上手

登录。在收银台、平板或手机上打开收银系统,输入您的PIN 码(4 至 8 位数字)。随后会看到桌台平面图。

使用 PIN 码登录

开台。点击一张桌台。空桌会新建订单;有客的桌台则继续已有订单。在顶部可切换区域(例如大厅和露台)。柜台销售使用快速销售,外带订单使用外带。

桌台平面图

点单。选择商品组并点击商品,商品会出现在左侧的单据上。可先选择道菜(1 = 立即上,2 和 3 等待您叫起)。点击下单:工作单即发送到厨房和吧台。在点击下单之前,可以随意删除明细行。

结账。点击结账,选择刷卡 / Bancontact、现金或礼品卡,可选择小费,然后确认。刷卡时支付终端会自动发起付款。小票会被打印,也可以通过邮件发送。

结账

退出登录。完成工作后请退出登录,以免他人以您的名义操作。8 小时后会自动退出登录。

没有网络?收银系统照常运行。如果顶部显示无网络 · 手动刷卡,请直接在支付终端上输入金额刷卡,然后在结账界面选择已在终端刷卡。

一桌多组

一张桌台可以坐多个组,每组有各自的账单和小票。

结账时拆分账单

结账界面

结账照常进行:一次付清。现在结账界面也可以拆分账单,使用返回和结账下方的按钮(这样它们始终可见,无需滑动):

部分付款只记录付款;账单保持未结,点单界面显示“已付款 … · 尚欠 …”。小票(包含所有付款)在最后一笔付款时出具,与普通结账相同。通过对接刷卡时金额正好是该部分金额。已有部分付款后,不能再把明细行转到其他组,也不能再加折扣;只有未结金额足够时才能删除。每笔部分付款都会记入日志。

快速销售和外带(无桌台)

桌台平面图,含快速销售和外带

桌台界面右上角有快速销售和外带。两者都会直接打开一张无桌台订单。快速销售是柜台销售(按堂食税率);外带则使用每个商品的外带税率。通过“顾客姓名”可添加姓名,姓名会显示在小票上(“外带 – Jansen”)以及工作单顶部。未结的无桌台订单显示在区域按钮下方(“无桌台:外带 #12 – Jansen”),方便您找回。如果未售出任何商品就返回,空订单会自动消失。

两个按钮均可在设置 → 门店中按门店开启或关闭,位于浅色/深色主题的正下方(默认开启)。关闭 = 隐藏按钮;已打开的无桌台订单仍然可见。

配送与时段

您在收银台自行接收的订单,例如电话或柜台订单,适用与网店相同的规则:配送区域和每时段最多订单数。在 设置 → 店铺 → 配送与时段 中开启,位于“快速销售”和“外带”按钮的正下方(默认关闭)。

扩展功能(默认全部关闭;不做这些设置时,一切与上文完全相同):

代码:lib/bezorgen.ts、routes/bezorgen.ts、BezorgDialoog.tsx、BezorgInstellingen.tsx、BezorgKaart.tsx 和 lib/kaart.ts(地图,无需额外软件包;网店中的 public/kaart.js 是同一份代码)。

电话:电话订单识别顾客

设置 → 电话(默认关闭;关闭后所有内容都会保留)。两个独立开关:

查找范围包括会员卡、收银系统的配送和外带订单、网店、Thuisbezorgd、配送平台和预订。号码会统一格式(+31 6 1234 5678、0031612345678 和 06-12345678 视为同一号码;比利时号码也一样)。

号码的来源(可同时使用多个;同一通电话只计一次):

来源适用于设置方法
Webhook / action URL3CX(CRM 集成)、Aircall、Voys / VoIPGRID、Yeastar P 系列、来电时支持 action URL 的话机(Fanvil、Grandstream、Mitel 6800/6900、Snom、Yealink:适用于任何交换机和运营商)、对接服务(Zapier、Make、n8n、Power Automate)设置 → 电话中的地址(/api/telefonie/oproep?sleutel=...&nummer=...),GET 或 POST,JSON、表单或 query;也可通过门户:https://<portaal>/telefonie/<kassa-id>/oproep?sleutel=...
Asterisk (AMI)Asterisk, FreePBX, Issabel, VitalPBX, Grandstream UCM地址、端口(5038;Grandstream UCM 7777)、AMI 用户和密码(权限 call)
FRITZ!Box带电话功能的 FRITZ!Box地址(fritz.box)和端口 1012;用 #96*5* 开启一次 callmonitor
USB 来电显示调制解调器带来电显示的模拟固定电话线串口(COM3、/dev/ttyACM0)、波特率和初始化命令(默认 AT+VCID=1)
Android 手机门店 Android 手机的内置电话在该手机上安装 HorecaPOS 应用,设置 → 电话 → 配对此手机(Android 10+:将该应用选为来电显示应用)

响应中包含来电者,也以 contact(firstname、lastname、phone、email、address)形式提供,供 3CX 的 CRM 模板使用。呼出和内部通话不显示;仅限这些线路可限定到特定线路或话机。通话在保存期满后删除(默认 30 天,GDPR)。测试来电会模拟一个号码来电。

代码:apps/pos-server/src/lib/telefonie.ts、routes/telefonie.ts、packages/shared/src/telefonie.ts;界面 Telefonie.tsx、BezorgDialoog.tsx;Android android-app/native/java/Beller*.java。日志:电话。

自有骑手:配送趟次、交款和 track & trace

适用于有自有骑手的门店。在 设置 → 门店 → 配送 → 自有骑手 中开启(默认关闭)。骑手无需应用:骑手用自己手机的浏览器打开一个页面即可(也可以使用 Optimum Bezorger 应用:见下方 骑手应用)。

创建配送趟次。收银界面有 配送趟次 按钮(显示尚待出发的配送数量加上配送中的趟次)。

  1. 在 待配送 中勾选要一起送出的订单。这些是来自收银台、网店和 Thuisbezorgd 的外送订单(仅限 自行配送;由 Thuisbezorgd 骑手配送的订单除外)。
  2. 选择 骑手(一名员工)和随身携带的 零钱(默认为设置中的金额),然后点按 创建配送趟次。
  3. 屏幕上会出现 二维码。骑手用自己的手机扫描,即可看到每个地址的姓名、带 路线(导航)按钮的地址、拨打、备注、期望时间和应收金额。还有找零计算器(顾客给 € 50 → 找零 € 31,50)。无需登录。链接只分享给骑手:拿到链接的人都能看到本趟次的地址。用 骑手二维码 可生成新链接,旧链接随即失效。
  4. 骑手离开时点按 出发。零钱从钱箱取出(支出,附原因)。顾客会收到订单配送中的通知:
    • 来自收银台的订单通过短信和/或电子邮件发送,前提是已开启 发给顾客的消息(参见配送与时段);
    • 网店订单按网店中的设置发送(邮件、短信或推送通知);
    • Thuisbezorgd 订单由 Thuisbezorgd 发送。

配送趟次尚未出发时,仍可 取消。

  1. 在路上,骑手对每个地址点按 已送达,现金、已送达,刷卡(自带刷卡机)或 已送达(已付款)。收银系统立即可见。骑手无法上报时,也可以在收银台操作。回到门店后,骑手点按 我已回到门店。

交款。配送结束后点按 结账(需 管理钱箱 权限):

Track & trace(需在设置中单独开启)。订单 配送中 时,顾客会收到门户上 追踪页面 的链接。该链接在短信或电子邮件中,网店的状态页面上也有(追踪你的骑手)。追踪页面显示:

页面使用手机的语言显示(支持门户的所有语言)。在收银台的配送趟次中可以看到最后一次上报位置的时间(附地图链接)。

隐私。门户只在配送趟次进行期间保存趟次数据(姓名、地址、电话号码、位置)。结算时全部删除,否则在 24 小时后删除。顾客只能看到自己的订单。骑手位置仅在配送期间可见,骑手返回后即不再可见。

趟次规划(可选)

在 设置 → 门店 → 配送 → 趟次规划 中开启(默认关闭;适用于自有骑手)。之后 配送趟次 窗口中会出现 推荐配送趟次 按钮。收银台会将尚待配送的订单合并成趟次:

点 使用此趟次 会按该顺序勾选这些订单;选择骑手后点 创建配送趟次。对于尚未出发的趟次,最佳顺序 会把地址排成最快的顺序(骑手手机上也会更新)。每个趟次都会显示距离和行程时间。

设置:每趟地址数、每趟最长时长、时间窗口、骑手速度(市区内自行车约 15、踏板车约 25、汽车约 35 公里/小时)以及每个地址的分钟数(停车、按门铃、收款;默认 2)。这些数值也可由经理设置:在配送趟次窗口中点击设置趟次规划按钮(权限设置趟次规划,经理默认拥有;可在“设置 → 权限”中调整)。开启或关闭趟次规划以及路线服务(地址、API 密钥)仍由管理员负责。

距离和行程时间,由管理员选择:

点 测试 可试用该服务。若服务不可用,规划会退回估算并加以提示。位置未知的地址(没有有效的邮编和门牌号)会在推荐中列入位置未知,不会被排入。配置导出包含这些设置,但不包含密钥。

代码:lib/ritplanning.ts。

骑手应用(可选)

在 设置 → 门店 → 配送 → 骑手应用 中开启(默认关闭;需配合自有骑手和管理门户使用)。之后每位骑手只需将自己的手机配对 一次,无需每趟扫描二维码:

  1. 在 已配对的手机 中选择骑手(一名员工),可填写手机名称,然后点击 配对手机。
  2. 屏幕上会显示一个 二维码。骑手在 Optimum Bezorger 应用中扫描(按钮 配对),或用手机相机扫描:页面会在浏览器中打开。无需应用也能使用,并可添加到主屏幕。
  3. 配对在你 撤销 之前一直有效;撤销后该手机立即无法再看到任何内容。同一员工的新配对会替换旧配对(例如换了新手机)。

应用或页面中显示 自己的所有配送趟次(收银台为该骑手创建的每个趟次),按钮与配送趟次中的相同:路线、拨打、带零钱计算器的应收金额、已送达和 我已回到门店。可单独开启:

Android 应用可在 Google Play 和门户下载页(/download/)获取。iPhone 版本已准备好,但需有 Apple 开发者账号后才会推出;在此之前 iPhone 使用网页。骑手自行接的配送趟次会标注 在应用中自行接单。

代码:lib/bezorgersapp.ts,门户中为 src/volgen.mjs,应用在 horecapos-bezorger 仓库中。

日志中记录谁创建了配送趟次、让其出发、上报送达和结算,以及相关金额。关闭后:不显示配送趟次按钮;配送趟次和设置会保留。

门户上:/bezorger/<sleutel> 和 /volg/<code>。代码:lib/bezorgers.ts、routes/bezorgers.ts、Bezorgers.tsx,门户中为 src/volgen.mjs。

出餐时间过长提醒

外带或配送订单晚于承诺时间完成时:收银台会发现并提醒,还可立即向顾客发送致歉,并可附赠代金券。在 设置 → 门店 → 配送 → 出餐时间过长提醒 中开启(默认关闭)。

代码:lib/telaat.ts、routes/telaat.ts、TeLaat.tsx 和 packages/shared/src/telaat.ts。

下单按钮:它的作用以及何时需要它

点选商品和点击下单是两个不同的步骤:

为什么分两步?在桌边你先记下整份点单(饮料、前菜、主菜),客人改变主意时再调整一下,然后一次性发送到厨房,每个工位一张单,而不是每个商品一张单。这样厨房可以在结账之前很早就开始准备。

下单时还会发生:

也可以直接结账。如果账单上还有新明细行时你点击结账,收银机会先自动为其下单,确保厨房和吧台始终收到单据。因此在吧台或外带时,你无需先点下单:点选商品后直接结账即可。如果自动下单失败(无网络连接、all-you-can-eat 规则、黑匣子),结账界面不会打开,并会显示原因。

直接结账时不希望吧台收到小票?在设置 → 门店 → 点单与结账中勾选直接结账不出工单。这样只有通过下单发送的内容才会送到厨房和吧台;直接结账的商品不会打印工单。

大号或小号结账按钮

勾选大号"结账"按钮后,点单界面在已点商品正下方显示一个大号结账按钮:又宽又高,并显示金额,方便快速点按。如果账单已部分支付,按钮会显示剩余未付金额。此时底部下单旁边的小按钮会隐藏。

开启大按钮后,结账界面中的按钮也会变大:结账(用于刷卡、礼品卡及其他支付方式),以及现金下的现金正好和结账都又宽又高,即使手指不干净也很容易点中(例如在肉店)。支付方式稍大一些,小费按钮稍小一些,这样所有内容都能显示在屏幕上。

新安装时此项默认不勾选:此时底部下单旁边是小按钮,结账界面使用普通按钮。想要大按钮?在设置 → 门店中,浅色/深色主题正下方,勾选大号"结账"按钮。已在使用中的收银台保留原有设置。该选择适用于门店的所有收银台和平板。

将商品设为“售罄”

任何人都可以在点单界面长按商品(或右键单击),选择售罄。商品随即变灰,所有收银台都无法再点。用同样的方法选择恢复供应即可恢复。每次更改都记入日志。管理员仍可在 设置 → 商品 中操作。收银服务器也会拒绝已设为“售罄”的商品(“Cola”已售罄),包括来自尚未同步该更改的平板或离线保存的订单;该平板随后会显示“无法发送”。

厨房显示屏 (KDS)

除了工作单打印机之外(而非取而代之),厨房或吧台还可以使用显示屏。在厨房的平板/电脑上打开 http://<kassaserver>:3000/keuken,用 PIN 码登录并选择工作站:名称与打印机相同(厨房、吧台……),因此屏幕上显示的正是该工作单上会打印的内容。“全部”显示所有工作站。

屏幕会自动实时更新。工作单照常打印;不使用显示屏的人不会受到任何影响。

厨房显示屏:转单、排序和道菜

设置 → 打印机 → 厨房显示屏。各项可单独开启,默认关闭;关闭后所有设置都会保留。

厨房打印机关闭或没有厨房显示屏

即使厨房或吧台打印机关闭(或缺纸、线缆松脱),即使没有厨房显示屏,收银系统也始终照常运行:

道菜(前菜、主菜……)

道菜按钮只在需要时显示:一旦单上有套餐(组合商品),或者第 2 至 4 道中已有内容。对于普通商品,例如可乐,您看不到这些按钮,所有内容直接发送到厨房。无需任何设置。

点单列表下方有道菜 1 2 3 4。默认选中第 1 道,一切照常:“下单”会把所有内容立即发送到厨房,工作单上不显示道菜标题。如果在点商品之前选择第 2 道(或更后),则:

第 1 道菜总是立即上。如果第 2 道菜已经叫起,之后在第 2 道菜中加点的菜品也会立即上。

每个商品的过敏原

默认关闭:此时任何地方都不显示过敏原。在设置 → 门店 → 填写并显示每个商品的过敏原中开启。

自助餐

默认关闭。在 设置 → 门店 → 自助餐 中开启(仅限管理员)。您可以创建一个或多个套餐方案,例如海鲜、肉类和寿司,每个方案包括:

用↑ ↓调整顺序。当一道菜属于多个方案时,顺序起作用:该菜归入该组所选方案中排在最上面的那个。删除会对新桌台移除该方案;进行中的桌台保留其价格明细(可以减少人数,不能增加)。

在桌边:

礼品卡

设置 → 门店 → 礼品卡 中有两个开关:

可充值余额(可选)

适用于俱乐部、体育食堂、青少年活动中心和各类活动:带余额的礼品卡变为可充值卡。在 设置 → 门店 → 可充值余额 中开启,位于礼品卡下方(默认关闭;仅在 销售带余额的礼品卡 开启时有效)。

餐券

仅适用于比利时的门店,默认关闭:设置 → 门店 → 结账 → 餐券。餐券是一种工资福利:雇主将其充值到员工的卡上(Edenred、Monizze 或 Pluxee)。顾客用它在普通刷卡机上付款;无需与发行商对接。

外币

用其他币种收取现金,例如英国或美国游客,或在边境地区收取瑞士法郎。默认关闭:设置 → 门店 → 结账 → 外币。添加币种(CHF、CZK、DKK、GBP、HUF、NOK、PLN、SEK、TRY、USD),并为每个币种设置汇率:1 单位折合多少欧元(例如 1 GBP = € 1,15)。

点单与结账的附加按钮

并非每家门店都需要的按钮。默认全部关闭;在设置 → 门店 → 点单与结账中逐个开启(权限门店、支付和打印机设置)。关闭 = 按钮在收银台中任何地方都不显示,收银服务器也会拒绝该操作。在荷兰,所有功能无需黑盒子即可使用;在比利时,只有该功能经过黑盒子测试后按钮才可用(如尚未测试,按钮旁会注明)。

开台时:

点单时(点单界面,适用于之后点选的商品):

结账时:

事后(小票):

代码:apps/pos-server/src/lib/kassaopties.ts、routes/kassaopties.ts;界面 KassaOpties.tsx。日志:设置已更改、SPV 已兑换、更正小票、未付款。

抵扣预付款

预付款(定金,例如用于聚会或预订)作为开启预付款的普通商品销售(设置 → 商品;始终为自定价格)。如预付款需按税率区分,每个增值税税率建一个(例如餐食预付款和饮品预付款),如属于报价的一部分则建一个商品即可。客人预先支付预付款并获得一张小票。

开启:设置 → 门店 → 点单与结账 → 抵扣预付款(默认关闭)。最终结账时,在点单界面点按抵扣预付款,并输入预付款的小票号。收银台将该小票的预付款各行以负数量记到账单上(相同商品、价格和增值税)。已抵扣的不能再次抵扣。如预付款多于账单金额,差额退给客人(退款)。在比利时,抵扣的各行作为退款(REFUND)发送到黑盒子(UC4110、UC4111、UC4113)。日志:预付款已抵扣。

通过电子邮件发送小票

默认关闭。通过 设置 → 门店 → 小票也通过电子邮件发送 开启。

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

填写后请重启收银台。之后在 结账 中会出现 同时通过邮件发送小票(可选) 字段:留空 = 照常只打印;填写邮箱 = 同一张小票(含增值税明细和税务信息)也会通过电子邮件发给客人,发件人为门店名称。

预订

在 设置 → 门店 → 预订 中开启(默认关闭)。在这里还可设置已预订桌台提前多少分钟显示在平面图上(默认 60),以及预订的默认时长(默认 120 分钟)。

TheFork 收银对接:到店开台,账单回传

借助 TheFork 的 POS-API,收银台在拉取上述预订之外,还能与 TheFork Manager(默认关闭) 协同工作。在设置 → 预订平台 → TheFork 收银对接中开启;通过管理门户运行。

TheFork 文档:https://docs.thefork.io/POS-API/introduction

无预订客人的候位名单

适用于没有预订、正在等桌的客人。在 设置 → 门店 → 候位名单(无预订) 中开启(默认关闭)。仅在已通过 CM.com 设置短信时显示;否则收银系统中任何地方都不会出现候位名单(设置中也不会)。与预订功能相互独立:即使预订已关闭也可使用。这里还可以设置 短信内容(留空 = "Hallo {naam}, uw tafel bij {zaak} is klaar. Wilt u zich melden bij de bediening?";{naam}、{zaak} 和 {personen} 会自动填入)。

会员卡 / 积分

在 设置 → 门店 → 会员卡 / 积分 中开启(默认关闭,关闭时任何地方都不会显示)。在这里还可设置:每欧元积分(0 = 仅集章卡)、多少积分可换一次奖励,以及该奖励抵扣多少欧元。

客人档案:VIP、饮食要求和偏好(可选)

在 设置 → 门店 → 客人档案 中开启,位于会员卡下方(默认关闭;仅在会员卡开启时有效)。之后:

收藏 / 快捷按钮

默认关闭。设置 → 门店 → 常用 / 快捷键:

再来一轮

点单界面上有 ↻ 再来一轮 按钮(账单上一有内容就显示,即使尚未下单)。点一下即可把最近一轮(一次“下单”发送的全部内容,或刚刚点选的内容)再次作为新行加入;然后照常点 下单。价格按当前价格计算(包括欢乐时光)。

平面图上的用餐时长

每张占用的桌台上显示 ⏱ 45m · 12m:桌台已占用多久,以及距上次点选过了多久(在桌台上长按,或将鼠标悬停其上,可查看精确时间)。如一段时间没有点单,桌台会显示橙色边框:该过去看看了。分钟数在 设置 → 门店 → 桌台时间 中设置(默认 20,0 = 不显示橙色边框)。尚未点选时从开台起计时。

如一张桌台有多个组(各自单独结账),每组显示一行,例如 G1 ⏱ 50m · 12m 和 Jansen ⏱ 10m(显示组名,否则显示组号)。某组长时间没有点单时,会显示橙色标签,桌台显示橙色边框。

转移整桌

点单界面中有 转台。选择区域(如露台)和餐桌:该桌所有组一起转过去,各自保留自己的账单。若选了有人的餐桌,两桌会合并(各组加入)。只想转移一部分时,照旧使用 拆分 / 转移。要全部放在一张账单上,请用 合并。

离线持续工作(无 Wi-Fi 的平板)

如平板与收银服务器之间断开连接(露台 Wi-Fi 不稳、服务器暂时关闭),会出现黄色提示条,平板使用最后保存的桌台、商品和未结订单继续工作:

人数

可选,默认关闭:设置 → 店铺 → 点单与结账 → 记录人数。关闭 = 点击次数最少:空桌点一下即开台,任何地方都不显示人数,报表、仪表盘和每日汇总不显示客人数和人均消费。

开启:点击空桌时,收银机会询问几位(大按钮 1-8,或手动输入;"跳过" = 1)。平面图上已占用的餐桌显示 "3/4 人"(人数/座位数,人数多于座位时显示黄色)。在点单界面,用分组栏中的 "3 人" 按钮修改;有多个分组时,餐桌合计所有分组。

不记录人数时一切照常:结账时的平均分摊从 2 开始,all-you-can-eat 会自行询问成人和儿童人数,预订和候位名单保留各自的人数(此时开台不带人数)。

HACCP 记录

每家餐饮场所都必须监控并记录食品安全:在荷兰依据 Hygiënecode voor de Horeca(由 NVWA 检查),在比利时依据 FAVV 的自主检查(指南 G-023)。在 设置 → 法律法规 中开启 HACCP 记录(默认关闭)。

酒头系统和流量计

打酒电脑或流量计上报的每次打酒都会记到账单上,杜绝"跑冒滴漏"。在设置 → 酒头系统中开启(默认关闭)。

定量打酒与 Kegboard

启用定量打酒后,只有在收银台录入该杯酒之后酒头才会打开,并且只放出该份量。这样就不会打出账单上没有的酒。仅在酒头系统开启时有效,需按酒头单独开启(默认关闭)。

在收银台控制音乐

员工在收银台的触摸屏上控制音乐,吧台无需单独的屏幕。在 设置 → 门店 → 屏幕与操作 → 在收银台控制音乐 中开启(默认关闭)。开启后顶部栏会出现 音乐 按钮:每个音源(例如 吧台 和 露台)都有 播放、暂停、下一首、上一首、调大、调小 和音量滑块,并显示正在播放的内容。返回收银台 关闭面板。关闭此功能后音源会保留。

管理员通过 + 音源 添加音源,选择连接方式,并用 测试 进行测试:

收银台通过服务器与播放器通信,因此播放器必须与收银台处于同一网络(Soundtrack 通过互联网)。所有已登录的人都可以控制;设置则需要 门店、支付和打印机设置 权限。令牌和密码绝不会再显示在屏幕上或日志中;日志只记录设置(开启/关闭、音源),而非每次按键。配置导出只包含开启/关闭(音源属于单个门店)。

平板或手机上的第二屏幕

音乐和摄像头也可以在员工自己的平板或手机上打开,作为收银台旁的第二屏幕。在 音乐 或 摄像头 窗口中有 在平板或手机上 按钮:它会显示包含地址的二维码,例如 http://192.168.1.20:3000/muziek 或 .../camera。

  1. 将平板或手机连接到店内的 wifi 网络。
  2. 用摄像头扫描二维码(或在浏览器中输入地址)。
  3. 用您自己的 PIN 码登录。您只能看到有权限的内容:音乐所有人可用,摄像头仅限拥有 查看摄像头画面 权限的人。
  4. 完成:点右上角的 退出登录。如果登录已过期(例如平板闲置了一夜),屏幕会再次要求输入 PIN 码。

提示:将页面添加到平板的主屏幕(在浏览器中:添加到主屏幕),之后它会像应用一样打开。

因此收银系统会查询收银电脑在网络中的 IP 地址(如果电脑有多个地址,例如 wifi 和网线,请选择网络)。在管理门户(远程收银)上则是门户的地址。二维码由收银系统自行生成,无需联网。

配对平板:一键发送到平板(可选)

更简单:将平板配对一次,收银台即可一键把音乐或摄像头画面发送到该平板。在 设置 → 门店 → 屏幕与操作 → 平板作为第二屏幕 中开启(默认关闭)。

  1. 在平板上:打开 http://<kassaserver>:3000/tablet(该设置旁有带二维码的 在平板或手机上),用 PIN 码登录并为平板命名,例如 吧台平板。点 配对。
  2. 在收银台上:音乐 或 摄像头 窗口中现在有 发送到 吧台平板 按钮(平板开启时带绿点)。点击后平板会自动打开该画面。音乐会一并带上所选来源(例如:露台)。
  3. 在平板上:关闭 返回等待状态;取消配对此平板 会移除配对。

请保持平板上的页面打开;如果平板已关闭或休眠,重新开启后会立即打开该画面。平板保持以在其上登录的员工身份登录:只有拥有 查看摄像头画面 权限才能发送和查看摄像头画面。管理员可在该设置处查看已配对的平板及其是否开启,并可重命名或移除。平板保存自己的密钥;收银台只保存其哈希值。关闭此功能后,已配对的平板会保留。日志中记录了谁配对、重命名或移除了平板。

外带叫号屏

面向顾客的屏幕,左侧为制作中,右侧为完成,号码醒目,就像小吃店或快餐店那样。在设置 → 门店 → 屏幕与操作 → 外带叫号屏中开启(默认关闭)。

无需配对:在带浏览器的电视(智能电视、电视棒或迷你电脑)、平板或第二台显示器上打开收银台地址加 /oproep,例如 http://192.168.1.20:3000/oproep。在该设置和叫号窗口中有在单独屏幕上和在平板或手机上按钮(带地址的二维码)。无需登录:屏幕只显示号码。轻触屏幕一次后,浏览器即可播放声音。

显示内容:

号码:网店、Thuisbezorgd 和外卖平台使用顾客或配送员已有的订单号;否则使用取餐号(1 到 999)。取餐号会大字打印在小票上,并说明订单准备好后号码会显示在屏幕上(使用小票语言)。

可选(默认关闭,在设置中):

收银台上有叫号按钮(显示仍在制作中的数量):

  1. 完成手动将号码设为完成(没有厨房显示屏时,或这样更快时)。对于网店或 Thuisbezorgd 的订单,状态会同步更新,顾客也会收到通知。
  2. 退回将其重新放回制作中。
  3. 已取餐将其从屏幕移除(可撤销)。

在该设置中还可选择是否在号码旁显示名字(默认不显示,以保护隐私)以及屏幕是否发出声音。关闭后:没有“叫号”按钮,小票上也没有取餐号;设置会保留。日志中记录了谁手动设为完成、退回或已取餐。

打卡上下班

打卡默认关闭:此时收银台中任何地方都看不到(顶部栏无按钮,登录界面没有,也没有“工作时间”标签页)。在 设置 → 门店 的 员工打卡上下班 中开启:

不使用收银台的人(例如厨房)在登录界面打卡:点击 上班 / 下班打卡 并输入 PIN 码。会在上班和下班之间切换,无需登录。

开启打卡后,管理员可在 设置 → 工作时间 中查看:

在比利时,每次上下班打卡也会报送给黑匣子。如黑匣子无法连接,打卡将无法完成(与结账相同)。这是否完全符合比利时的员工登记规定,尚待确认。

称重和标签(电子秤)

开启秤后(设置 → 秤),商品可以设置每公斤价格。其他商品仍按件计价。

Uber Eats、Deliveroo 和 HubRise

除 Thuisbezorgd.nl / Takeaway.com 外,来自 Uber Eats(荷兰和比利时)、Deliveroo(仅比利时;Deliveroo 已于 2022 年底退出荷兰)以及 HubRise 上的所有平台(如 Uber Eats、Deliveroo、Just Eat/Takeaway.com 及小型点餐应用)的订单也会进入收银台。每个平台可在设置 → 外卖平台中单独开启(默认关闭;关闭后所有内容都会保留)。该选项卡显示每个平台在哪些国家可用,如果在门店所在国家不可用会发出警告。

订单。订单会成为普通订单(bezorgen 或 afhalen,分组名 <platform> <nummer>),采用平台价格:商品通过 ID(来自菜单)、代码或 PLU 编号识别,无法识别 = 按平台价格单列一行(并给出提示);配送费、附加费和折扣各自单列;如果总额仍不一致,则添加一行 "差额"。厨房单立即发往厨房/吧台。顶栏的平台按钮(显示进行中订单数;有待接订单时为橙色):接单或拒单(附原因)、制作中、完成、配送中、已送达或已取餐、取消,以及完成(已在线支付)。平台支持的状态都会回传(Uber Eats:接单、拒单、取消;Deliveroo:接单、拒单、制作中、完成、已取餐;HubRise:所有状态)。如果门店自行配送(自行配送),订单也会出现在配送趟次中,出发和送达会自动通知平台。平台取消订单后,订单失效。如果收银台与门户断开超过 2 分钟,门户会拒绝新的 Uber Eats 订单,并告知 Deliveroo(使用平板时)接单失败,以便门店在平板上看到。

代码:apps/pos-server/src/lib/bezorgplatforms.ts、routes/bezorgplatforms.ts;界面 Bezorgplatforms.tsx。门户端:horecapos-portaal/src/platforms.mjs。日志:外卖平台(开/关、设置、订单)。所有内容都包含在收银台的备份中。

荷兰和比利时的小型平台(Homie、Hebtrek、sneleten.nl、Bistroo ...)没有公开的收银对接;如果它们接入了 HubRise,则可通过 HubRise 使用。其他:见 backlog。

自动收款机(封闭式现金管理系统)

默认关闭:现金照常处理。使用封闭式现金管理系统时,员工不接触现金:顾客或员工将现金放入收款机,收款机点钞、验伪并找零。

©按钮

OptimumPOS 信息

每个界面(PIN 码、平面图、点单和厨房)右下角都有一个小 © 按钮。点击可查看 OptimumPOS 的信息:标志、地址、电话、邮箱和网站。图标保存在应用本地,因此无网络也能显示。该图标同时也是应用图标(标签页和主屏幕)。

第 2 部分 · 经理

快速上手

经理默认可以做服务员能做的所有事,此外还可以给予折扣、办理退货、日结、管理钱箱以及查看日志和库存等。这些主要在 报表 按钮下:

库存

默认关闭。通过 设置 → 门店 → 库存管理 开启。关闭 = 收银台中任何地方都不显示。

向供应商订货

默认关闭。在 设置 → 库存 → 向供应商订货 中开启(仅在开启库存管理时)。关闭 = 订货单照常使用。

评价管理

在收银系统中阅读和回复来自 Google 和 Trustpilot 的评价。在 设置 → 积分与评价 → 评价管理 中开启(默认关闭,关闭时任何地方都不会显示)。在 报表 → 评价 中阅读和回复(权限 阅读和回复评价,经理默认也拥有)。关闭后,连接和评价仍会保留。

短信和邮件营销

向已同意接收消息的会员卡顾客发送消息。未开启会员卡时,两者都无法开启。

按员工统计小费

在 设置 → 门店 → 小费 中(仅当“结账时显示小费按钮”开启时),可选择按员工的小费如何显示在中间报表 (X)、Z 报表(小票和邮件)以及按期间营业额(包括 CSV)中:

选项分配方式
关闭(默认)只显示小费总额,与以往相同
各自的小费本人结账的账单所收的小费
按工时分配所有小费合并,按该期间的打卡工时分配(需开启上下班打卡;无人打卡 = 平均分配)
平均分配所有小费合并,在已打卡的人之间平均分配(未打卡时:在点过单或结过账的人之间分配)

零头分给最接近下一分钱的人,确保总额始终一致。这只是一个概览:收银台不会发放任何款项(可用“从钱箱取款”)。旧的 Z 报表保持不变。

通过电子邮件发送 Z 报表

在 设置 → 门店 → Z 报表发送至 中一次性填写管理员的邮箱(多个地址用逗号分隔,最多 3 个)。之后每次日结,Z 报表都会自动发送到该地址,同时照常打印小票。留空 = 不发送,与以往相同。

当日摘要(可选)

如果在 Z 报表发送至 中填写了地址,其下方会出现勾选项 在邮件顶部附上当天的简短摘要(默认关闭)。开启 = 在 Z 报表邮件顶部用通俗的语言写几行,只使用收银系统自身的数据(不使用 AI,不向外发送任何数据):

Z 报表本身(小票和邮件)保持完全不变。今日预览 显示从上次日结到现在的摘要。摘要使用荷兰语,与 Z 报表邮件相同。

仪表盘

报表中的 仪表盘 标签页(权限 按期间营业额),只读:

售出的礼品卡不计入营业额,折扣和套餐行不计入前 10 名(与其他报表相同)。一天从 00:00 到 24:00。

附加报表

报表 中新增三个选项卡,每个都可以在 设置 → 门店 → 管理与报表 → 附加报表 中单独开启(默认关闭:此时不显示选项卡)。它们需要的权限与 按期间营业额 相同,并且只能查看。期间:本周、上周、本月、上月、最近 90 天、今年或自选(最长一年多一点)。

折扣

经理或管理员在点单界面的总额旁可以看到 % 折扣 按钮:

折扣在小票上单独成行(“折扣 10%”,下方注明原因),使用相同的增值税税率,使总额和增值税明细一致。整张小票的折扣按增值税税率分摊。删除:点击折扣行的金额。如取消带单独折扣的行,该折扣也随之取消。如从整张小票按百分比打折的小票中删除商品,收银台会按剩余部分重新计算该折扣(比利时 UC226);固定金额折扣保持不变,结账时重新分摊到各行。如因 100% 折扣无需付款,用“关闭(无需付款)”结束。折扣会记入日志,并在 X/Z 报表和期间概览中显示为“其中折扣”。退回带折扣的小票时,折扣按比例一并退回。

优惠码(可选)

对整张小票打折的代码,例如用于促销活动(ZOMER10)。在 设置 → 门店 → 优惠码 中开启(默认关闭);在 设置 → 优惠码 中创建代码(需管理商品权限):

点单界面上有 优惠码 按钮(任何人都可输入代码;代码由门店预先创建)。折扣以 "优惠码 CODE" 一行显示在小票上,并按增值税税率分摊;每张小票限一个代码,已(部分)付款后不能再使用。删除该行或取消订单后,使用次数不再计算。删除已使用的代码会将其停用(报表保持准确)。所有操作都记录在日志中(优惠码)。代码:lib/kortingscodes.ts, routes/kortingscodes.ts, Kortingscodebeheer.tsx, KortingscodeDialoog.tsx。

它们不会出现在 设置 → 优惠码 的列表中(但每个促销的数量会显示在 报表 → 营销 中),只要仍有效且未使用,就会同步到网店。

报表和日结

报表 - 中间报表 (X)

顶部栏的 报表 按钮:

导出至会计系统

报表 → 按期间营业额 → 会计导出(日记账)(权限 按期间营业额)会生成一个 CSV,每天一笔日记账分录,可直接导入 e-Boekhouden、Exact、SnelStart、Twinfield 等(通过其 CSV/转账凭证导入功能),也可选择下方的某种格式(UBL、XAF 以及直接适用于 14 款软件的格式)。

每天一张凭证(KASSA-JJJJMMDD),始终借贷平衡(借方 = 贷方):

方向内容
借方按支付方式的收款(现金、刷卡、礼品卡、在线、其他),含小费
贷方按增值税税率的营业额(不含税)和按税率应缴增值税
贷方小费(应付给员工,不计营业额)
+/-抹零差额(现金四舍五入到 5 分)
+/-钱箱存取款(现金管理)对应过渡科目,以及 Z 报表中的现金差额

退货和折扣已包含在小票中,并会减少营业额。列:Datum; Boekstuk; Dagboek; Rekening; Omschrijving; Debet; Credit; Btw-code; Btw-%(分号分隔,逗号作小数点)。下载后,收银台会提示是否有借贷不平衡或差额大于抹零的日期。

在按钮旁边选择格式(浏览器会记住你的选择)。日记账内容相同,但排版成软件可直接导入的样式。列表只显示门店所在国家(设置 → 门店)适用的格式,先列标准格式(CSV、UBL、XAF),再按字母顺序列出各软件:

格式文件导入软件
通用(CSV)journaal_…csv任何支持 CSV/转账凭证导入的软件(需映射列)
UBL 2.1 / Peppol(XML),NL 和 BEjournaal_…_ubl.xml(多天:.zip)每天一张开给 Kassaverkopen 的 "dagontvangsten"(每日收款)发票(已付款),符合 Peppol BIS Billing 3.0,每个增值税税率一行,营业收入科目写在 AccountingCost 中;只含营业额和增值税(支付方式、小费、舍入、钱箱和现金差额不属于发票内容)。用于上传到 Adsolut、Billit、BUNNI、DigiBoox、Expert/M、Moneybird、Popsy、Rompslomp、Storecove 和 TriFact365 等;不用于通过 Peppol 网络发送。名称、增值税号和地址取自 设置 → 门店
XML Auditfile Financieel(XAF 4.0),NLjournaal_…_xaf.xafBelastingdienst 的审计文件(XSD XmlAuditfileFinancieel4.0):整个期间一个文件,包含总账、增值税代码、期间以及每天一笔转账凭证交易;可导入 Caseware、Exact Reeleezee 和 Visma Cash 等
AccountView(XML),NLjournaal_…_accountview.xmlXML 分录(VFPData,每条记账行一个 transact,包含 dj_code、period、inv_date、inv_nr、acct_nr、trn_desc 和 amount:借方为正,贷方为负),每天一张转账凭证;通过导入定义读入(Document → Importeren → Importdefinitie aanmaken,类型 XML),字段名与 AccountView 自身一致,因此只需一次 1 对 1 映射。请让人检查第一次导入
AFAS Profit (XML)journaal_…_afas.xmlUpdateConnector FiEntries(财务凭证)的 XML,每天一笔分录,包含年度、期间、账套和日记账;在 Profit 中通过“导入 → XML”读入;填写账套编号(默认 1)
Asperion(CSV),NLjournaal_…_asperion.csvFMUTA 格式(Extra → Import financiële mutaties),每天一行表头加若干记账行;导入定义由 Asperion 通过客服设置
日报表(HTML),NL 和 BEjournaal_…_dagstaat.html每天一份易读的日报表(按增值税税率的营业额、支付方式、小费、现金差额)及合计;可打印为 PDF 或通过邮件发送,适用于无导入功能的软件(Accountable、Dext、Dexxter、Jortt、Kleisteen、MoneyMonk)
e-Boekhouden.nl (CSV)journaal_…_eboekhouden.csv日期; 凭证号; 摘要; 总账科目; 金额(借方为正,贷方为负); 增值税代码 GEEN(增值税已记在增值税科目上);导入 → 分录,类型为转账凭证
Exact Online (XML)journaal_…_exact.xmleExact-XML(主题 GLTransactions):每天在日记账中生成一笔转账凭证(类型 90);导入/导出 → 导入 XML
InformerOnline(TXT),NLjournaal_…_informer.txt制表符分隔的转账凭证(Geavanceerd → Memoriaal → uploaden);日记账必须是 1–99 之间的编号(否则为 90)
KING ERP(XML),NLjournaal_…_king.xmlKING_JOURNAAL:一个记账批次(非最终),每天一笔日记账分录
KOMAS(CSV),NLjournaal_…_komas.csvKOMAS 自由格式(0401 Importeren journaalposten):Datum; Grootboek; Omschrijving; Bedrag
Odoo(CSV),NL 和 BEjournaal_…_odoo.csv会计 → Journal Entries → Import records;日记账和科目按名称或代码对应
Sage BOB 50(Excel),BEjournaal_…_bob.xlsxImportation de données externes → Opérations diverses(列只需映射一次)
SAP Business One(ZIP),NL 和 BEjournaal_…_sapb1.zipData Transfer Workbench,Journal Entries:JournalEntries.csv 和 JournalEntries_Lines.csv
SnelStart (CSV)journaal_…_snelstart.csv日期; 凭证号; 摘要; 总账科目; 借方; 贷方(dd-mm-yyyy,逗号作小数点,无 BOM);按转账凭证导入,导入时选择日记账
Twinfield (XML)journaal_…_twinfield.xml日记账交易以草稿形式导入(destiny="temporary"),由会计师最终确认;请填写账套代码(留空 = 你导入的账套)
Winbooks(CSV),BEjournaal_…_winbooks.csvK_DOC.CSV,每天在日记账中一份单据(由 Winbooks 自行编号)
Yuki (XML)journaal_…_yuki.xmlJournal-XML(GeneralJournal),每天一笔转账凭证,结构与实时对接相同;账套 ID 可选

概览:各会计软件的对接方式

按细分市场分组,按字母排序。NL/BE = 软件适用的国家:在 设置 → 会计 → 会计软件 中只显示适用于门店所在国家的软件(荷兰软件不适用于比利时,反之亦然)。实时 = 收银机每天自动记账(在 设置 → 会计 → 会计软件 中选择);需申请 = 有 API,但需先在供应商处完成合作伙伴注册或获得批准(请告诉我们)。文件 = 会计导出 中的格式。两者都可用时,你可以同时使用。该列表位于 packages/shared/src/boekhoudcatalogus.ts,也显示在 设置 → 会计 中。

软件NLBE实时文件备注
中小企业和自雇人士
Accountable–✓–日报表(HTML,用于 PDF 或邮件)
AccountView (Visma)✓–需申请AccountView(XML),通用(CSV)文件:用于导入定义的 XML 分录(Document → Importeren);通用 CSV 也可以通过导入定义导入。向 AccountView 申请后,可通过 AccountView.Net API 实时传输。
Acumulus✓–✓–实时:每天一张已付款的销售发票,每个增值税税率一行。
AFAS Profit✓–✓AFAS Profit (XML)
Asperion✓–需申请Asperion(CSV)在 Asperion 注册为 API 合作伙伴后可实时对接。
Billit–✓需申请UBL 2.1 / Peppol(XML)通过 Fast input 上传 UBL;经 Billit 批准后可实时对接。
BUNNI✓––UBL 2.1 / Peppol(XML)暂无公开的 API 文档。
Dexxter–✓–日报表(HTML,用于 PDF 或邮件)
DigiBoox(Visma DigiBTW)✓––UBL 2.1 / Peppol(XML)
e-Boekhouden.nl✓––e-Boekhouden.nl (CSV)也适用于原 Ficsus 客户。
Exact Online✓✓✓Exact Online (XML)
Exact Reeleezee✓––XML Auditfile Financieel(XAF 4.0)
Horus–✓✓–
InformerOnline✓––InformerOnline(TXT)
Jortt✓––日报表(HTML,用于 PDF 或邮件)无导入功能:将每日营业额记为收入,并附上日报表。
KING✓–需申请KING ERP(XML)在 KING Software 完成合作伙伴注册后可实时对接。
Kleisteen✓––日报表(HTML,用于 PDF 或邮件)
KOMAS(Adfinis)✓––KOMAS(CSV)
Minox✓–需申请–通过 Minox 建立合作伙伴对接后可实时对接。
Moneybird✓–✓UBL 2.1 / Peppol(XML)
MoneyMonk✓––日报表(HTML,用于 PDF 或邮件)MoneyMonk 将于 2026 年推出用于对接的 API。
Octopus–✓需申请–向 Octopus 申请 software house ID 后可实时对接。
Popsy / Allegro–✓–UBL 2.1 / Peppol(XML)
Rompslomp✓––UBL 2.1 / Peppol(XML)
Sage BOB 50–✓–Sage BOB 50(Excel)
Silvasoft✓✓✓–实时:每天一笔销售凭证,每个增值税税率一行;支付方式、小费和现金差额不会同步。
SnelStart✓–✓SnelStart (CSV)
Twinfield✓–✓Twinfield (XML)
Visma Cash✓–需申请XML Auditfile Financieel(XAF 4.0)使用 CASHWeb 中的密钥调用 API;记账的记录格式尚待确认。
Visma eAccounting✓–需申请–经 Visma 批准(合作伙伴注册)后可实时对接。
Winbooks–✓需申请Winbooks(CSV)
Wolters Kluwer Adsolut–✓需申请UBL 2.1 / Peppol(XML)UBL,每行带营业收入科目;请在 Adsolut 中开启 "grootboekrekening verwerken bij verkopen"。
Wolters Kluwer Expert/M–✓–UBL 2.1 / Peppol(XML)
Yuki✓✓✓Yuki (XML)
国际
QuickBooks Online✓✓✓通用 CSV没有荷兰或比利时版本:请检查增值税设置。
Xero✓✓✓通用 CSV
Zoho Books✓✓✓通用 CSV
大型企业和连锁店
Exact Globe+✓✓–Exact Online (XML)与 Exact Online 相同的 XML;首次导入请让人核对。
Microsoft Dynamics 365 Business Central✓✓✓–
Odoo✓✓✓Odoo(CSV)
Oracle NetSuite✓✓需申请通用 CSV
SAP Business One✓✓✓SAP Business One(ZIP)
Unit4 ERPx✓✓–通用 CSV
平台和聚合服务
Apicbase✓✓需申请–按小票的销售数据用于库存和 food cost:在 设置 → 配方 中连接(不作为财务软件)。
Caseware✓✓–XML Auditfile Financieel(XAF 4.0)
Combidesk✓–需申请–Combidesk 自行开发和维护对接(可连到 Exact、Moneybird、SnelStart、Twinfield 等);作为合作伙伴需申请。
Dext✓✓–日报表(HTML,用于 PDF 或邮件)将日报表(PDF)发送到你的 Dext 邮箱地址。
Jamix✓✓需申请–通过 Jamix 的 JAPI 接口传送销售数据,用于库存和食品成本;定制开发需向 Jamix 申请。
Omniboost✓✓需申请–通过 Omniboost 的合作伙伴计划进一步连接到众多会计和酒店系统。
Storecove(Peppol)✓✓需申请UBL 2.1 / Peppol(XML)
TriFact365✓––UBL 2.1 / Peppol(XML),日报表(HTML,用于 PDF 或邮件)
其他任何软件✓✓–通用 CSV、UBL 或 XAF(NL)

请让会计师检查第一次导入。格式定义见 packages/shared/src/journaalexport.ts(含测试)。

设置 → 会计(权限 门店、支付和打印机设置):日记账代码(默认 MEM)以及各项目的总账科目。留空 = 示例科目(NL:8000/8010/8020 营业额,1500/1510 增值税,1000 现金,1100 刷卡;BE:7000xx 营业额,451000 增值税,570000 现金)。请让会计填写实际科目。

对接会计软件

实时对接 Acumulus、AFAS Profit、Microsoft Dynamics 365 Business Central、Exact Online、Horus、Moneybird、Odoo、QuickBooks Online、SAP Business One、Silvasoft、SnelStart、Twinfield、Xero、Yuki 和 Zoho Books。每天结束后,收银机会将与上方导出相同的分录(按税率的营业额和增值税、支付方式、小费、舍入、钱箱和现金差额)作为转账凭证记入所选软件,使用 设置 → 会计 中的日记账和总账科目。任何时候最多只开启一款软件。

软件国家连接方式收银机记什么
AcumulusNLAPI 用户的合同代码、用户名和密码每天一张已付款的销售发票,每个增值税税率一行;Acumulus 会将错误通过邮件发送到 ACUMULUS_FOUTMAIL
AFAS ProfitNL环境、令牌、账套转账凭证(FiEntries)
Business CentralNL, BEMicrosoft Entra 应用的租户、环境、公司、客户端 ID 和密钥(API.ReadWrite.All)普通日记账中的行,使用“日记账”中的代码
Exact OnlineNL, BE登录(OAuth,自有应用:见下方 Exact Online;比利时:start.exactonline.be)记入日记账的转账凭证(例如 90)
HorusBE登录(OAuth,应用见下文),可选档案杂项业务
MoneybirdNLAPI 令牌,可选账套转账凭证(general journal document)
OdooNL, BE地址、数据库、用户、API 密钥记入使用简码的日记账的分录(例如 MISC)
QuickBooks OnlineNL, BE登录(OAuth,应用见下文;QUICKBOOKS_OMGEVING)journal entry;科目按编号
SAP Business OneNL, BEService Layer 地址、数据库、用户、密码日记账分录(JournalEntries)
SilvasoftNL, BE用户和 API 密钥向往来单位 Kassaverkopen 记销售凭证,每个增值税税率一行(支付方式、小费和现金差额不会同步)
SnelStartNL连接密钥和订阅密钥转账凭证
TwinfieldNL登录(OAuth,应用见下文),可选办公室日记账交易
XeroNL, BE登录(OAuth,应用见下文),可选组织manual journal;科目按代码
YukiNL, BEAPI 密钥,可选账套转账凭证(GeneralJournal)
Zoho BooksNL, BE登录(OAuth,应用见下文;默认欧洲数据中心),可选组织日记账分录;科目按代码

收银审计文件(XAA)

对于荷兰门店,在 报表 → 按期间营业额 中,会计导出旁边有 收银审计文件(XAA) 按钮:所选期间的荷兰税务局(Belastingdienst)和 XML Platform (SRA) 的 XML Auditfile Afrekensystemen 3.2(最长略超过一年;权限 按期间营业额)。这是荷兰税务局推荐的、在检查时或向会计师提交收银机数据的文件;相关规则见 Handreiking voor een betrouwbaar afrekensysteem(可靠收银系统指南)(docs/xaa)。

文件中(auditfile_kassa_<van>_tm_<tot>.xml,模式 docs/xaa/XmlAuditfileAfrekensystemen3.2.xsd):

金额为正数,并标记 C(销售、收款)或 D(退货、付款);时间为带时区偏移的荷兰时间。所有键都是数据库中去掉连字符的 id,因此可以在收银机中查到。

签名(规范第 6 章):如果 Optimum POS 已设置证书,审计文件将以签名形式放在信封中(XML Signature),文件名为 …_ondertekend.xml;否则为单独的审计文件,收银机会在下载时提示。

挂账付款

企业客户(例如每周来取午餐的公司、酒店、协会)可以挂账购买,稍后凭发票付款。在 设置 → 发票 → 挂账付款 中开启(仅在 发票 开启时可用;默认关闭)。

银行:核销转账

在 报表 → 挂账 → 银行 中,收银系统会为每笔入账查找对应的挂账发票:

收银台摄像头画面

门店所有摄像头画面集中在一个页面,无需单独屏幕或应用。在 设置 → 门店 → 屏幕与操作 → 收银台摄像头画面 中开启(默认关闭)。之后,拥有 查看摄像头画面 权限的人会在顶栏看到 摄像头 按钮(默认经理和管理员;可在 设置 → 权限 中为服务员开启)。所有摄像头并排显示;点击摄像头可放大画面。关闭后,监控系统设置会保留。

也可作为单独屏幕:在单独屏幕上 打开 http://<kassaserver>:3000/camera(例如吧台后面的显示器),在平板或手机上 则显示二维码:员工用自己的平板或手机扫描,并用自己的 PIN 码登录(同样仅限拥有 查看摄像头画面 权限的人)。在窄屏上摄像头会上下排列。参见“平板或手机上的第二屏幕”。

管理员通过 + 监控系统 添加监控系统,用 测试 进行测试,并为每个摄像头设置名称及是否显示在页面上:

没有 ffmpeg:显示图片。

隐私:收银台从监控系统获取画面并仅作转发;不保存任何内容(无录像、无缓存)。用户和密码保留在服务器上,绝不会显示在画面或日志中。日志中记录谁查看过摄像头。页面使用密钥请求画面本身(有效期 12 小时,员工保持登录期间),因为浏览器中的图片无法附带令牌。配置导出仅包含开启/关闭。

敏感操作日志

报表 → 日志(经理或管理员)显示谁在何时做了什么。

记录内容:撤销、折扣(及取消)、退货、小票副本、形式发票、手动刷卡、打开钱箱、钱箱存取款、备用金、日结、移动明细或桌台、关闭空订单、修改商品价格/名称/增值税、新增或删除商品、修改员工和设置、调整工作时间、登录和退出、错误 PIN 码以及上下班打卡。启用挂账付款时还包括:客户、挂账销售和付款、导入银行对账单、银行连接以及从银行获取数据。启用出餐时间过长提醒时:超时订单和已发送的致歉。启用 Mailchimp 或 Klaviyo 时:连接、选择列表、取消配对以及来自那边的退订。启用音乐控制时:开启/关闭以及音源的添加、修改和移除。启用摄像头画面时:谁查看过摄像头(每位员工每半小时最多记录一次)、开启/关闭以及监控系统。启用风险监控时:每个警报、警报的处理以及功能的开启和关闭。

风险监控:舞弊和异常

设置 → 风险监控。两个部分,可分别开启,默认关闭;关闭后所有警报和设置都会保留。拥有 设置风险监控 权限的人可以进行设置(默认为经理和管理员);可查看日志的人可以查看和处理警报。收银台每 5 分钟检查一次(也可点 立即检查);影子收银台上不运行。

舞弊和盗窃监控(按员工、按营业日,从 05:00 起),每条规则可单独开启或关闭,并有各自的阈值:

异常提醒,与过去几周同一星期几的同一时段比较(默认 4 周;无营业额的日子不计入,至少两个比较日):

每个警报只出现一次(按规则、员工和天;出餐时间每小时最多一次),并发送到:

每个渠道都有一个 测试消息 按钮。token 和密钥保存在收银台上(屏幕上只显示是否已填写)。警报不等于证据:请查看账单和日志,并与员工沟通。

小票:补打和退货(红冲小票)

小票

顶部栏的 小票 按钮:

带传感器的钱箱和按员工的钱箱

默认关闭。在 设置 → 付款 → 钱箱 中设置。

第 3 部分 · 管理员

快速上手

安装。使用适合你系统的安装程序安装 HorecaPOS,可在 OptimumPOS 下载页面获取:Android(应用)、Windows(安装程序)、macOS(适用于 Apple Silicon 和 Intel 芯片 Mac 的安装程序)、Linux(图形安装程序,或 .deb、.rpm 软件包)、Raspberry Pi(适用于搭配 64 位 Raspberry Pi OS 的 Raspberry Pi 3、4 或 5 的图形安装程序或 .deb)和 Chromebook(来自 Google Play 的 Android 应用)。选择所有用户可作为收银服务器,供平板和厨房显示屏连接;选择仅限我则只在该设备上作为一台收银机。安装程序会安装所需的一切,包括数据库,并每晚自动备份。更新时安装新版本即可:你的数据会保留。安装程序以你电脑的语言启动(否则为英语);在 Windows 和 Linux 上,你可以在第一个界面选择其他语言。之后收银台会直接以该语言启动。.deb 和 .rpm 软件包以及 Android 应用跟随系统语言,否则为荷兰语。

管理员通过 设置 配置收银台。其中有 门店、员工、权限、工作时间、商品、欢乐时光、库存、平面图、付款、打印机、会计、备份、导入/导出 和 数据库 等标签页。经理能看到哪些标签页取决于权限。

数据库。在设置 → 数据库(仅管理员)中,你可以在 MySQL / MariaDB、内置数据库和 PostgreSQL 之间选择;切换时所有数据都会一起迁移(见数据库)。如果 Optimum POS 在安装时已设置了固定地址,则使用该地址,不显示输入栏。否则,你需要自己填写服务器、端口、数据库、用户和密码。收银系统会自行保存它们,之后再次显示为已填写,你随时可以通过修改 MySQL/MariaDB 信息或修改 PostgreSQL 信息进行修改。密码留空表示:保留已保存的密码(同一用户)。安装程序和更新不会改动 DATABASE_URL 或所选的数据库。

设置:商品

会计

所有会计相关设置都在 设置 → 会计 中。请和你的会计一起填写日记账和总账科目。如果希望收银机每天自动记入当日营业额,请在顶部的 会计软件 中选择你的软件,包括 Exact Online:你只会看到适用于门店所在国家的软件。在其正下方直接填写该软件的信息并连接。对于需要登录的软件(如 Exact Online、Twinfield 或 Xero),请先填写应用:客户端 ID 和客户端密钥。如果 Optimum POS 在安装时已固定设置了软件或某项信息,你将看不到该选项或字段。那里还有所有软件的概览:哪些可以实时对接,哪些提供文件。文件在 报表 → 按期间营业额 → 会计导出 中生成:选择你的软件对应的格式,或 UBL(Peppol)、XAF 或日报表。首次记账或导入务必请你的会计核对。

对于荷兰门店,这里还有 收银审计文件(XAA):荷兰税务局(Belastingdienst)的 XML Auditfile Afrekensystemen,包含所选期间收银机的所有小票、明细行、付款和事件。您可以把它交给会计师,或在检查时提交给荷兰税务局。

薪资与排班

如果您的员工打卡上下班,在 设置 → 工作时间 底部有 薪资与排班,分为两个区块。在 薪资管理 中,选择您的薪资软件或(在比利时)社会秘书处,并为每位员工填写其在该软件中的员工编号。然后为某个期间生成包含实际工时和每位员工营业额的文件,并导入您的薪资软件。在 人员排班 中,选择您的排班系统:Deputy、Dyflexis 和 Shiftbase 的营业额每小时自动发送,其他系统则生成营业额文件。这样您就能在排班中把人工成本与营业额放在一起查看。如果您不使用打卡上下班,仍然可以把营业额发送到排班:此时它位于 设置 → 会计 底部的 营业额发送到排班。如果 Optimum POS 在安装时固定了某项设置,您将看不到该选项或字段。

备份

收银台每晚自动备份,并且每次更新前也会备份。在 设置 → 备份 中可查看所有备份(时间、操作人或自动、大小),并可用 创建备份 手动创建。如最近一次备份已超过两天,会出现红色警告:请联系 Optimum POS。

设置:备份

点击备份旁的 恢复 按钮即可恢复。该备份之后发生的所有内容都会丢失。你需要勾选确认并重新输入自己的 PIN 码。收银台会先为当前状态再做一次安全备份,然后让所有人退出登录。在比利时无法从收银台操作(黑匣子的计数器会继续累计);需由 Optimum POS 处理。

数据库

在设置 → 数据库(仅管理员)中可以看到收银系统把数据存放在哪里。顶部显示当前数据库,包括程序、版本、表、行以及地址或文件夹。对员工和平板来说,收银系统在任何数据库上的用法都一样。在 Windows、macOS、Linux 和 Raspberry Pi 上,你可以从三种数据库中选择:

什么时候选 MySQL 或 MariaDB?门店已经有 MySQL 或 MariaDB 服务器、你的 IT 管理员熟悉它,或者你想在自己的报表、Excel 或 BI 软件中读取数据时。拿不准就选内置:立即可用。

使用 MySQL 或 MariaDB 需要什么?

CREATE DATABASE horecapos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'horecapos'@'localhost' IDENTIFIED BY 'wachtwoord';
GRANT ALL PRIVILEGES ON horecapos.* TO 'horecapos'@'localhost';

如果 MySQL 或 MariaDB 运行在另一台电脑上,请在最后两行中把 localhost 换成收银服务器的 IP 地址。

迁移到 MySQL / MariaDB:

  1. 在MySQL/MariaDB 地址下填写各栏:服务器(默认 localhost)、端口(默认 3306)、数据库(默认 horecapos)、用户和密码;MariaDB 也一样。如果地址已经设置,各栏会自动填好;密码留空则保留已保存的密码(同一用户)。收银系统会自行保存地址;如果 Optimum POS 已设置了固定地址,则使用该地址,不显示输入栏。如果收银系统已经在使用 MySQL/MariaDB,之后可通过修改 MySQL/MariaDB 信息修改这些信息。加密连接由 Optimum POS 为你设置。
  2. 点按测试连接:会显示程序和版本,或者连接失败的原因。
  3. 点按迁移到 MySQL/MariaDB,勾选表示你已了解,然后输入你自己的 PIN 码。

三种数据库之间可以任意方向迁移,所有数据都会一并转移:

  1. 收银系统短时间内不接受请求(通常不到一分钟);之后平板会自动继续。
  2. 收银系统先为当前状态做一个备份(在设置 → 备份中)。
  3. 所有数据转入新数据库,收银系统逐表清点是否完全一致。
  4. 只有全部核对无误,收银系统才会在新数据库上继续运行。已登录的员工保持登录。

如果有任何一步失败,什么都不会改变,收银系统继续使用旧数据库。旧数据库原样保留,所以随时可以切回去。新的 MySQL/MariaDB 或 PostgreSQL 数据库中原有的收银数据会被替换。在比利时也可以:黑匣子的计数器会精确地一并转移。

备份和恢复在三种数据库上都一样(设置 → 备份)。一种数据库的备份可以恢复到任何另一种数据库中,包括把 PostgreSQL 的备份恢复到 MySQL 或 MariaDB。

MySQL 或 MariaDB 里有什么?收银系统的每一张表,名称和列都相同(时间为 UTC)。每张表另外多一个键列 _hp_sleutel;在辅助表 _horecapos_stand、_horecapos_kolom、_horecapos_reeks 和 _horecapos_wijziging(更改日志,保留 14 天)中,收银系统记录状态、列类型、计数器和更改。其他程序只读取数据;只有收银系统写入。

工作方式:收银系统在收银服务器上的快速工作副本中计算,并在同一步骤中把每项更改写入 MySQL/MariaDB。如果写入失败,该更改不会生效,收银系统会提示错误;因此请确保 MySQL/MariaDB 始终可访问。启动时,收银系统从 MySQL/MariaDB 读取全部数据。

多台收银机共用一个数据库。和 PostgreSQL 一样,多台收银机可以使用同一个 MySQL/MariaDB 数据库,例如连锁企业的每家门店各有自己的收银服务器。更改依次进行,每台收银机都会先接收其他收银机做过的更改,因此同时修改时不会丢失任何内容。如果某台收银机恢复了备份,或较新版本的收银机更新了数据库,其他收银机会自动重新读取全部数据;因此请同时更新所有收银机。关机超过 14 天的收银机在启动时会重新读取全部数据。

安装时也要选择数据库:MySQL / MariaDB、内置(推荐),或填写地址的 PostgreSQL。如果无法访问,收银系统会使用内置数据库安装;之后可以在这里迁移。更新时会保留原来的选择。

连接平板和显示屏

顾客屏

收银台上一块面向顾客的屏幕。顾客可以大致看到点了什么,并清楚看到金额和支付方式。屏幕上无需操作:只跟随收银台的操作显示。默认关闭;通过 设置 → 门店 → 顾客屏 开启。在有两个屏幕的收银电脑上,收银台第一次会自动开启顾客屏;之后若将其关闭,则保持关闭。没有顾客屏(关闭或未安装)时一切照常:收银台在后台发送画面,服务员永远不会察觉出错或屏幕缺失。

顾客看到的内容:

连接方式有两种(均在设备本身上设置):

顾客屏不需要 PIN 码(没有可操作的内容),只显示与之配对的收银台的画面。画面只保存在收银服务器的内存中;重启后屏幕为空,直到下一次变化。该设置(开/关和欢迎语)会包含在备份和导入/导出(其他设置)中。

通过二维码获取电子小票(可选)

默认关闭。在 设置 → 门店 → 厨房与顾客屏 → 电子小票 中开启(顾客屏已保存为开启时才会出现此选项)。结账后,谢谢!画面上会显示一个二维码;此时该画面会停留 45 秒,而不是只有几秒。顾客用自己的手机扫码即可看到小票,与纸质小票完全相同(文字相同,比利时收银机还带 FDM 区块)。顾客可以在手机上打印小票、保存为 pdf 或下载为文本文件。

顾客屏待机:幻灯片(可选)

默认关闭。在 设置 → 门店 → 厨房与顾客屏 → 顾客屏待机 中开启。顾客屏上没有账单时,幻灯片会轮流播放(默认每 8 秒切换一次,可设置为 4 到 60 秒):

没有幻灯片时,顾客屏照常显示欢迎画面。

欢乐时光

默认关闭。通过 设置 → 门店 → 使用欢乐时光 开启;之后会出现 设置 → 欢乐时光 标签页。

餐段和季节

默认关闭。通过 设置 → 门店 → 餐段和订单类型 → 按餐段和季节设置商品 开启;之后会出现 设置 → 餐段 标签页。关闭后,所有商品重新始终可售,餐段设置会保留。

按订单类型设置商品和价格

默认关闭。通过 设置 → 门店 → 餐段和订单类型 → 按订单类型设置商品和价格 开启。关闭后,所有地方重新使用普通价格,所有商品处处可售;已填写的价格会保留。

默认关闭。通过 设置 → 门店 → 使用套餐 开启。

配方与成本(Apicbase)

通过 Apicbase 的 Generic POS API 连接 Apicbase(配方、成本、库存和采购)(默认关闭,各部分可单独开启或关闭)。在 设置 → 配方 中设置(权限 设置店铺、支付和打印机)。收银台直接与 Apicbase 通信(仅出站流量,无需门户)。

  1. 连接(全部由管理员填写),三种方式任选其一:
    • 粘贴 token:在 Apicbase 中 Library Settings → API Settings → New token → Service Account Token(scopes 为 accounts、library、sales);粘贴 access token 和 refresh token;
    • 使用店铺自己的 API-app 登录(API Settings 中的 client-id 和密钥):登录 Apicbase,然后粘贴 Apicbase 随后显示的代码;
    • 过期的 token(7 天后)由收银台用 refresh token 自动续期。
  2. Outlet:获取 outlets 并选择本店的 outlet。收银台会在那里把 POS 设为 Generic POS API,并使用自己的 location-id(可填写;默认 HORECAPOS-…,每台收银台唯一)。
  3. 开启,通过勾选:
    • 商品、分组和选项发送到 Apicbase:商品分组、商品(PLU = 商品的 PLU 编号,没有则用代码,再没有则用 id)、选项作为 modifiers,含价格和增值税。每次修改后(一分钟后)及每天自动发送。之后你在 Apicbase 中把每个收银商品关联到一个配方;
    • 每张已结账小票发送到 Apicbase:最早的先发,每次最多 100 张,结账后一刻钟内发送(并且每 5 分钟一次)。折扣分摊到各行;自由金额、一次性包装费和押金在 Apicbase 中作为单独商品;称重商品按 1 件计、金额为总额。发送失败时收银台会暂停(Apicbase 要求按顺序接收小票)并稍后重试:结账不受影响。开启时可选择从哪一天开始(默认从现在起);
    • 取回每份成本(每 6 小时):每个已关联配方的 food cost(食材和损耗)、含人工成本、售价和毛利,均以 Apicbase 为准。按最便宜的供应商、最近一次订购价格或平均库存价值计算;
    • 从 Apicbase 获取售价(默认关闭):把已关联商品的售价写入收银台(记录在日志中)。
  4. 底部:每个商品的成本,包括成本、含人工成本、收银台价格、成本 % 和毛利。按钮 立即发送商品目录、立即发送小票 和 立即获取成本。

代码:apps/pos-server/src/lib/apicbase.ts、routes/apicbase.ts;界面 Apicbase.tsx。日志:Apicbase。前提:Apicbase 的 API 模块。若要让 Pin Voordeel 的应用面向所有客户:需与 Apicbase 建立合作并获得认证(见 backlog)。文档:https://developers.apicbase.com/docs/generic-pos-api-guide

酒店软件:挂房账

适用于酒店内的餐厅或酒吧:将账单挂到客人的房间。默认关闭:设置 → 酒店(权限门店、支付和打印机设置)。

Sirvoy 只在预订发生变化时发送消息:对接之前的预订,只有在 Sirvoy 中有改动后收银台才会知道。消息可能乱序到达;比收银台已有数据更旧(generatedAt)的消息会被跳过。在店 = 未取消且未退房,已入住或到店日期为今天或更早,且离店日期为今天或更晚。测试连接会显示收到了多少条预订。

所有酒店软件均可在荷兰和/或比利时购买。测试连接会检查填写的信息。各对接的代码:apps/pos-server/src/lib/pms/<naam>.ts。

代码:apps/pos-server/src/lib/hotel.ts、routes/hotel.ts,对接位于 lib/pms/,目录 packages/shared/src/hotelcatalogus.ts;界面 Hotel.tsx。日志:酒店。机密信息(tokens)只保存在数据库中,从不显示在屏幕上。

Vinify 葡萄酒管理

设置 → 葡萄酒管理(默认关闭;关闭后所有内容都会保留)。Vinify 管理酒窖、酒单和库存,是葡萄酒数据的主要来源。根据 Vinify 的 POS 要求,收银机提供一个 API,让 Vinify 可以:

登录,支持 Vinify 的全部三种方式(由管理员决定开启哪种):

  1. API-id 和 API 密钥(X-Api-Id 和 X-Api-Key,或 Authorization: Bearer <id>:<sleutel>);
  2. API 密钥和 API-secret 加签名:X-Api-Key、X-Timestamp 和 X-Signature = hex HMAC-SHA256(secret, <timestamp>\n<METHODE>\n<pad met query>\n<sha256 van de body>),最多 5 分钟内有效。

密钥和 secret 由收银机生成(只显示一次);界面上只能看到是否已填写。通过门户访问,地址为 https://<portaal>/vinify/<kassa-id>/...(店内无需开放端口;地址见设置 → 葡萄酒管理)。哪些商品属于葡萄酒:Vinify 创建的,加上您勾选的分组。如果 Vinify 提供了接收销售数据的地址,收银机也会主动发送(push,附带 token):每张小票结账后,以及每 5 分钟重发尚未成功的数据。由 Vinify 开启与 HorecaPOS 的对接(hello@vinify.no)。所有操作均记入日志。请勿与 Vinify.nl 混淆,后者是一家在线葡萄酒商店,列在供应商中(向供应商订货)。

用邮编和门牌号快速输入地址

在 设置 → 门店 → 快速输入地址 中开启(默认关闭;仅适用于荷兰的门店)。输入邮编和门牌号(也可带字母或附加号,例如 12A 或 12-1),然后点击 查找地址:街道、门牌号、邮编和城市会自动填入。如果该门牌号有多个地址(12、12A、12B),请选择正确的一个。之后仍可自行修改。

新版本提醒

在 设置 → 门店 → 更新提醒 中开启(默认关闭)。

预订平台

来自 TheFork、Formitable、Zenchef、Resengo(仅限比利时)、OpenTable(仅限荷兰)、PlanPanther、RestoManager 和 Aqqo(仅限荷兰)的预订会自动进入收银台并显示在平面图上。在设置 → 预订平台中开启(默认关闭)。仅在预订开启时可用。

积分计划与评价

设置 → 积分与评价中有两个独立开关(两者默认均关闭,关闭时任何地方都不会显示)。关闭后,设置和已发生的记录都会保留。

其他平台的积分计划:客人在 Joyn(比利时)和/或 Piggy(Leat;荷兰和比利时)积分。这与收银系统自带的会员卡相互独立,两者可以同时开启。

邀请评价:到店后发送一封带有 Google 和/或 Trustpilot 按钮的邮件。

对接 Mailchimp 和 Klaviyo

在你自己的邮件工具中使用会员卡顾客:在 设置 → 门店 → Mailchimp 和 Klaviyo(位于短信和邮件营销下方)。没有开关:未对接并选择列表时不会进行任何操作。

代码:lib/mailinglijst.ts、routes/mailinglijst.ts 和 MailingKoppelingen.tsx。

BI 与数据导出

将销售数据导出到 Power BI、Looker Studio、Excel、Google Sheets、Tableau、Qlik Sense、Metabase、BI 服务(例如 YourBI、BI4Horeca 或 Moore DRV)或自有数据仓库。在 设置 → BI 与数据导出 中开启(默认关闭)。只读:通过对接无法更改收银机中的任何内容。不含顾客数据。

薪资与排班

开启 打卡上下班 后(设置 → 门店),在 设置 → 工作时间 底部有 薪资与排班(需管理设置权限),分为两个独立区块。如果打卡 关闭,则没有工时:此时只有人员排班区块(营业额,实时或作为营业额文件)位于 设置 → 会计 底部,标题为 营业额发送到排班:

软件NLBE实时文件备注
薪资软件和薪资服务商
ADP✓✓需申请按员工和日期的工时表(CSV)通过 ADP 对接(按需申请);在此之前使用按员工和日期的工时表。
AFAS Payroll✓–需申请按员工和日期的工时表(CSV)在 AFAS Profit 中进行薪资管理(与 AFAS 会计为同一环境);对接按需申请,在此之前使用工时表。
BCS HR✓–需申请按员工和日期的工时表(CSV)通过 BCS 对接(按需申请);在此之前使用工时表。
Buddee✓–需申请按员工和日期的工时表(CSV)人事和薪资软件;按需申请对接,在此之前使用按员工和日期的工时表。
Employes✓–需申请按员工和日期的工时表(CSV)Employes 提供实际工时 API(客户的令牌);对接将在与 Employes 协商后推出。在此之前使用工时表。
Exact Online Loon✓–需申请按员工和日期的工时表(CSV)在 Exact Online 中进行薪资管理(与 Exact 会计为同一环境);对接按需申请,在此之前使用工时表。
Humanwave✓–需申请按员工和日期的工时表(CSV)通过 Humanwave 对接(按需申请);在此之前使用工时表。
Loket.nl✓–需申请Loket.nl Variabele gegevens(CSV), 按员工和日期的工时表(CSV)用于 Werkgever → Collectieve mutaties → Importeren → Variabele gegevens 的文件(该期间每位员工的工时)。在 Loket 注册后可通过 Loket API 实时传输。
Nmbrs✓–需申请按员工和日期的工时表(CSV)按员工和日期的工时表,用于录入 Nmbrs。在 Nmbrs 注册应用后可通过 Nmbrs API 实时传输。
Salar (Van Winckel)✓––按员工和日期的工时表(CSV)供会计事务所使用的按员工和日期的工时表;Salar 的导入格式未公开。
社会秘书处
Acerta–✓需申请按员工和日期的工时表(CSV)社会秘书处:工作量文件的格式由 Acerta 提供;在此之前使用工时表。
Group S–✓需申请按员工和日期的工时表(CSV)社会秘书处:工作量文件的格式由 Group S 提供;在此之前使用工时表。
Liantis–✓需申请按员工和日期的工时表(CSV)社会秘书处,提供由 Liantis 按企业开放的 API;在此之前使用工时表。
Partena Professional–✓需申请按员工和日期的工时表(CSV)社会秘书处:工作量文件的格式由 Partena 提供;在此之前使用工时表。
SD Worx✓✓–SD Worx Tijdsregistratie(TXT), 按员工和日期的工时表(CSV)比利时:用于 "Tijdsregistratie importeren" 的 Tijdsregistratie(工时登记)文件(固定位置,按员工按天)。荷兰:工时表。
Securex–✓需申请按员工和日期的工时表(CSV)社会秘书处:通过合作伙伴对接;在此之前使用工时表。
排班与工时登记
Book'u–✓需申请按日和小时的营业额(CSV)Book'u 负责 Dimona 申报;收银对接按需申请。在此之前使用营业额列表。
Deputy✓✓✓按日和小时的营业额(CSV)实时:每小时的营业额每小时发送到 Deputy(Sales)。永久令牌在 Deputy 的 API 对接中创建。
Dyflexis✓–✓按日和小时的营业额(CSV)实时:每小时的营业额每小时发送到 Dyflexis(information streams)。API 令牌通过 Dyflexis 获取。
Eitje✓–需申请按日和小时的营业额(CSV)Eitje 通过其合作伙伴计划对接;在此之前使用按日和小时的营业额列表。
Exact Horeko✓–需申请按日和小时的营业额(CSV)通过 Horeko 对接(按需申请);在此之前使用营业额列表。
Fooks✓–需申请按日和小时的营业额(CSV)Fooks 自行开发收银对接;在此之前使用按日和小时的营业额列表。
L1NDA✓–需申请按日和小时的营业额(CSV)L1NDA 与合作伙伴共同开发收银对接;在此之前使用按日和小时的营业额列表。
Mr. Einstein✓–需申请按日和小时的营业额(CSV)面向餐饮业的人事、排班和人工成本;Mr. Einstein 与收银系统供应商共同开发收银对接(通过 mreinstein.nl/contact 申请)。在此之前使用按日和小时的营业额列表。
Nostradamus✓✓需申请按日和小时的营业额(CSV)Nostradamus 通过其收银接口接收营业额(需店铺的 API 令牌和域名,向 Nostradamus 申请后提供);在此之前使用按日和小时的营业额列表。
Plan-Me–✓需申请按日和小时的营业额(CSV)Plan-Me 负责 Dimona 申报;收银对接按需申请。在此之前使用营业额列表。
Planday✓✓需申请按日和小时的营业额(CSV)Planday 为收银系统提供开放 API;对接将在协商后推出。在此之前使用营业额列表。
Shiftbase✓–✓按日和小时的营业额(CSV)实时:每日营业额每小时发送到 Shiftbase 中该部门的日记账。API 密钥在 Shiftbase 的 App center 中创建。
Shyfter–✓需申请按日和小时的营业额(CSV)Shyfter 负责 Dimona 申报,并通过其 API 接收每日营业额;对接将在与 Shyfter 协商后推出。在此之前使用营业额列表。
Strobbo✓✓–Strobbo 营业额导入(Excel), 按日和小时的营业额(CSV)用于 Planning → € → Importeer omzet 的 Excel 文件(按工作区按天的营业额)。
Tamigo✓✓需申请按日和小时的营业额(CSV)通过 Tamigo 对接(按需申请);在此之前使用营业额列表。
Werktijden.nl✓––按日和小时的营业额(CSV), 按员工和日期的工时表(CSV)Werktijden.nl 自行登记工时,(目前)不通过其 API 接收营业额;这些列表用于核对。
XPS Logic✓–需申请按日和小时的营业额(CSV)XPS Logic 面向灵活用工和派遣人员;对接按需申请。在此之前使用营业额列表。

比利时和荷兰的法律要求

法律要求什么以及 HorecaPOS 为此做了什么(请让你的会计确认哪些适用于你的门店):

国家要求HorecaPOS
比利时已注册收银系统(GKS 2.0),配备黑盒子,适用于必须遵守该规定的餐饮场所(例如餐食年营业额超过 € 25,000,不含增值税)连接黑盒子(FDM)、小票上的法定信息以及 Z 报表中的计数器(在 设置 → 门店 中将国家设为比利时,FDM_API_KEY 和 FDM_TERMINAL_ID);在 设置 → 店铺 顶部选择本店是否须使用 GKS:是 = 只能在黑盒子正常工作时结账,否 = 不用黑盒子,需管理员声明(每年重新确认);未选择前无法结账。收银机会统计餐饮营业额,超过 25.000 欧元时发出提醒
比利时通过 Peppol 的电子发票:自 2026 年 1 月 1 日起,比利时增值税纳税企业之间的发票必须采用结构化电子格式(UBL,Peppol BIS 3);开给消费者的收银小票不在此列将每日营业额导出为 符合 Peppol BIS Billing 3.0 的 UBL,用于会计软件(财务导出);以及为企业客户开具 基于小票的发票(设置 → 发票):符合 Peppol BIS Billing 3.0 的 UBL 加可打印发票,可通过电子邮件、通过 Billit 发送至 Peppol 网络、发送到自定义地址或下载(见 企业客户发票)
比利时自 2026 年 3 月 1 日起的餐饮增值税:外卖餐食和无酒精饮料 12%(堂食和外带均适用),酒精 21%,需顾客自行烹饪的餐食(fondue、gourmet)6%增值税助手(设置 → 法律法规):为每个商品设置类别,立即或自某日起应用正确税率;税率 A/B/C 的说明已更新
荷兰Alcoholwet:不得向 18 岁以下青少年出售酒精,网上销售和配送也不例外(交付时核验年龄)年龄核验:含酒精的商品;在网店中顾客自行确认 18+(复选框默认不勾选),并提示交付时将核验年龄;厨房单、配送单和收银小票上显示 "18+"
荷兰一次性杯子和餐盒(SUP):自 2024 起,外带和配送时塑料一次性包装须单独明示价格一次性包装费按商品设置,在小票上单独列行(使用商品的增值税),并在营业额中单独统计
荷兰押金适用于罐装和塑料瓶装饮料押金按商品设置(€ 0,15 / € 0,25),外带和配送时单独列行且不含增值税,在营业额中单独统计
荷兰现金支付:自 2026 年 1 月 1 日起,购买商品不得支付 € 3.000 或以上的现金外带和配送时的提醒(现金机上也会提醒);可以确认,并记入日志
荷兰和比利时增值税变更:某个税率或商品自某日起使用不同的增值税百分比安排增值税变更:收银系统在当天执行(在比利时按商品,字母 A/B/C/D 固定不变)
荷兰住宿(过夜)自 2026 年 1 月 1 日起为 21%可按商品设置增值税税率
欧盟Omnibus 指令:划线的 "原价" 只能是过去 30 天内的最低价格网店只以 30 天内的最低价格作为划线价(收银系统会保存价格历史;每周重复的欢乐时光也计算在内)
欧盟European Accessibility Act(自 2025 年 6 月 28 日起):网店须无障碍(WCAG 2.1 AA)网店支持键盘和屏幕阅读器操作("跳到内容" 链接、可见焦点、标签),并附有 无障碍声明(页面底部链接)
荷兰XML Auditfile Financieel(XAF):Belastingdienst(荷兰税务局)用于移交(部分)账务的标准;XAF 4.0 自 2027 年起强制使用导出为 XAF 4.0(会计导出)
荷兰可靠的收银系统:保存收银数据(所有小票、更正和事件),并能在检查时以数字方式提交;荷兰税务局(Belastingdienst)为此推荐 XML Auditfile Afrekensystemen(XAA)导出为 XAA 3.2(报表 → 按期间营业额 → 收银审计文件),可选用供应商的证书签名
比利时已注册收银系统中的 考勤登记:在收银系统中登记雇员工作时间的开始和结束打卡上下班(设置 → 门店;强制 = 先打卡上班)会记录到黑盒子中
比利时Dimona:每次雇用(包括 flexi-job 和学生)都须在开始前向 RSZ 申报这由您的社会秘书处或排班工具完成(例如 Shyfter、Book'u、Plan-Me);HorecaPOS 提供实际工时和营业额(设置 → 工作时间 → 薪资与排班)
荷兰工作和休息时间登记(《工作时间法》,Arbeidstijdenwet)打卡上下班并记录每位员工的实际工时,管理员可修改(带日志),以及供薪资软件使用的工时表
荷兰和比利时HACCP / 食品安全:记录温度(冷藏、冷冻、保温、加热、再冷却、收货)和清洁;荷兰 Hygiënecode voor de Horeca(NVWA),比利时 FAVV 自主检查(指南 G-023)收银系统中的 HACCP 记录(设置 → 法律法规,顶部 HACCP 按钮):带限值的测量点、清洁和检查任务、出现偏差时必须填写纠正措施、记录不可修改、遗漏记录概览可导出 CSV 或打印(见 HACCP 记录)
荷兰和比利时保存义务(NL 7 年,BE 10 年)小票、Z 报表和日志保存在数据库和备份中;日志无法在收银机上修改或删除

法律法规

设置 → 法律法规(管理员;拥有 管理商品 权限者也可使用增值税助手)。所有功能默认关闭;不进行这些设置,收银系统照常工作。

发票(在比利时企业间为强制要求)见“企业客户发票”。待办:GKS 2.0,询问认证进展(见 docs/backlog-concurrenten.md)。

企业客户发票

设置 → 发票(管理员;默认关闭):开启企业客户发票(UBL / Peppol)。开启后,下方依次为挂账付款、发票信息、Peppol 服务、银行连接(配合挂账付款)以及所有发票的列表。在比利时,自 1-1-2026 起企业间电子发票为强制要求。

自助点餐机

顾客像在快餐店一样在立式机或平板上自行点餐,然后在收银台付款或在点餐机刷卡。点餐界面就在收银系统本身中,因此菜单、价格、选项、套餐、欢乐时光、时段、照片、过敏原、语言和小票都来自收银系统,无需在别处设置。点餐机上运行 PinPortal Kiosk 2 应用(Android,包括 Sunmi,以及 Windows、Linux 和 macOS),用于显示页面并打印小票。默认关闭。

开启和设置(管理员):设置 → 门店 → 屏幕与操作 → 自助点餐机。

扫描枪本身在自助点餐机上设置:在 PinPortal Kiosk 2 应用的管理 → 条码扫描枪(键盘模式、内置扫描头或 COM 端口),附扫描枪测试。模拟键盘的扫描枪无需应用也能使用。

添加和连接点餐机

  1. 在自助点餐机列表中输入名称(如入口点餐机),然后选择添加点餐机。你会得到一个 6 位的连接码(30 分钟内有效)。
  2. 为点餐机选择顾客的付款方式:默认在收银台。如果是带刷卡终端的点餐机,选择刷卡或顾客选择,并选择此点餐机的刷卡终端(来自设置 → 付款)。
  3. 在点餐机上打开点餐页面:
    • 在店内:在应用的管理 → Vast adres 中填入设置处显示的地址,例如 http://192.168.1.20:3000/kiosk;
    • 或通过管理门户(https,点餐机不在同一网络时也可):把设置处显示的点餐机地址关联到应用的点餐机代码,和旧点餐机一样。
  4. 在点餐机上输入连接码。完成:点餐机会记住自己的密钥。重新连接会生成新码;移除则断开连接。

每台点餐机都会显示是否在线。

顾客如何点餐

  1. 带欢迎语的开始页面;顾客选择语言(收银系统的所有语言),点击开始点餐。
  2. 堂食或外带。
  3. 按商品组显示的菜单,含照片、价格(含欢乐时光)、过敏原以及售罄商品。有选项的商品或套餐会打开选择窗口。
  4. 购物车:修改数量,并可选择还要加点什么吗?。
  5. 下单(收银台付款):顾客在屏幕上看到大号的取餐号和金额,拿到单子后到收银台付款。在收银系统中订单以 点餐机 入口 · 42 保持未结(顾客报出的号码);照常结账。之后它在叫号屏上显示为已付款,如果设置为付款后才送厨房,则此时送往厨房。
  6. 刷卡付款:收银系统将金额发送到此点餐机的刷卡终端(与收银台相同的刷卡连接)。失败时顾客可以重试或取消(若允许选择,也可改为在收银台付款)。只有付款成功后,订单才会送往厨房并结账。顾客在屏幕上看到大号的取餐号并拿到小票。
  7. 几秒钟后点餐机回到开始界面。

故障时:通知和应急模式(在点餐机应用中,管理 → Bij storing;默认关闭)。点餐机无法连接收银系统时,会显示 Even gesloten。两项附加功能:

在收银系统中,点餐机订单是普通订单(外带或堂食,名为 点餐机 入口),记在员工 Kiosk 名下。该员工由收银系统自动创建;任何人都无法用它登录。不要将其设为停用,否则点餐机无法下单。点餐机订单会出现在报表、小票和叫号屏上。在点餐机上未完成的订单(未下单或未刷卡付款)会在 30 分钟后自动失效。

刷卡处于测试模式(设置 → 付款)?那么点餐机不会真正收款,方便试用。没有网络时无法刷卡支付;点餐机会提示可以在柜台点餐。

故障:如果无法连接收银系统,点餐机应用会显示"暂停营业",并自动恢复。如果点餐机通过管理门户运行且网络中断,应用可以切换到本地网络中的收银系统(在应用中:管理 → 扩展 → 故障时切换到本地网络);该地址由点餐机自行传递。

关闭:点餐机显示暂时关闭。点餐机和设置都会保留。日志会记录开启/关闭、设置、添加和移除的点餐机、连接以及取消的订单。

数字菜单牌

将带价格的菜单直接从收银机显示在电视(或其他带浏览器的显示器)上。默认关闭;在 设置 → 门店 → 屏幕与操作 → 数字菜单牌 中开启。然后在电视上打开 http://<kassaserver>:3000/menubord(或使用带二维码的 在单独屏幕上 / 在平板或手机上 按钮)。无需登录,也无需配对。

员工和 PIN 码

设置 → 员工(仅管理员):添加员工,修改姓名、角色和 PIN 码,以及设为停用。

用感应卡登录(可选)

默认关闭。开启方法:设置 → 员工,勾选 用感应卡登录(NFC、RFID 或 iButton)。需要:一台模拟键盘输入的 USB 读卡器(适用于 NFC 或 RFID 卡、钥匙扣、腕带或 iButton 钥匙)。这种读卡器会"输入"卡号并按 Enter;无需驱动程序或对接。

按角色权限

设置 → 权限(仅管理员):按角色勾选服务员和经理可以做什么。默认设置与上述完全一致(与收银台以往相同);与默认不同的选项会以颜色标出。

权限服务员经理
下单后删除行(作废)是是
给予折扣 / 取消折扣否是
将商品设为“售罄”是是
打印小票副本是是
退货(红字小票)否是
挂账结账和接收挂账付款(仅在开启挂账付款时)否是
中间报表(X 报表)是是
日结(Z 报表)否是
按期间营业额否是
管理钱箱否是
管理礼品卡(仅限带余额的礼品卡)否是
阅读和回复评价(仅在开启评价管理时)否是
管理会员卡(仅在开启会员卡时)否是
查看日志否是
查看摄像头画面(仅在开启摄像头画面时)否是
管理库存(仅在开启库存时)否是
管理商品否否
管理平面图否否
门店、支付和打印机设置否否
查看和调整工作时间否否

门店信息

设置 - 门店

设置 → 门店(仅管理员):门店的名称、地址、邮编、城市、电话和增值税号。这些信息显示在每张小票和预结单的顶部。小票底部文字也在这里设置(可多行;留空 = 无文字;默认“Bedankt en tot ziens!”),其下方是 小票语言(默认荷兰语;参见 语言)。小票预览会实时更新。保存后,下一张小票立即使用新信息。国家和税务信息(GKS)在此处特意不可修改。在比利时,增值税号为必填项。勾选 现金支付四舍五入到 5 分(默认关闭) 后,现金支付时总额会四舍五入(€ 6,62 → € 6,60,€ 6,63 → € 6,65);差额在小票上显示为“Afronding”。刷卡始终精确到分。

管理商品

设置 - 商品

以管理员身份登录,选择 设置 → 商品。

商品图片

每个商品都可以设置照片。

条码扫描枪

在收银机上用条码扫描枪可以扫描商品、优惠码、会员卡和礼品卡。在 设置 → 扫描枪 中开启(位于打印机和秤旁边的标签页;默认 关闭)。勾选扫描在点单界面上的作用:

收银机先查找商品,然后是会员卡、礼品卡和优惠码。不在输入框中时,扫描在点单界面上生效。在输入框中,代码会直接填入该输入框。

扫描枪测试:在 设置 → 扫描枪 中,每次扫描都会显示代码以及收银机如何识别,即使扫描枪尚未开启。如果不工作:

在 自助点餐机 上单独设置扫描枪(设置 → 门店 → 自助点餐机);参见 自助点餐机。

打印标签

带有名称、价格和条码的商品标签,用安装在电脑或平板上的标签打印机(Brother、Dymo、Zebra ...)打印。在 设置 → 门店 → 打印标签 中开启(默认关闭)。在那里还可以选择标签的尺寸(38 × 25、57 × 32、62 × 29 或 100 × 50 mm),以及是否印上价格和条码。打印测试标签 会打印一张测试标签。

设置秤(A&D、Aclas、Adam Equipment、Avery Berkel、Avery Weigh-Tronix、Balanzas Marques、Baxtran、Bizerba、Brecknell、CAS、Datalogic、Dibal、DIGI、Dini Argeo、Excell Precision、Gram、Ishida、Kern & Sohn、Mettler Toledo、Minebea Intec、Ohaus、Precia Molen、Precisa、Rice Lake、Rongta、Sartorius、Star Micronics、T-Scale、UWE、Wedderburn、Wintec、Zebra)

独立标签页 设置 → 秤(权限 门店、支付和打印机设置,默认仅管理员;即使秤尚未开启,该标签页也始终存在)。默认关闭:此时收银台与以前完全相同。看不到该标签页?

自动搜索。如尚未进行任何设置,打开此部分时收银台会自动搜索(搜索 按钮可重新搜索):

找到后 = 填入表单,并显示 启用并使用 按钮:点一下即可使用。(搜索会向每个空闲的 COM 端口发送 W;被占用的端口,例如被刷卡机占用的,会被跳过。)

全部 Aclas 秤。每台秤都要选择型号;收银系统由此知道如何连接。共有两类:

一个列表,两个勾选框。所有秤都在同一个列表中。为每台秤勾选它的用途:在收银台称重(下单时收银系统读取重量)和/或扫描标签(秤打印带条码的标签,由收银系统扫描,并从收银系统接收 PLU)。TS6X 等 PC 秤或 AI 秤两者皆可;LS 标签秤只能打标签。每家门店只能有一台秤提供标签。

型号类型接口在收银系统中
OS6XPOS 秤RS232, USB, Bluetooth已连接,可同时多台
OS2XPOS 秤RS232, USB已连接,可同时多台
CS6X, CS3X收银秤RS232, USB, Ethernet, wifi已连接,可同时多台
TS6X, TS3X, TS5EX, TS5NX, TS5GXPC 秤(Windows、Android、Linux)RS232, USB, Ethernet, wifi在此设备上(1次),也可作标签秤
iS6X, iS2X, iR6X, Ti6X, iL8X带商品识别的 AI 秤(Windows、Android、Linux)RS232, USB, Ethernet, wifi在此设备上(1次),也可作标签秤
iS5X, OiT2XAI 秤(仅 Linux)RS232, USB, Ethernet已连接或作为标签秤
LS2S, LS2RX, LS2CX, LS2NX, LS5SX, LS5RX, LS5CX, LS5NX, LS6CX, LS6RX, LS6NX标签秤RS232, Ethernet, wifi扫描标签和 PLU
PS1CX, PS1DX, PS6CX, PS6DX计价秤RS232已连接,可同时多台
PS1BX无接口的计价秤无手动输入重量
LH15X带标签打印机的吊秤RS232, Ethernet, wifi已连接或作为标签秤

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 和 Zebra。收录了这些品牌中已确定收银机如何与之通信的常用型号(待测试 = 协议在资料中没有明确写出;收银机选择最可能的方式)。全部为连接方式(可同时多台),或作为收银机扫描其标签的标签秤:

品牌型号类型连接协议(出厂)在收银系统中
A&DEK-i(含 EK-610i)、HV-WP收银秤(仅重量)RS232,EK-i 也支持 USB连续(stream 模式),2400 波特,7E1已连接,可同时多台
Adam EquipmentSwift计价秤RS232、USB(选配)连续(连续发送到电脑),9600 8N1(待测试)已连接,可同时多台
Avery BerkelFX110、FX120、FX131(嵌入式,带扫描器)收银秤RS232,FX131 也支持 USBMettler Toledo 82/7 = Toledo 8217(收银机发送 W),9600 波特,7E1已连接,可同时多台
Avery BerkelFX125计价秤RS232Checkout-Dialog 06(9600,7O1)已连接,可同时多台
Avery BerkelXs, XTs, XTi标签秤Ethernet、Wi-Fi、USB秤上自有的 PLU扫描标签
Avery Weigh-Tronix7820, 7829, ZP900收银秤RS232,7820 也支持 USB,ZP900 也支持 USB 和 EthernetNCI(收银机发送 W),9600 波特,7E1已连接,可同时多台
Balanzas MarquesBM1000P TOP收银秤(仅重量)RS232METTLER(收银机发送 W,Toledo),9600 波特,7E1已连接,可同时多台
Balanzas MarquesBM5 Junior Tower Label, BM500 ETQ标签秤Ethernet、USB、RS232,BM500 ETQ 也支持 Wi-Fi秤上自有的 PLU扫描标签
BaxtranTW, VW, XTA, XTA-P计价秤RS232Toledo(收银机发送 W),9600 波特,7E1已连接,可同时多台
BizerbaCS 300(也有嵌入式)收银秤RS232Checkout-Dialog 06(9600,7O1)已连接,可同时多台
BizerbaK-Class Flex, KH II标签秤Ethernet秤上自有的 PLU扫描标签
Brecknell6702U, 6710U, 6720U收银秤RS232、USB(虚拟 COM 端口)NCI(收银机发送 W),9600 波特,7E1已连接,可同时多台
CASPD-II, PDN, PDI, PDS-B收银秤RS232,PDN 也支持 USB 和 Bluetooth,PDI 也支持 USBECR type 2 = Toledo(收银机发送 W),9600 波特,7E1已连接,可同时多台
CASCL3000, CL5500, CL7200标签秤Ethernet、USB、RS232,CL5500 和 CL7200 也支持 Wi-Fi秤上自有的 PLU扫描标签
DatalogicMagellan 9300i、9400i、9800i(带秤的扫描器)收银秤RS232(独立称重端口)、USBMettler Toledo 8217(收银机发送 W),9600 波特,7E1已连接,可同时多台
DibalKS-400, D-POS 400收银秤RS232,D-POS 400 也支持 USBCheckout-Dialog 06(9600,7O1)已连接,可同时多台
DibalG-325, PI-100计价秤RS232Checkout-Dialog 06(9600,7O1)已连接,可同时多台
DibalM-500 (Mistral), D-900, CS-2200标签秤Ethernet、Wi-Fi、USB秤上自有的 PLU扫描标签
DIGIDS-781计价秤RS232DIGI Type B(收银机发送 ENQ),9600 8N1已连接,可同时多台
DIGISM-120, SM-6000标签秤Ethernet、Wi-Fi秤上自有的 PLU扫描标签
Dini ArgeoDFW, DGT, 3590E收银秤(仅重量)RS232、USB、Ethernet,DFW 和 3590E 也支持 Wi-Fi连续(ST,GS, 0.512,kg),9600 8N1已连接,可同时多台
Excell PrecisionTPE, AM4, FD4-P, FDP4-P, GE4, GEP4计价秤RS232连续(ST,GS,+0.876kg),9600 8N1(仅 TPE 待测试)已连接,可同时多台
GramXFOC RS, XFOC+ RS, ZFOC RS计价秤RS232、USB(Gram 线缆)Gram(收银机发送 ENQ,然后发送 DC1),9600 8N1(XFOC 待测试)已连接,可同时多台
IshidaUni-3, Uni-5, Uni-7, Uni-9标签秤Ethernet、Wi-Fi、USB秤上自有的 PLU扫描标签
Kern & SohnRPB, RFC计价秤RS232, USBCheckout-Dialog 06(Prot = DLG-06,9600,7O1)已连接,可同时多台
Kern & SohnRFE(计价)、IFB、EOC计价秤 / 收银秤RS232连续,9600 8N1已连接,可同时多台
Mettler ToledoAriva-S收银秤RS232、USB(虚拟 COM 端口)Toledo 8217(收银机发送 W),9600 波特,7E1已连接,可同时多台
Mettler ToledoViva收银秤RS232Toledo 8217,9600 波特,7E1已连接,可同时多台
Mettler ToledobPlus, UC Evo标签秤Ethernet、Wi-Fi秤上自有的 PLU扫描标签
Minebea IntecSignum, Combics, Midrics, Puro收银秤(仅重量)RS232、USB,Signum 和 Combics 也支持 Ethernet连续(SBI,自动打印),9600 8N1已连接,可同时多台
OhausAviator 7000计价秤RS232 或 USBCheckout-Dialog 06(9600,7O1)已连接,可同时多台
OhausValor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000收银秤(仅重量)RS232, USB, Ethernet连续(Auto Print Continuous),9600 8N1已连接,可同时多台
Precia MolenDP400收银秤RS232, USBCheckout-Dialog 06(9600,7O1)已连接,可同时多台
Precia MolenDPOS CR, C 210 B, C 210 C计价秤RS232Checkout-Dialog 06(9600,7O1;C 210 待测试)已连接,可同时多台
Precia MolenCorail 500标签秤Ethernet、Wi-Fi秤上自有的 PLU扫描标签
PrecisaXB、XT、LS、LX(精密天平)收银秤(仅重量)RS232,LS 和 LX 也支持 USB连续(打印模式 CONTINUOUS),9600 8N1已连接,可同时多台
Rice LakeBenchPro BP-S, BenchPro BP-R收银秤RS232BP-S Toledo 8213,BP-R NCI(两者均为收银机发送 W),9600 波特,7E1(待测试)已连接,可同时多台
RongtaRLS1000, RLS1100标签秤Ethernet、RS232、Wi-Fi秤上自有的 PLU扫描标签
SartoriusEntris, Quintix收银秤(仅重量)RS232, USB连续(SBI,自动打印),9600 8N1已连接,可同时多台
Star MicronicsmG-T12, mG-T30, mG-T60, mG-S8200收银秤(仅重量)RS232、USB(虚拟 COM 端口)连续,9600 8N1(待测试)已连接,可同时多台
T-ScalePA10, PA15, PEA10标签秤Ethernet秤上自有的 PLU扫描标签
UWEASEP计价秤RS232连续,9600 8N1(待测试)已连接,可同时多台
WedderburnTSDS983收银秤RS232DIGI Type B(收银机发送 ENQ),9600 8N1(待测试)已连接,可同时多台
WedderburnTSDS781T, TSDS782T计价秤RS232DIGI Type B,9600 8N1(待测试)已连接,可同时多台
WedderburnTSSM120标签秤Ethernet、RS232秤上自有的 PLU扫描标签
WintecScalePOS ACS-S60E(内置秤的收银机)收银秤内部 COM6(Windows)或 COM4(Android)连续,9600 8N1(待测试)已连接
ZebraMP7000、MP72(带秤的扫描器)收银秤RS232(AUX 端口)SASI = Toledo(收银机发送 W),9600 波特,7E1(待测试)已连接,可同时多台

收银机中也有同一列表:设置 → 秤 → 所有秤(packages/shared/src/weegschaal.ts 中的 ACLAS_MODELLEN,每个型号带品牌)。

尽量少填写:选择型号后,收银机按品牌出厂设置准备好其余项:连接方式 COM 端口 / USB(第一个空闲端口)、9600 波特(A&D:2400)和品牌的协议(Toledo:Aclas 用 8N1,用 7E1 的有 Avery Berkel FX、Avery Weigh-Tronix、Balanzas Marques、Baxtran、Brecknell、CAS、Datalogic、Mettler Toledo、Rice Lake 和 Zebra;Dialog 06:Avery Berkel FX125、Bizerba、Dibal、Kern & Sohn RPB/RFC、Ohaus Aviator 和 Precia Molen;DIGI Type B:DIGI 和 Wedderburn;Gram:Gram;连续:A&D、Adam Equipment、Dini Argeo、Excell Precision、其他 Kern & Sohn、Minebea Intec、其他 Ohaus、Precisa、Sartorius、Star Micronics、UWE 和 Wintec),以及名称(如 OS6X、OS6X 2)。PC 秤或 AI 秤设为 在此设备上(如 TS6X (ingebouwd);Linux 上使用内部端口 /dev/ttyS0)。如有不对,搜索 会找到正确的端口、速率和协议。

在此设备上(Aclas Scale Module):秤显示经检定的重量;收银系统发送每公斤价格和皮重(作为预置皮重),并采用秤计算出的金额,与 Dialog 06 相同。

Aclas 软件随收银系统附带:Windows 版 Scale Module(aclas-module)、Android 版 AclasScaleDriver(aclas-android)以及 Windows 和 Linux 版 Aclas Sync SDK(aclas-sdk)。Aclas 允许我们随附分发。Windows 和 Linux 安装程序已包含它们,无需另外下载或安装。

蓝牙(如 OS6X):请先配对秤。Windows 会把它变成 COM 端口(蓝牙设置 → 更多蓝牙选项 → COM 端口),Linux 为 /dev/rfcomm0:填入该端口。在 Android 应用中填入蓝牙地址(00:11:22:AA:BB:CC);应用会请求一次附近的设备权限,并通过蓝牙 SPP 连接。

AI 秤(商品识别):摄像头在秤上的 Aclas 软件中识别商品。称重通过 Scale Module(在此设备上)或 RS232 端口进行;AI 标签秤识别后打印带条码的标签,由收银系统扫描(与 TS6X 相同)。

Aclas AI Recognition Plugin(运行收银系统的 AI 秤,例如装有 Windows 的 iS6X):Aclas 插件识别商品,并像扫码枪一样把商品条码输入收银系统(随后按 Enter);点单界面把商品连同重量加入订单。设置方法:

Aclas OS6X(收银台 POS 秤,RS232/USB;其他已连接的秤也同样工作):

扫描标签(秤旁的勾选框:Aclas TS6X、其他 PC 秤或 AI 秤、LS 系列或 LH15X;秤 + 标签打印机,每家门店一台):

管理门户:发送给门户的消息包含功能 秤(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),含开/关及各型号的秤(如 TS6X (op dit apparaat), 2x OS6X, PS1CX, Ariva-S, DS-781, LS6RX, 5 producten per kilo);不含 IP 地址、COM 端口或蓝牙地址。

计量法:用于销售的秤必须经过检定(III 级,例如 OS6X)。使用 Toledo/连续协议时,收银台按秤给出的重量计算;使用 Dialog 06 时,由经检定的秤自行计算价格。

代码:packages/shared/src/weegschaal.ts(协议、标签、PLU 文件)、apps/pos-server/src/lib/weegschaal.ts 和 routes/weegschaal.ts;界面 WeegschaalInstellingen.tsx 和 WeegDialoog.tsx。

Thuisbezorgd.nl / Takeaway.com

Thuisbezorgd.nl 的订单直接进入收银台,无需中间方(不用 Deliverect、HubRise 等):Just Eat Takeaway 的 JET Connect 与 Pin Voordeel 的管理门户通信,收银台从门户获取消息。

在比利时,该平台名为 Takeaway.com:同一家公司(Just Eat Takeaway),同一个对接。比利时门店的界面、通知、厨房单和管理门户中处处显示 Takeaway.com,而不是 Thuisbezorgd.nl。下文中的 Thuisbezorgd 指两者。

为什么通过门户?收银台只需 PORTAAL_URL 和 PORTAAL_SLEUTEL(见“管理门户”),并且只发出对外请求。

设置方法(设置 → 外卖平台 → Thuisbezorgd.nl / Takeaway.com,权限设置门店、支付和打印机;此前位于“设置 → 门店”):

  1. 开启 使用 Thuisbezorgd(立即生效,无需点保存)。
  2. 注册 Thuisbezorgd。然后门店在 Thuisbezorgd(Partner Hub 或客户经理)中选择 OptimumPOS / Pin Voordeel 作为收银系统。JET 随即启动接入会话;门户会找到已注册的收银台(按邮编和名称,否则由 Pin Voordeel 在门户中手动关联会话),发送配置,并向收银台请求菜单。之后对接即上线。
  3. 勾选可通过 Thuisbezorgd 订购的商品(按分类或单个),可另加 Thuisbezorgd 专用描述。菜单(价格、作为 modifiers 的选项、过敏原、增值税)会自动同步;PLU = 商品/选项的 id。商品目录修改后,收银台会在 30 秒内更新菜单;只有“售罄”/“恢复供应”通过可用性 API 同步。
  4. Thuisbezorgd 营业时间:配送和外带分别设置(例如 16:00-22:00,多个时段用逗号分隔)。通过下方的保存营业时间按钮保存,对接就绪后会作为 service times 发送至 Thuisbezorgd。
  5. 暂时关闭 / 重新营业(在 NL/BE 最晚于次日早上 07:00 重新营业)。

订单。订单会成为一张普通的无桌台订单(bezorgen 或 afhalen,组名 TB <ordernummer>),使用顾客实际支付的价格,配送费/服务费单独成行,Thuisbezorgd 的折扣作为折扣行;如总额仍不一致,则添加一行“Verschil Thuisbezorgd”。厨房单立即发送到厨房/吧台(可关闭)。收银台会在几秒内向门户确认,再由门户通知 JET;如 3 分钟内未成功或收银台离线,JET 会收到“失败”,门店改用 Orderpad 接单。

顶部栏的 Thuisbezorgd 按钮(显示进行中的订单数):列表、顾客和地址、出餐/送达时间以及时间线(track & trace):已接收、骑手前往门店、骑手已到店、送往顾客途中、已送达(来自 JET),以及自定义步骤(制作中、完成、自送时的配送中/已送达、已取餐)。JET Connect 不向收银台提供骑手实时地图;顾客可在 Thuisbezorgd 应用中查看。新订单、取消以及“骑手已到店”会显示橙色提示条并发出声音。完成(已在线支付) 以支付方式 online 结账;顾客货到付款时则照常结账。Thuisbezorgd 取消订单时,订单作废并打印一张“GEANNULEERD”厨房单。

代码:apps/pos-server/src/lib/thuisbezorgd.ts、routes/thuisbezorgd.ts;界面 ThuisbezorgdInstellingen.tsx 和 Thuisbezorgd.tsx。门户端:horecapos-portaal/src/thuisbezorgd.mjs(见门户的 README)。

管理门户中的统计。每天的 Thuisbezorgd 订单数会包含在向管理门户的报送中(lib/portaal.ts 中的 verkoopTelling):已接收且未取消的订单,按接收日期统计。在收银台结账的 Thuisbezorgd 订单(包括 完成(已在线支付))不会在外带/配送中重复计算。Thuisbezorgd 数据保存在收银数据库中,因此会正常包含在收银台的备份中。

网店与在线点餐

每家门店都可以拥有 自己的网店:采用自有品牌风格的点餐网站(和 App),支持外带、配送、扫描二维码桌边点餐和预订,可在线支付(MultiSafepay 或 Buckaroo)或在取餐/送达时付款。网店是一个独立项目 horecapos-webshop(Node.js,见其中的 README),与管理门户运行在同一台服务器上。

开启和设置 在 网店管理 中进行:客户门户中的 管理网店 按钮(店主),或管理门户中的安装处(Pin Voordeel)。可设置开/关、网址(<zaak>.<webshopdomein> 或自有域名)、品牌风格(颜色、标志、头图、字体)、外带和配送的营业时间与时段、配送区域(邮编、半径或地图区域,含配送费和起送价)、支付、优惠码、文字、语言、桌台二维码、预订以及 App(可作为 PWA 安装;通过 Trusted Web Activity 提供 Android App)。此外还有 推送通知(可选,默认关闭):顾客在订单页面开启通知,订单备好或配送中时会收到推送通知;愿意接收的顾客还会不时收到优惠信息,由商家在网店管理(推送通知 选项卡)中发送。适用于 Android 和电脑(Chrome、Edge、Firefox、Samsung Internet)、Android App,以及将网店添加到主屏幕的 iPhone 和 iPad(iOS 16.4 或更高版本)。不会发送短信或邮件,也不保存姓名或号码。详情见网店的 README。

菜单。收银台自动发送菜单:所有启用的商品(按公斤计价的除外),按商品分组,包含价格、选项、过敏原、售罄状态和商品图片,以及桌台和门店信息,还有哪些营销渠道已开启(用于结账时的 "接收优惠" 勾选框,见 短信和邮件营销)。发送时机:启动时、网店开启时、商品目录变更后 30 秒内,以及 设置 → 店铺 中的设置(如营销或会员卡)变更后几秒内(或使用 立即发送菜单)。要让某个商品不在网店显示,可在网店管理中隐藏,或在数据库中设置 artikel.webshop = false。

订单。外带和配送订单会成为普通的无桌台订单(组名 WEB <bestelnummer>),使用顾客看到的价格,配送费和交易费单独成行,优惠码作为折扣行;如总额仍不一致,则添加一行 "Verschil webshop"。顾客的小费不计入营业额:在 完成(已在线支付) 时作为小费计入付款。桌边点餐(二维码)会加入该桌的未结账单(已在线支付:作为该桌的独立组)。厨房单立即发送到厨房/吧台(可在 网店 窗口中关闭)。收银台会在几秒内以小票号确认;随后顾客会收到 "已接收" 状态和一封邮件。收银台离线时,网店不接单(顾客会立即看到),如订单搁置过久会发邮件通知门店。网店的预订会进入 预订(仅当收银台已开启预订)。如设置了每时段上限(配送与时段),时间落在该时段内的网店订单也计入。

比利时(黑盒子)。网店订单会立即作为订单(signOrder)发送到黑盒子,早于厨房单,与收银台的下单相同。若失败,订单不会进入收银台,网店稍后会重新发送。尚未经黑盒子测试的功能在网店菜单中关闭(礼品卡、优惠码、挂账、挂房账、套餐、加价选项、欢乐时光和小费),旧版网店若仍发送这些内容将被拒绝。完成会像收银台一样检查小费、挂账和挂房账。

挂房账(酒店对接,设置 → 酒店 → 自助 → 在网店中):菜单包含 kamer: { maxBedrag };网店发送 betaling.wijze = "kamer",并附带 kamer 和 achternaam。收银台向酒店软件核实客人(桌边点餐和礼品卡不可用),并将其保存在订单中;完成(挂房账)把订单结算到客房,并将小票记入酒店账单。挂账的汇总发票:小票会作为未结项目列出。

顶栏中的 网店 按钮(显示进行中的订单数):列表、顾客和地址、期望时间或 "尽快"、支付方式和时间线。制作中、完成 和 配送中 这些步骤,顾客可在网店中实时看到(如门店需要,也会发邮件)。在收银台结账 = 已完成;取消 只作废该网店订单的明细行,打印一张 "GEANNULEERD" 厨房单,已在线支付的订单由网店退款。预订的已到店、未到店或取消状态也会同步回网店。新订单或新预订会显示橙色横条并发出提示音。

代码:apps/pos-server/src/lib/webshop.ts、routes/webshop.ts;界面 Webshop.tsx。门户端:horecapos-portaal/src/webshop.mjs。

收银台与网店一致(各项可单独开启,默认关闭;旧版网店会忽略新字段)。收银台中开启的功能,在网店中同样适用:

为此,网店菜单使用 versie: 2,包含字段 menuArtikelen、allergenenAan、happyhours、menus、klantenkaart、cadeaubon、kortingscodes、pauze、drukteMin、volgt、bezetting、reserveren.online、ayce、opRekening、wachtlijst 和 upsell。发给门户的确认中另外还有 cadeaubonnen(代码)、klant(积分)和 plek(等候名单)。

管理门户中的统计。通过网店的外带和配送单独统计(webshop、webshopGeannuleerd,位于 verkoopTelling 中),按接收日期计算,不会在外带/配送中重复计算。桌边点餐照常计入桌台。

刷卡和支付终端

设置 → 付款(仅管理员):

只要至少有一台终端设置了 API 密钥(或开启了测试模式),结账 → 刷卡 / Bancontact 就会自动在终端上发起付款,金额由服务器计算。

只要对接处于开启状态,服务器只在该订单、该金额的终端付款成功时才接受“刷卡”。请求与官方 PHP SDK 一样以普通表单发送,主 API 无响应时使用备用 API(api-backup.pinvandaag.com)。API 的每个响应都会以 [pin] 显示在服务器窗口中,便于排查故障。已成功但尚未处理的付款(例如平板掉线),会在该订单下次结账时被找回。

小费(刷卡、现金和礼品卡)

在结账界面,每种支付方式旁都有一排小费按钮:无、5%、10%、15%(向上取整到 10 分)、舍入(到下一个整欧元)和其他金额。刷卡时,顾客在终端上一次性支付金额 + 小费;现金时,小费计入找零和钱箱。小票上显示刷卡金额,下方注明“waarvan fooi”;总额(TOTAAL)和增值税不变,因为小费不计营业额。X/Z 报表中按付款方式列出小费,并显示为“小费合计”。

管理员在 设置 → 门店 → 小费 中设置小费按钮:开/关、哪些百分比(最多 4 个,例如“5, 10, 15”)、是否显示“舍入”按钮,以及哪些支付方式(刷卡、现金、礼品卡)可收小费。“无”和“其他金额”始终显示。

“Maak er maar … van” 始终显示在每种支付方式旁,即使小费按钮已关闭(无需设置):顾客自行将账单向上凑整,差额即为小费。按钮显示下一个整欧元和接下来几个整数金额(例如 € 28,00 → 29、30、40;€ 44,00 → 45、50、60),以及 其他总额,可自行输入总额。再次点击所选按钮 = 不凑整。小费最多 € 500(与收银服务器的上限相同)。

无网络

收银台在本地网络中运行,不需要互联网;只有通过对接刷卡时才需要。门店没有网络时,顶部栏显示 无网络 · 手动刷卡(每分钟检查一次)。此时(以及终端启动失败后),结账界面会出现 已在终端刷卡 按钮:在终端上直接刷卡,然后用此按钮记录。

平面图和桌台

平面图编辑器

设置 → 平面图(仅管理员):

将配置迁移到第二家门店

设置 - 导入/导出

设置 → 导入/导出(仅管理员)。一家门店完全设置好后,可将配置导出为 .json 文件,再导入第二家门店的收银台。可按部分选择:

永远不会导出:门店的名称、地址、邮编、城市、电话、邮箱、增值税号和小票结尾语、Z 报表的邮箱、刷卡终端及其密钥、员工和 PIN 码,以及所有营业额、小票、顾客和库存数量。

导入有严格保护:醒目的红色警告、勾选“Ik begrijp...”、重新输入管理员自己的 PIN 码、没有未结订单、相同国家(增值税税率),并事先自动备份。导入在一个事务中完成:如出错,则什么都不会改变。已有的商品、分类、原料和桌台不会被清除,而是从收银台中移除(与删除相同),因此旧小票和报表仍然准确。

从其他收银系统导入

换系统无需重新录入。始终可用(无需开关):在 设置 → 导入/导出(仅限管理员)中有 从其他收银系统导入。

语言(42 种,包括土耳其语、阿拉伯语、达里贾语、柏柏尔语、波兰语、保加利亚语、匈牙利语、俄语、塞尔维亚语、阿尔巴尼亚语、波斯语、提格里尼亚语、阿姆哈拉语、索马里语、帕皮阿门托语、苏里南汤加语、印地语、乌尔都语、印度尼西亚语、越南语、叙利亚-阿拉米语、中文和乌克兰语)

每个界面右下角 © 按钮旁有一个显示语言的小按钮(例如 NL 和小国旗)。点击打开选择菜单:语言按字母顺序排列,国旗前显示该语言自身的名称:Bahasa Indonesia(印度尼西亚语)、Čeština(捷克语)、Darija(拉丁字母摩洛哥阿拉伯语)、Deutsch、English、Español、Français、Hrvatski(克罗地亚语)、Italiano、Kurdî (Kurmancî)、Latviešu(拉脱维亚语)、Lietuvių(立陶宛语)、Magyar(匈牙利语)、Nederlands、Papiamentu(帕皮阿门托语)、Polski、Português、Română、Shqip(阿尔巴尼亚语)、Slovenčina(斯洛伐克语)、Soomaali(索马里语)、Sranantongo、Srpski(塞尔维亚语,拉丁字母)、Tarifit(里夫柏柏尔语)、Tiếng Việt(越南语)、Türkçe,然后是西里尔字母语言:Български(保加利亚语)、Русский(俄语)和 Українська(乌克兰语),然后是阿拉伯字母语言:اردو(乌尔都语)、الدارجة(达里贾语)、العربية(阿拉伯语)、دری(达利语)、فارسی(波斯语,法尔西语)、پښتو(普什图语)和 کوردی (سۆرانی)(库尔德语索拉尼方言),然后是叙利亚字母语言:ܣܘܪܝܝܐ(叙利亚-阿拉米语,Suryoyo),然后是天城文语言:हिन्दी(印地语),然后是吉兹字母语言:ትግርኛ(提格里尼亚语)和 አማርኛ(阿姆哈拉语),然后是提非纳字母语言:ⵜⴰⵎⴰⵣⵉⵖⵜ(塔马齐格特语,柏柏尔语),最后是 中文(简体)(简体中文)。收银服务器的所有界面、按钮、提示和错误信息都会被翻译。

开发者须知:每条可见文字在代码中写作 vt('Nederlandse tekst')(apps/pos-web/lib/i18n.ts);荷兰语文本即为键。翻译位于 apps/pos-web/lib/vertalingen/<taal>.ts。如缺少翻译,收银台显示荷兰语;测试 i18n(pos-web)会检查每条文字在每种语言中都有翻译,且 {0} 占位符正确。收银服务器的消息保持荷兰语,在浏览器中翻译(也支持 {0},例如消息中的商品名称)。

设置打印机

新收银台没有打印机。以管理员身份登录(演示:1111),然后在顶部栏选择 设置。

打印时相同商品会合并:两次 1x 可乐 会变成 2x 可乐,厨房单和小票上都是如此。只有选项和备注相同的商品才会合并。

Linux 安装程序会将收银系统用户加入 lp 和 dialout 组,使收银系统可以使用 USB 和串口打印机。

需要帮助?

Optimum POS · 085 560 00 60 · support@optimumpos.nl · 周一至周五 9:00–20:00,周六至周日 14:00–20:00