HorecaPOS 使用手册
本手册分为三部分:首先是员工(服务员),然后是经理,最后是管理员。每部分都建立在前一部分之上:经理能做服务员能做的一切,管理员则拥有全部权限。
您的角色具体可以做什么,由管理员在设置 → 权限中设定。如果看不到某个按钮,说明您的角色(尚)无此权限。
本手册也内置在收银系统中:点击每个屏幕右下角的©按钮并选择使用手册,或打开 http://<kassa-pc>:3000/handleiding。另请参阅简介和API 文档。
第 1 部分 · 员工
快速上手
登录。在收银台、平板或手机上打开收银系统,输入您的PIN 码(4 至 8 位数字)。随后会看到桌台平面图。
开台。点击一张桌台。空桌会新建订单;有客的桌台则继续已有订单。在顶部可切换区域(例如大厅和露台)。柜台销售使用快速销售,外带订单使用外带。
点单。选择商品组并点击商品,商品会出现在左侧的单据上。可先选择道菜(1 = 立即上,2 和 3 等待您叫起)。点击下单:工作单即发送到厨房和吧台。在点击下单之前,可以随意删除明细行。
结账。点击结账,选择刷卡 / Bancontact、现金或礼品卡,可选择小费,然后确认。刷卡时支付终端会自动发起付款。小票会被打印,也可以通过邮件发送。
退出登录。完成工作后请退出登录,以免他人以您的名义操作。8 小时后会自动退出登录。
没有网络?收银系统照常运行。如果顶部显示无网络 · 手动刷卡,请直接在支付终端上输入金额刷卡,然后在结账界面选择已在终端刷卡。
一桌多组
一张桌台可以坐多个组,每组有各自的账单和小票。
- 点击桌台:空桌 = 新订单;一个组 = 直接进入该组;多个组 = 先选择,或点+ 新建组(组名可留空)。
- 点单界面顶部是组栏:可在组之间切换,以及+ 组、组名(例如“Jansen”)和拆分 / 转移。
- 拆分 / 转移:为每一行选择转移数量(例如 3× 啤酒中转 1 杯)以及目标组,或新建一个组。这样可以把记错账单的商品转过去,或事后拆分成“各付各的”。组被清空后会自动删除。
- 同时分多部分:用 + 再分一部分 先备好一部分,再选下一部分(如鱼和一杯 Dry Martini 转到 2 号桌,其余转到 35 号桌)。某一部分也可以转到 + 其他餐桌(在那里新建一组)。用 移动 则一次全部转走。½ 把一行对半拆分,半瓶也可以(0,667 变为 2 × 0,3335)。
- 合并:把一张或多张其他餐桌(或本桌其他组)的全部内容一次并入这张账单。
- 比利时:一次性拆分或合并,在黑盒子中记为一次转台,符合比利时联邦财政部(FOD)的要求(UC242、UC251、UC252、UC4119bis)。下单后如删除某项或对已下单的行打折,会随该桌的下一条消息(下单、临时账单、转台)一起发送,否则记入销售:旧行为负、新行为正(UC226、UC4102、UC4104、UC4107、UC4110)。
- 在桌台界面上,橙色小圆点显示组数;金额为所有组的合计。
- 顾客小票和厨房单显示“5 号桌 - 第 2 组”或“5 号桌 - Jansen”。
结账时拆分账单
结账照常进行:一次付清。现在结账界面也可以拆分账单,使用返回和结账下方的按钮(这样它们始终可见,无需滑动):
- 平均分摊:用 − 和 + 选择分给几人(默认为客人数;若收银机不记录人数,则为 2)。屏幕显示每人金额;每人用银行卡、现金或礼品卡支付自己的份额(可加小费)。每付一份就倒数("还剩 3 人");最后一人正好支付余额。
- 自定义金额:某人支付固定金额(例如 € 20);其余部分保持未结。
- 按商品…:打开拆分 / 转移,把商品转到单独的账单上分开结账(同上)。
部分付款只记录付款;账单保持未结,点单界面显示“已付款 … · 尚欠 …”。小票(包含所有付款)在最后一笔付款时出具,与普通结账相同。通过对接刷卡时金额正好是该部分金额。已有部分付款后,不能再把明细行转到其他组,也不能再加折扣;只有未结金额足够时才能删除。每笔部分付款都会记入日志。
快速销售和外带(无桌台)
桌台界面右上角有快速销售和外带。两者都会直接打开一张无桌台订单。快速销售是柜台销售(按堂食税率);外带则使用每个商品的外带税率。通过“顾客姓名”可添加姓名,姓名会显示在小票上(“外带 – Jansen”)以及工作单顶部。未结的无桌台订单显示在区域按钮下方(“无桌台:外带 #12 – Jansen”),方便您找回。如果未售出任何商品就返回,空订单会自动消失。
两个按钮均可在设置 → 门店中按门店开启或关闭,位于浅色/深色主题的正下方(默认开启)。关闭 = 隐藏按钮;已打开的无桌台订单仍然可见。
配送与时段
您在收银台自行接收的订单,例如电话或柜台订单,适用与网店相同的规则:配送区域和每时段最多订单数。在 设置 → 店铺 → 配送与时段 中开启,位于“快速销售”和“外带”按钮的正下方(默认关闭)。
- 桌台界面上的 配送按钮(在“外带”旁边):填写姓名、电话和地址(开启 快速输入地址 时:按邮编和门牌号查找)。收银台查找 配送区域,并显示配送费、起送价和 "满额免配送费"。地址不在任何区域内则无法配送。
- 配送区域:按 邮编(范围和单个邮编,例如
5000-5049, 5051, 5052 AB)、距门店若干 km 的 半径 范围内(直线距离),或您自己绘制的 地图区域。半径和地图区域仅适用于荷兰地址(位置通过 PDOK 查询)。每个区域:配送费、起送价、满额免配送费和额外分钟;从上往下第一个匹配的区域生效,因此可以组合使用不同类型(例如先列几个邮编,再设一个地图区域,最后用半径覆盖其余地址)。未设置区域 = 全部可配送,无配送费和起送价。网店的区域另行设置(网店管理)。 - 地图区域:在配送区域中选择类型 地图区域,然后选择 在地图上绘制。点击地图添加点(至少 3 个);拖动点可移动,点击点可删除,拖动边中间的小圆点可在两点之间插入新点。地图上还会显示半径区域和门店。地图图块来自 OpenStreetMap,因此地图需要联网;配送本身不需要(查询地址除外)。如果无法查询地址,收银台会如实提示,而不是显示“不在配送区域内”。
- 配送费 以 "Bezorgkosten" 行显示在订单上,只要尚未付款,每次修改后都会重新计算(满额免配送费;无商品 = 无配送费)。低于起送价 时无法结账;点单界面会显示还差多少,并提供 仍改为外带 按钮(免配送费,无起送价)。
- 时间:尽快(现在 + 配送时间,再加上该区域的额外分钟)或今天的某个时段。如在 Thuisbezorgd 中设置了营业时间,这里同样适用。
- 每时段上限(0 = 无上限;时段 5 至 60 分钟):外带和配送合计;收银台中的网店订单也计入。设置上限后,外带 也需选择时间,已满的时段无法选择。两台收银台同时抢最后一个名额:只有一台成功。
- 厨房单 上有地址、姓名、电话和时间;在 "无桌台" 中以及厨房单顶部显示,例如 "Bezorgen – 18:30 Jansen"。
扩展功能(默认全部关闭;不做这些设置时,一切与上文完全相同):
- 外带和配送单独设置营业时间(按星期几,例如
16:00-21:00或11:30-14:00, 17:00-22:00;可跨午夜:17:00-01:00;留空 = 当天休息)。关闭 = 与以前相同(使用 Thuisbezorgd 的时间(如有),否则全天)。 - 休息日(例如
25-12-2026, 26-12-2026):当天不外带、不配送。 - 提前预订:0(仅今天,与以前相同)到 14 天。在“配送/外带”窗口中先选择日期;如果是之后的日期,厨房单上会在时间前显示日期。
- 繁忙:"尽快"时额外增加的分钟数(收银台和网店)。也可通过顶栏的 网店 按钮快速设置。
- 比利时地址(4 位邮编):按半径或地图区域配送时,收银台通过 OpenStreetMap(Nominatim;需要街道和城市)查询位置。
- 网店跟随收银台:以收银台为准。网店将使用收银台的配送区域、配送和外带时间、时段、每个时段的上限、营业时间(如在此设置)、休息日和提前天数,并将收银台接的订单计入时段。关闭 = 网店使用自己的设置(网店管理),与以前相同。外带/配送的开关仍由网店决定。
代码:lib/bezorgen.ts、routes/bezorgen.ts、BezorgDialoog.tsx、BezorgInstellingen.tsx、BezorgKaart.tsx 和 lib/kaart.ts(地图,无需额外软件包;网店中的 public/kaart.js 是同一份代码)。
电话:电话订单识别顾客
设置 → 电话(默认关闭;关闭后所有内容都会保留)。两个独立开关:
- 配送和外带时按电话号码查找顾客:在配送界面输入号码,收银系统即显示该顾客及其地址和以往订单;使用这些资料会填入姓名、邮箱和地址。无需电话交换机也可使用。
- 来电识别:顾客来电时,电话交换机(或话机、FRITZ!Box、调制解调器或 Android 手机)上报号码。各屏幕上会弹出提醒,显示来电者:姓名、地址、最近订单(含菜品和金额,也包括网店、Thuisbezorgd 和配送平台的订单)、合计以及预订。点 接配送订单 或 接外带订单 即打开已填好全部资料的配送界面(需开启配送和时段);订单关联到该通电话,提醒从所有屏幕消失。顶栏的 📞 按钮:最近 24 小时的通话。可按屏幕关闭(在此屏幕上显示提醒)。
查找范围包括会员卡、收银系统的配送和外带订单、网店、Thuisbezorgd、配送平台和预订。号码会统一格式(+31 6 1234 5678、0031612345678 和 06-12345678 视为同一号码;比利时号码也一样)。
号码的来源(可同时使用多个;同一通电话只计一次):
| 来源 | 适用于 | 设置方法 |
|---|---|---|
| Webhook / action URL | 3CX(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 应用:见下方 骑手应用)。
创建配送趟次。收银界面有 配送趟次 按钮(显示尚待出发的配送数量加上配送中的趟次)。
- 在 待配送 中勾选要一起送出的订单。这些是来自收银台、网店和 Thuisbezorgd 的外送订单(仅限 自行配送;由 Thuisbezorgd 骑手配送的订单除外)。
- 选择 骑手(一名员工)和随身携带的 零钱(默认为设置中的金额),然后点按 创建配送趟次。
- 屏幕上会出现 二维码。骑手用自己的手机扫描,即可看到每个地址的姓名、带 路线(导航)按钮的地址、拨打、备注、期望时间和应收金额。还有找零计算器(顾客给 € 50 → 找零 € 31,50)。无需登录。链接只分享给骑手:拿到链接的人都能看到本趟次的地址。用 骑手二维码 可生成新链接,旧链接随即失效。
- 骑手离开时点按 出发。零钱从钱箱取出(支出,附原因)。顾客会收到订单配送中的通知:
- 来自收银台的订单通过短信和/或电子邮件发送,前提是已开启 发给顾客的消息(参见配送与时段);
- 网店订单按网店中的设置发送(邮件、短信或推送通知);
- Thuisbezorgd 订单由 Thuisbezorgd 发送。
配送趟次尚未出发时,仍可 取消。
- 在路上,骑手对每个地址点按 已送达,现金、已送达,刷卡(自带刷卡机)或 已送达(已付款)。收银系统立即可见。骑手无法上报时,也可以在收银台操作。回到门店后,骑手点按 我已回到门店。
交款。配送结束后点按 结账(需 管理钱箱 权限):
- 逐单选择 现金、上门刷卡、已付款 或 未送达(退回)。骑手已上报的内容会自动填好。
- 收银系统结算每笔有未付金额的订单,不打印新小票(顾客已有小票;可在 小票 中重新打印)。未送达的订单会移出该趟次并保持未结,以便安排到下一趟。
- 你会看到预计金额:零钱加上收到的现金。输入骑手上交的金额,或按纸币和硬币清点(按纸币和硬币清点)。收银系统会显示是否相符,或多出、短少多少。
- 零钱放回钱箱(收入)。差额记录在该趟次和日志中,也会作为现金差额出现在 Z 报表中。
Track & trace(需在设置中单独开启)。订单 配送中 时,顾客会收到门户上 追踪页面 的链接。该链接在短信或电子邮件中,网店的状态页面上也有(追踪你的骑手)。追踪页面显示:
- 订单是在准备中、配送中还是已送达;
- 预计时间:根据骑手位置经由排在前面的地址计算,否则为期望时间;
- 前面还有几个地址(不显示其他地址);
- 开启 骑手实时显示在地图上 后,地图(OpenStreetMap)上还会显示骑手、门店和顾客自己的地址。骑手自行在手机上开启位置共享(共享我的位置)。仅在页面打开时发送位置;页面会保持屏幕常亮。
页面使用手机的语言显示(支持门户的所有语言)。在收银台的配送趟次中可以看到最后一次上报位置的时间(附地图链接)。
隐私。门户只在配送趟次进行期间保存趟次数据(姓名、地址、电话号码、位置)。结算时全部删除,否则在 24 小时后删除。顾客只能看到自己的订单。骑手位置仅在配送期间可见,骑手返回后即不再可见。
趟次规划(可选)
在 设置 → 门店 → 配送 → 趟次规划 中开启(默认关闭;适用于自有骑手)。之后 配送趟次 窗口中会出现 推荐配送趟次 按钮。收银台会将尚待配送的订单合并成趟次:
- 彼此距离较近、且要求时间落在时间窗口内(默认 30 分钟)的订单会合并;
- 最多达到每趟地址数上限(默认 4),且整趟(出发、所有地址并返回门店)不超过最长时长(默认 45 分钟);
- 每个趟次显示最佳顺序、距离(公里)、往返行程时间,每个地址显示现在出发时的预计到达时间。若晚于要求时间,会标注晚于要求时间。
点 使用此趟次 会按该顺序勾选这些订单;选择骑手后点 创建配送趟次。对于尚未出发的趟次,最佳顺序 会把地址排成最快的顺序(骑手手机上也会更新)。每个趟次都会显示距离和行程时间。
设置:每趟地址数、每趟最长时长、时间窗口、骑手速度(市区内自行车约 15、踏板车约 25、汽车约 35 公里/小时)以及每个地址的分钟数(停车、按门铃、收款;默认 2)。这些数值也可由经理设置:在配送趟次窗口中点击设置趟次规划按钮(权限设置趟次规划,经理默认拥有;可在“设置 → 权限”中调整)。开启或关闭趟次规划以及路线服务(地址、API 密钥)仍由管理员负责。
距离和行程时间,由管理员选择:
- 估算(默认):直线距离乘以 1.35(绕行系数),按骑手速度计算。无需联网,也无需账号。
- OSRM:通过 OSRM 服务器按道路计算路线。填写地址(
https://,内部网络可用http://)。公共演示服务器(https://router.project-osrm.org)仅供偶尔使用;日常使用请自建 OSRM 服务器或选用服务商。 - OpenRouteService:使用自己的 API 密钥按道路计算路线(可在 openrouteservice.org 免费创建,每日有上限)。地址默认为
https://api.openrouteservice.org,也可改为自己的服务器。密钥只保存在收银台上;界面只显示已填写。
点 测试 可试用该服务。若服务不可用,规划会退回估算并加以提示。位置未知的地址(没有有效的邮编和门牌号)会在推荐中列入位置未知,不会被排入。配置导出包含这些设置,但不包含密钥。
代码:lib/ritplanning.ts。
骑手应用(可选)
在 设置 → 门店 → 配送 → 骑手应用 中开启(默认关闭;需配合自有骑手和管理门户使用)。之后每位骑手只需将自己的手机配对 一次,无需每趟扫描二维码:
- 在 已配对的手机 中选择骑手(一名员工),可填写手机名称,然后点击 配对手机。
- 屏幕上会显示一个 二维码。骑手在 Optimum Bezorger 应用中扫描(按钮 配对),或用手机相机扫描:页面会在浏览器中打开。无需应用也能使用,并可添加到主屏幕。
- 配对在你 撤销 之前一直有效;撤销后该手机立即无法再看到任何内容。同一员工的新配对会替换旧配对(例如换了新手机)。
应用或页面中显示 自己的所有配送趟次(收银台为该骑手创建的每个趟次),按钮与配送趟次中的相同:路线、拨打、带零钱计算器的应收金额、已送达和 我已回到门店。可单独开启:
- 自行接单:骑手可以看到尚未分配到配送趟次的配送单,勾选要带走的订单,然后点击 带走。收银台会创建配送趟次(如果该骑手已有尚未出发的趟次,则加入其中);默认零钱随行。别人已接走的订单无法再接。
- 自行出发:应用中的 出发 与收银台上的操作相同(零钱从钱箱取出,顾客会收到通知)。
- 实时地图:在 配送趟次 中有 地图 按钮,显示门店、所有 在岗 骑手以及尚待配送的地址。骑手自行开启和关闭 在岗。应用在屏幕关闭时也会发送位置(Android:共享期间状态栏中会显示通知);网页仅在打开期间发送。未开启此设置时,位置只在带 track & trace 的配送趟次中共享。
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。
出餐时间过长提醒
外带或配送订单晚于承诺时间完成时:收银台会发现并提醒,还可立即向顾客发送致歉,并可附赠代金券。在 设置 → 门店 → 配送 → 出餐时间过长提醒 中开启(默认关闭)。
- 适用订单:有承诺时间的外带和配送订单,来自收银台(配送和时段)、网店以及 Thuisbezorgd.nl / Takeaway.com。
- 超时:承诺时间后设定的分钟数(默认 10)内仍未完成或未出发。完成或配送中指:厨房显示屏上全部完成、网店或 Thuisbezorgd 中状态为完成或配送中、已向顾客发送 ✉ 完成 / ✉ 配送中 消息,或已结账。收银台每分钟检查一次。
- 提醒:顶栏的 超时 按钮显示数量(有新订单时发出提示音),并列出每个订单的承诺时间和超时分钟数。订单完成或配送中后会自动消失,也可点击 已处理;下方列出过去 24 小时的订单及其完成时间。所有内容都记录在日志中。
- 网店:顾客的状态页面会显示订单需要更长时间,并显示新的预计时间。
- Thuisbezorgd 订单无法这样做(顾客属于 Thuisbezorgd):只显示提醒。可使用自定义文本;
{naam}、{zaak}、{code}、{korting}和{geldig}会自动填入。 - 代金券(仅在开启 优惠码 时):随致歉附上下次订单可用的个人优惠码(例如
SORRY-7K4Q2M),按金额或百分比,限用一次,在设定天数内有效,收银台和网店均可使用。这些优惠码不会出现在优惠码列表中。发送失败时,优惠码作废。通过收银台按钮发送需要 给予折扣 权限。 - 关闭:提醒和已发放的优惠码仍会保留(包括备份中);该设置包含在配置导出中。
代码:lib/telaat.ts、routes/telaat.ts、TeLaat.tsx 和 packages/shared/src/telaat.ts。
下单按钮:它的作用以及何时需要它
点选商品和点击下单是两个不同的步骤:
- 点选会立即把商品以新的状态加到账单上(左侧列表)。只有你能看到:厨房和吧台还不知道。新的明细行就像草稿:删除、修改数量或选项都可以直接进行,无需作废。
- 下单会一次性发送所有新明细行:工作单发送到厨房和吧台打印机(以及厨房显示屏),之后这些行变为已下单。此后只能通过作废删除(需要作废权限)。按钮上会显示有多少新行待发送,例如下单 (3);没有新行时,按钮为灰色。
为什么分两步?在桌边你先记下整份点单(饮料、前菜、主菜),客人改变主意时再调整一下,然后一次性发送到厨房,每个工位一张单,而不是每个商品一张单。这样厨房可以在结账之前很早就开始准备。
下单时还会发生:
- 上菜顺序:第 1 道立即发往厨房;第 2、3 和 4 道以等待状态一并发送,只有当你叫起该道菜时厨房才开始制作(见上菜顺序)。
- 轮次:每次下单就是一轮;↻ 再来一轮正是基于此工作的。
- 库存会扣减,定量出酒阀会被解锁。
- All-you-can-eat:如果对该套餐来说点得太多、太早或太晚,收银机会先询问是否仍然允许。
- 比利时 (GKS 2.0):明细行先以形式发票(pro forma)发送到黑匣子;如果失败,则不会向厨房发送任何内容,这些行保持新状态。
- 无网络连接:订单会被保存,连接恢复后立即发往厨房。打印机关闭:下单仍会进行,工作单进入打印队列(见厨房打印机关闭或无厨房显示屏)。
也可以直接结账。如果账单上还有新明细行时你点击结账,收银机会先自动为其下单,确保厨房和吧台始终收到单据。因此在吧台或外带时,你无需先点下单:点选商品后直接结账即可。如果自动下单失败(无网络连接、all-you-can-eat 规则、黑匣子),结账界面不会打开,并会显示原因。
直接结账时不希望吧台收到小票?在设置 → 门店 → 点单与结账中勾选直接结账不出工单。这样只有通过下单发送的内容才会送到厨房和吧台;直接结账的商品不会打印工单。
大号或小号结账按钮
勾选大号"结账"按钮后,点单界面在已点商品正下方显示一个大号结账按钮:又宽又高,并显示金额,方便快速点按。如果账单已部分支付,按钮会显示剩余未付金额。此时底部下单旁边的小按钮会隐藏。
开启大按钮后,结账界面中的按钮也会变大:结账(用于刷卡、礼品卡及其他支付方式),以及现金下的现金正好和结账都又宽又高,即使手指不干净也很容易点中(例如在肉店)。支付方式稍大一些,小费按钮稍小一些,这样所有内容都能显示在屏幕上。
新安装时此项默认不勾选:此时底部下单旁边是小按钮,结账界面使用普通按钮。想要大按钮?在设置 → 门店中,浅色/深色主题正下方,勾选大号"结账"按钮。已在使用中的收银台保留原有设置。该选择适用于门店的所有收银台和平板。
将商品设为“售罄”
任何人都可以在点单界面长按商品(或右键单击),选择售罄。商品随即变灰,所有收银台都无法再点。用同样的方法选择恢复供应即可恢复。每次更改都记入日志。管理员仍可在 设置 → 商品 中操作。收银服务器也会拒绝已设为“售罄”的商品(“Cola”已售罄),包括来自尚未同步该更改的平板或离线保存的订单;该平板随后会显示“无法发送”。
厨房显示屏 (KDS)
除了工作单打印机之外(而非取而代之),厨房或吧台还可以使用显示屏。在厨房的平板/电脑上打开 http://<kassaserver>:3000/keuken,用 PIN 码登录并选择工作站:名称与打印机相同(厨房、吧台……),因此屏幕上显示的正是该工作单上会打印的内容。“全部”显示所有工作站。
- 每张订单一张单,最早的在前,显示桌台/外带、编号和已等待时长(10 分钟后变橙,20 分钟后变红)。
- 各道菜分开显示;尚未叫起的道菜显示为灰色“等待叫起”。作废的项目带删除线。
- 点击某一行将其标为完成,或点击完成完成整张单。服务员随即在顶栏看到“厨房:5 号桌已出餐”。开启设置 → 门店 → 厨房显示屏 → 厨房或吧台出餐时为服务员发出提示音(默认关闭)后,收银台还会发出提示音(“叮咚”,无需音频文件)。浏览器要在首次点击屏幕后才允许播放声音;请打开平板的音量。
- 召回显示最近一小时内标为完成的单据,误点的可以这样恢复。
屏幕会自动实时更新。工作单照常打印;不使用显示屏的人不会受到任何影响。
厨房显示屏:转单、排序和道菜
设置 → 打印机 → 厨房显示屏。各项可单独开启,默认关闭;关闭后所有设置都会保留。
- 在工作站之间转单,例如 冷菜 → 热菜 → 出菜口。为每个工作站设定一个固定的下一工作站;单据上就会出现 → 热菜 按钮(并始终有 转至… 用于选择其他工作站)。只有该工作站未完成的行会被转走。工作站不一定要有打印机:在 无打印机的工作站 中填写 出菜口 等工作站。完成(以及给服务员的提醒)仅在最后一个工作站出现。在 "全部" 中,已转单的行会显示其当前所在位置。每一步都会记录在该行和日志中。
- 重新排序:拖动单据(鼠标)或用 ◀ ▶ 移动(触摸屏)。排序按工作站生效,并适用于该工作站的所有屏幕;新单据排在最后。
- 从厨房显示屏请求下一道菜:有待上道菜的单据上会显示 请求第 2 道菜。服务员随即收到 "厨房请求为 5 号桌上第 2 道菜"(带提示音),并照常叫起;厨房显示屏上会显示 "已请求第 2 道菜 · n 分钟",直到该道菜被叫起。或选择 叫起:厨房显示屏将自行叫起该道菜,并打印工作单 "叫起第 2 道菜",与收银机上的按钮相同。
厨房打印机关闭或没有厨房显示屏
即使厨房或吧台打印机关闭(或缺纸、线缆松脱),即使没有厨房显示屏,收银系统也始终照常运行:
- 下单始终有效。明细行立即变为已下单,账单准确,可以照常结账。所有打印机同时接收任务,每台打印机最多约 4 秒:关闭的打印机不会让其他打印机(和服务员)久等。
- 打印队列。无法打印的工作单进入打印队列。收银服务器会每 30 秒重试一次,持续一刻钟;打印机恢复后即打印出来,顶部标有稍后打印。该打印机上下一张单打印成功时,等待中的单据会紧随其后打印。
- 一刻钟后自动停止重试;此时仍可使用立即重新打印。
- 厨房显示屏。如果订单显示在厨房显示屏上,打印机关闭时厨房也能在屏幕上看到。不使用厨房显示屏也没有影响:收银系统不会在任何地方等待厨房点“完成”。
- 队列只保存在收银服务器的内存中(重启后清空)。
- 顾客小票也是如此:即使打印失败,结账也已完成(收银台提示“打印失败”),之后可在小票中补打。
道菜(前菜、主菜……)
道菜按钮只在需要时显示:一旦单上有套餐(组合商品),或者第 2 至 4 道中已有内容。对于普通商品,例如可乐,您看不到这些按钮,所有内容直接发送到厨房。无需任何设置。
点单列表下方有道菜 1 2 3 4。默认选中第 1 道,一切照常:“下单”会把所有内容立即发送到厨房,工作单上不显示道菜标题。如果在点商品之前选择第 2 道(或更后),则:
- 点“下单”时这些商品已发送到厨房,标注为“-- 第 2 道菜 · 等待叫起 --”,方便厨房提前准备;
- 点单列表中显示“第 2 道菜 · 等待”,并带有叫起按钮;
- 叫起时厨房会收到一张“ 叫起第 2 道菜 ”的单据,列出现在要做的菜品。
第 1 道菜总是立即上。如果第 2 道菜已经叫起,之后在第 2 道菜中加点的菜品也会立即上。
每个商品的过敏原
默认关闭:此时任何地方都不显示过敏原。在设置 → 门店 → 填写并显示每个商品的过敏原中开启。
- 设置 → 商品:为每个商品勾选 14 种欧盟过敏原(麸质、甲壳类、蛋、鱼、花生、大豆、奶、坚果、芹菜、芥末、芝麻、亚硫酸盐、羽扇豆、软体动物)。商品列表中名称后面显示缩写。
- 点单界面:每个商品按钮上以小字显示缩写(例如
Gl Me),组栏中的⚠ 过敏原按钮会列出所选组中每个商品的完整过敏原及缩写说明。 - 过敏原的更改会记入日志(旧 → 新)。关闭该设置后,之前填写的过敏原仍会保留。
自助餐
默认关闭。在 设置 → 门店 → 自助餐 中开启(仅限管理员)。您可以创建一个或多个套餐方案,例如海鲜、肉类和寿司,每个方案包括:
- 名称(显示在小票上:“海鲜 成人”、“海鲜 儿童”);
- 每位成人价格和每位儿童价格(含增值税)以及税率(默认荷兰
LAAG,比利时B); - 包含的菜品(€ 0):整个商品组和/或单个商品(也可来自其他组,例如薯条同时属于海鲜和肉类);
- 时间限制,以分钟计(0 = 无限制);
- 轮次:每人每轮最多点多少道菜(0 = 不限),以及两轮之间的最少间隔分钟数(0 = 无);
- 每份浪费附加费(0 = 无)。
用↑ ↓调整顺序。当一道菜属于多个方案时,顺序起作用:该菜归入该组所选方案中排在最上面的那个。删除会对新桌台移除该方案;进行中的桌台保留其价格明细(可以减少人数,不能增加)。
在桌边:
- 点单界面的小票上方有 + All-you-can-eat。为每个套餐选择成人和儿童人数;可以混选(例如 2× 鱼 和 2× 肉)。价格以明细行计入账单;这些行不会发送到厨房。该组人数为参加的总人数(若收银机记录人数)。
- 状态栏按方案显示:人数、剩余时间(超时变红)、当前轮次及上限,以及距下一轮还有多久。包含的菜品在按钮上标有AYCE,在单据上标有 AYCE 标签,价格为 € 0。不属于所选方案的商品(饮料、甜点……)照常收费。
- 下单:每次包含免费菜品的“下单”都按方案算作一轮(仅限包含其菜品的方案)。离线点单、稍后发送的不会被拦截。
- 修改:调整每个方案的人数。减少人数视为作废(需要“作废”权限)。只要账单上还没有该方案的菜品,就可以把该方案设为 0(或点停止全部停止)。
- 附加费(仅当所选方案设有浪费附加费时):选择数量(如有多个方案,还需选择方案);“浪费附加费 × 数量”会记入账单。
- 结账、拆分、折扣和小票照常工作:方案价格、附加费和饮料都是带各自税率的普通明细行。
- 如果管理员在有组用餐期间关闭自助餐,新点的菜品将恢复原价;已记入账单的保持不变。
- 网店中(可选,默认关闭):开启 通过二维码在餐桌点餐时也适用(网店) 后,在有套餐方案的餐桌上点餐的客人会看到该方案的菜品显示为 已包含,价格 € 0,顶部显示当前状态(人数、轮次、时间)。每次下单算作一轮,规则与 下单 相同;点得太多、太早或太晚,网店会立即拒绝。饮料和其他菜品客人照常付费;所有内容都记入该桌的账单。关闭 = 网店照旧按普通价格收费。
礼品卡
设置 → 门店 → 礼品卡 中有两个开关:
- 礼品卡作为结账支付方式:默认开启,与以往相同。关闭 = 结账时不显示 礼品卡 按钮(退货时的退款方式中也不显示),收银服务器也会拒绝礼品卡付款。
- 销售带余额的礼品卡:默认关闭。开启后:
- 点单界面显示 礼品卡 按钮:选择金额(€ 10、25、50、100 或其他金额),由收银台生成代码,或扫描预印卡片上的代码。礼品卡作为一行记入账单(增值税代码 BON:不计营业额、无增值税、不发送到厨房)。在这里也可以为顾客查询余额。
- 结账后礼品卡即激活,小票打印机会打印一张礼品卡,上面有金额、代码和二维码。
- 使用:结账时选择 礼品卡,扫描或输入代码(余额 按钮显示余额)。金额从余额中扣除。如余额低于账单金额,则全部余额作为部分付款扣除,其余用刷卡或现金支付。余额可分多次使用。
- 代码留空 = 无代码礼品卡,与以前一样(例如旧的纸质礼品券)。
- 报表 → 礼品卡(权限 管理礼品卡,默认经理和管理员):按代码搜索、未使用余额、每张礼品卡的历史记录、冻结(丢失/被盗)以及填写原因更正余额。这些操作会记入日志。
- 报表:售出的礼品卡不计入营业额,单独列出(已售礼品卡);收到的钱则计入支付方式。用礼品卡支付的金额正常计入营业额(含增值税),列在支付方式 礼品卡 下。
- 会计:售出的礼品卡记贷方,使用的礼品卡记借方,科目为 礼品卡(顾客预付款)。
- 售出的礼品卡只要尚未使用(余额 = 面值),就可以通过 小票 → 退货 退回。退货后礼品卡作废(余额 0,已冻结;记录在该卡的历史中)。如已(部分)使用,请在 报表 → 礼品卡 中将余额设为 0,并另行退还剩余金额。礼品卡不能打折。
可充值余额(可选)
适用于俱乐部、体育食堂、青少年活动中心和各类活动:带余额的礼品卡变为可充值卡。在 设置 → 门店 → 可充值余额 中开启,位于礼品卡下方(默认关闭;仅在 销售带余额的礼品卡 开启时有效)。
- 储值卡或腕带:用 预印卡片 销售礼品卡并扫描该卡(使用模拟键盘输入的 NFC/RFID 读卡器,或条形码)。卡号即为代码;顾客可像使用礼品卡一样用它付款。
- 充值:点单界面 → 礼品卡 → 余额充值:扫描礼品卡或储值卡并输入金额。金额作为一行记入账单(增值税代码 BON:不计营业额、无增值税,与售出的礼品卡相同),结账后计入余额。礼品卡的历史记录中显示 已充值。
- 每张礼品卡或储值卡的最高余额(默认 € 500,最高可设置为 € 5.000)。
- 退还剩余余额(勾选项,默认关闭;权限 管理钱箱):查询余额 后显示 退还剩余余额。余额变为 € 0,该金额作为 从钱箱取款 显示在 X 和 Z 报表上(余额已退还 …)。
- 只要余额仍不低于充值金额,即可通过 小票 → 退货 撤销充值;礼品卡或储值卡仍然有效。
- 在自助点餐机上充值(可选):参见 自助点餐机。
餐券
仅适用于比利时的门店,默认关闭:设置 → 门店 → 结账 → 餐券。餐券是一种工资福利:雇主将其充值到员工的卡上(Edenred、Monizze 或 Pluxee)。顾客用它在普通刷卡机上付款;无需与发行商对接。
- 开启:结账时显示餐券按钮。选择发行商(仅限门店接受的发行商),然后让顾客将卡贴近刷卡机,与刷卡付款相同。没有刷卡对接时:顾客直接在刷卡机上付款,然后点击 结账。
- 使用餐券时不含小费,也不找零。如余额不足,顾客用其他方式支付剩余部分(账单保持未结,直到全部付清)。
- 仅限特定商品分类(可选,例如餐食但不含酒精):此时餐券最多只能支付账单上这些商品的金额。结账界面会显示可支付多少;剩余部分由顾客用其他方式支付。
- 小票上显示:餐券 Pluxee(后面是发行商)。
- Z 报表和 X 报表:每个发行商单独一行(餐券 Edenred、… Monizze、… Pluxee)。
- 会计:每个发行商有自己的总账科目(餐券 Pluxee(应收)等,默认为 416100、416200 和 416300),因为款项来自发行商,而不是来自刷卡机的银行。
- 需要:与你所接受餐券的每个发行商签订协议,以及一台接受这些卡的刷卡机(请向刷卡机供应商咨询)。
外币
用其他币种收取现金,例如英国或美国游客,或在边境地区收取瑞士法郎。默认关闭:设置 → 门店 → 结账 → 外币。添加币种(CHF、CZK、DKK、GBP、HUF、NOK、PLN、SEK、TRY、USD),并为每个币种设置汇率:1 单位折合多少欧元(例如 1 GBP = € 1,15)。
- 手动输入:固定汇率;汇率变动时请自行修改。
- 实时(欧洲央行):欧洲中央银行的每日汇率(参考汇率,每个工作日约 16:00 发布;免费,无需账户)。设置百分比形式的加价(0-20)后,汇率会相应降低,这样门店就不必自己承担兑换成本。汇率超过 6 小时未更新时,收银台会自动获取;点击立即更新可立即获取。无网络时保留最后的汇率。
- 开启:结账时显示 外币 按钮。选择币种;收银台显示以该币种计的金额。输入顾客支付的金额:收银台进行换算,并以欧元找零。如客人不要找零,请勾选找零作为小费:找零作为小费记在小票上,在比利时以该币种记录(GKS 2.0,UC296)。
- 如果顾客支付的金额少于全额,则为部分付款;剩余部分由顾客用其他方式支付。
- 小票上显示:币种、金额和汇率,以及欧元找零。
- X 和 Z 报表:每个币种单独一行(外币 GBP,以欧元计),钱箱部分显示钱箱中该币种的金额。欧元找零从钱箱应有金额中扣除;外币本身需另行清点。
- 会计:计为现金(现金账),以欧元计。
点单与结账的附加按钮
并非每家门店都需要的按钮。默认全部关闭;在设置 → 门店 → 点单与结账中逐个开启(权限门店、支付和打印机设置)。关闭 = 按钮在收银台中任何地方都不显示,收银服务器也会拒绝该操作。在荷兰,所有功能无需黑盒子即可使用;在比利时,只有该功能经过黑盒子测试后按钮才可用(如尚未测试,按钮旁会注明)。
开台时:
- 记录人数:空桌开台时的 "几位?" 提问、平面图和点单界面上的人数,以及报表中的客人数。参见人数。
点单时(点单界面,适用于之后点选的商品):
- 相同商品合并(无按钮,默认开启):再次点按同一商品(相同选项、尚未下单)时,数量会增加,而不是新增一行:4 Cola 显示在一行,价格乘以 4。点−可再减去一个,即使已下单也可以(冲销一个)。带备注、座位或外带时,仍为单独一行;已下单的商品仍为单独一行(新的一轮)。
- − 和 +(每行价格前面):− 减去一个,+ 增加一个(相同商品、选项和备注;若关闭相同商品合并,则为新行)。尚未下单且减到 0:该行被删除。已下单:减一个即为冲销,该行保留并显示删除线(供厨房和报表使用);加一个则成为一条尚需下单的新行。点按价格本身不再删除任何内容。套餐只有 −。
- 外带(仅堂食):客人带走此商品,例如一瓶水或一份甜点。该行按外带增值税计算(比利时为 C 类),账单其余部分按堂食增值税计算。小票上该行旁显示外带。
- 座位(在桌台):点按切换座位 1、2、3 ...;各行获得该座位号(厨房单上也显示)。在比利时,每行带上座位的成本中心(CHAIR,UC4123)发送到黑盒子。在座位 12 后再点一次 = 恢复为无座位。
- 回收:下一个商品以 -1 录入,例如空瓶或空杯(押金)。仅适用于设有可退回(押金)的商品(设置 → 商品)。如整个账单为负数(只退押金,没有销售),结账就变成退款:退现金或刷卡退回(在终端上退款)。在比利时作为退款(REFUND,UC4108 和 UC4114)。
- 兑换 SPV:客人用单一用途代金券(专用于该商品的券,例如 "1 全包套餐")支付商品或套餐。点按兑换 SPV,再点按小票上的该商品:它以 -1 录入(相同价格和增值税,套餐含各组成部分),并标注SPV。不发送到厨房;可以照常删除。代金券商品作为普通商品预先销售;在设置 → 商品中为其勾选SPV(代金券)。在比利时,该行在销售时作为 VOUCHER 发送到黑盒子(UC271)。
- 抵扣预付款:见下文。
- 自定价格(不是按钮,按商品设置):对设有自定价格的商品,收银台会询问价格,例如每日特餐或预付款。
结账时:
- 直接结账不出工单(不是按钮):默认情况下,结账会先下单尚未下单的商品,确保厨房和吧台始终收到小票(参见下单按钮)。开启后:未先点下单就直接结账的商品不会打印工单,例如在吧台由你自己取货时。已下单的商品不受影响。
- 单独结账(在桌台,拆分账单中):选择一位客人现在支付的内容,也可以是一行的一部分(½ 表示半瓶)。这会成为一个单独的部分并立即结账;其余留在账单上,无需先拆分账单或移到其他组。整张小票的百分比折扣按比例分摊。不付款就点返回 = 全部回到账单上。在比利时,销售记在该桌台的位置,不换桌(UC4103bis,UC4104)。
- 客人未付款离开(权限未付款关闭,默认仅经理和管理员):账单作为未付款的销售关闭,原因记入日志。在 X 和 Z 报表及日报表中显示为未付款(客人已离开);在日记账中记入坏账(默认 4985 / 643000)。在比利时为未付款的销售(UC4109)。
事后(小票):
- 更正价格(权限更正小票价格,默认仅经理和管理员):已结账小票的价格有误,例如应为 5% 折扣却给了 50%。收银台新建一张不关联桌台的小票,退回原小票的各行(负数,按当时支付的价格),并以正常价格重新录入相同商品。在新小票上给出正确的折扣并结清差额(如新价格更低则退款)。原小票保持不变;每张小票只能更正一次,已有退货时不能更正。在比利时,原有各行作为 CORRECTION 一并发送(UC4116)。
代码: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
填写后请重启收银台。之后在 结账 中会出现 同时通过邮件发送小票(可选) 字段:留空 = 照常只打印;填写邮箱 = 同一张小票(含增值税明细和税务信息)也会通过电子邮件发给客人,发件人为门店名称。
- 电子邮箱不会保存;日志中只记录“小票 N 已发送至 a***@domein.nl”以及是否成功。
- 如果邮件发送失败(例如登录信息错误),小票照常结账并打印;提示会说明出了什么问题。
- 部分付款(拆分账单)时不适用:小票在最后一笔付款时生成,所以请在那时填写邮箱。
- 事后发送:在 小票 中,每张小票旁有 发送邮件 按钮(权限 打印小票副本)。发出的小票带有“副本”字样,与打印的副本相同(在比利时登记为副本)。
- 无需额外软件包:收银台直接与邮件服务器通信(STARTTLS 使用 587,TLS 使用 465)。
预订
在 设置 → 门店 → 预订 中开启(默认关闭)。在这里还可设置已预订桌台提前多少分钟显示在平面图上(默认 60),以及预订的默认时长(默认 120 分钟)。
- 顶部栏的 预订 按钮:按天查看(◀ ▶),显示预订数、人数和未到店数。+ 新建预订:姓名、电话、邮箱、人数、日期、时间、时长、桌台(可稍后指定)和备注。预订由员工录入;(暂)不支持在线预订。
- 如同一桌台在该时段已有预订,收银台会提示;仍可点击“仍然保存”。
- 如有邮箱且已配置邮件服务器(
SMTP_HOST,见“邮件发送小票”),可通过邮件发送确认(勾选,或稍后点“发送邮件”)。 - 在平面图上,已预订的空闲桌台显示为紫色,并标有“R 19:30 Jansen (4)”。点击后:“Jansen 已到店”以 4 人、组名“Jansen”开台;“其他客人”则正常开台。
- 在概览中:已到店(开台;未指定桌台时先选一张)、修改、未到店、取消和恢复。所有操作都记入日志。
- 来自在线平台的预订:请参阅下方的预订平台。
TheFork 收银对接:到店开台,账单回传
借助 TheFork 的 POS-API,收银台在拉取上述预订之外,还能与 TheFork Manager(默认关闭) 协同工作。在设置 → 预订平台 → TheFork 收银对接中开启;通过管理门户运行。
- 在 TheFork Manager 中将客人设为已到达或已入座后,收银台会打开同名桌台,附带人数和备注:姓名、过敏信息和饮食要求、预付款、优惠/折扣以及积分(Yums)。如果该桌台已有未结订单,则与其关联。没有同名桌台:会显示提示,你可以在平台中选择桌台。
- 结账后账单发送至 TheFork(总额及包含名称、商品分组、数量和金额的明细行);随后 TheFork 将预订设为已离开。分单结账时发送一张总额账单。如果发送失败,收银台每 15 分钟重试一次(持续两天),也可在“平台”中点击重新发送。
- 配对:收银台显示配对码;在 TheFork Manager 中填写(集成 → 收银)。TheFork 餐厅 ID(Customer-id)由管理员填写,或在第一笔订单时自动获取。
- 勾选项:自动开台、姓名、过敏信息和预付款作为备注、账单发送至 TheFork。
- 前提:Pin Voordeel 拥有 TheFork 的 API 密钥(仅限合作伙伴),并已在那里将收银台注册为 POS(管理门户中的按钮);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} 会自动填入)。
- 顶部栏的 候位名单 按钮,显示等候人数(有人等候时为橙色)。+ 加入候位:姓名、电话(用于短信)、人数、告知的等候时间 和 要求(露台、儿童椅)。
- 名单按登记顺序排列,显示每位客人已等多久(超过告知时间时为红色),顶部显示等候组数、人数和今天的平均等候时间。
- 短信发送失败时会显示原因。可以 重新发送短信。
- 入座:选择餐桌;收银机按人数(若收银机记录人数)开台,并以姓名作为组名(与到店的预订相同)。
- 离开(已离开或取消)和 恢复。名单下方显示今天已入座或离开的客人及其等候时长。
- 隐私:电话号码在一天后删除;12 小时后仍在名单上的客人会自动移除。登记、叫号(仅显示号码最后 3 位)和入座都会记入日志。
- 为什么不放在预订里?预订是针对以后(日期、时间、提前定桌);候位名单是针对现在(顺序、等候时间、有空桌时发短信)。因此有单独的开关和按钮,开台方式与预订相同("开台")。
- 在线候位(可选,默认关闭;仅限开通网店时):开启 客人也可以通过网店自行登记 后,网店中会出现 候位名单(另有一个可放在门口的二维码,见网店管理中的“餐桌和二维码”)。客人填写姓名、电话、人数和要求,并实时查看自己的位置。在收银系统中,该客人在名单中带有 在线 标记;叫号、安排入座和离开照常操作,客人也会在手机上看到(也可以在手机上取消登记)。
会员卡 / 积分
在 设置 → 门店 → 会员卡 / 积分 中开启(默认关闭,关闭时任何地方都不会显示)。在这里还可设置:每欧元积分(0 = 仅集章卡)、多少积分可换一次奖励,以及该奖励抵扣多少欧元。
- 在收银台,小票上方有 “+ 会员卡”:按姓名或电话号码搜索顾客,或新建顾客(姓名,电话和邮箱可选)。之后小票上会显示顾客姓名和积分余额。
- 兑换:积分足够时显示“兑换 100 积分:减 € 5”;集章卡集满时显示“免费咖啡”(小票上必须有这杯咖啡)。兑换后生成一条折扣行;任何人都可以再删除它。
- 积分和印章在结账时才会累计和扣除:积分按折扣后的金额计算(不含售出的礼品卡),印章按带集章卡的商品件数计算(免费商品不计)。
- 小票上显示:本次积分、已兑换、余额以及集章卡进度。
- 报表 → 顾客(权限 管理会员卡):搜索顾客、修改资料、更正积分(需填写原因)、查看历史,以及删除(GDPR:删除姓名、电话和邮箱;历史记录匿名保留)。下方是各商品的集章卡(例如 10 杯咖啡 = 1 杯免费)。
- 退货不会自动扣回已累计的积分;如有需要,请在 报表 → 顾客 中更正。
- 带卡号的会员卡(可选):在 报表 → 顾客 → (顾客) 中填写 卡号(或在该栏扫描卡片)。使用条码扫描枪时,扫描该卡即可将顾客关联到账单,收银台和自助点餐机均可。也可以在 + 会员卡 中按卡号搜索。
客人档案:VIP、饮食要求和偏好(可选)
在 设置 → 门店 → 客人档案 中开启,位于会员卡下方(默认关闭;仅在会员卡开启时有效)。之后:
- 在点单界面中,已关联的顾客下方会显示 "+ 客人档案":勾选 VIP,选择 饮食要求(素食、纯素、鱼素、清真、犹太洁食)和 过敏(14 种过敏原),并输入 偏好(例如 "靠窗的固定座位",最多 300 个字符)。之后这些信息会显示在点单界面的顾客旁,过敏以红色显示。也可在 报表 → 顾客 → (顾客) → 客人档案 中修改。
- 点选含有客人过敏原的商品时(见每个商品的过敏原),收银系统会先询问是否仍要添加。仅依据商品中已填写的信息;如有疑问,请务必询问厨房。
- VIP 会在平面图上显示 ★:在未结账单上,以及该顾客显示出的预订上。预订的客人到店后,收银系统会将预订中的顾客关联到账单。
- 饮食要求和过敏(以及 VIP)会打印在厨房和吧台的 厨房单 上:
GAST: VIP · Vegetarisch · allergie: Noten。 - 饮食要求和过敏信息属于健康数据:仅在客人同意后填写。日志中只记录档案已被修改,不记录具体内容。删除顾客时也会删除其客人档案。
收藏 / 快捷按钮
默认关闭。设置 → 门店 → 常用 / 快捷键:
- 热销:分类栏最前面显示 ★ 常用 按钮,包含最近 14 天销量最高的 12 个商品(自动更新)。点单界面默认打开常用。
- 自选:在点单界面长按商品(或右键单击),选择 ★ 常用(快捷键);再选一次 = 移除。需权限 管理商品。所有收银台立即可见。
- 点选、选项、套餐、欢乐时光和“售罄”在常用中的用法与普通分类完全相同。
再来一轮
点单界面上有 ↻ 再来一轮 按钮(账单上一有内容就显示,即使尚未下单)。点一下即可把最近一轮(一次“下单”发送的全部内容,或刚刚点选的内容)再次作为新行加入;然后照常点 下单。价格按当前价格计算(包括欢乐时光)。
- 长按(或右键单击):自行选择。用 ◀ ▶ 可翻看之前的轮次,每个商品可单独开/关(例如取消勾选餐食),数量用 − / + 调整。选项和备注一并带上。
- 已售罄的商品和套餐不会带上(套餐请单独点选)。无网络时也可使用。
- 这些行会按账单上的样子添加:开启相同商品合并时,每种商品一行(2 Cola);关闭时,每行单独列出(2 次 1 Cola)。
平面图上的用餐时长
每张占用的桌台上显示 ⏱ 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 记录(默认关闭)。
- 测量点(管理员):例如冷库、冷冻柜、保温、加热后的中心温度、再冷却和收货,可设置最低和/或最高 °C 以及频率(每天、每天两次、每周或使用时)。添加标准清单 会提供一个起点(冷藏最高 7 °C,比利时最高 4 °C;冷冻最高 -18 °C;保温不低于 60 °C;加热不低于 75 °C)。
- 清洁与检查:按天、按周(可指定固定日期)或按月的任务,包含区域和说明,例如砧板消毒、油烟过滤器、虫害检查、温度计校验。
- 记录(所有已登录人员):顶部栏中的 HACCP 按钮,显示今天仍待处理的数量。填写温度或勾选任务(已完成 或 未完成)。如果温度超出限值,必须填写纠正措施(例如 "关上门、丢弃产品")。记录无法修改;如有错误,请新增一条记录进行更正。
- 概览(需要 按时段营业额 权限):按时段显示所有记录、偏差数量以及每天的 遗漏记录;可导出为 CSV(Excel)或 打印 / 保存为 PDF,以备检查。
酒头系统和流量计
打酒电脑或流量计上报的每次打酒都会记到账单上,杜绝"跑冒滴漏"。在设置 → 酒头系统中开启(默认关闭)。
- 数据源(管理员):打酒控制器或流量计系统。选择品牌后,收银系统会自动填入预设。来自荷兰和比利时的有:Van Duijnen Horeca(打酒自动化,Dashbar)、Beconet (Multi-Tap), TapSystems, Horecatechniek Nederland, Heineken SmartDispense, WeissBeerger / AB InBev 和 BarTrack;此外还有 Gruber, Addimat, WMF / Hogatron (E-Protokoll), Drinkotec (ex-Hartec), , Berg, Easybar, Azbar, Scanabar, PourMyBeer, iPourIt, BeerBoard, US BeerSAVER, Bevchek, Capton/BarVision, Kegtron, Kegbot Kegboard、"智能酒头"或自有系统。共有五种连接方式(Kegboard:见下文定量打酒与 Kegboard):
- 字段:
kraan(或tap、plu)、ml(或cl、liter、volume加eenheid)或porties、id(同一次打酒发两次 = 只记一次)、tijdstip、tafel、bediening;可发送单条、列表或{ "taps": [...] }。 - 网络(TCP):收银台连接打酒电脑(地址和端口),或自行在某端口监听。
- 串口:COM 口或 USB 转串口,1200–115200 baud,8N1、7E1 或 7O1。
- 使用网络和串口时,需要设置消息格式(每行一条消息,或 STX … ETX,可选 XOR 校验和 ACK/NAK 回传)以及消息的模式,包含
kraan或plu部分,可选ml、cl、liter、porties、tafel、bediening和id(例如kraan;ml,或每杯只发一个 PLU)。供应商只向安装商提供确切格式,请向打酒电脑供应商索取。测试打酒会像打酒电脑一样发送一次打酒。
- 字段:
- 酒头(管理员):为每个酒头或 PLU 设置商品及上单方式:按杯(杯容量 ml;打酒 520 ml、杯 250 ml = 2 杯;达到 50% 即计一杯)或按升(商品价格为每升价格;账单上显示例如 "Pils 0,33 l" 及正确金额)。
- 上单:如果打酒电脑上报了桌号,打酒会直接加到该桌的未结订单。否则显示在已打酒中:点单界面会出现"… 次打酒未上单"提示栏;选择打酒记录并点击加到此单。这些行立即变为已点状态(不再向吧台发送工单),并扣减库存。顶部栏的已打酒按钮显示所有尚未上单的记录。
- 报损(权限作废):冲洗、破损、试饮、员工、免费或其他(需说明);会记入日志。不足一杯的量(例如冲洗)必须报损。
- 概览(权限按期间营业额):按酒头显示已打、已上单、已报损(按原因)、已取消和未处理的量,以升为单位,并显示售出百分比,可导出为 CSV。
- 已上报的打酒记录不可修改(只能处理)。
定量打酒与 Kegboard
启用定量打酒后,只有在收银台录入该杯酒之后酒头才会打开,并且只放出该份量。这样就不会打出账单上没有的酒。仅在酒头系统开启时有效,需按酒头单独开启(默认关闭)。
- 按酒头(管理员,设置 → 酒头系统 → 酒头):勾选定量打酒,并选择录入后酒头可保持打开的时长(10–600 秒,默认 120)。使用 Kegboard 时还需填写继电器(电磁阀)。定量打酒只能按杯进行。
- 录入:在下单(或直接结账)时,收银系统会为每条含该商品的账单行创建一个放行(杯数 × 每杯 ml),并发送给打酒控制器。之后收到的打酒记录归属于该账单行。因此不会再次加到账单上,也不会计入“已打酒”。没有放行的打酒照常计入已打酒。
- 在打酒前对该行作废:酒头会重新关闭。未按时打酒的放行会过期;酒头绝不会事后再打开。
- 点单界面中的放行(账单上方的一栏):查看进行中的放行,可停止或重新放行。只有在尚未打酒时才能重新放行,因此绝不会多放行。测试放行(管理员)在没有账单的情况下放行一杯;这会记录在日志中。
- 放行如何到达打酒控制器:
- Kegboard(Kegbot,开源,带流量计和电磁阀的 ESP32;完全公开的协议):收银系统针对含该商品的酒头、继电器和份量下发 grant。达到份量或时间到时,控制板会自行关闭酒头。
- 网络/串口:可配置的放行指令,含
{kraan},{ml},{porties},{sec}和{id}(例如V{kraan};{ml}),按数据源的消息格式发送(单行或带 XOR 的 STX … ETX)。还可选配停止指令。具体指令由供应商提供。
- 配对 Kegboard:在 + 来源 中选择品牌 Kegbot Kegboard。主板会在来源处出现;点击 允许(或 拒绝)。主板随即一次性获得专属密钥,收银机只以 hash 形式保存。其他设备或错误的密钥不会改变已配对的主板;如果主板丢失了密钥,请先使用 解除配对。来源会显示主板的固件、计量器和继电器。酒头即 计量器编号(0、1 …)。在主板上刷卡会被拒绝:请在收银台结账。如果酒头系统关闭,主板会保存消息并稍后发送。
- 在来源中设置无流量多少秒后关闭酒头(5–300,默认 30)。为每个酒头填写计量器编号、继电器(电磁阀)以及点单后酒头可保持打开的时长。
在收银台控制音乐
员工在收银台的触摸屏上控制音乐,吧台无需单独的屏幕。在 设置 → 门店 → 屏幕与操作 → 在收银台控制音乐 中开启(默认关闭)。开启后顶部栏会出现 音乐 按钮:每个音源(例如 吧台 和 露台)都有 播放、暂停、下一首、上一首、调大、调小 和音量滑块,并显示正在播放的内容。返回收银台 关闭面板。关闭此功能后音源会保留。
- 播放列表(Sonos、Bluesound 和 VLC):包含当前播放内容的队列。点击一首歌即可播放;点击 编辑 可移除歌曲(✕)、上移或下移(↑ ↓;Sonos 和 Bluesound)或清空播放列表。点击 选择其他音乐 可播放 Sonos 收藏(例如电台或 Tunify 频道)或 Sonos 歌单,或 BluOS 预设。
- 在单独屏幕上:相同的控制和大号播放列表,地址为
http://<kassaserver>:3000/muziek,例如在收银台旁的第二台显示器或吧台的平板上(若该设备已登录则直接使用,否则需输入 PIN 码)。 - 在平板或手机上:显示一个二维码,包含该单独屏幕在店内网络中的地址。员工用自己的平板或手机(连接店内 wifi 网络)扫描,并用自己的 PIN 码登录;点 退出登录 即可关闭。参见“平板或手机上的第二屏幕”。
管理员通过 + 音源 添加音源,选择连接方式,并用 测试 进行测试:
- Soundtrack (soundtrack.io):通过公开 API,使用 API 令牌(向 Soundtrack 申请)和音区(加载音区)。播放、暂停、下一首、音量及正在播放的内容。
- Sonos:音箱的 IP 地址(如为组合:主控该组合的音箱)。适用于 Sonos 上播放的所有内容,例如 Tunify、Spotify 或电台。
- Bluesound (BluOS):播放器的 IP 地址;同样适用于其上播放的所有内容,例如 Tunify。
- 音乐电脑上的 VLC:开启网页界面(工具 → 偏好设置 → 显示设置:全部 → 界面 → 主界面:Web,并在 Lua 下设置密码);IP 地址(必要时加
:poort,默认 8080)和密码。 - 自有音乐电脑(网址):适用于每个按钮对应一个网址的音乐电脑或音乐盒;GET 或 POST,音量则在地址中使用
{volume}(0-100)。若没有调大/调小的网址,收银台按步长设置音量。 - 音乐套餐的网页播放器:网页播放器或控制页面的网址(例如 Tunify 或 Media Tools 的网页播放器)在收银台点击音乐按钮打开;若该服务不允许嵌入其他页面,则使用 在单独窗口中打开。
收银台通过服务器与播放器通信,因此播放器必须与收银台处于同一网络(Soundtrack 通过互联网)。所有已登录的人都可以控制;设置则需要 门店、支付和打印机设置 权限。令牌和密码绝不会再显示在屏幕上或日志中;日志只记录设置(开启/关闭、音源),而非每次按键。配置导出只包含开启/关闭(音源属于单个门店)。
平板或手机上的第二屏幕
音乐和摄像头也可以在员工自己的平板或手机上打开,作为收银台旁的第二屏幕。在 音乐 或 摄像头 窗口中有 在平板或手机上 按钮:它会显示包含地址的二维码,例如 http://192.168.1.20:3000/muziek 或 .../camera。
- 将平板或手机连接到店内的 wifi 网络。
- 用摄像头扫描二维码(或在浏览器中输入地址)。
- 用您自己的 PIN 码登录。您只能看到有权限的内容:音乐所有人可用,摄像头仅限拥有 查看摄像头画面 权限的人。
- 完成:点右上角的 退出登录。如果登录已过期(例如平板闲置了一夜),屏幕会再次要求输入 PIN 码。
提示:将页面添加到平板的主屏幕(在浏览器中:添加到主屏幕),之后它会像应用一样打开。
因此收银系统会查询收银电脑在网络中的 IP 地址(如果电脑有多个地址,例如 wifi 和网线,请选择网络)。在管理门户(远程收银)上则是门户的地址。二维码由收银系统自行生成,无需联网。
配对平板:一键发送到平板(可选)
更简单:将平板配对一次,收银台即可一键把音乐或摄像头画面发送到该平板。在 设置 → 门店 → 屏幕与操作 → 平板作为第二屏幕 中开启(默认关闭)。
- 在平板上:打开
http://<kassaserver>:3000/tablet(该设置旁有带二维码的 在平板或手机上),用 PIN 码登录并为平板命名,例如 吧台平板。点 配对。 - 在收银台上:音乐 或 摄像头 窗口中现在有 发送到 吧台平板 按钮(平板开启时带绿点)。点击后平板会自动打开该画面。音乐会一并带上所选来源(例如:露台)。
- 在平板上:关闭 返回等待状态;取消配对此平板 会移除配对。
请保持平板上的页面打开;如果平板已关闭或休眠,重新开启后会立即打开该画面。平板保持以在其上登录的员工身份登录:只有拥有 查看摄像头画面 权限才能发送和查看摄像头画面。管理员可在该设置处查看已配对的平板及其是否开启,并可重命名或移除。平板保存自己的密钥;收银台只保存其哈希值。关闭此功能后,已配对的平板会保留。日志中记录了谁配对、重命名或移除了平板。
外带叫号屏
面向顾客的屏幕,左侧为制作中,右侧为完成,号码醒目,就像小吃店或快餐店那样。在设置 → 门店 → 屏幕与操作 → 外带叫号屏中开启(默认关闭)。
无需配对:在带浏览器的电视(智能电视、电视棒或迷你电脑)、平板或第二台显示器上打开收银台地址加 /oproep,例如 http://192.168.1.20:3000/oproep。在该设置和叫号窗口中有在单独屏幕上和在平板或手机上按钮(带地址的二维码)。无需登录:屏幕只显示号码。轻触屏幕一次后,浏览器即可播放声音。
显示内容:
- 来自收银台、网店和 Thuisbezorgd 的外带订单(如需要,也包括快速销售时无桌台的柜台订单),限最近 12 小时;
- 一旦有菜品发送到厨房或吧台(或网店状态为制作中),号码即显示在制作中下;
- 当厨房显示屏报告整笔订单完成或网店订单状态为完成时,会自动变为完成。号码会短暂闪烁,屏幕发出“叮咚”声;
- 完成的号码按设定的分钟数保留(默认 10),或直到已取餐;
- 点餐机订单(参见 自助点餐机)一旦已付款或将在收银台付款就始终显示,"堂食"也一样,并显示小票上的取餐号;
- 可选:也显示 Thuisbezorgd、Uber Eats、Deliveroo 和 HubRise 配送员的订单(勾选也显示配送员的订单…):显示平台订单号,下方是平台名称,让配送员看到订单何时准备好。此时已取走也会通知平台配送员已取餐(与平台窗口中相同)。
号码:网店、Thuisbezorgd 和外卖平台使用顾客或配送员已有的订单号;否则使用取餐号(1 到 999)。取餐号会大字打印在小票上,并说明订单准备好后号码会显示在屏幕上(使用小票语言)。
可选(默认关闭,在设置中):
- 语音播报号码:有新号码完成时,屏幕会用所选语言(荷兰语、英语、德语、法语、西班牙语、意大利语、葡萄牙语、波兰语、土耳其语或阿拉伯语)播报,例如"Nummer 42…"。语音来自屏幕的浏览器,不同设备听起来不同;打开后请点击屏幕一次。如果也开启了声音,会在提示音之后播报。
- 手机上的订单状态:小票上的取餐号下方会出现二维码。顾客扫描后可看到自己的号码和状态(已下单、制作中、已完成、已取餐),订单完成时会收到通知。此功能通过管理门户运行,因此收银系统必须已连接门户。不适用于网店和 Thuisbezorgd(它们有自己的状态),也不适用于点餐机(它有自己的设置)。
收银台上有叫号按钮(显示仍在制作中的数量):
- 完成手动将号码设为完成(没有厨房显示屏时,或这样更快时)。对于网店或 Thuisbezorgd 的订单,状态会同步更新,顾客也会收到通知。
- 退回将其重新放回制作中。
- 已取餐将其从屏幕移除(可撤销)。
在该设置中还可选择是否在号码旁显示名字(默认不显示,以保护隐私)以及屏幕是否发出声音。关闭后:没有“叫号”按钮,小票上也没有取餐号;设置会保留。日志中记录了谁手动设为完成、退回或已取餐。
打卡上下班
打卡默认关闭:此时收银台中任何地方都看不到(顶部栏无按钮,登录界面没有,也没有“工作时间”标签页)。在 设置 → 门店 的 员工打卡上下班 中开启:
- 关闭:不使用。如果之后关闭打卡,它将不再在任何地方显示,但已打卡的工时会保留(不会删除任何内容);重新开启后,这些工时会再次出现。
- 开启:员工可以上下班打卡。登录后收银台会询问是否要上班打卡(可选 以后再说)。顶部栏会显示 上班打卡 或 已上班打卡 17:02;点击即可下班打卡。
- 强制:登录后必须先上班打卡,否则无法使用收银台。下班打卡会立即退出登录。
不使用收银台的人(例如厨房)在登录界面打卡:点击 上班 / 下班打卡 并输入 PIN 码。会在上班和下班之间切换,无需登录。
开启打卡后,管理员可在 设置 → 工作时间 中查看:
- 谁正在上班(并可为忘记打卡的人下班打卡);
- 每位员工在某期间的工作时长,含所有班次,并可下载 CSV(工时也以小数显示,便于工资核算);
- 修改或添加班次(点击某个班次,或 + 添加班次)。每次修改都会连同新旧时间记入日志。
在比利时,每次上下班打卡也会报送给黑匣子。如黑匣子无法连接,打卡将无法完成(与结账相同)。这是否完全符合比利时的员工登记规定,尚待确认。
称重和标签(电子秤)
开启秤后(设置 → 秤),商品可以设置每公斤价格。其他商品仍按件计价。
- 称重:点击按公斤计价的商品(按钮显示如
12,95/kg)。称重窗口实时显示秤的重量(如 Aclas OS6X,或收银系统本身运行其上的秤);绿色 = 稳定。把商品放到秤上,重量稳定后点击添加。价格为每公斤价格 × 重量(四舍五入到分);商品的容器(皮重)会自动扣除。商品如有选项,随后出现。 - 多台秤:如有多台秤,在窗口顶部选择用哪台称重。每台收银机/平板会记住自己的选择。
- 手动输入:没有秤(或允许手动输入)时,直接输入重量:
0,512或1,2表示公斤,512或512 g表示克。 - TS6X 的标签:在点单界面用条码扫描枪扫描标签上的条码(直接扫描即可,无需打开任何窗口),或点击 标签,扫描或输入 13 位数字。商品(PLU)和重量取自标签。如标签上有价格,收银台就按该价格收费。
- 屏幕、小票和顾客屏上都会显示重量,例如
Gehakt 6,63,下方为0,512 kg x € 12,95/kg;厨房单上显示0,512 kg Gehakt。拆分、转移和退货都按公斤计。 - 称重商品只能在连接收银服务器时使用(重量通过收银服务器获取)。
Uber Eats、Deliveroo 和 HubRise
除 Thuisbezorgd.nl / Takeaway.com 外,来自 Uber Eats(荷兰和比利时)、Deliveroo(仅比利时;Deliveroo 已于 2022 年底退出荷兰)以及 HubRise 上的所有平台(如 Uber Eats、Deliveroo、Just Eat/Takeaway.com 及小型点餐应用)的订单也会进入收银台。每个平台可在设置 → 外卖平台中单独开启(默认关闭;关闭后所有内容都会保留)。该选项卡显示每个平台在哪些国家可用,如果在门店所在国家不可用会发出警告。
- 开启后,点击登录 Uber Eats 并关联门店(门店使用自己的 Uber Eats 账户登录)。如果账户下有多个门店,请填写门店 ID(store id)并重新登录。为此,Uber Eats 须先批准 Pin Voordeel 成为合作伙伴。
- Deliveroo:直连,经由门户。填写站点 ID(location id)和品牌 ID(brand id)。不使用平板(默认):由收银台接单或拒单;使用平板:门店在平板上接单,门户只报告订单是否已进入收银台。
- HubRise:收银台自行拉取订单(每 20 秒一次,无需门户)。
- 每个平台可设置:自动接单、厨房单立即发往厨房/吧台,以及(Uber Eats、Deliveroo)修改后自动发送菜单和立即发送菜单。菜单包含在Uber Eats 和 Deliveroo 菜单上的商品中勾选的商品及其选项;售罄状态也会同步。
订单。订单会成为普通订单(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。
自动收款机(封闭式现金管理系统)
默认关闭:现金照常处理。使用封闭式现金管理系统时,员工不接触现金:顾客或员工将现金放入收款机,收款机点钞、验伪并找零。
- 收银机直接通信的收款机:
- CashDro(3、4+、5、7、S Compact;NuKassa、KluisKassa):通过网络(web service)。在 CashDro 上开启 Web Integration,并为收银机创建专用用户。
- Cashmatic(SelfPay 460/860/1060;比利时为 Xpos):通过网络(端口 50301),使用 Cashmatic 上的用户。
- Azkoyen Cashlogy(POS1000、POS1500):通过收款机旁 Windows 电脑上的 CashlogyConnector(端口 8092)。
- CashKeeper:通过 Windows 电脑上的 CKMonitor(端口 16501)。
- Glory CASHINFINITY(CI-5、CI-10、CI-10X;也可通过 Cikam):通过收款机的控制器(FCC)。仍为 beta:请让 Glory 或你的经销商检查首次对接。
- 外部:由其他软件控制收款机并与收银机通信(例如 Cikam、支持 25 个品牌的 ImaCash、CashGuard/StrongPoint 的软件(Merlin)、PayComplete(SUZOHAPP)、Gunnebo SafePay,或 CashMag 等法国品牌)。
- 模拟收款机:无需硬件,用于练习或演示。用 测试连接 检查地址和登录信息。把收款机放在自己的网络中(绝不向互联网开放),并为收银机使用专用用户,不要用管理员。
- 使用 现金 结账:在自动收款机付款 按金额启动付款(若开启现金取整则为取整后金额,加上小费;分单时为该部分)。屏幕显示已投入和退回的金额;只有收款机报告 完成 后收银机才结账。取消 = 收款机退还现金。如果收款机无法找回全部零钱(硬币不足),会显示需从钱箱中找给多少。已成功但尚未结账的付款(例如平板断电)会在该订单中找回。
- 现金只能通过收款机收取(默认开启):收银服务器只在该订单、该金额在收款机付款成功时才接受现金。关闭 = 也可以把现金直接放入钱箱。
- 钱箱(报表 → 现金,权限 管理钱箱):查询存量(按硬币和纸币,适用于 Cashmatic、Cashlogy、Glory 和模拟收款机),带原因 取出(例如钱箱用零钱),补充 和 清机(保留找零;适用于 Cashmatic)。钱箱应有金额 不包括收款机中的现金(另行列在下方:在自动收款机中),但包括必须从钱箱中找出的零钱。
©按钮
每个界面(PIN 码、平面图、点单和厨房)右下角都有一个小 © 按钮。点击可查看 OptimumPOS 的信息:标志、地址、电话、邮箱和网站。图标保存在应用本地,因此无网络也能显示。该图标同时也是应用图标(标签页和主屏幕)。
第 2 部分 · 经理
快速上手
经理默认可以做服务员能做的所有事,此外还可以给予折扣、办理退货、日结、管理钱箱以及查看日志和库存等。这些主要在 报表 按钮下:
- 中间报表 (X):截至目前的营业额,不进行日结。
- 钱箱:备用金、存入/取出现金以及打开钱箱。
- 日结 (Z):在一天结束时进行;之后开始新的一天。
- 历史 Z 报表、按期间营业额和仪表盘。
- 日志、礼品卡和顾客。
库存
默认关闭。通过 设置 → 门店 → 库存管理 开启。关闭 = 收银台中任何地方都不显示。
- 每个商品在 设置 → 商品 → (商品)→ 库存 中选择:
- 否:与以往相同;
- 按商品:每卖出一件扣减 1(例如瓶装、罐装饮料),并可设置“即将售罄”的提醒数量;
- 按原料:使用配方,例如 汉堡 = 1 个面包 + 150 g 肉 + 1 片奶酪。每卖出一份扣减相应原料。
- 设置 → 库存(权限 管理库存,默认经理和管理员):
- 商品和原料:当前库存,标有售罄 / 即将售罄;可筛选“仅(即将)售罄”并导出为 CSV。
- 每个商品或原料可登记 入库 (+)(到货)、盘点 (=)(清点数量成为新库存)或 报损 (−)(破损、过期;必须填写原因)。
- 创建原料时设置单位(个、g、kg、ml、cl、l、份、瓶、桶)和提醒数量。
- 历史记录:所有库存变动(销售、作废、入库、盘点、报损),以及操作人和时间。管理操作也会记入日志。
- 扣减在下单时进行(直接结账的商品在结账时扣减)。作废会加回库存。拆分和转移不会重复扣减。套餐扣减的是各道菜品,而不是套餐行。退货(红字小票)不会加回库存(退回的东西通常不能再卖);如有需要可登记为入库。
- 库存售罄(或某原料不够再做一份)时,该商品会在所有收银台自动显示为售罄。即将售罄时,商品按钮上显示还剩 N。入库或盘点后立即可再点。收银服务器也会拒绝该商品(“Pils”已售罄(库存 0)),所以即使平板还不知道也不会卖出。
- 库存可能低于 0(例如两台平板同时下单,或离线下单);盘点后会恢复正确。
- 订货单:设置 → 库存 → 订货单。对每个商品(按商品)和每种原料,除提醒数量外还可设置补货至和供应商。订货单按供应商列出所有达到或低于提醒数量的项目(未设提醒数量时:库存为 0),建议数量为补货至 − 当前库存。数量可修改,也可勾选/取消。然后可打印(小票打印机)、复制(用于邮件或 WhatsApp)、导出 (CSV),到货后点 已送达:记为入库(一次性全部入库)。勾选顶部的复选框,还能看到尚未售罄的项目,以便额外订货。
- 选项:在选项组(设置 → 商品 → 选项)中有 库存 按钮。为每个选项设置每件所用原料,例如 加奶酪 = 1 片奶酪,薯条 = 150 g 薯条。选中该选项时,按件扣减这些原料(即使商品本身不管理库存;作废时会加回)。如某原料已售罄,该选项在收银台显示为(售罄),无法选择。
向供应商订货
默认关闭。在 设置 → 库存 → 向供应商订货 中开启(仅在开启库存管理时)。关闭 = 订货单照常使用。
- 供应商(供应商 选项卡):从列表中选择或创建自己的供应商。列表包括批发商和现购自运(Sligro、Sligro-ISPC/Sligro-M、HANOS、Makro、De Kweker、Horeca Totaal、Van Zon、zegro、Lekkerland)、餐饮供应服务(Bidfood 和 Bidfood Belgium、Solucious、Chefs Culinar、Java、Q-Food、Agora Culinair、VHC Jongens/Kreko/Actifood、Hocras、Van Hoeckel ...)、酒水批发商(De Klok、Henk Smit、Horesca、De Monnik、Hansen、Dranken Geers ...)、啤酒厂和软饮料(Heineken 经 Sligro、AB InBev/BEES、Alken-Maes、Haacht、Duvel Moortgat、Martens、Coca-Cola、Spadel、Grolsch、Bavaria)、生鲜供应商(Van Gelder、Driessen、FiliusKaas、Bakkers Brigade、Rungis ...)、非食品(Bunzl、Takeaware、Supplierz)、在线葡萄酒商店 Vinify.nl 和订货平台(Apicbase、Exact Horeko、Growzer、inOne、Cuisin.io、OrderXL)。只显示门店所在国家的供应商。选择后,订货方式、文件和列都已设置好;每个供应商都注明了如何订货。
- 每个供应商:客户编号、订货方式:
- 电子邮件:订单以电子邮件(含表格)发送到订货电子邮件地址,可选抄送,订货单作为附件:CSV、Excel、Care4Fresh 用 CSV(许多生鲜批发商)、UBL 2.1 Order(Peppol BIS Order)、EANCOM ORDERS(荷兰为 D96A,比利时为 D01B/HO2C)或 cXML。回复会发到门店的电子邮件地址。
- 文件:收银机生成文件,由你上传到供应商的网店(例如 Bunzl Snel bestellen:
artikel;aantal,Takeaware:SKU,Quantity)。分隔符、标题行和列均可设置(artikel、ean、omschrijving、aantal、eenheid、prijs、totaal;用artikel=SKU给标题自定义名称)。 - 对接(cXML):将带客户编号和共享密钥的 cXML OrderRequest 发送到供应商的订单地址,与采购系统发往 Sligro、HANOS 和 Bidfood 的方式相同。地址、客户编号和密钥由供应商提供(Sligro:koppelingen@sligro.nl)。密钥绝不会回显到屏幕上。
- 两种对接都可以设置用户名和密码(Basic)以及额外请求头(每行一个,例如
X-Api-Key: ...)。 - 上传(SFTP/FTPS):收银机自动将文件(EANCOM、UBL、CSV、Excel ...)放到供应商服务器上的文件夹中,许多批发商正是这样接收 EDI 订单的。SFTP(SSH)、FTPS(端口 21 上的显式或端口 990 上的隐式),或仅在本地网络中使用 FTP。使用密码或 SSH 密钥(OpenSSH、PEM 或 PuTTY .ppk;ed25519、ECDSA 或 RSA)登录。生成密钥会在收银机中生成一对密钥;公钥由您发送给供应商。测试连接会登录并查找文件夹。SFTP 服务器的指纹在首次连接时记录,之后进行校验(其他服务器无法获得密码);对于使用自有证书的 FTPS,您需要固定证书的指纹。无需额外软件。
- 打印:订单打印在小票打印机上,供电话订货。
- 密码、密钥、令牌和请求头永远不会回显到屏幕上(留空 = 保留,清除 = 删除)。
- 申请对接:收银机会为供应商起草一封申请对接(cXML、通过 SFTP/FTPS 的 EDI、UBL/Peppol 或供应商自有 API)的电子邮件,其中包含店铺信息(名称、地址、增值税号、客户编号、GLN)以及所需内容;EDI 申请附带公钥。修改后发送;副本和回复会发送到店铺的电子邮件地址。申请日期显示在供应商处。对于 Sligro,申请发送至 koppelingen@sligro.nl,否则请填写您的客户经理的地址。
- 自定义供应商(不在列表中)可以使用所有功能,但供应商本身必须提供的除外:电子邮件、文件和打印始终可用;对接或上传仅在有该供应商的信息时可用。
- 订货日和送货:订货日、截止时间、送货时间(订单上的期望送货日期)以及最低订货金额。自动:在订货日从该时间起,收银机会自动将订单准备为草稿(由您检查),或立即发送(通过电子邮件、上传或对接;低于最低订货金额时仅准备为草稿)。每个供应商每天一次。
- 按商品(设置 → 商品 → (商品)→ 库存,在 按商品 处)和按原料:订货供应商(供应商)、该供应商的订货编号、EAN、每包装数量(24 瓶装箱 = 24)、包装名称以及每包装的进价。提醒数量 表示该订货的时点;补货至 表示届时应达到的数量。
- 采购订单(采购订单 选项卡):
- 每个供应商的建议订单:所有处于或低于提醒数量的商品。已订购但尚未到货的(在途)也计算在内,避免重复订货。建议数量 = 补货至 − 库存 − 在途(未设 补货至 时:补到提醒数量),按整包装向上取整。调整数量后点 创建订单。
- 订单起初为已备好状态:数量、单独行(无商品,例如餐巾纸)、备注和送货日期仍可修改。然后点 发送(按供应商的方式,或这一次用别的方式)。如果失败(例如供应商拒绝),会显示原因,你可以重试。
- 接收:逐行填写收到的数量(默认为订购数量);库存按包装增加(2 箱每箱 24 = 48),历史记录中会附上该订单。
- 每个文件(CSV、Excel、UBL、EANCOM、cXML)也可以单独下载。
- 已发送、失败、已接收和已取消都会记入日志。普通的订货单继续可用;如果商品设有列表中的供应商,它会显示在该供应商名下。
评价管理
在收银系统中阅读和回复来自 Google 和 Trustpilot 的评价。在 设置 → 积分与评价 → 评价管理 中开启(默认关闭,关闭时任何地方都不会显示)。在 报表 → 评价 中阅读和回复(权限 阅读和回复评价,经理默认也拥有)。关闭后,连接和评价仍会保留。
- 之后,每家门店只需点按连接 Google,并使用商家资料自己的 Google 账号登录。Places 密钥也可以集中设置(费用由供应商承担)。Trustpilot 按门店设置:每家门店都有自己的 Trustpilot Business 账号(API 需要付费订阅),密钥、机密和 business user ID 都来自该账号。收银系统中每种方式旁都标有"由谁设置?"。
- 供应商的应用(通过客户门户):如果客户门户中有供应商的 Google 应用和/或 Trustpilot 应用(参见 horecapos-portaal 的 README,"Reviews: apps van de leverancier"),管理员在登录与密钥中选择供应商的应用(门户有该应用时,新连接默认使用此项)。店铺点击连接 Google或使用 Trustpilot 登录,并用自己的账户登录;收银机会自行等待登录完成(每 3 秒一次,最多 15 分钟),并从门户一次性获取 tokens。刷新也通过门户进行。收银机中无需 client-ID、secret 或 API 密钥;Trustpilot 仍需要域名,如需回复,还需要 business user ID。此时 Trustpilot 公开评价通过门户的密钥读取。需要
PORTAAL_URL和PORTAAL_SLEUTEL。自有应用或 API 密钥仍按下文所述方式工作。 - 评价归谁所有:评价保留在店铺自己的 Google 商家资料和自己的 Trustpilot 页面上,收银机只把它们保存在自己的收银数据库中。回复以店铺的名义显示。门户只转交登录(保存在内存中,最多 15 分钟,只能获取一次),不保存评价或 tokens;供应商应用的名称只显示在授权同意屏幕上。
- 自行注册:每个平台都有一个链接,可自行创建 Google 商家资料(business.google.com/create)或 Trustpilot Business 账户(business.trustpilot.com),Trustpilot 还有指向套餐的链接(business.trustpilot.com/plans)。注册和付款在平台上完成;这方面没有 API。
- 然后点击 连接 Google,并使用管理该商家资料的帐号登录。资料中只有一个门店 = 自动选中;有多个 = 在收银系统中选择。
- Google Places(仅可阅读):使用 Place ID 和 Places API 的 API 密钥(或
GOOGLE_PLACES_API_KEY):可获取平均分、评价数量以及 5 条最相关的评价。此方式无法回复。 - Trustpilot Business(阅读和回复):Trustpilot Business 中某个应用的 API 密钥和 API 密钥密文(Integrations → API;或
TRUSTPILOT_API_KEY和TRUSTPILOT_API_SECRET),店铺的域名(收银系统会自动查找 business unit),如需回复,还需回复人的 business user ID。 - Trustpilot 公开(仅可阅读):只需 API 密钥。
- 收银系统每 30 分钟获取一次(连接后也会立即获取;立即获取)。收银系统不会保存顾客的电子邮件地址和订单号(由 Trustpilot 一并提供)。
- 报表 → 评价:平均分、各星级数量、未回复和未读;可按平台、星级、未回复和未读筛选。每条评价可 回复(最多 4000 个字符;所有人都能看到)、修改回复、删除回复 和 已读。新的或被修改的评价会变为未读。日志中会记录 review_beantwoord 和 review_antwoord_weg。
- 断开连接后,已获取的评价仍会保留。
短信和邮件营销
向已同意接收消息的会员卡顾客发送消息。未开启会员卡时,两者都无法开启。
- 按顾客、按渠道征求同意:在收银机新建顾客时有勾选项 "顾客愿意通过短信接收活动" 和 "... 通过邮件接收"(默认不勾选)。在 报表 → 顾客 中可查看和修改同意状态(含同意日期)以及生日(仅日和月)。退订:取消勾选并保存。
- 菜单即时更新:开启或关闭营销或会员卡时,收银台会在几秒内将菜单重新发送到网店(仅在有变化时),使勾选框立即显示或隐藏。
- 通过网店授权:如果门店有网店,结账时会显示勾选框 "我愿意通过邮件/短信接收优惠信息"(仅显示已开启的渠道;默认不勾选)。收到此类订单时,收银台按电话号码(否则按邮箱地址)查找顾客,必要时新建顾客,并记录授权及日期。现有顾客缺少的电话号码或地址会被补全;日志中记录 klant_toestemming,来源为 webshop。
- 报表 → 营销(权限 管理会员卡):顶部显示有多少顾客同意接收短信和邮件。
- 活动(一次性):名称、短信或邮件、(主题、)含
{naam}、{zaak}和{punten}的内容,并可只发给一段时间未到店或积分达到一定数量的顾客。查看 显示涉及多少顾客、顾客收到的消息样式以及每位顾客的短信条数。发送测试 发到您自己的号码或邮箱。然后 发送:收银机在后台发送(每次最多 1000 条),并统计已发送和失败的数量。同一活动不会重复发给同一人;如果收银机中途停止,继续发送 会从尚未收到的顾客继续。 - 通过 Mailchimp 或 Klaviyo 发送(需连接所选列表,见下文):发送邮件活动时,在发送方式中选择收银台(自有邮件服务器,如上所述)或 Mailchimp 或 Klaviyo。收银台会先更新列表(退订、积分),然后在那里只为列表中被选中的顾客创建营销活动(Mailchimp:audience 上的固定分组;Klaviyo:为该活动单独建立的列表),并使用 audience 或账户的默认发件人发送。
{naam}和{punten}由 Mailchimp/Klaviyo 为每位顾客填写;服务的退订链接位于底部。没有每次 1000 封的限制,也没有个人优惠码({code})。如果失败,活动会保留为草稿并附上提示。只启用对接时也会显示营销选项卡(此时只能通过 Mailchimp/Klaviyo 发送活动;发送测试可使用收银台的邮件服务器)。自动消息始终由收银台自己发送;在 Mailchimp/Klaviyo 中请以 Customer Journey 或 Flow 创建。Klaviyo 密钥:还需 Campaigns 和 Templates 的写入权限(已登录过的请重新登录)。 - 通过网店以推送通知发送(前提是网店后台已开启含优惠的推送通知):在发送方式中选择推送通知(网店即 App),并填写标题(最多 60 个字符)和简短文本(最多 200 个字符;只会填入
{zaak},因为网店不知道顾客是谁)。收银台通过管理门户将活动发送至网店,网店再发送给在网店中开启以通知形式接收优惠的顾客;点按即可打开网店菜单。几秒后,活动中会显示送达数量。每天最多 3 条,与商家在网店管理中发送的合计;超出时活动保留为草稿并注明原因。即使只开启了此功能(没有会员卡或邮件营销),营销标签页也会显示。不支持折扣码或筛选(天数、积分);测试方法:在你自己的手机上,于网店中开启以通知形式接收优惠。 - 自动:生日祝福(生日当天,每年一次)和 "我们想念您"(连续多少天未到店后,每次顾客久未光顾时发送一次)。每条消息可单独开关;仅在白天(10:00–20:00)发出。
- 个人优惠码(可选,按消息或促销设置;仅当 设置 → 门店 中已开启优惠码时):每位顾客获得专属优惠码,例如
TERUG-7K4Q2M(生日JARIG-…,促销ACTIE-…),按百分比或固定金额,可设最低订单金额,仅可使用一次,发送后按设定天数有效(默认 30 天),可在收银台和/或网店使用。将{code}和{geldig}放在文本中您想要的位置;否则收银台会在消息下方加上 "Uw kortingscode: … (10% korting, aan de kassa of in de webshop, geldig t/m …)"。查看和发送测试会显示示例码(TERUG-VOORBEELD,无法使用)。如果发送失败,则不会生成优惠码。促销中会显示已发放和已使用的优惠码数量。 - 退订 说明附在每条消息下方:短信为 "退订?请致电 ... 或在下次光临时告知",邮件为指向门店邮箱的退订链接(Gmail 和 Outlook 中的 退订 按钮也可用)。回复邮件会发送到门店。
- 隐私(GDPR):仅限已同意且有号码或邮箱的顾客;日志中不记录号码或邮箱,但记录每个活动的发送和失败数量。删除顾客后,该顾客也会从发送名单中移除。
- 费用:短信通过您自己的 CM.com 账户发送(超过 160 个字符 = 每位顾客多条短信)。Gmail 和其他邮件服务器有每日上限;顾客较多时请分批发送。
按员工统计小费
在 设置 → 门店 → 小费 中(仅当“结账时显示小费按钮”开启时),可选择按员工的小费如何显示在中间报表 (X)、Z 报表(小票和邮件)以及按期间营业额(包括 CSV)中:
| 选项 | 分配方式 |
|---|---|
| 关闭(默认) | 只显示小费总额,与以往相同 |
| 各自的小费 | 本人结账的账单所收的小费 |
| 按工时分配 | 所有小费合并,按该期间的打卡工时分配(需开启上下班打卡;无人打卡 = 平均分配) |
| 平均分配 | 所有小费合并,在已打卡的人之间平均分配(未打卡时:在点过单或结过账的人之间分配) |
零头分给最接近下一分钱的人,确保总额始终一致。这只是一个概览:收银台不会发放任何款项(可用“从钱箱取款”)。旧的 Z 报表保持不变。
通过电子邮件发送 Z 报表
在 设置 → 门店 → Z 报表发送至 中一次性填写管理员的邮箱(多个地址用逗号分隔,最多 3 个)。之后每次日结,Z 报表都会自动发送到该地址,同时照常打印小票。留空 = 不发送,与以往相同。
- 邮件在后台发送,因此邮件服务器较慢也不会拖延日结。
- 发送失败或需要再发一次:报表 → 历史 Z 报表 → (报表)→ 重新发送邮件(带“副本”字样)。
当日摘要(可选)
如果在 Z 报表发送至 中填写了地址,其下方会出现勾选项 在邮件顶部附上当天的简短摘要(默认关闭)。开启 = 在 Z 报表邮件顶部用通俗的语言写几行,只使用收银系统自身的数据(不使用 AI,不向外发送任何数据):
- 营业额、小票数和客人数以及每张小票的平均消费,与一周前的同一时段对比(百分比);如果当时没有数据,也会注明;
- 最畅销的 5 个商品,以及值得注意的变化:与上周相比销量至少多或少 3 份的商品;
- 作废次数(与上周对比)和最繁忙的时段(小票数和营业额)。
Z 报表本身(小票和邮件)保持完全不变。今日预览 显示从上次日结到现在的摘要。摘要使用荷兰语,与 Z 报表邮件相同。
仪表盘
报表中的 仪表盘 标签页(权限 按期间营业额),只读:
- 每小时营业额图表:所选日期(蓝色)与上周同一天(灰色)对比。今天与上周同一时刻为止的数据对比,使百分比更公平。用 ◀ ▶ 或日期选择其他日期。
- 数据卡片:当天及所选期间的营业额(与上周相比 ± %)、小票数和平均每张小票金额、每位客人平均消费(仅堂食;外带/配送不计)。
- 最近 7、28 或 90 天的前10名商品和高峰时段。高峰时段是一张 星期 × 小时 的热力图(每个营业日的平均营业额),上方列出最忙的三个时段,便于排班。
售出的礼品卡不计入营业额,折扣和套餐行不计入前 10 名(与其他报表相同)。一天从 00:00 到 24:00。
附加报表
报表 中新增三个选项卡,每个都可以在 设置 → 门店 → 管理与报表 → 附加报表 中单独开启(默认关闭:此时不显示选项卡)。它们需要的权限与 按期间营业额 相同,并且只能查看。期间:本周、上周、本月、上月、最近 90 天、今年或自选(最长一年多一点)。
- 菜单工程:针对每个商品,比较其销量(占全部售出件数的比例)和每件带来的收益(毛利 = 不含增值税的售价减去成本)。每个商品都会被归类:明星(受欢迎且毛利高:保持不变)、耕马(受欢迎、毛利低:稍微提价或降低成本)、谜题(销量少、毛利高:加强展示)和瘦狗(销量少、毛利低:从菜单撤下或替换)。受欢迎 = 至少达到平均份额的 70%;毛利高 = 至少达到每售出一件的平均毛利。成本取自 Apicbase(设置 → 配方),否则取自商品进价(每包装进价除以每包装数量),再否则取自含进价的配料组成的配方(库存)。没有成本的商品单独列在最下方。可按商品分类筛选(
?groep=)。 - 活动与优惠码:按每个优惠码、营销中的每个活动(个人优惠码合并计算)以及每个欢乐时光统计:使用次数(单据数;欢乐时光还包括件数)、折扣金额、营业额以及每张单据的平均值。
- 损耗:从库存中报损的内容(设置 → 库存,报损 (−)),按原因(不区分大小写和空格)以及按商品或配料统计,并按成本计算价值;以及已发送到厨房或吧台后又被取消的内容,附销售价值和成本价值。
折扣
经理或管理员在点单界面的总额旁可以看到 % 折扣 按钮:
- 针对整张小票或单行;
- 按百分比(10、15、20、25、50、100% = 免费,或自行输入)或固定金额;
- 必须填写原因(员工、老顾客、投诉、促销、自用或自行输入)。
折扣在小票上单独成行(“折扣 10%”,下方注明原因),使用相同的增值税税率,使总额和增值税明细一致。整张小票的折扣按增值税税率分摊。删除:点击折扣行的金额。如取消带单独折扣的行,该折扣也随之取消。如从整张小票按百分比打折的小票中删除商品,收银台会按剩余部分重新计算该折扣(比利时 UC226);固定金额折扣保持不变,结账时重新分摊到各行。如因 100% 折扣无需付款,用“关闭(无需付款)”结束。折扣会记入日志,并在 X/Z 报表和期间概览中显示为“其中折扣”。退回带折扣的小票时,折扣按比例一并退回。
优惠码(可选)
对整张小票打折的代码,例如用于促销活动(ZOMER10)。在 设置 → 门店 → 优惠码 中开启(默认关闭);在 设置 → 优惠码 中创建代码(需管理商品权限):
- 按百分比或固定金额打折,可设置最低订单金额、有效期和最多使用次数(留空 = 不限);
- 每个代码:收银台和/或网店适用(收银台随菜单一起发送代码;使用次数由收银台和网店合计)。
点单界面上有 优惠码 按钮(任何人都可输入代码;代码由门店预先创建)。折扣以 "优惠码 CODE" 一行显示在小票上,并按增值税税率分摊;每张小票限一个代码,已(部分)付款后不能再使用。删除该行或取消订单后,使用次数不再计算。删除已使用的代码会将其停用(报表保持准确)。所有操作都记录在日志中(优惠码)。代码:lib/kortingscodes.ts, routes/kortingscodes.ts, Kortingscodebeheer.tsx, KortingscodeDialoog.tsx。
它们不会出现在 设置 → 优惠码 的列表中(但每个促销的数量会显示在 报表 → 营销 中),只要仍有效且未使用,就会同步到网店。
报表和日结
顶部栏的 报表 按钮:
- 中间报表 (X):自上次日结以来的营业额、增值税、支付方式、各分类数据和钱箱。也可打印。不会结束任何内容。
- 日结 (Z)(经理或管理员):清点钱箱(显示与备用金 + 现金的差额),填写次日备用金,然后日结。Z 报表获得连续编号,被保存并在小票打印机上打印。有未结订单时无法日结。可选:按硬币和纸币清点(清点助手)会自动填入清点金额;各硬币/纸币的清点结果也会显示在 Z 报表上。自行输入总额照常可用。
- 钱箱(经理或管理员,可选):
- 从钱箱取款(存入银行、支出、发放小费)或钱箱内现金(存入零钱),需填写金额和原因。钱箱会打开,并打印一张带签名栏的小票,与现金一起保存(可关闭)。这些金额计入钱箱应有金额,并逐行显示在 X 和 Z 报表上。
- 填写或更正今日备用金(通常在日结时为次日填写)。
- 无销售打开钱箱,需填写原因。
- 所有操作都记入日志。如不使用此功能,日结与以前完全相同(备用金 + 现金 = 钱箱应有金额)。
- 营业额下方显示客人数(已结账订单的人数)和每位客人平均消费,打印的 X/Z 报表上也有。
- 按期间营业额(经理或管理员):今天、昨天、本周/上周、本月/上月、今年,或自定义起止日期。显示营业额、增值税、支付方式、小费、客人数、商品分类、按天和按员工的数据。用 导出 (Excel/CSV) 可生成给会计的文件(分号分隔、逗号作小数点,可直接在荷兰版 Excel 中打开)。
- 历史 Z 报表:列出营业额和现金差额;可打开并打印副本(带“副本”字样)。
导出至会计系统
报表 → 按期间营业额 → 会计导出(日记账)(权限 按期间营业额)会生成一个 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 和 BE | journaal_…_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),NL | journaal_…_xaf.xaf | Belastingdienst 的审计文件(XSD XmlAuditfileFinancieel4.0):整个期间一个文件,包含总账、增值税代码、期间以及每天一笔转账凭证交易;可导入 Caseware、Exact Reeleezee 和 Visma Cash 等 |
| AccountView(XML),NL | journaal_…_accountview.xml | XML 分录(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.xml | UpdateConnector FiEntries(财务凭证)的 XML,每天一笔分录,包含年度、期间、账套和日记账;在 Profit 中通过“导入 → XML”读入;填写账套编号(默认 1) |
| Asperion(CSV),NL | journaal_…_asperion.csv | FMUTA 格式(Extra → Import financiële mutaties),每天一行表头加若干记账行;导入定义由 Asperion 通过客服设置 |
| 日报表(HTML),NL 和 BE | journaal_…_dagstaat.html | 每天一份易读的日报表(按增值税税率的营业额、支付方式、小费、现金差额)及合计;可打印为 PDF 或通过邮件发送,适用于无导入功能的软件(Accountable、Dext、Dexxter、Jortt、Kleisteen、MoneyMonk) |
| e-Boekhouden.nl (CSV) | journaal_…_eboekhouden.csv | 日期; 凭证号; 摘要; 总账科目; 金额(借方为正,贷方为负); 增值税代码 GEEN(增值税已记在增值税科目上);导入 → 分录,类型为转账凭证 |
| Exact Online (XML) | journaal_…_exact.xml | eExact-XML(主题 GLTransactions):每天在日记账中生成一笔转账凭证(类型 90);导入/导出 → 导入 XML |
| InformerOnline(TXT),NL | journaal_…_informer.txt | 制表符分隔的转账凭证(Geavanceerd → Memoriaal → uploaden);日记账必须是 1–99 之间的编号(否则为 90) |
| KING ERP(XML),NL | journaal_…_king.xml | KING_JOURNAAL:一个记账批次(非最终),每天一笔日记账分录 |
| KOMAS(CSV),NL | journaal_…_komas.csv | KOMAS 自由格式(0401 Importeren journaalposten):Datum; Grootboek; Omschrijving; Bedrag |
| Odoo(CSV),NL 和 BE | journaal_…_odoo.csv | 会计 → Journal Entries → Import records;日记账和科目按名称或代码对应 |
| Sage BOB 50(Excel),BE | journaal_…_bob.xlsx | Importation de données externes → Opérations diverses(列只需映射一次) |
| SAP Business One(ZIP),NL 和 BE | journaal_…_sapb1.zip | Data 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),BE | journaal_…_winbooks.csv | K_DOC.CSV,每天在日记账中一份单据(由 Winbooks 自行编号) |
| Yuki (XML) | journaal_…_yuki.xml | Journal-XML(GeneralJournal),每天一笔转账凭证,结构与实时对接相同;账套 ID 可选 |
概览:各会计软件的对接方式
按细分市场分组,按字母排序。NL/BE = 软件适用的国家:在 设置 → 会计 → 会计软件 中只显示适用于门店所在国家的软件(荷兰软件不适用于比利时,反之亦然)。实时 = 收银机每天自动记账(在 设置 → 会计 → 会计软件 中选择);需申请 = 有 API,但需先在供应商处完成合作伙伴注册或获得批准(请告诉我们)。文件 = 会计导出 中的格式。两者都可用时,你可以同时使用。该列表位于 packages/shared/src/boekhoudcatalogus.ts,也显示在 设置 → 会计 中。
| 软件 | NL | BE | 实时 | 文件 | 备注 |
|---|---|---|---|---|---|
| 中小企业和自雇人士 | |||||
| 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。每天结束后,收银机会将与上方导出相同的分录(按税率的营业额和增值税、支付方式、小费、舍入、钱箱和现金差额)作为转账凭证记入所选软件,使用 设置 → 会计 中的日记账和总账科目。任何时候最多只开启一款软件。
- 列表按细分市场分组(中小企业和自雇人士、国际、大型企业和连锁店),只显示适用于门店所在国家的软件;服务器会拒绝其他国家的软件(400),也不会用它记账(409)。管理员在其正下方会看到该软件所需的字段;连接操作和已记账日期列表位于总账科目下方,其下是本国所有软件的概览。如果更新时有两款软件同时开启(在旧版本中可以这样),Exact Online 保持开启,另一款软件将被关闭。
| 软件 | 国家 | 连接方式 | 收银机记什么 |
|---|---|---|---|
| Acumulus | NL | API 用户的合同代码、用户名和密码 | 每天一张已付款的销售发票,每个增值税税率一行;Acumulus 会将错误通过邮件发送到 ACUMULUS_FOUTMAIL |
| AFAS Profit | NL | 环境、令牌、账套 | 转账凭证(FiEntries) |
| Business Central | NL, BE | Microsoft Entra 应用的租户、环境、公司、客户端 ID 和密钥(API.ReadWrite.All) | 普通日记账中的行,使用“日记账”中的代码 |
| Exact Online | NL, BE | 登录(OAuth,自有应用:见下方 Exact Online;比利时:start.exactonline.be) | 记入日记账的转账凭证(例如 90) |
| Horus | BE | 登录(OAuth,应用见下文),可选档案 | 杂项业务 |
| Moneybird | NL | API 令牌,可选账套 | 转账凭证(general journal document) |
| Odoo | NL, BE | 地址、数据库、用户、API 密钥 | 记入使用简码的日记账的分录(例如 MISC) |
| QuickBooks Online | NL, BE | 登录(OAuth,应用见下文;QUICKBOOKS_OMGEVING) | journal entry;科目按编号 |
| SAP Business One | NL, BE | Service Layer 地址、数据库、用户、密码 | 日记账分录(JournalEntries) |
| Silvasoft | NL, BE | 用户和 API 密钥 | 向往来单位 Kassaverkopen 记销售凭证,每个增值税税率一行(支付方式、小费和现金差额不会同步) |
| SnelStart | NL | 连接密钥和订阅密钥 | 转账凭证 |
| Twinfield | NL | 登录(OAuth,应用见下文),可选办公室 | 日记账交易 |
| Xero | NL, BE | 登录(OAuth,应用见下文),可选组织 | manual journal;科目按代码 |
| Yuki | NL, BE | API 密钥,可选账套 | 转账凭证(GeneralJournal) |
| Zoho Books | NL, BE | 登录(OAuth,应用见下文;默认欧洲数据中心),可选组织 | 日记账分录;科目按代码 |
- OAuth(Horus、QuickBooks、Twinfield、Xero、Zoho):需在该软件处注册一次应用。
- 部分软件的 API 字段无法完全从公开文档中确认(包括 Horus、Zoho Books、Business Central 的正负号以及 SAP Business One 的结构):首次记账务必请会计核对。
- Exact Online:将分录作为转账凭证记入所选账套。
- 在 设置 → 会计 → 会计软件 → Exact Online 中选择(默认关闭)。比利时:收银机会自动使用
start.exactonline.be。 - 设置 → 会计 → Exact Online:连接 Exact Online 会打开 Exact 登录页面;之后会显示收银机已连接的账套。在 日记账 中填写 Exact 中转账日记账的代码(例如
90),并确保 Exact 中存在这些总账科目。 - 何时记账:日结 后立即记账,之后每小时一次,涵盖自 记账起始日 起所有已过去的日期(截至昨天)(默认为连接当天;更早的日期会计师已有记录)。每天只记一次;无营业额的日期会跳过。随时可点 立即记账。
- 错误(Exact 中不存在某科目、当日借贷不平、无网络)会连同原因显示在该日期旁;收银机稍后会重试,之后的日期会等到该日成功后再记(以保持顺序正确)。日志中记为:"exact_geboekt"。
- 增值税记在增值税总账科目上(不含增值税代码,与导出相同)。请让会计师检查最初几笔记账。
- Exact:只要收银机持续使用,连接就会一直有效(每 10 分钟更新一次令牌,每次都会获得新的 refresh token)。如果连接被撤销或长期未用,收银机会提示 重新连接。取消配对 会删除令牌;已记账的内容保留。
- 在 设置 → 会计 → 会计软件 → Exact Online 中选择(默认关闭)。比利时:收银机会自动使用
- AFAS Profit:环境编号(例如
12345;生产、测试或验收)、使用 UpdateConnector FiEntries 的应用连接器的令牌,以及账套编号(默认 1)。日记账 = AFAS 中转账日记账的代码(例如90)。 - 日记账 = 转账日记账的编号或名称;如果只有一个转账日记账,收银机会自动使用它。总账科目必须是数字。
- Twinfield:使用 OAuth 登录。没有该应用,收银机无法连接。收银机会查找集群和账套(留空 = 第一个);日记账 = 某个转账凭证日记账的代码(例如
MEMO)。以最终状态记账(destiny="final")。 - Yuki:账套的 API 密钥(Yuki → 设置 → Web 服务);账套留空 = 该密钥下的第一个。记入一笔转账凭证(GeneralJournal);Yuki 不使用日记账代码。
- 何时记账:日结 后立即记账,之后每小时一次,涵盖自 记账起始日 起所有已过去的日期(默认为连接当天;换用其他软件时也从当天重新开始)。每天每款软件只记一次;无营业额的日期会跳过;出错时原因显示在该日期旁,之后的日期会等待。随时可点 立即记账。日志中记为:"boekhoudpakket_geboekt"。
- 密钥和令牌绝不会显示在屏幕上(重新连接时留空 = 保持不变)。门户上的收银机副本不会记账。
收银审计文件(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):
- 主数据:门店(名称、增值税号、地址)、增值税代码、所有员工(含角色和创建日期;另有
SYSTEEM,代表收银机自身的操作,例如网店和对接)以及所有商品及其分组; - 事件:期间内日志中的全部内容(登录和退出、打开钱箱、日结、更改设置和价格、冲销、折扣、退货、小票副本、上下班打卡 ...)以及带备用金的收银日开启,每项都带有荷兰税务局的代码(18001 登录,18003 钱箱,18006 安装变更,18008 Z 报表,其他 18999);
- 收银交易:每张小票(销售、退货和形式发票,含小票号、员工以及不正常时的税务状态)及其所有明细行(商品、分组、数量、价格、增值税;也包括折扣、礼品券、菜单标题以及结账前取消的行,后者金额为 0),按税率的增值税、舍入、按付款方式的付款(现金、刷卡、礼品券、在线;小费单列)以及钱箱的存入/取出。
金额为正数,并标记 C(销售、收款)或 D(退货、付款);时间为带时区偏移的荷兰时间。所有键都是数据库中去掉连字符的 id,因此可以在收银机中查到。
签名(规范第 6 章):如果 Optimum POS 已设置证书,审计文件将以签名形式放在信封中(XML Signature),文件名为 …_ondertekend.xml;否则为单独的审计文件,收银机会在下载时提示。
挂账付款
企业客户(例如每周来取午餐的公司、酒店、协会)可以挂账购买,稍后凭发票付款。在 设置 → 发票 → 挂账付款 中开启(仅在 发票 开启时可用;默认关闭)。
- 客户:在 报表 → 挂账 中添加企业客户及开票信息(名称、地址、增值税号、KvK/企业编号、Peppol ID、电子邮件),可选设置 信用额度(最多允许的未结金额)和单独的 付款期限(否则使用发票的付款期限),以及是否立即发送发票。
- 结账:选择付款方式 挂账,再选择客户(显示已有未结金额和信用额度)。小票是普通销售:营业额和增值税计入当天,在比利时照常通过黑匣子(zwarte doos),小票上显示 "挂账"。收银系统会立即开具发票(UBL/Peppol 及可打印版本),包含仍未结的金额和到期日,并按发票设置发送(电子邮件、通过 Billit/Storecove/Banqup 或自有地址的 Peppol)。挂账是账单剩余部分的一笔金额(可先用其他方式支付一部分),不含小费;礼品卡不能挂账销售。超出信用额度时,收银系统会拒绝。
- 付款:客户在店内以 现金、刷卡或礼品卡 付款(报表 → 挂账 → 收到付款;也可部分付款)。这不是新的销售,也不会产生新的小票:现金计入钱箱(钱箱会打开),所有款项都显示在 X 和 Z 报表的 挂账收款 下。全部付清后,发票状态为 "已付"。不支持在线付款。
- 已转账:如果在 发票信息 中填写了 IBAN,发票上(以及 UBL 中)会显示该 IBAN,并附 "也可在店内付款"。如果客户已转账,请通过 收到付款 → 已转账(银行) 记录:不进钱箱,但会显示在 X 和 Z 报表的“挂账收款”下。没有 IBAN 时显示 "请在店内付款"。在比利时,发票和 UBL 中会包含 结构化附言(+++123/4567/89012+++,由发票号生成),以便银行随付款一并传送。
- 银行:无需手动录入即可核销转账,见下文。
- 储值(预存款):在报表 → 挂账 → 存入储值中为客户账户预存款项,可用现金(钱箱打开)或刷卡,例如用于一系列午餐。下次挂账销售时,储值先从发票中扣除;如发票金额更多,其余部分仍为未付。储值显示在客户处(储值 € ...),在 X 和 Z 报表中列于挂账收款下(已存入储值、使用客户储值),在日记账中记为预收(默认 1640 / 460000)。在比利时,存入作为现金收入(signMoneyInOut)发送到黑盒子(UC4100)。
- 汇总发票(按客户设置,默认关闭):开启 所有小票合开一张发票 后,挂账销售时客户暂不收到发票。小票挂在客户名下(尚未开票的小票,计入额度),也可以先付款。用 开具汇总发票(如月底)把所有未开票小票合到一张发票上,每行前标有小票号;已付款的部分标为已付。退回到账户的会显示为负数行。关闭 = 照常每笔销售一张发票。在比利时,所有小票通过黑盒子合开一张发票(signInvoice、UC4121 和 UC4122)。
- 比利时:客户之后支付挂账销售(现金、刷卡、礼品卡或转账)时,收银台在小票上将其报告为付款更正:从客户信用改为实际付款方式(signPaymentCorrection,UC4118)。
- 概览:未结发票及到期日(逾期以红色显示),按客户查看发票和付款。在 设置 → 发票 中有一列 未结。
- 会计:在日记账中,挂账销售计入 应收账款(荷兰默认 1300,比利时默认 400000;可在 设置 → 会计 中设置),现金、刷卡、礼品卡或银行付款(默认 1050 / 550000)转入应收账款。XAA:付款方式 "挂账"。
- 权限:挂账结账和接收挂账付款(默认:服务员否,经理是)。所有操作都记录在日志中。
- 关闭:客户、发票和付款仍会保留(也包含在备份中);该开关会随配置导出,客户则不会(客户属于单个门店)。
- 网店中(可选,默认关闭):开启 也用于网店 后,企业客户可在网上挂账下单(外带和配送)。在 报表 → 挂账 中为每个客户生成一个 客户代码 并交给客户;收银系统只保存加密版本,因此代码只显示一次。新客户代码 = 旧代码失效;删除客户代码 = 该客户不能再在网上挂账。网店会遵守信用额度。在 网店 窗口中用 完成(挂账) 结束此类订单:以挂账方式结账,并立即开具发票。
银行:核销转账
在 报表 → 挂账 → 银行 中,收银系统会为每笔入账查找对应的挂账发票:
- 导入银行对账单:从网上银行下载的文件,格式为 CAMT.053(XML,荷兰和比利时的所有银行)、MT940(.sta/.940)或 CODA(.cod,比利时)。仅包含入账;同一对账单导入两次不会产生重复行。
- 查找:按摘要中的 发票号 或 结构化附言(确定),否则按金额(和名称):此时为建议。每一行都可以 核销(按建议或核销到其他发票)、忽略,或稍后 仍然核销。核销 = 在 银行日期 记为 已转账(银行),金额绝不超过未结金额;不进钱箱。
- 银行连接(PSD2,可选):在 设置 → 发票 → 银行连接 中,收银系统每小时通过 Enable Banking 自动获取入账(支持荷兰、比利时及欧洲其他地区的银行)。选择银行并登录(企业账户);授权有效期 180 天,之后需重新连接。断开连接会撤销授权;入账记录会保留。未与 Enable Banking 签订合同时,仅适用于您自己的账户(restricted production)。
- 自动核销(默认关闭):确定属于某张发票的入账会被收银系统立即核销(导入时也是如此)。
- 权限:核销需要 挂账结账和接收挂账付款;设置银行连接需要 门店、支付和打印机设置。导入、连接、获取和核销都会记录在日志中。
- 关闭:关闭挂账付款后,收银系统不会获取任何数据;入账和连接仍会保留(备份中也有)。
收银台摄像头画面
门店所有摄像头画面集中在一个页面,无需单独屏幕或应用。在 设置 → 门店 → 屏幕与操作 → 收银台摄像头画面 中开启(默认关闭)。之后,拥有 查看摄像头画面 权限的人会在顶栏看到 摄像头 按钮(默认经理和管理员;可在 设置 → 权限 中为服务员开启)。所有摄像头并排显示;点击摄像头可放大画面。关闭后,监控系统设置会保留。
也可作为单独屏幕:在单独屏幕上 打开 http://<kassaserver>:3000/camera(例如吧台后面的显示器),在平板或手机上 则显示二维码:员工用自己的平板或手机扫描,并用自己的 PIN 码登录(同样仅限拥有 查看摄像头画面 权限的人)。在窄屏上摄像头会上下排列。参见“平板或手机上的第二屏幕”。
管理员通过 + 监控系统 添加监控系统,用 测试 进行测试,并为每个摄像头设置名称及是否显示在页面上:
- Hikvision、Dahua、Axis 和 Reolink:网络中的摄像头或录像机(NVR):IP 地址(如需要可加
:poort)、一个用户(最好仅限查看)和通道,例如1-8或1,3,5。使用 Basic 或 Digest 登录;允许使用自签名证书的 https。 - Synology Surveillance Station:NAS 的地址(默认端口 5000,https 为 5001)和一个用户;获取摄像头 会获取摄像头及其名称。
- UniFi Protect:控制台地址(https)和一个本地账户;获取摄像头。
- ONVIF:任何支持 ONVIF 的摄像头或录像机(例如 Hanwha、Bosch、Uniview、Annke);获取摄像头 会为每个视频源查找图片地址。
- 自定义网址:一张图片(JPEG)、一个 MJPEG 流或一个
rtsp://地址。 - 监控系统的网页(例如 Frigate、Blue Iris 或 go2rtc):在收银台点击“摄像头”按钮打开(或在单独窗口中打开)。
没有 ffmpeg:显示图片。
隐私:收银台从监控系统获取画面并仅作转发;不保存任何内容(无录像、无缓存)。用户和密码保留在服务器上,绝不会显示在画面或日志中。日志中记录谁查看过摄像头。页面使用密钥请求画面本身(有效期 12 小时,员工保持登录期间),因为浏览器中的图片无法附带令牌。配置导出仅包含开启/关闭。
敏感操作日志
报表 → 日志(经理或管理员)显示谁在何时做了什么。
- 选择期间(今天、昨天、本周、本月/上月或自定义起止日期)、要查看的内容(默认敏感操作,或例如只看作废和折扣,或全部),也可只看某位员工。
- 顶部按员工汇总:作废(下单后删除)、折扣和退货的次数和金额,以及无销售打开钱箱、从钱箱取款、副本小票、预结单和手动刷卡的次数。点击姓名可只看该员工。还显示输错 PIN 码的次数。
- 下方列出每项操作的时间、操作人、内容和易读说明(例如“2x 可乐 下单后删除 € 5,60 · 桌台 4 · 原因:客人不要了”)。
- 下载(CSV),用于 Excel。
记录内容:撤销、折扣(及取消)、退货、小票副本、形式发票、手动刷卡、打开钱箱、钱箱存取款、备用金、日结、移动明细或桌台、关闭空订单、修改商品价格/名称/增值税、新增或删除商品、修改员工和设置、调整工作时间、登录和退出、错误 PIN 码以及上下班打卡。启用挂账付款时还包括:客户、挂账销售和付款、导入银行对账单、银行连接以及从银行获取数据。启用出餐时间过长提醒时:超时订单和已发送的致歉。启用 Mailchimp 或 Klaviyo 时:连接、选择列表、取消配对以及来自那边的退订。启用音乐控制时:开启/关闭以及音源的添加、修改和移除。启用摄像头画面时:谁查看过摄像头(每位员工每半小时最多记录一次)、开启/关闭以及监控系统。启用风险监控时:每个警报、警报的处理以及功能的开启和关闭。
风险监控:舞弊和异常
设置 → 风险监控。两个部分,可分别开启,默认关闭;关闭后所有警报和设置都会保留。拥有 设置风险监控 权限的人可以进行设置(默认为经理和管理员);可查看日志的人可以查看和处理警报。收银台每 5 分钟检查一次(也可点 立即检查);影子收银台上不运行。
舞弊和盗窃监控(按员工、按营业日,从 05:00 起),每条规则可单独开启或关闭,并有各自的阈值:
- 预结单后作废:客人已看过账单后被删除的菜品;
- 作废、折扣和退货:达到一定次数,或合计达到一定金额(0 = 不按金额);
- 无销售打开钱箱(打开钱箱按钮);
- 账单长时间未结:已下单,但若干分钟后仍未付款。
异常提醒,与过去几周同一星期几的同一时段比较(默认 4 周;无营业额的日子不计入,至少两个比较日):
- 营业额到目前为止比正常水平低(和/或高)超过设定幅度,仅当正常营业额达到设定金额时;
- 出餐时间(从账单发送到厨房到厨房屏幕上完成)过去一小时超过幅度,或超过固定分钟数;
- 今天的作废超过幅度,且达到最低次数。
每个警报只出现一次(按规则、员工和天;出餐时间每小时最多一次),并发送到:
- 收银台:顶栏的 警报 (n) 按钮,显示过去一天、一周或 30 天的警报;填写备注后点 已处理。其他屏幕只收到不含姓名的简短提示;
- 通过 ntfy 推送消息(免费应用;ntfy.sh 或自有服务器、topic,必要时加 token)、Pushover(应用的 API-token 和 user key)或 Telegram(机器人的 token 和 chat-id);
每个渠道都有一个 测试消息 按钮。token 和密钥保存在收银台上(屏幕上只显示是否已填写)。警报不等于证据:请查看账单和日志,并与员工沟通。
小票:补打和退货(红冲小票)
顶部栏的 小票 按钮:
- 列出上次日结以来或最近 7 天的小票;更早的小票可按编号搜索。
- 打印副本:同一张小票,带“副本”字样(在比利时附带原小票的 FDM 区块)。会记入日志。
- 退货 / 红字小票(经理或管理员):逐行选择退回数量、原因以及退款方式(现金、刷卡、礼品卡、其他)。原小票保持不变:另生成一张新的红字小票,在日记账中有独立编号(票据类型
retour,金额为负,在比利时以 NR 报送 FDM)。退回数量绝不会超过售出数量。在 X 和 Z 报表中退货计为负营业额。 - 使用 CCV 或其他终端时:先在终端上退款,然后勾选“已在终端上退款”。
- 现金四舍五入到 5 分时:应退金额也会四舍五入。
- 退回到账户(挂账销售):如小票是企业客户的挂账,选择挂账。金额从未付发票中扣除,收银台立即生成红字发票(UBL 中为 CreditNote,类型 381,引用原发票;在比利时以 signInvoice 签名,UC4122)。退回到账户的金额不能超过发票未付金额;其余用现金或刷卡退还。红字发票显示在发票中,发送方式与发票相同。
带传感器的钱箱和按员工的钱箱
默认关闭。在 设置 → 付款 → 钱箱 中设置。
- 传感器:许多钱箱通过小票打印机报告开关状态(ESC/POS
DLE EOT 1,DK 接口针脚 3)。仅适用于通过网络连接的小票打印机。点 测量:钱箱关闭 和 测量:钱箱打开;如有区别,就采用正确的设置(高 = 打开 或 低 = 打开)。没有区别 = 此钱箱(或线缆)没有传感器。打印机无应答 = 未知,绝不视为 "关闭"。- 钱箱打开时不允许结账:收银服务器会拒绝新的结账,并提示 "钱箱仍然打开"。
- 每位员工使用自己的钱箱:一台小票打印机可以打开两个钱箱(钱箱 1 和钱箱 2)。为每位员工选择其钱箱;收银机在现金结账、钱箱存取现金和 打开钱箱 时会打开当前登录员工的钱箱。在 报表 → 现金 中会显示 按员工的钱箱:每位员工的备用金、现金(不含自动收款机)、应有、清点 和每人的差额(在日志中记为
ladetelling)。普通日结保持不变。 - 测试钱箱 1 和 测试钱箱 2 会打开钱箱以便检查。
- 无销售打开钱箱(附原因)一直都会记入日志和收银审计文件(XAA),这是荷兰税务局(Belastingdienst)的要求("no sale" 等例外情况)。
第 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 8.0 或更高版本,MariaDB 10.6 或更高版本),例如装在你已有的服务器或 NAS 上。这时所有数据都存放在 MySQL 或 MariaDB 的普通表中,可由你自己的报表或 BI 软件读取。收银系统的计算与使用 PostgreSQL 时完全相同。
- 内置(PGlite):就在收银系统里面,无需安装任何东西。适合大多数门店的最佳选择,也是 Android 和 Chromebook 上使用的数据库。
- PostgreSQL:单独的数据库程序,装在收银电脑上或网络中的其他位置。
什么时候选 MySQL 或 MariaDB?门店已经有 MySQL 或 MariaDB 服务器、你的 IT 管理员熟悉它,或者你想在自己的报表、Excel 或 BI 软件中读取数据时。拿不准就选内置:立即可用。
使用 MySQL 或 MariaDB 需要什么?
- MySQL 8.0 或更高版本,或 MariaDB 10.6 或更高版本,并且收银服务器能够访问。
- 为收银系统(或连锁企业的所有收银系统)准备一个独立的数据库,字符集为 utf8mb4。
- 一个数据库用户,可以在该数据库中创建、修改、重命名和删除表(CREATE、ALTER、DROP、INDEX、SELECT、INSERT、UPDATE、DELETE),例如:
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:
- 在MySQL/MariaDB 地址下填写各栏:服务器(默认 localhost)、端口(默认 3306)、数据库(默认 horecapos)、用户和密码;MariaDB 也一样。如果地址已经设置,各栏会自动填好;密码留空则保留已保存的密码(同一用户)。收银系统会自行保存地址;如果 Optimum POS 已设置了固定地址,则使用该地址,不显示输入栏。如果收银系统已经在使用 MySQL/MariaDB,之后可通过修改 MySQL/MariaDB 信息修改这些信息。加密连接由 Optimum POS 为你设置。
- 点按测试连接:会显示程序和版本,或者连接失败的原因。
- 点按迁移到 MySQL/MariaDB,勾选表示你已了解,然后输入你自己的 PIN 码。
三种数据库之间可以任意方向迁移,所有数据都会一并转移:
- 收银系统短时间内不接受请求(通常不到一分钟);之后平板会自动继续。
- 收银系统先为当前状态做一个备份(在设置 → 备份中)。
- 所有数据转入新数据库,收银系统逐表清点是否完全一致。
- 只有全部核对无误,收银系统才会在新数据库上继续运行。已登录的员工保持登录。
如果有任何一步失败,什么都不会改变,收银系统继续使用旧数据库。旧数据库原样保留,所以随时可以切回去。新的 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。如果无法访问,收银系统会使用内置数据库安装;之后可以在这里迁移。更新时会保留原来的选择。
连接平板和显示屏
- 在每台平板/收银台上打开收银服务器的地址,例如
http://192.168.1.20:3000,并添加为主屏幕快捷方式(Chrome:添加到主屏幕)。 - 厨房显示屏:
http://192.168.1.20:3000/keuken。 - 顾客屏(面向顾客,可选):
http://192.168.1.20:3000/klantscherm,见“顾客屏”。 - 各屏幕会自动找到收银服务器(相同地址,端口 4000)。
顾客屏
收银台上一块面向顾客的屏幕。顾客可以大致看到点了什么,并清楚看到金额和支付方式。屏幕上无需操作:只跟随收银台的操作显示。默认关闭;通过 设置 → 门店 → 顾客屏 开启。在有两个屏幕的收银电脑上,收银台第一次会自动开启顾客屏;之后若将其关闭,则保持关闭。没有顾客屏(关闭或未安装)时一切照常:收银台在后台发送画面,服务员永远不会察觉出错或屏幕缺失。
顾客看到的内容:
- 空闲(无人结账):门店名称和自定义欢迎语(设置 → 门店;留空 = “欢迎”)。
- 下单:商品及数量和金额(相同的行合并,套餐为一行、下方小字列出组成部分,折扣为一行),并大字显示总额。拆分结账时已付金额显示在下方。开启 设置 → 门店 → 商品照片 → 在顾客屏上 后,每个商品旁会显示一张小照片。
- 结账:支付方式(刷卡、现金、礼品卡)、小费,并大字显示应付。现金:收银台输入后,显示顾客付款和找零。刷卡:“请按刷卡机上的提示操作”。
- 谢谢:结账后显示几秒“谢谢!”和已付金额(现金:顾客的找零),然后回到空闲界面。
连接方式有两种(均在设备本身上设置):
- 收银电脑上的第二台显示器(Windows、Linux/Raspberry Pi、macOS):自动。登录时和安装后,收银系统会把顾客屏全屏显示在非主屏中最小的那块屏幕上(尺寸相同时选最右边的);在 Windows 上始终显示在收银系统之外的另一块屏幕上(收银系统在触摸屏上,并且开机时也会自动打开)。尺寸和位置由系统提供,因此任何规格都适用。没有第二块屏幕时不会有任何操作。在 Windows 上,关闭的顾客屏会自动重新出现;在 Linux 和 macOS 上,菜单中的快捷方式 HorecaPOS klantscherm 可重新恢复。在 Windows 上,它以 Chrome(或 Edge)的展台模式打开:全屏显示,无标题栏,也无任务栏(按 Alt+F4 关闭)。顾客屏无需配对码即可跟随同一台电脑上的收银台。
- 在任何浏览器中,长按都不会在任何地方弹出浏览器菜单,也不会出现翻译页面的提示。
- 收银系统关闭 = 顾客屏关闭。如果收银软件停止运行(重新启动、更新、收银系统被停止或删除),顾客屏也会在略超过 10 秒后关闭;收银系统重新运行后,它会自动恢复。在 Windows 上,即使只关闭收银系统窗口,它也会关闭。在 Wayland(Linux)下,收银系统无法自行关闭该窗口。
- 不小心关闭了顾客屏?在 Windows 上,只要收银系统处于打开状态且第二块屏幕已连接,它会在几秒后自动恢复。
- 始终只有一个顾客屏。在 Windows 上,顾客屏只以展台模式显示在第二块屏幕上。收银系统窗口中的顾客屏(例如停电后被 Edge 恢复,或通过收银系统中的按钮打开)会在几秒内自动关闭;随后由正确的顾客屏取而代之。
- 无人登录 = 仅显示欢迎语。如果收银系统停留在 PIN 码界面(包括重新启动或退出登录后),顾客屏只显示欢迎文字,绝不会显示之前的账单。
- 在 Windows 上,也可以在安装程序中取消勾选 自动打开顾客屏 ... 来关闭自动打开。
- 在 Linux 上,收银系统用 wmctrl 移动窗口(随软件包一起安装)。在 Wayland 下(例如使用 labwc 的 Raspberry Pi OS)无法这样做:请自己把顾客屏移到第二块屏幕上一次(浏览器会记住),或在 raspi-config 中选择 X11。在 macOS 上,Mac 第一次会在 辅助功能 中请求权限。
- 手动:设置 → 门店 → 顾客屏 → 打开顾客屏(第二台显示器)。在 Chrome 和 Edge 中(Chromebook 上也一样),该按钮会立即把窗口放到顾客屏上(第一次浏览器会请求权限);在顾客屏上点击一次即可全屏。其他浏览器:拖过去后按 F11。
- 带内置顾客屏的 Android 收银机(如 Sunmi D2/T2)或通过 HDMI/USB-C 连接的显示器:同样自动。应用一装到收银机上,顾客屏就会出现在第二块屏幕上;插拔即时生效。
- 带小型文字显示屏的 Sunmi T1 mini / T2 mini(2 行):应用会自动在上面显示金额:合计、应付、现金支付时显示找零、结账后显示谢谢!,空闲时显示店名。前提是顾客屏已开启。
- iPad(操作屏)通过 HDMI/USB-C 或 AirPlay 连接外接屏幕:应用会自动把顾客屏显示在该屏幕上(已准备好;iOS 应用尚未发布)。
- Chromebook:在 Chrome 中作为操作屏时,打开顾客屏(第二台显示器) 按钮的用法同上。在 Android 应用中,只要 ChromeOS 把该屏幕提供给 Android 应用,顾客屏就会自动出现在第二块屏幕上;如果没有,请使用带配对码的单独设备。
- 独立设备(收银台旁的平板或电脑):打开
http://<kassaserver>:3000/klantscherm。屏幕右下角会显示一个 6 位的配对码。在收银台的 设置 → 门店 → 顾客屏 → 配对 中输入。取消配对 会让屏幕回到配对码界面。配对按收银台保存(在该收银台的浏览器中),因此每台收银台都可以有自己的顾客屏。
顾客屏不需要 PIN 码(没有可操作的内容),只显示与之配对的收银台的画面。画面只保存在收银服务器的内存中;重启后屏幕为空,直到下一次变化。该设置(开/关和欢迎语)会包含在备份和导入/导出(其他设置)中。
通过二维码获取电子小票(可选)
默认关闭。在 设置 → 门店 → 厨房与顾客屏 → 电子小票 中开启(顾客屏已保存为开启时才会出现此选项)。结账后,谢谢!画面上会显示一个二维码;此时该画面会停留 45 秒,而不是只有几秒。顾客用自己的手机扫码即可看到小票,与纸质小票完全相同(文字相同,比利时收银机还带 FDM 区块)。顾客可以在手机上打印小票、保存为 pdf 或下载为文本文件。
- 这通过管理门户实现:
https://kassa.<portaal>/__bon/<kassa>/<sleutel>。因此收银机必须已连接门户;否则不会显示二维码,一切照旧。 - 密钥是随机生成的,无法猜到,有效期为 30 天。之后收银机会自动将其清除。门户不保存任何内容。
- 适用于第二显示器和独立顾客屏。纸质小票和电子邮件小票照常使用。
顾客屏待机:幻灯片(可选)
默认关闭。在 设置 → 门店 → 厨房与顾客屏 → 顾客屏待机 中开启。顾客屏上没有账单时,幻灯片会轮流播放(默认每 8 秒切换一次,可设置为 4 到 60 秒):
- 活动:欢乐时光(如果已开启欢乐时光),包括折扣、日期和时间以及商品或分类;当前正在进行的排在最前面,并标有 "进行中!"。
- 推荐商品(最多 12 个,例如菜单新品),附价格以及照片(如果已开启在顾客屏上显示商品照片)。售罄的商品会被跳过。
- 积分卡:每欧元积分、奖励和集章卡(仅在开启会员卡时)。
- 自定义文字:最多 5 条,每条一张幻灯片(例如 "周五起全新上市:我们的夏季菜单")。
没有幻灯片时,顾客屏照常显示欢迎画面。
欢乐时光
默认关闭。通过 设置 → 门店 → 使用欢乐时光 开启;之后会出现 设置 → 欢乐时光 标签页。
- 每个欢乐时光:名称(显示在小票上)、星期、起止时间(可跨午夜,例如 23:00–01:00)、折扣百分比或固定价格,以及适用的商品分类和/或单个商品。
- 在该时段内,收银台点选时自动按欢乐时光价格计算(绝不会比原价贵;固定价格时选项照常加价)。商品按钮上显示划掉的原价、新价格和 HH;订单和小票上显示欢乐时光的名称。已点选的商品保持原价。
- 每日特惠:勾选全天(00:00–24:00)并选择星期,例如每周二 Spareribs 固定价格。
- 季节:勾选仅限某个季节(每年),并选择起止日期(日和月,例如 6 月 1 日至 8 月 31 日;可跨年,例如 12 月 1 日至 2 月 28 日)。季节以外欢乐时光不生效。
- 修改会记入日志。
餐段和季节
默认关闭。通过 设置 → 门店 → 餐段和订单类型 → 按餐段和季节设置商品 开启;之后会出现 设置 → 餐段 标签页。关闭后,所有商品重新始终可售,餐段设置会保留。
- 每个餐段:名称(例如 早餐、午餐、晚餐、夏季菜单)、星期、起止时间(可跨午夜;全天 = 00:00–24:00)、可选的季节(每年,日和月),以及所属的商品分类和/或单个商品。
- 属于一个或多个餐段的商品和商品分类仅在其中某个餐段进行中时可售;不属于任何餐段的商品始终可售。点单界面只显示当前可售的商品,并在餐段开始或结束时自动切换;服务器会拒绝其余商品("当前不可售,仅限早餐")。
- 网店显示并计价相同的商品范围(以下单时刻为准)。
- 某天或某季节的不同价格属于欢乐时光(每日特惠,见上文)。
- 按门店设置菜单:每台收银台(门店)都有自己的商品、餐段和价格。
- 修改会记入日志。
按订单类型设置商品和价格
默认关闭。通过 设置 → 门店 → 餐段和订单类型 → 按订单类型设置商品和价格 开启。关闭后,所有地方重新使用普通价格,所有商品处处可售;已填写的价格会保留。
- 在 设置 → 商品 中按商品设置:外带价格和配送价格(留空 = 普通价格)以及销售方式(堂食、外带、配送;至少一项)。商品分类也可设置销售方式,适用于该分类中的所有商品。
- 外带或配送订单时,点单界面显示该订单类型的价格,且只显示该方式下销售的商品;服务器按该价格计价并拒绝其余商品。欢乐时光、套餐和选项均按该价格计算。
- 外带增值税税率(在商品中设置)与此无关,一如既往。
- 网店在自取和配送时显示该选择对应的价格和商品(切换时菜单页面会重新加载),桌边点餐则显示堂食的价格和商品。
- 配置的导出和导入(设置 → 导入/导出)包含按订单类型的价格、"销售方式"、餐段以及欢乐时光的季节。
套餐
默认关闭。通过 设置 → 门店 → 使用套餐 开启。
- 套餐是一个普通商品(价格为套餐价),在 设置 → 商品 → (商品)→ 套餐 中设置组成部分:
- 固定:始终是这个商品(例如“饮品:家酿葡萄酒”);
- 任选:从某商品分类中选 1 个(或更多),可限定为特定商品(例如“主菜:从主菜中选 1 个”)。
- 每个组成部分设置道菜(1 = 立即上,2/3 = 等待叫菜)。
- 点选套餐时,按组成部分选择菜品。每道菜(包括固定菜品)都可以像单点商品一样选择选项(做法、加奶酪;必选项必须选择)并添加备注。选项加价计入套餐价。套餐在订单中为一行,下方列出菜品(及其选项)。
- 菜品作为单独的行按各自道次发送到厨房/吧台(厨房单和厨房显示屏)。套餐行本身不发送。
- 计算增值税时,套餐价按各组成部分的原价比例分摊,使餐食和饮品各自适用正确税率。小票上显示套餐及总价,下方列出菜品。
- 如套餐本身有选项(例如规格),在套餐窗口顶部选择。这些选项显示在小票的套餐行上,并在厨房单和厨房显示屏上该套餐的每道菜后标注“(套餐)”。
- 删除/作废按整份套餐进行(点击套餐行)。
- 拆分 / 转移:选择套餐行;菜品会一起移动。有 2× 相同套餐时也可以只转移 1 份(套餐行和菜品会被拆分)。
- 无网络时也能正常点选套餐;套餐会保存在平板上,连接恢复后发送(与单点商品相同)。
- 欢乐时光也可以适用于套餐。
配方与成本(Apicbase)
通过 Apicbase 的 Generic POS API 连接 Apicbase(配方、成本、库存和采购)(默认关闭,各部分可单独开启或关闭)。在 设置 → 配方 中设置(权限 设置店铺、支付和打印机)。收银台直接与 Apicbase 通信(仅出站流量,无需门户)。
- 连接(全部由管理员填写),三种方式任选其一:
- 粘贴 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 自动续期。
- Outlet:获取 outlets 并选择本店的 outlet。收银台会在那里把 POS 设为 Generic POS API,并使用自己的 location-id(可填写;默认
HORECAPOS-…,每台收银台唯一)。 - 开启,通过勾选:
- 商品、分组和选项发送到 Apicbase:商品分组、商品(PLU = 商品的 PLU 编号,没有则用代码,再没有则用 id)、选项作为 modifiers,含价格和增值税。每次修改后(一分钟后)及每天自动发送。之后你在 Apicbase 中把每个收银商品关联到一个配方;
- 每张已结账小票发送到 Apicbase:最早的先发,每次最多 100 张,结账后一刻钟内发送(并且每 5 分钟一次)。折扣分摊到各行;自由金额、一次性包装费和押金在 Apicbase 中作为单独商品;称重商品按 1 件计、金额为总额。发送失败时收银台会暂停(Apicbase 要求按顺序接收小票)并稍后重试:结账不受影响。开启时可选择从哪一天开始(默认从现在起);
- 取回每份成本(每 6 小时):每个已关联配方的 food cost(食材和损耗)、含人工成本、售价和毛利,均以 Apicbase 为准。按最便宜的供应商、最近一次订购价格或平均库存价值计算;
- 从 Apicbase 获取售价(默认关闭):把已关联商品的售价写入收银台(记录在日志中)。
- 底部:每个商品的成本,包括成本、含人工成本、收银台价格、成本 % 和毛利。按钮 立即发送商品目录、立即发送小票 和 立即获取成本。
代码: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
酒店软件:挂房账
适用于酒店内的餐厅或酒吧:将账单挂到客人的房间。默认关闭:设置 → 酒店(权限门店、支付和打印机设置)。
- 一个列表包含所有酒店软件(酒店使用的酒店管理软件)。内置对接:
- Mews(Connector API:client token 和 access token、餐厅的 service,以及每个增值税税率对应的 Mews 税码)、apaleo(自建应用,含 client-id 和 client secret、property-id;可按增值税税率设置税种)和 Cloudbeds(API 密钥和 property-id),均有测试环境和正式环境;
- Oracle OPERA Cloud (OHIP)、protel (protel I/O)、RoomRaccoon、Booking Experts、Amadeus (XMLPOS)、VIPS、Stayntouch、Clock PMS+、Guestline (Rezlynx)、Hotelogix、eviivo、Little Hotelier、Shiji和Infor HMS (Databridge)。选择后只显示该酒店软件所需的字段(密钥、酒店 ID、必要时其 API 地址,以及每个增值税税率对应的代码),并简要说明需向供应商申请什么。这些对接依据供应商的文档开发;请让供应商确认对接,并先用测试连接和一张小票试用;
- 一个演示(四间套房,房间 4 至 7)供试用;
- Sirvoy,作为半对接,且仅限 Sirvoy Pro。Sirvoy 没有可让收银台向预订添加内容的 API,用文件也不行(CSV 导入只能新建预订)。借此收银台可以知道客人信息(房间、姓名、到店、离店):在挂房账中搜索,以及自助点餐机和网店中的自助服务都能正常使用。小票不会自动进入 Sirvoy:结账后,它显示在设置 → 酒店的待录入 Sirvoy下,附有房间、客人、小票号以及按增值税税率的金额。酒店手动将其作为附加项录入预订,然后点击已录入(用还没有撤回)。需要:
- 最好是已连接管理门户的收银台:地址经由门户(
https://<portaal>/hotel/<kassa-id>/sirvoy?sleutel=...),酒店内无需开放端口。否则收银台本身必须可从互联网通过 https 访问(带证书的自有域名或端口转发;Sirvoy 要求 TLS 1.2 或更高),并填入该地址; - 地址只显示一次;收银台只保存其哈希值。新建地址 = 旧地址失效;
- 最好是已连接管理门户的收银台:地址经由门户(
Sirvoy 只在预订发生变化时发送消息:对接之前的预订,只有在 Sirvoy 中有改动后收银台才会知道。消息可能乱序到达;比收银台已有数据更旧(generatedAt)的消息会被跳过。在店 = 未取消且未退房,已入住或到店日期为今天或更早,且离店日期为今天或更晚。测试连接会显示收到了多少条预订。
所有酒店软件均可在荷兰和/或比利时购买。测试连接会检查填写的信息。各对接的代码:apps/pos-server/src/lib/pms/<naam>.ts。
- 自助(默认关闭):酒店客人可自行把订单挂到自己的房账,在自助点餐机上和/或在网店中(外带和配送,桌边点餐时不可用)。客人输入房间号和姓氏;收银台会向酒店软件核实该客人目前是否入住该房间。每笔订单有上限(默认 € 150),一刻钟内输错 5 次后须先前往前台。提示信息绝不会透露谁住在哪个房间。
- 结账:开启对接后,会有付款方式挂房账。按姓名或房间号查找客人(仅限当前在店住客),然后点按挂到房间 ...。收银台按增值税税率将小票记入客人的酒店账单;客人在退房时付款。
- 比利时:如订单已在黑盒子中记在桌台上,会先从桌台转到房间(signCostCenterChange 至 ROOM,UC4101);小票作为房间信用(ROOM_CREDIT)发送到黑盒子。
- 如在酒店软件中记账失败(没有网络),销售仍然存在,该记账在设置 → 酒店中显示为失败,并有重试。
- 报表和账务:挂房账(酒店)在 X 和 Z 报表、日报表和审计文件(XAA)中是单独的付款方式。
代码: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 的全部三种方式(由管理员决定开启哪种):
- API-id 和 API 密钥(
X-Api-Id和X-Api-Key,或Authorization: Bearer <id>:<sleutel>); - 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),请选择正确的一个。之后仍可自行修改。
- 在门店信息中(设置 → 门店,地址上方)。
- 在会员卡顾客中:在收银机新建顾客时以及在 报表 → 顾客 中。顾客因此可填写地址(可选):街道和门牌号、邮编和城市。
- 地址来自免费的 PDOK 位置服务器(Locatieserver)(荷兰官方地址库 BAG):无需账户或密钥,但需要联网。无网络或比利时地址时,直接手动输入地址即可。
新版本提醒
在 设置 → 门店 → 更新提醒 中开启(默认关闭)。
- 收银台已更新:如收银服务器已更新,而平板还开着旧界面,顶部会显示“收银台已更新(版本 …)”和 刷新。平板每 5 分钟检查一次,屏幕重新显示时和服务器重启后也会检查。
- 有可用更新:如收银台已连接管理门户(
PORTAAL_URL/PORTAAL_SLEUTEL),且门户中填写了NIEUWSTE_VERSIE,有权管理设置的用户会看到“有可用更新:版本 …”(附UPDATE_NOTITIE中的说明)。稍后 会在该平板上隐藏提示,直到有更新的版本。更新方式照旧,使用scripts\windows\update.cmd(见“更新”)。
预订平台
来自 TheFork、Formitable、Zenchef、Resengo(仅限比利时)、OpenTable(仅限荷兰)、PlanPanther、RestoManager 和 Aqqo(仅限荷兰)的预订会自动进入收银台并显示在平面图上。在设置 → 预订平台中开启(默认关闭)。仅在预订开启时可用。
- 门店所在国家:只能选择在门店所在国家可用的平台(Resengo 仅限比利时,OpenTable 和 Aqqo 仅限荷兰)。服务器也会进行检查。
- 同时使用多个平台: 您可以同时连接多个平台,例如 TheFork 和 Formitable。两个平台在同一时段绝不会分到同一张桌子;此时第二个预订将不分配桌子。
- + 连接平台:选择平台并填写信息。机密信息(client secret、回传密钥)永远不会显示在概览中;留空 = 保留,清除 = 删除。
- TheFork(公开 B2B API):Restaurant-UUID、Client ID 和 Client Secret(向 TheFork 申请)。收银台取消预订时,TheFork 中也会同步取消。
- Formitable、Zenchef、Resengo、OpenTable、PlanPanther、RestoManager、Aqqo:它们的 API 仅向合作伙伴开放或不公开(PlanPanther、RestoManager 和 Aqqo:收银对接需与其协商)。可识别 Formitable 事件(
booking.created、.changed、.canceled、.checkin、.checkout)。 - 平面图上:如果收银台中有餐桌与平台上的餐桌同名且在该时段空闲,预订会安排到该餐桌;否则不分配餐桌(到店时再选择)。再次收到的预订会被更新,不会重复。概览中显示 "通过 TheFork"。
- 状态:如果平台取消预订或报告 no-show,收银台会同步该状态。收银台中已标记为到店的,仍保持到店。
- 回传(no-show 回传):填写一个回传地址(例如您的集成服务的地址)。收银台会将收银台中的每项变更(已到店、no-show、已取消、已结账含金额)以 JSON 发送:
{ platform, id, status, statusEn, bedrag, valuta, tafel, tijdstip, gemeldOp }(金额以分为单位,仅在已结账时提供),如已填写,则附带Authorization: Bearer <terugmeld-sleutel>。发送失败时,收银台每分钟重试一次,错误会显示在平台旁。来自平台本身的变更不会回传。 - 测试预订:按平台发送的方式创建一个预订。
- 删除:连接和密钥被删除;预订保留。
- 所有更改都记录在日志中(不含机密信息)。
积分计划与评价
设置 → 积分与评价中有两个独立开关(两者默认均关闭,关闭时任何地方都不会显示)。关闭后,设置和已发生的记录都会保留。
其他平台的积分计划:客人在 Joyn(比利时)和/或 Piggy(Leat;荷兰和比利时)积分。这与收银系统自带的会员卡相互独立,两者可以同时开启。
- 可同时使用多个:在比利时,Piggy 和 Joyn 可以同时开启,各自使用自己的资料(选择平台、填写、保存;每个平台可修改和删除)。客人每个计划都会在小票上获得各自的二维码、在邮件小票中获得各自的链接、在网店中获得各自的按钮,每笔订单在每个计划中积分一次。已有的设置照常有效。
- 小票上的二维码:结账后,小票下方会印有二维码及 "扫码在 ... 积分"。电子小票中有链接,网店(自取和外送)的订单页面有按钮,确认邮件中有链接。一个订单只能积分一次:小票、邮件和网店使用同一个唯一代码(订单号)。"纸质小票上的二维码"可以关闭,邮件和网店仍会提供链接。
- Piggy,方式 "二维码和链接":填写 Piggy 客户门户地址、Shop UUID 和 Account secret(Piggy Business Dashboard)。无需联网:收银系统自行生成链接。
- Piggy,方式 "立即入账":另外填写 personal access token(Piggy → Marketplace → Private App)。收银系统发送电子小票时,如果该电子邮箱的客人已是会员,会立即入账积分;小票上会显示 "积分已存入 Piggy"。收银系统绝不会创建新会员;非会员(或没有电子邮箱)= 二维码。
- Joyn,方式 "二维码和链接":使用 Joyn 的 partner key、shop reference 和 shared secret(通过 api-integration@joyn.be 申请)。无需联网。二维码有效期为 2 小时。
- Joyn,方式 "通过 API":使用 shop API key(在 Joyn 商户门户中开启对接)。结账时收银系统向 Joyn 申请积分码。兑换照常在 Joyn-iPad 上进行。
- 生成示例链接:检查信息是否正确(金额为 € 10 的链接;仅打开查看)。
- 只能选择门店所在国家的平台;密钥只保存在数据库中,绝不会显示在屏幕上(留空 = 保持不变)。
邀请评价:到店后发送一封带有 Google 和/或 Trustpilot 按钮的邮件。
- 几小时后(可设置,默认 3)客人会收到邮件,语言与小票一致。
- 网店:自取和外送订单由网店自行发送邮件,在收银系统完成订单几小时后发出,使用客人的语言。
- Google:粘贴商家资料中的评价链接(Google → 你的商家资料 → 邀请评价,
https://g.page/r/.../review)或填写 Place ID。 - Trustpilot:填写门店的域名(按钮指向
trustpilot.com/evaluate/<domein>)。如果你在 Trustpilot 有邀请地址(Automatic Feedback Service,...@invite.trustpilot.com),也请填写:邮件将以密送(BCC)方式发给 Trustpilot,隐含姓名、电子邮箱和小票号,由 Trustpilot 自行发送邀请(此时不显示单独的 Trustpilot 按钮)。若只使用带邀请地址的 Trustpilot:收银系统只给 Trustpilot 发邮件。 - 不会太频繁:同一位客人(电子邮箱)每个周期最多收到一次邀请(默认 90 天;0 = 每次都发)。为此收银系统只保存地址的哈希值;邮件发出后,电子邮箱地址本身即被删除(发送失败则在尝试三次后删除,否则在 14 天后删除)。
- 小票上的二维码(可选):在纸质小票下方同时打印评价二维码。
- 邮件预览和删除待发送邮件(地址会立即删除)。日志中显示 review_gevraagd 及 a***@domein.nl。
- Google 和 Trustpilot 禁止为评价提供奖励,也禁止只邀请满意的客人("review gating")。因此收银系统对所有人一视同仁,也不会为评价给予任何回报。
- 在收银系统中阅读和回复评价:见下方“评价管理”。
对接 Mailchimp 和 Klaviyo
在你自己的邮件工具中使用会员卡顾客:在 设置 → 门店 → Mailchimp 和 Klaviyo(位于短信和邮件营销下方)。没有开关:未对接并选择列表时不会进行任何操作。
- 连接:使用 API 密钥(Mailchimp:个人资料 → Extras → API keys;Klaviyo:私钥
pk_…,需对 Lists、Profiles、Subscriptions、Events、Campaigns 和 Templates 有写入权限)。客户端密钥和 API 密钥不会再显示在屏幕上(留空 = 保留)。然后选择列表(Mailchimp:audience)。 - 顾客:同意接收邮件的顾客会进入列表(已订阅),包含名字、姓氏、电话、生日和积分(Mailchimp:字段
PUNTEN,由收银台自动创建;Klaviyo:属性punten)。撤回同意、更改邮箱或删除顾客:已退订。只有变更的内容才会重新同步。启用对接后,收银台(以及网店中的 "优惠" 勾选框)也会向新顾客征求邮件同意,并可在 报表 → 顾客 中修改,即使不使用自带的邮件营销。 - 退订:在 Mailchimp 或 Klaviyo 中退订的人,在收银台中也不再有邮件同意(日志:"已在 Mailchimp 退订")。自行退订的人,收银台不会重新为其订阅。
- 订单:列表中顾客的每张已结账小票都会作为事件同步(Mailchimp:
bestelling,含金额、小票号和数量;Klaviyo:Placed Order,含欧元金额)。借此可在邮件工具中设置自动邮件,例如首次下单后或某人一个月未光顾时。选择列表之前的小票不会同步。 - 活动:在 报表 → 营销 中,也可以通过 Mailchimp 或 Klaviyo 发送活动(见短信和邮件营销);收银台会在那里创建营销活动并发送。
- 更新:每 5 分钟一次,或点击立即更新。取消配对:从收银台移除;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 与数据导出 中开启(默认关闭)。只读:通过对接无法更改收银机中的任何内容。不含顾客数据。
- 数据:小票(含退款小票)、已售商品(小票明细)、付款、每日营业额、每小时营业额、作废、商品、员工(不含 PIN 码)及工作时长。金额以欧元计,小数点为点号;时间为店铺当地时间。
- + 对接:选择软件和方式。每个软件支持一种或多种方式;可同时拥有多个对接(同一软件也可以)。
- 软件自行获取(API):收银机一次性提供 只读密钥。时间段使用
?van=&tot=(YYYY-MM-DD),或使用带?periode=的固定地址(vandaag, gisteren, 7d, 30d, 90d, 365d, week, maand, vorigemaand, jaar);最多 366 天,最多 200,000 行。密钥放在Authorization: Bearer、X-Sleutel或?sleutel=中。 - 通过门户:如果收银机已连接到客户门户,同一地址在店外也可使用,无需开放端口:
https://<portaal>/bi/<kassa-id>/<gegevens>?periode=90d&formaat=csv&sleutel=...。这样 Power BI 服务可按计划刷新(无需 gateway),Google Sheets 也可通过=IMPORTDATA("...")获取(这也是 Looker Studio 的数据源)。收银机会在对接处显示该地址。 - 通过客户门户的连锁总览(多家门店):一个地址和一个密钥,即可汇总所有收银台。在每台需要参与的收银台上开启 通过客户门户的连锁总览(位于 BI 开关下方),并在客户门户的 我的收银台 → 所有门店的 BI 中创建密钥。然后:
https://<portaal>/bi/keten/<gegevens>?periode=90d&formaat=csv&sleutel=hpk_...。门户从每台收银台获取数据并合并,每行包含kassaId和zaak。离线或未参与的收银台列在ontbrekend(JSON)和响应头X-Ontbrekend中。收银台本身无需为此单独设置密钥;在收银台或客户门户中关闭即可停止。 - 使用 token 时,它以
Authorization: Bearer形式发送,并在X-HorecaPOS-Handtekening中附带签名(内容的sha256=HMAC)。如果失败,收银机每分钟重试一次;不会重复发送。设置 起始 后也会发送旧小票。 - 收银机提供文件:每天(在指定时间,前一天的数据;错过的日期会补发)或每小时(今天截至目前),格式为 CSV(逗号,或荷兰语 Excel 用的分号)或 JSON,发送到收银电脑上的 文件夹(例如供 Power BI 或 Excel 使用的 OneDrive 或 SharePoint 文件夹)、FTP(S) 或 SFTP 服务器,或通过 电子邮件。文件名:
horecapos_<gegevens>_<datum>.csv。 - 对接处的 发送测试(push)和 立即导出(文件)。
- 自行下载:选择数据、时间段和格式。
- Power BI 模板(
.pbit):适用于 Power BI Desktop 的现成报表,可在“BI 与数据导出”中通过下载 Power BI 模板获取。请先创建 API 连接(Power BI)。模型中包括:每个数据集一张表并设置正确类型、日历表(年、月、周、星期)、关系(日期 → 日历、小票明细 → 商品、工作时长 → 员工)以及度量值(含税和不含税营业额、增值税、小费、小票数、客人数、每单和每位客人平均值、销售数量、商品营业额、已付款、撤销、工作时长、每工时营业额)。三个页面:概览(关键指标、按日、星期和小时的营业额、支付方式)、商品(按分组和按商品)和员工(每位员工的工时和营业额)。通过门户,Power BI 服务还会按计划刷新。 - 机密信息(token、密码、密钥)从不在概览中显示;留空 = 保留,清除 = 删除。所有操作均记录在日志中(不含机密信息)。
薪资与排班
开启 打卡上下班 后(设置 → 门店),在 设置 → 工作时间 底部有 薪资与排班(需管理设置权限),分为两个独立区块。如果打卡 关闭,则没有工时:此时只有人员排班区块(营业额,实时或作为营业额文件)位于 设置 → 会计 底部,标题为 营业额发送到排班:
- 薪资管理(payroll):选择薪资软件或(比利时)社会秘书处,填写其字段,并为每位员工填写其在该软件中的 员工编号。然后为某个期间生成包含 实际工时(已结束的班次,按员工按打卡上班日期)和 每位员工营业额(不含增值税,即其本人结账的金额)的文件:Loket.nl(Variabele gegevens,该期间每位员工合计,表头行
aanslnr;persnr;ploeg;<looncomponent>)和 SD Worx 比利时(Tijdsregistratie,固定位置,按员工按天)可直接使用,其他则使用 工时表(CSV:日期; 员工编号; 姓名; 工时; 营业额(不含增值税))。没有员工编号的员工不会出现在 Loket 或 SD Worx 的文件中;收银机会提示是哪些人。 - 人员排班(WFM):选择排班系统。重新发送会覆盖。此外还有 营业额列表(按日和小时的 CSV,不含及含增值税),以及适用于 Strobbo 的 Importeer omzet Excel 文件。
- 只显示在 门店所在国家 可用的软件,按分组和字母顺序排列;服务器会拒绝其他国家的软件(400)。
- 密钥和令牌绝不会显示在屏幕上。
- 涉及会计:人工成本 由薪资软件记入会计,营业额 由收银机记账(设置 → 会计)。AFAS Payroll 和 Exact Online Loon 与 AFAS 和 Exact 的会计位于同一环境。
- 在门户上的收银机副本中无法执行此操作(由门店中的收银机执行)。
- 部分软件的 API 未公开或仅向合作伙伴开放(例如 Loket、Nmbrs、Nostradamus、Employes、Shyfter、Planday、Eitje):这些标为 按需申请;在此之前使用文件。SD Worx 和 Strobbo 的格式来自其文档:请让对方检查第一次导入。
| 软件 | NL | BE | 实时 | 文件 | 备注 |
|---|---|---|---|---|---|
| 薪资软件和薪资服务商 | |||||
| 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 报表和日志保存在数据库和备份中;日志无法在收银机上修改或删除 |
法律法规
设置 → 法律法规(管理员;拥有 管理商品 权限者也可使用增值税助手)。所有功能默认关闭;不进行这些设置,收银系统照常工作。
- 酒精年龄核验(18+):在“商品”中勾选 含酒精(或使用增值税助手)。外带和配送含酒精商品时,厨房单、收银小票和订单界面上会显示 "18+"。在网店中,顾客需自行确认年满 18 岁(复选框默认不勾选),并会看到交付时将核验年龄。
- 一次性包装费(荷兰):每个商品设置一个金额(参考价:杯子 € 0,25,餐盒 € 0,50,小盒 € 0,05)。外带和配送时,收银系统会自动在小票上添加一行 "一次性包装费"(使用商品的增值税);该行会自动随商品一起变动(数据库会跟踪它,即使在删除、移动或更改订单类型后也是如此),并在营业额中单独统计。堂食不收此费用。Thuisbezorgd.nl 和网店收取各自的费用。
- 押金(荷兰):按商品设置(€ 0,15 罐/瓶,€ 0,25 大瓶),"押金" 一行不含增值税,仅在外带和配送时收取。
- 现金 € 3.000 或以上(荷兰,自 1-1-2026 起禁止用于购买商品):外带和配送时,结账和现金机上会弹出提醒;员工可以确认(如作为服务的餐饮外烩),并记入日志。店内用餐属于服务:不提醒。
- 增值税助手:为每个商品设置类别(餐食、无酒精饮料、含酒精饮料、无需加工的食品、其他;最初根据名称和分组推测)。收银系统显示堂食和外带的正确税率(比利时自 1-3-2026 起:餐食和软饮 12%,外带也一样;酒精 21%;无需加工的食品 6%。荷兰:9% 和 21%),并立即或自某日起应用。
- 安排增值税变更:将商品改为其他税率,或(仅限荷兰)为某个税率设置新百分比,自某日起生效。收银系统会在当天自动执行(每 15 分钟检查一次,开机时也会检查)。
发票(在比利时企业间为强制要求)见“企业客户发票”。待办:GKS 2.0,询问认证进展(见 docs/backlog-concurrenten.md)。
企业客户发票
设置 → 发票(管理员;默认关闭):开启企业客户发票(UBL / Peppol)。开启后,下方依次为挂账付款、发票信息、Peppol 服务、银行连接(配合挂账付款)以及所有发票的列表。在比利时,自 1-1-2026 起企业间电子发票为强制要求。
- 面向企业客户的发票:小票 → 选择小票 → 发票。填写客户(或选择以前的客户);收银机生成带编号的发票(例如 F2026-0001,按年递增),格式为符合 Peppol BIS Billing 3.0 的 UBL,以及可打印或另存为 PDF 的发票。可通过电子邮件发送(两者均作为附件,可抄送一份给会计)、通过 Billit 发送到 Peppol 网络(
BILLIT_API_KEY、BILLIT_PARTY_ID)、通过 Storecove(STORECOVE_API_KEY、STORECOVE_LEGAL_ENTITY_ID;收件方根据客户的 Peppol-ID 确定,例如 0208 → BE:EN,0106 → NL:KVK,否则通过 Storecove 以电子邮件发送)或通过 Unifiedpost 的 Banqup(BANQUP_CLIENT_ID、BANQUP_CLIENT_SECRET、BANQUP_SPACE_ID;BANQUP_SANDBOX=1用于测试环境;Banqup 会校验 UBL 并自行投递),发送到自定义地址(FACTUUR_HTTP_URL,例如会计软件或其他 Peppol 服务),或直接下载。每张小票一张发票;小票已付款,因此标记为"已付清"。KvK/企业编号、IBAN、Peppol-ID、前缀和付款期限在发票信息中设置。所有发票位于选项卡底部(权限按期间营业额)。 - 密钥、secrets 和请求头永远不会显示(仅显示 "已填写";留空 = 保留,清除 = 删除),也不会写入日志(仅记录哪些字段发生了变化)。它们保存在数据库中(
vestiging.peppol_gegevens):包含在备份中,不包含在配置导出中。
自助点餐机
顾客像在快餐店一样在立式机或平板上自行点餐,然后在收银台付款或在点餐机刷卡。点餐界面就在收银系统本身中,因此菜单、价格、选项、套餐、欢乐时光、时段、照片、过敏原、语言和小票都来自收银系统,无需在别处设置。点餐机上运行 PinPortal Kiosk 2 应用(Android,包括 Sunmi,以及 Windows、Linux 和 macOS),用于显示页面并打印小票。默认关闭。
开启和设置(管理员):设置 → 门店 → 屏幕与操作 → 自助点餐机。
- 选择顾客可选的方式:堂食和/或外带(外带使用外带价格和外带增值税率,如已设置)。
- 欢迎语、无人触摸多少秒后点餐机返回开始页面(购物车随之清空),以及点餐机上显示哪些商品组(都不勾选 = 全部)。
- 还要加点什么吗?:勾选商品组(如饮料、甜点);在购物车页面,点餐机会从中推荐几样商品。
- 付款,按每台点餐机设置(参见 添加和连接点餐机):
- 在收银台(默认,与旧点餐机相同):顾客点餐,获得取餐号,在收银台付款。点餐机旁无需刷卡终端。
- 在点餐机刷卡:顾客在点餐机旁的刷卡终端付款。
- 顾客选择:收银台付款或刷卡。点餐机没有刷卡终端时,则在收银台付款。
- 送往厨房(收银台付款时):在点餐机下单后立即(默认),或仅在收银台付款之后。
- 小票:在点餐机的打印机上(默认)、在收银台的小票打印机上,或不打印(只在屏幕上显示号码)。收银台付款时,点餐机打印一张带号码和尚未付款的单子;结账时收银台出小票。
- 手机上的订单状态(可选,默认关闭):点餐机小票和结束页面上会出现二维码。顾客扫描后可看到自己的号码和状态(已下单、制作中、已完成),订单完成时会收到通知。此功能通过管理门户运行,因此收银系统必须已连接门户。
- 酒精饮品和按公斤销售的商品永远不会出现在点餐机上:没有工作人员无法核查年龄,也没有秤。
- 条码扫描枪(可选,默认全部关闭):勾选扫描在自助点餐机上可以做什么:
- 商品加入购物车(商品的代码);
- 优惠码;
- 会员卡(客人累积积分);
- 礼品卡或储值卡作为付款。余额足够时,订单立即付清。否则卡支付一部分,客人用银行卡或在收银台支付其余部分(此时仅支持刷卡的自助点餐机也可以)。这样部分付款后客人无法再取消;订单在收银机上显示为 自助点餐机 … · 号码。
扫描枪本身在自助点餐机上设置:在 PinPortal Kiosk 2 应用的管理 → 条码扫描枪(键盘模式、内置扫描头或 COM 端口),附扫描枪测试。模拟键盘的扫描枪无需应用也能使用。
- 余额充值(可选,默认关闭;仅在可充值余额开启时有效):开启后,自助点餐机的首页会显示 余额充值。顾客扫描自己的储值卡或礼品卡(或输入代码),查看余额并选择金额。金额由你自行设置(1 至 6,默认 € 10、€ 20 和 € 50)。付款方式与自助点餐机的设置相同:刷卡,或凭取餐号在收银台付款。结账后金额计入余额。此类充值不发送到厨房,不显示在叫号屏上,也不生成二维码。可充值余额的最高余额在此同样适用。
- 挂到我的房账(酒店对接,默认关闭;设置 → 酒店 → 自助):购物车旁会显示挂到我的房账。酒店客人输入房间号和姓氏;若与当前入住该房间的客人相符,订单会发送到厨房,并作为已付款挂到房账(见酒店软件:挂到房账)。
- 比利时(黑盒子):尚未经黑盒子测试的功能在自助点餐机上会自动关闭(用礼品卡或余额支付、充值、优惠码、套餐、加价选项、欢乐时光),与收银台相同。
添加和连接点餐机
- 在自助点餐机列表中输入名称(如入口点餐机),然后选择添加点餐机。你会得到一个 6 位的连接码(30 分钟内有效)。
- 为点餐机选择顾客的付款方式:默认在收银台。如果是带刷卡终端的点餐机,选择刷卡或顾客选择,并选择此点餐机的刷卡终端(来自设置 → 付款)。
- 在点餐机上打开点餐页面:
- 在店内:在应用的管理 → Vast adres 中填入设置处显示的地址,例如
http://192.168.1.20:3000/kiosk; - 或通过管理门户(https,点餐机不在同一网络时也可):把设置处显示的点餐机地址关联到应用的点餐机代码,和旧点餐机一样。
- 在店内:在应用的管理 → Vast adres 中填入设置处显示的地址,例如
- 在点餐机上输入连接码。完成:点餐机会记住自己的密钥。重新连接会生成新码;移除则断开连接。
每台点餐机都会显示是否在线。
顾客如何点餐
- 带欢迎语的开始页面;顾客选择语言(收银系统的所有语言),点击开始点餐。
- 堂食或外带。
- 按商品组显示的菜单,含照片、价格(含欢乐时光)、过敏原以及售罄商品。有选项的商品或套餐会打开选择窗口。
- 购物车:修改数量,并可选择还要加点什么吗?。
- 下单(收银台付款):顾客在屏幕上看到大号的取餐号和金额,拿到单子后到收银台付款。在收银系统中订单以 点餐机 入口 · 42 保持未结(顾客报出的号码);照常结账。之后它在叫号屏上显示为已付款,如果设置为付款后才送厨房,则此时送往厨房。
- 刷卡付款:收银系统将金额发送到此点餐机的刷卡终端(与收银台相同的刷卡连接)。失败时顾客可以重试或取消(若允许选择,也可改为在收银台付款)。只有付款成功后,订单才会送往厨房并结账。顾客在屏幕上看到大号的取餐号并拿到小票。
- 几秒钟后点餐机回到开始界面。
故障时:通知和应急模式(在点餐机应用中,管理 → Bij storing;默认关闭)。点餐机无法连接收银系统时,会显示 Even gesloten。两项附加功能:
- Teams、Slack、Discord、ntfy、Home Assistant、Make 或 Zapier),恢复正常后再发送 hersteld。用 Testmelding sturen 可以检查地址。
- 应急模式:点餐机保存一份由点餐页面传来的简易菜单:没有选项或套餐的商品,按堂食价格(如果外带是唯一选项,则按外带价格)。
- 收银系统断开一段时间后(默认 60 秒),客人就从这份菜单点餐。
- 客人刷卡或在柜台付款。只有在应用中开启 Pinbetaling 时才能刷卡。
- 会打印两张应急小票:一张给客人(N1、N2 …),一张给柜台/厨房。小票上注明这不是收银小票。
- 收银系统恢复后,点餐页面会把应急订单以 Nood N… <kiosk> 的名称放入收银系统。这些订单不会发送到厨房(厨房已有应急小票),也不会显示在叫号屏上。
- 已刷卡且金额与收银系统一致:以 手动刷卡 结算。否则(在柜台付款,或金额不同)订单保持未结,交给服务员处理。
- 所有操作都记录在日志中。
- 比利时:使用已注册收银系统(GKS,黑匣子)时,每笔销售都必须立即通过收银系统和 FDM。因此应急模式很可能不被允许;请先咨询确认。在比利时,点餐机应用只有在额外确认后才会开启它,收银系统也会在点餐机设置处显示警告。
在收银系统中,点餐机订单是普通订单(外带或堂食,名为 点餐机 入口),记在员工 Kiosk 名下。该员工由收银系统自动创建;任何人都无法用它登录。不要将其设为停用,否则点餐机无法下单。点餐机订单会出现在报表、小票和叫号屏上。在点餐机上未完成的订单(未下单或未刷卡付款)会在 30 分钟后自动失效。
刷卡处于测试模式(设置 → 付款)?那么点餐机不会真正收款,方便试用。没有网络时无法刷卡支付;点餐机会提示可以在柜台点餐。
故障:如果无法连接收银系统,点餐机应用会显示"暂停营业",并自动恢复。如果点餐机通过管理门户运行且网络中断,应用可以切换到本地网络中的收银系统(在应用中:管理 → 扩展 → 故障时切换到本地网络);该地址由点餐机自行传递。
关闭:点餐机显示暂时关闭。点餐机和设置都会保留。日志会记录开启/关闭、设置、添加和移除的点餐机、连接以及取消的订单。
数字菜单牌
将带价格的菜单直接从收银机显示在电视(或其他带浏览器的显示器)上。默认关闭;在 设置 → 门店 → 屏幕与操作 → 数字菜单牌 中开启。然后在电视上打开 http://<kassaserver>:3000/menubord(或使用带二维码的 在单独屏幕上 / 在平板或手机上 按钮)。无需登录,也无需配对。
- 按商品分类显示商品和价格,顺序与收银机相同。您可以自行选择显示哪些分类(以及顺序)、1 到 4 列、深色或浅色、自定义标题(留空 = 门店名称)、商品照片和过敏原。
- 即时准确:菜单牌每 10 秒获取一次菜单(有更改时立即获取),因此售罄商品(带删除线并标有 售罄,或从菜单牌上移除)、库存为零、欢乐时光(活动价,原价带删除线,顶部显示名称和结束时间)以及餐段(只显示当前可售的内容)都会自动正确显示。
- 如果屏幕放不下所有内容,页面会轮流切换(默认每 12 秒一次,可设置为 5 到 120 秒)。
员工和 PIN 码
设置 → 员工(仅管理员):添加员工,修改姓名、角色和 PIN 码,以及设为停用。
- 角色:服务员(下单、结账、X 报表)、经理(另外还有折扣、退货、日结、钱箱和日志)和管理员(全部,包括所有设置)。这是默认设置;服务员和经理的权限可以调整(见各角色权限)。
- PIN 码为 4 到 8 位数字,在在职员工中唯一。PIN 码仅以加密(哈希)形式存储在数据库中,无法读取。
- 无法真正删除员工(小票和日志会引用该员工);停用 = 无法再登录。
- 始终至少保留一名在职管理员。
- 更换角色、设置新 PIN 码或停用:该员工当前的会话会立即结束。
- 比利时:可选填国民登记号,用于员工登记。
- 语言:该员工的界面语言(或"设备语言")。登录后收银机立即切换为该语言;员工也可以通过右下角的小旗帜自行更改(见语言)。
- 提示:收银台正式上线前,请更换演示 PIN 码 1111 和 2222。
用感应卡登录(可选)
默认关闭。开启方法:设置 → 员工,勾选 用感应卡登录(NFC、RFID 或 iButton)。需要:一台模拟键盘输入的 USB 读卡器(适用于 NFC 或 RFID 卡、钥匙扣、腕带或 iButton 钥匙)。这种读卡器会"输入"卡号并按 Enter;无需驱动程序或对接。
- 绑定:点击员工,然后点击 绑定感应卡,并将感应卡贴近读卡器。一张感应卡只属于一位员工。遗失时请点击 移除感应卡。
- 登录:在登录界面将感应卡贴近读卡器。PIN 码仍可照常使用。
- 打卡上下班(如已开启):在登录界面点击 上班 / 下班打卡,然后将感应卡贴近读卡器。
- 感应卡号码仅以加密形式(哈希)保存在数据库中,与 PIN 码相同。已停用的员工也无法用感应卡登录。
- 关闭:仅用 PIN 码登录,与以往相同。已绑定的感应卡会保留。
按角色权限
设置 → 权限(仅管理员):按角色勾选服务员和经理可以做什么。默认设置与上述完全一致(与收银台以往相同);与默认不同的选项会以颜色标出。
| 权限 | 服务员 | 经理 |
|---|---|---|
| 下单后删除行(作废) | 是 | 是 |
| 给予折扣 / 取消折扣 | 否 | 是 |
| 将商品设为“售罄” | 是 | 是 |
| 打印小票副本 | 是 | 是 |
| 退货(红字小票) | 否 | 是 |
| 挂账结账和接收挂账付款(仅在开启挂账付款时) | 否 | 是 |
| 中间报表(X 报表) | 是 | 是 |
| 日结(Z 报表) | 否 | 是 |
| 按期间营业额 | 否 | 是 |
| 管理钱箱 | 否 | 是 |
| 管理礼品卡(仅限带余额的礼品卡) | 否 | 是 |
| 阅读和回复评价(仅在开启评价管理时) | 否 | 是 |
| 管理会员卡(仅在开启会员卡时) | 否 | 是 |
| 查看日志 | 否 | 是 |
| 查看摄像头画面(仅在开启摄像头画面时) | 否 | 是 |
| 管理库存(仅在开启库存时) | 否 | 是 |
| 管理商品 | 否 | 否 |
| 管理平面图 | 否 | 否 |
| 门店、支付和打印机设置 | 否 | 否 |
| 查看和调整工作时间 | 否 | 否 |
- 管理员始终拥有全部权限。修改员工和权限始终只有管理员可以操作(否则有人可能给自己更多权限)。
- 某角色无权使用的按钮和标签页会对该角色隐藏;收银服务器也会进行校验。例如经理获得 管理商品 权限后,会看到 设置 按钮,其中只有“商品”标签页。
- 修改立即在所有收银台生效,并记入日志。恢复默认 会将一切恢复原样。
门店信息
设置 → 门店(仅管理员):门店的名称、地址、邮编、城市、电话和增值税号。这些信息显示在每张小票和预结单的顶部。小票底部文字也在这里设置(可多行;留空 = 无文字;默认“Bedankt en tot ziens!”),其下方是 小票语言(默认荷兰语;参见 语言)。小票预览会实时更新。保存后,下一张小票立即使用新信息。国家和税务信息(GKS)在此处特意不可修改。在比利时,增值税号为必填项。勾选 现金支付四舍五入到 5 分(默认关闭) 后,现金支付时总额会四舍五入(€ 6,62 → € 6,60,€ 6,63 → € 6,65);差额在小票上显示为“Afronding”。刷卡始终精确到分。
管理商品
以管理员身份登录,选择 设置 → 商品。
- 添加、修改(名称、价格、分类、堂食和外带增值税税率、小票上的名称、代码、售罄)和删除商品分类及商品。分类和商品都可以设置颜色;带颜色的商品在点单界面上显示为彩色按钮(文字自动为白色或深色,以便阅读)。
- 拖动分类或商品的 ≡ 即可调整顺序。可用鼠标操作,也可在平板上用手指操作。点单界面会完全按此顺序显示;已打开的收银界面会立即自动更新。
- 删除会把商品从收银台中移除,但旧订单和税务日记账仍保留该商品。分类只有在为空时才能删除。
- 选项:打开商品或商品分类,在“选项”下添加选项组,例如“做法”(必选一个)、“酱料”(最多一个)或“加料”(可多选,可设最少和最多;最多留空 = 不限)。每个选项有名称和加价(可为负数,例如 -0,50)。商品分类的选项组适用于该分类下的所有商品,并叠加在商品自身的选项之上。用 ▲▼ 调整顺序。随时可以删除:已有的订单和小票会自行保留所选选项。服务器也会校验必选项和最多数量。
- 每个商品的照片:见“商品照片”。
- 每公斤价格、PLU 编号和皮重(仅在开启秤时):见“秤的设置”。不勾选时,商品仍按件计价。
商品图片
每个商品都可以设置照片。
- 设置照片:设置 → 商品 → 选择商品 → 选择照片(在平板或手机上也可直接用相机拍摄)。照片会在浏览器中缩小到最大 512 × 512 像素(JPEG,通常 20–80 kB)并立即保存;更换照片 会替换照片,删除照片 会将其删除。商品列表中名称前会显示一张小照片。仅限拥有 管理商品 权限的用户;支持 jpg、png 和 webp,最大 512 kB。
- 显示方式由管理员在 设置 → 门店 → 商品照片 中选择,两项相互独立,默认关闭:
- 点单界面按钮显示商品照片:照片显示在商品按钮上方,下方为名称和价格。
- 顾客屏上商品显示照片:顾客屏上每行前显示一张小照片(顾客屏本身也必须开启)。没有照片的商品保持原样;关闭时一切与以前完全相同。
条码扫描枪
在收银机上用条码扫描枪可以扫描商品、优惠码、会员卡和礼品卡。在 设置 → 扫描枪 中开启(位于打印机和秤旁边的标签页;默认 关闭)。勾选扫描在点单界面上的作用:
- 商品加入账单:带该代码的商品(设置 → 商品,字段 代码;例如包装上的 EAN 条码)。有选项、套餐或按公斤计价时,会先打开选择窗口或秤,与点击时相同。打印标签 中的 在点单界面扫描 也会这样做;该功能照常工作。
- 优惠码加入账单(如果优惠码已开启)。
- 会员卡:带该卡号的顾客加入账单(如果会员卡已开启)。在有顾客的账单上扫描未知代码时,收银机会询问这是否是该顾客的新卡。
- 礼品卡或储值卡:收银机显示余额(如果带余额的礼品卡已开启)。付款在 结账 → 礼品卡 中进行;在那里也可以扫描该卡。
收银机先查找商品,然后是会员卡、礼品卡和优惠码。不在输入框中时,扫描在点单界面上生效。在输入框中,代码会直接填入该输入框。
扫描枪测试:在 设置 → 扫描枪 中,每次扫描都会显示代码以及收银机如何识别,即使扫描枪尚未开启。如果不工作:
- 将扫描枪设为 键盘(USB-HID)模式,并在代码后加 Enter。大多数扫描枪默认已是如此。
- 内置扫描头(例如 Sunmi 收银机)请在设备的扫描设置中设为 键盘输入。
- TS6X 秤的标签(重量和价格)由秤自身处理,即使扫描枪已开启。
在 自助点餐机 上单独设置扫描枪(设置 → 门店 → 自助点餐机);参见 自助点餐机。
打印标签
带有名称、价格和条码的商品标签,用安装在电脑或平板上的标签打印机(Brother、Dymo、Zebra ...)打印。在 设置 → 门店 → 打印标签 中开启(默认关闭)。在那里还可以选择标签的尺寸(38 × 25、57 × 32、62 × 29 或 100 × 50 mm),以及是否印上价格和条码。打印测试标签 会打印一张测试标签。
- 设置 → 商品 → (商品) → 标签:选择数量并点击 打印。
- 采购 → (已收货的订单) → 打印标签:每个商品打印与到货数量相同的标签(已收货的订货单位 × 每个订货单位的数量;配料除外)。一次最多 500 张标签。
- 收银系统会打开打印对话框:在其中选择标签打印机和标签卷的纸张尺寸。每张标签为一页。
- 条码即商品的代码(设置 → 商品):8 或 13 位数字且校验位正确 = EAN(12 位数字时会自动补上校验位),否则为 Code 128(字母、数字和标点符号,最多 30 个字符)。没有代码就没有条码。
- 在点单界面扫描(勾选项,默认关闭):模拟键盘输入的条码扫描枪会添加具有该代码的商品,并照常提示选择(选项、秤、过敏)。不能与 TS6X 秤同时使用,该秤有自己的带重量和价格的标签。
- 权限:管理商品 或 管理库存。
设置秤(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)
独立标签页 设置 → 秤(权限 门店、支付和打印机设置,默认仅管理员;即使秤尚未开启,该标签页也始终存在)。默认关闭:此时收银台与以前完全相同。看不到该标签页?
自动搜索。如尚未进行任何设置,打开此部分时收银台会自动搜索(搜索 按钮可重新搜索):
- 收银机(服务器)本身运行在 Aclas PC 秤或 AI 秤上 (TS6X, TS3X, TS5EX/NX/GX, iS6X, iS2X, iR6X, Ti6X, iL8X;设备品牌/型号:Windows 通过 WMI,Android 通过
getprop,Linux 通过 DMI),且 Aclas Scale Module 有响应?那么该秤会被设为在此设备上,标签秤也一样;在 Linux 上(没有 Scale Module),内置秤会以 "TS6X (ingebouwd)" 的名称、连同型号,加在找到的内部端口(/dev/ttyS...)上; - COM/USB 端口上是否连接了 OS6X?每个端口依次尝试 9600、4800、2400 和 19200 波特:先短暂监听(连续),然后发送
W(Toledo),否则尝试 Dialog 06(9600,7 数据位,奇校验:查询状态)。
找到后 = 填入表单,并显示 启用并使用 按钮:点一下即可使用。(搜索会向每个空闲的 COM 端口发送 W;被占用的端口,例如被刷卡机占用的,会被跳过。)
全部 Aclas 秤。每台秤都要选择型号;收银系统由此知道如何连接。共有两类:
- 在此设备上(只需设置一次):收银机运行在秤上(PC 秤或 AI 秤)。Windows 或 Android 通过 Aclas Scale Module 称重,无需端口、速率或协议;Linux(没有 Scale Module)通过秤的内部端口(通常为
/dev/ttyS0或/dev/ttyS1),需要端口、速率和协议。每台收银机只有一台;搜索会自动找到它。PC 秤或 AI 秤(TS6X、iS6X ...)始终是在此设备上:在列表中只能出现一次,其他 PC/AI 型号随后无法再选择。店内其他位置的 TS6X 仍可打印标签(此时只开启扫描标签)。 - 已连接(可同时多台):秤通过线缆(RS232/USB)、蓝牙或网络连接到收银服务器。按需添加(最多 8 台),每台有自己的名称。
一个列表,两个勾选框。所有秤都在同一个列表中。为每台秤勾选它的用途:在收银台称重(下单时收银系统读取重量)和/或扫描标签(秤打印带条码的标签,由收银系统扫描,并从收银系统接收 PLU)。TS6X 等 PC 秤或 AI 秤两者皆可;LS 标签秤只能打标签。每家门店只能有一台秤提供标签。
| 型号 | 类型 | 接口 | 在收银系统中 |
|---|---|---|---|
| OS6X | POS 秤 | RS232, USB, Bluetooth | 已连接,可同时多台 |
| OS2X | POS 秤 | RS232, USB | 已连接,可同时多台 |
| CS6X, CS3X | 收银秤 | RS232, USB, Ethernet, wifi | 已连接,可同时多台 |
| TS6X, TS3X, TS5EX, TS5NX, TS5GX | PC 秤(Windows、Android、Linux) | RS232, USB, Ethernet, wifi | 在此设备上(1次),也可作标签秤 |
| iS6X, iS2X, iR6X, Ti6X, iL8X | 带商品识别的 AI 秤(Windows、Android、Linux) | RS232, USB, Ethernet, wifi | 在此设备上(1次),也可作标签秤 |
| iS5X, OiT2X | AI 秤(仅 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&D | EK-i(含 EK-610i)、HV-WP | 收银秤(仅重量) | RS232,EK-i 也支持 USB | 连续(stream 模式),2400 波特,7E1 | 已连接,可同时多台 |
| Adam Equipment | Swift | 计价秤 | RS232、USB(选配) | 连续(连续发送到电脑),9600 8N1(待测试) | 已连接,可同时多台 |
| Avery Berkel | FX110、FX120、FX131(嵌入式,带扫描器) | 收银秤 | RS232,FX131 也支持 USB | Mettler Toledo 82/7 = Toledo 8217(收银机发送 W),9600 波特,7E1 | 已连接,可同时多台 |
| Avery Berkel | FX125 | 计价秤 | RS232 | Checkout-Dialog 06(9600,7O1) | 已连接,可同时多台 |
| Avery Berkel | Xs, XTs, XTi | 标签秤 | Ethernet、Wi-Fi、USB | 秤上自有的 PLU | 扫描标签 |
| Avery Weigh-Tronix | 7820, 7829, ZP900 | 收银秤 | RS232,7820 也支持 USB,ZP900 也支持 USB 和 Ethernet | NCI(收银机发送 W),9600 波特,7E1 | 已连接,可同时多台 |
| Balanzas Marques | BM1000P TOP | 收银秤(仅重量) | RS232 | METTLER(收银机发送 W,Toledo),9600 波特,7E1 | 已连接,可同时多台 |
| Balanzas Marques | BM5 Junior Tower Label, BM500 ETQ | 标签秤 | Ethernet、USB、RS232,BM500 ETQ 也支持 Wi-Fi | 秤上自有的 PLU | 扫描标签 |
| Baxtran | TW, VW, XTA, XTA-P | 计价秤 | RS232 | Toledo(收银机发送 W),9600 波特,7E1 | 已连接,可同时多台 |
| Bizerba | CS 300(也有嵌入式) | 收银秤 | RS232 | Checkout-Dialog 06(9600,7O1) | 已连接,可同时多台 |
| Bizerba | K-Class Flex, KH II | 标签秤 | Ethernet | 秤上自有的 PLU | 扫描标签 |
| Brecknell | 6702U, 6710U, 6720U | 收银秤 | RS232、USB(虚拟 COM 端口) | NCI(收银机发送 W),9600 波特,7E1 | 已连接,可同时多台 |
| CAS | PD-II, PDN, PDI, PDS-B | 收银秤 | RS232,PDN 也支持 USB 和 Bluetooth,PDI 也支持 USB | ECR type 2 = Toledo(收银机发送 W),9600 波特,7E1 | 已连接,可同时多台 |
| CAS | CL3000, CL5500, CL7200 | 标签秤 | Ethernet、USB、RS232,CL5500 和 CL7200 也支持 Wi-Fi | 秤上自有的 PLU | 扫描标签 |
| Datalogic | Magellan 9300i、9400i、9800i(带秤的扫描器) | 收银秤 | RS232(独立称重端口)、USB | Mettler Toledo 8217(收银机发送 W),9600 波特,7E1 | 已连接,可同时多台 |
| Dibal | KS-400, D-POS 400 | 收银秤 | RS232,D-POS 400 也支持 USB | Checkout-Dialog 06(9600,7O1) | 已连接,可同时多台 |
| Dibal | G-325, PI-100 | 计价秤 | RS232 | Checkout-Dialog 06(9600,7O1) | 已连接,可同时多台 |
| Dibal | M-500 (Mistral), D-900, CS-2200 | 标签秤 | Ethernet、Wi-Fi、USB | 秤上自有的 PLU | 扫描标签 |
| DIGI | DS-781 | 计价秤 | RS232 | DIGI Type B(收银机发送 ENQ),9600 8N1 | 已连接,可同时多台 |
| DIGI | SM-120, SM-6000 | 标签秤 | Ethernet、Wi-Fi | 秤上自有的 PLU | 扫描标签 |
| Dini Argeo | DFW, DGT, 3590E | 收银秤(仅重量) | RS232、USB、Ethernet,DFW 和 3590E 也支持 Wi-Fi | 连续(ST,GS, 0.512,kg),9600 8N1 | 已连接,可同时多台 |
| Excell Precision | TPE, AM4, FD4-P, FDP4-P, GE4, GEP4 | 计价秤 | RS232 | 连续(ST,GS,+0.876kg),9600 8N1(仅 TPE 待测试) | 已连接,可同时多台 |
| Gram | XFOC RS, XFOC+ RS, ZFOC RS | 计价秤 | RS232、USB(Gram 线缆) | Gram(收银机发送 ENQ,然后发送 DC1),9600 8N1(XFOC 待测试) | 已连接,可同时多台 |
| Ishida | Uni-3, Uni-5, Uni-7, Uni-9 | 标签秤 | Ethernet、Wi-Fi、USB | 秤上自有的 PLU | 扫描标签 |
| Kern & Sohn | RPB, RFC | 计价秤 | RS232, USB | Checkout-Dialog 06(Prot = DLG-06,9600,7O1) | 已连接,可同时多台 |
| Kern & Sohn | RFE(计价)、IFB、EOC | 计价秤 / 收银秤 | RS232 | 连续,9600 8N1 | 已连接,可同时多台 |
| Mettler Toledo | Ariva-S | 收银秤 | RS232、USB(虚拟 COM 端口) | Toledo 8217(收银机发送 W),9600 波特,7E1 | 已连接,可同时多台 |
| Mettler Toledo | Viva | 收银秤 | RS232 | Toledo 8217,9600 波特,7E1 | 已连接,可同时多台 |
| Mettler Toledo | bPlus, UC Evo | 标签秤 | Ethernet、Wi-Fi | 秤上自有的 PLU | 扫描标签 |
| Minebea Intec | Signum, Combics, Midrics, Puro | 收银秤(仅重量) | RS232、USB,Signum 和 Combics 也支持 Ethernet | 连续(SBI,自动打印),9600 8N1 | 已连接,可同时多台 |
| Ohaus | Aviator 7000 | 计价秤 | RS232 或 USB | Checkout-Dialog 06(9600,7O1) | 已连接,可同时多台 |
| Ohaus | Valor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000 | 收银秤(仅重量) | RS232, USB, Ethernet | 连续(Auto Print Continuous),9600 8N1 | 已连接,可同时多台 |
| Precia Molen | DP400 | 收银秤 | RS232, USB | Checkout-Dialog 06(9600,7O1) | 已连接,可同时多台 |
| Precia Molen | DPOS CR, C 210 B, C 210 C | 计价秤 | RS232 | Checkout-Dialog 06(9600,7O1;C 210 待测试) | 已连接,可同时多台 |
| Precia Molen | Corail 500 | 标签秤 | Ethernet、Wi-Fi | 秤上自有的 PLU | 扫描标签 |
| Precisa | XB、XT、LS、LX(精密天平) | 收银秤(仅重量) | RS232,LS 和 LX 也支持 USB | 连续(打印模式 CONTINUOUS),9600 8N1 | 已连接,可同时多台 |
| Rice Lake | BenchPro BP-S, BenchPro BP-R | 收银秤 | RS232 | BP-S Toledo 8213,BP-R NCI(两者均为收银机发送 W),9600 波特,7E1(待测试) | 已连接,可同时多台 |
| Rongta | RLS1000, RLS1100 | 标签秤 | Ethernet、RS232、Wi-Fi | 秤上自有的 PLU | 扫描标签 |
| Sartorius | Entris, Quintix | 收银秤(仅重量) | RS232, USB | 连续(SBI,自动打印),9600 8N1 | 已连接,可同时多台 |
| Star Micronics | mG-T12, mG-T30, mG-T60, mG-S8200 | 收银秤(仅重量) | RS232、USB(虚拟 COM 端口) | 连续,9600 8N1(待测试) | 已连接,可同时多台 |
| T-Scale | PA10, PA15, PEA10 | 标签秤 | Ethernet | 秤上自有的 PLU | 扫描标签 |
| UWE | ASEP | 计价秤 | RS232 | 连续,9600 8N1(待测试) | 已连接,可同时多台 |
| Wedderburn | TSDS983 | 收银秤 | RS232 | DIGI Type B(收银机发送 ENQ),9600 8N1(待测试) | 已连接,可同时多台 |
| Wedderburn | TSDS781T, TSDS782T | 计价秤 | RS232 | DIGI Type B,9600 8N1(待测试) | 已连接,可同时多台 |
| Wedderburn | TSSM120 | 标签秤 | Ethernet、RS232 | 秤上自有的 PLU | 扫描标签 |
| Wintec | ScalePOS ACS-S60E(内置秤的收银机) | 收银秤 | 内部 COM6(Windows)或 COM4(Android) | 连续,9600 8N1(待测试) | 已连接 |
| Zebra | MP7000、MP72(带秤的扫描器) | 收银秤 | RS232(AUX 端口) | SASI = Toledo(收银机发送 W),9600 波特,7E1(待测试) | 已连接,可同时多台 |
- A&D EK-i 和 HV-WP:将秤设为 stream(EK-i:
prt 0;出厂时为 PRINT 键),收银机设为 连续,2400 波特,7E1(A&D 出厂即如此)。报文为ST,+00512.00 g(US= 不稳定,OL= 超重)。 - Adam Equipment Swift:将秤设为 连续发送到电脑(8N1);收银机则设为 连续。
- Avery Berkel FX110、FX120 和 FX131:在秤上选择协议 Mettler Toledo 82/7,并将收银机设为 请求 (Toledo),7E1(9600 波特)。也可以用 Dialog 06。FX125(带价格显示屏)不支持 Toledo:该型号使用 Dialog 06。选择型号时收银机会自动设置。
- Avery Weigh-Tronix 7820、7829 和 ZP900 以及 Brecknell 6702U、6710U 和 6720U:NCI,Weigh-Tronix 的协议。收银机发送
W(与 Toledo 相同),秤回复重量(1.234KG)和一行状态;状态行表示是否不稳定、超重或过轻。收银机设为 请求 (Toledo),7E1(9600 波特)。USB 作为虚拟 COM 端口工作。ZP900 请将收银机接到端口 2(NCI)。67xxU 在秤上也可选 8213(SCP03)。 - Balanzas Marques BM1000P TOP:在 COM 端口处选择协议 B(METTLER)以及 9600 波特、7 位数据位、偶校验;收银机则设为 请求 (Toledo),7E1。
- Baxtran TW、VW、XTA 和 XTA-P(计价秤;VW 和 XTA-P 带立杆):在秤的 RS232 菜单中选择协议 Toledo、9600 波特和 7 位数据位、偶校验(7E1);收银机则设为 请求 (Toledo),7E1。选择型号时收银机会自动设置。CONT(秤自己发送)也可以:此时将收银机设为 连续,速率和数据位相同。使用 RS232 线(9 针)或 USB 转 RS232 线连接。
- Bizerba CS 300:Checkout-Dialog 06(Bizerba 规范):收银机发送每公斤价格,经检定的秤计算金额。如果秤要求校验码,可向 Bizerba 或供应商索取。
- CAS PD-II、PDN、PDI 和 PDS-B(PDS-B 可在 LRE 等处购买):在秤上选择 ECR type 2(Toledo),并将收银机设为 请求 (Toledo),7E1(9600 波特)。
- Datalogic Magellan 9300i、9400i 和 9800i:将独立称重端口的 Scale Interface Type 设为 Mettler Toledo 8217,收银机设为 请求 (Toledo),7E1。
- Dibal KS-400、D-POS 400、G-325 和 PI-100:在秤上选择协议 Checkout_Dialog06(协议 24)以及 9600 波特、7 位数据位、奇校验(参数类型 5);收银机则设为 Dialog 06。D-POS 400 也可通过 USB 连接。
- DIGI DS-781:将秤设为 Type B / 标准命令(data transmission
00011);收银机发送ENQ,并收到净重、皮重、每公斤价格和金额。 - Dini Argeo DFW、DGT 和 3590E:将串口设为连续发送(9600 8N1);收银机则设为 连续。
- Excell Precision TPE(以及第 4 代 AM4、FD4-P、FDP4-P、GE4、GEP4):将 RS232 输出设为 连续(9600 8N1);收银机则设为 连续。
- Gram XFOC RS、XFOC+ RS 和 ZFOC RS:协议 Gram(9600 8N1)。收银机发送
ENQ,秤回复ACK,收银机发送DC1,然后秤发送重量:SOH STX S/U/F teken gewicht eenheid BCC ETX EOT(S= 稳定,U= 不稳定,F= 错误;BCC = 从状态到单位(含)的 XOR)。通过 RS232 或 Gram 的 USB 线缆连接。 - Kern & Sohn RPB 和 RFC:在秤上设置
Prot = DLG-06(收银机接口为选件 965-419);收银机则设为 Dialog 06。RFE、IFB 和 EOC:连续发送(8N1),收银机设为 连续。 - Mettler Toledo Ariva/Viva:将秤设为 Toledo 协议(8217),收银机设为 请求 (Toledo),数据位 / 校验 = 7E1(Mettler:9600 波特,7 位数据位,偶校验;Ariva 也可通过 USB 作为虚拟 COM 端口连接)。选择型号时收银机会自动设置。
- Minebea Intec Signum、Combics、Midrics 和 Puro 以及 Sartorius Entris 和 Quintix:SBI,自动打印(9600 8N1);收银机则设为 连续。报文为
N + 0.512 kg;没有单位表示仍不稳定。 - Ohaus Aviator 7000:在秤的设置中(第 20 步)选择协议 Dialog 06;收银机则设为 Dialog 06。根据线缆使用 RS232 或 USB。
- Ohaus Valor 7000、Ranger 3000/4000/7000 和 Defender 3000(只称重不计价):将秤设为 Auto Print Continuous(9600 波特,8N1),收银机设为 连续。秤发送
0.512 kg G;重量后的?表示重量仍不稳定。Ranger 7000 也可通过 Ethernet 连接(TCP 端口 9761)。 - Precia Molen DP400、DPOS CR 和 C 210(商用秤自 2025 年起归属 Dibal):Dialog 06(9600 7O1),与 Dibal 相同。如果 C 210 不行,请尝试 请求 (Toledo),7E1。
- Precisa XB、XT、LS 和 LX:将打印模式设为 CONTINUOUS 和 9600 8N1,行中不含日期、时间和 ID;收银机则设为 连续。没有单位表示重量仍不稳定。
- Rice Lake BenchPro BP-S(Toledo 8213)和 BP-R(NCI):收银机设为 请求 (Toledo),7E1。
- Star Micronics mG-T 和 mG-S8200:通过 RS232 或 USB(虚拟 COM 端口,使用 Star 的驱动)设为 连续。
- UWE ASEP:RS232 连接电脑/收银机,收银机设为 连续(待测试)。
- Wedderburn TSDS983、TSDS781T 和 TSDS782T 是使用自有型号的 DIGI 秤:DIGI (Type B),与 DIGI DS-781 相同。如果不行,请尝试 请求 (Toledo),7E1。
- Wintec ScalePOS ACS-S60E:收银机直接运行在 ScalePOS 上;内置秤位于 COM6(Windows)或 COM4(Android),9600 8N1。选择 连续;如果秤没有发送任何数据,搜索 会找到正确的协议。
- Zebra MP7000 和 MP72:RS232 AUX 端口出厂设为 SASI(9600 7E1,收银机发送
W):收银机设为 请求 (Toledo),7E1。 - 这些品牌的标签秤(Avery Berkel、Balanzas Marques、Bizerba、CAS、Dibal、DIGI、Ishida、Mettler Toledo、Precia Molen、Rongta、T-Scale、Wedderburn)是带有自有 PLU 文件的独立系统。在该秤上开启 扫描标签,并设置与秤上相同的条码(EAN-13,开头 20–29,PLU 加重量或价格)。PLU 在秤上或用该品牌的软件设置;发送至 TS6X 和 下载 PLU 文件 仅适用于 Aclas。
收银机中也有同一列表:设置 → 秤 → 所有秤(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 相同。
- Android:Aclas 的应用 AclasScaleDriver(
com.aclas.aclasscaledriver)通常已装在秤上;如果没有,请安装aclas-android/AclasScaleDriver.apk。HorecaPOS 应用直接与该应用的服务通信,因此无需额外的库。 - Linux:Aclas 没有 Linux 版 Scale Module。只需选择型号(如 TS6X):连接方式会变为在此设备上(内部端口),使用
/dev/ttyS0、9600 波特率、Toledo。内置秤通常在/dev/ttyS0或/dev/ttyS1;搜索会逐个尝试并填入正确的端口、速率和协议。这里同样只能一次。
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);点单界面把商品连同重量加入订单。设置方法:
- 在该秤上开启 扫描标签,使用与插件中相同的条码。建议:开头为
27,PLU 5 位,重量(Aclas 类型 17):收银系统会按每公斤价格自行计算。也可以用价格(类型 12,开头为22)。 - 在该秤上关闭 在收银台称重:插件和 Scale Module 不能同时访问秤。重量来自条码。如果插件在 搜索 时有响应,收银系统会直接给出该结果,且不启动 Scale Module。没有激活码时,插件仍可称重并计算金额,但不识别商品。
- 在插件本身中:在 Scale and Barcode Format Settings → Default Barcode Format 设置条码(类型 17),并在窗口设置中设置插件点击并输入条码的位置。请为此选择点单界面上的空白处,不要选在按钮上。新商品由门店自己在秤上教给插件(AI 训练)。
- 为称重商品设置 PLU 编号,并把 PLU 发送到秤上(发送至 TS6X 或 PLU 文件);插件按 PLU 编号识别。
- 只有当秤本身打开着点单界面时,收银系统才让插件进行识别(
POST /aiplugin/resume,关闭时/aiplugin/suspend,秤上的端口 5003;首次还会设置 EmployeeMode:秤的顾客屏不显示商品)。在其他收银台和平板上以及通过管理门户不会有任何反应。 - 插件总是以 Resume 状态启动,且无法报告自身状态。因此点单界面每 30 秒重新发送一次 resume;如果中断(界面关闭、插件或秤重启),收银系统会在一分钟内将插件设为 Suspend 并保持该状态。
- 插件需要 Aclas 为每台秤提供激活码(与序列号绑定)。目前支持 Windows;Aclas 的 Android 版本随后推出(收银系统在那里的处理方式相同)。
Aclas OS6X(收银台 POS 秤,RS232/USB;其他已连接的秤也同样工作):
- 一台或多台秤(最多 8 台),每台有名称(例如 柜台、吧台)和独立连接:COM 端口 / USB(Windows 上为
COM3,Linux/Android 上为/dev/ttyUSB0)及速率,或通过串口转网络转换器连接网络(IP 地址和 TCP 端口,例如 4001)。 - 协议:请求 (Toledo) = 收银机发送
W,秤回复重量(Toledo 8217,OS6X 通常如此设置;也包括不稳定/超载/低于零的状态消息);或 连续 = 秤自己持续发送重量(ST,GS, 0.512kg,US= 不稳定);或 Dialog 06(已检定),见下文;或 DIGI (Type B) = 收银机发送ENQ,DIGI 回复状态、净重、皮重、每公斤价格和金额(37 个字符:<status> <toestand> CR 0<netto> CR 4<tarra> CR U<kiloprijs> CR T<bedrag> CR LF;状态位 1 = 稳定,位 2 = 低于零,位 3 = 超重,位 4 = 过轻),或 Gram = 收银机发送ENQ,等待ACK,发送DC1并读取SOH STX <S/U/F> <teken> <gewicht> <eenheid> <BCC> ETX EOT。请在秤上设置相同的协议和速率。数据位 / 校验:8N1(Aclas、Adam Equipment、DIGI、Dini Argeo、Excell Precision、Gram、Kern & Sohn、Minebea Intec、Ohaus、Precisa、Sartorius、Star Micronics、UWE、Wedderburn、Wintec)或 7E1(A&D、Avery Berkel、Avery Weigh-Tronix、Balanzas Marques、Baxtran、Brecknell、CAS、Datalogic、Mettler Toledo 8217、Rice Lake、Zebra);Dialog 06 始终为 7O1。请求 也能读取 NCI(Avery Weigh-Tronix、Brecknell、Rice Lake BP-R):收到W后秤回复LF 1.234KG CR LF S00 CR ETX;状态行(S+ 2 或 3 字节)表示是否不稳定(字节 1 位 0)、过轻(字节 2 位 0)或超重(字节 2 位 1);^^^^^= 超重,_____= 过轻。 - Dialog 06(Checkout-Dialog 06,用于收银台连接检定秤的欧洲协议):收银台将每公斤价格(及商品皮重)发送给秤;秤称重后自行计算金额,并在自身(经检定的)显示屏上显示每公斤价格、重量和金额。收银台读取重量和金额;称重窗口中显示“由秤计算”。固定为 9600 波特、7 数据位、奇校验、1 停止位(此时设置中的速率无效)。流程:
EOT STX 01 ESC <kiloprijs 6> ESC ETX(含皮重:记录03,4 位数字,单位克)→ 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 = 尚未就绪,100 ms 后重试;20 = 晃动中;21 = 请先拿起;30/31 = 过轻;32 = 过重;11 = 价格无效)。校验码:许多 Dialog 06 秤会不时(例如每 30 次称重)向收银软件索取校验码(记录 11 → 记录 10)。这些代码及其计算方法,秤的制造商只提供给收银系统供应商。请在 校验码 中填写(每对 4 个十六进制字符,例如74AE 1B2C);秤索取时收银台会发送。如秤使用变化的数字(Z)计算,固定代码就不适用,收银台会提示;此时请让供应商将秤设置为不进行此项校验,或改用 Toledo。 - 秤连接在运行收银服务器的电脑或设备上;所有收银台和平板都通过收银服务器称重,并在称重窗口中选择使用哪台秤。测试 会称重一次。
- 网络连接在所有平台上都可用。
- 也可手动输入重量:开启 = 即使有秤也可手动输入重量;没有 OS6X 时始终可以手动输入。
扫描标签(秤旁的勾选框:Aclas TS6X、其他 PC 秤或 AI 秤、LS 系列或 LH15X;秤 + 标签打印机,每家门店一台):
- IP 地址:仅Naar TS6X sturen需要。称重和扫描标签无需 IP。如果收银系统就运行在 TS6X 上,请留空:收银系统会发送给自己(127.0.0.1)。如果同一台秤也在收银台称重,两个勾选框都在同一台秤上(搜索会这样设置)。
- 扫描标签:在点单界面扫描标签。设置条码格式,与 TS6X 上一致:开头为(20–29,默认
28),PLU 位数(4、5 或 6),然后是以克为单位的重量或以分为单位的价格,加上校验位(EAN-13)。设置下方有示例。 - PLU 编号:在 设置 → 商品 中,可称重商品设置每公斤价格,可选皮重和 PLU 编号(唯一)。PLU 编号从列表中选择(无 PLU、下一个空闲编号、其他编号…);勾选 每公斤价格 时会自动填入下一个空闲编号。仅 TS6X 的标签和 PLU 需要:没有 TS6X 时可保持 无 PLU。
- 在 Windows 和 Linux 上可直接发送;在 Android 和 macOS 上请使用 PLU 文件。首次安装时,请对照所供秤的 SDK 手册检查 PLU 文件的字段名和
aclas-plu.ps1中的代码(只需在一处修改:packages/shared/src/weegschaal.ts中的ACLAS_PLU_KOLOMMEN)。
管理门户:发送给门户的消息包含功能 秤(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,权限设置门店、支付和打印机;此前位于“设置 → 门店”):
- 开启 使用 Thuisbezorgd(立即生效,无需点保存)。
- 注册 Thuisbezorgd。然后门店在 Thuisbezorgd(Partner Hub 或客户经理)中选择 OptimumPOS / Pin Voordeel 作为收银系统。JET 随即启动接入会话;门户会找到已注册的收银台(按邮编和名称,否则由 Pin Voordeel 在门户中手动关联会话),发送配置,并向收银台请求菜单。之后对接即上线。
- 勾选可通过 Thuisbezorgd 订购的商品(按分类或单个),可另加 Thuisbezorgd 专用描述。菜单(价格、作为 modifiers 的选项、过敏原、增值税)会自动同步;PLU = 商品/选项的 id。商品目录修改后,收银台会在 30 秒内更新菜单;只有“售罄”/“恢复供应”通过可用性 API 同步。
- Thuisbezorgd 营业时间:配送和外带分别设置(例如
16:00-22:00,多个时段用逗号分隔)。通过下方的保存营业时间按钮保存,对接就绪后会作为 service times 发送至 Thuisbezorgd。 - 暂时关闭 / 重新营业(在 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。
收银台与网店一致(各项可单独开启,默认关闭;旧版网店会忽略新字段)。收银台中开启的功能,在网店中同样适用:
- 欢乐时光:网店按收银台当时的价格计价(显示划掉的原价和欢乐时光名称),季节设置同样适用。
- 餐段和订单类型(如已开启):网店只显示当前可售的商品,自取和配送时显示该选择对应的价格和商品(桌边点餐:堂食)。菜单中每个商品包含
prijzen(afhalen、bezorgen)和nietBij,并附有列表dagdelen。 - 套餐:客人选择菜品(固定菜品和可选菜品,含其选项);在收银台中显示为一行套餐,下方列出菜品,套餐价格按菜品分摊(每道菜的增值税准确)。仅属于套餐的菜品作为
menuArtikelen一起发送。不支持选择的旧网店:套餐作为普通商品显示在小票上,与以前相同。 - 库存用完 = 售罄,包含已用完原料的可选项也一样。
- 过敏原:收银台中关闭 = 网店中不显示。
- 会员卡:客人可在结账时积分(凭电话号码或电子邮件);收银台将顾客关联到订单,结账时加上积分(在店内兑换)。网店显示积分余额。
- 礼品卡(设置 → 门店 → 礼品卡 → 在网店销售礼品卡,仅限储值型):客人购买礼品卡并在线支付;收银台创建礼品卡并立即生效,代码通过门户返回网店(状态和邮件)。如同时开启礼品卡作为支付方式,客人外带时可选择 "到店用礼品卡支付"。
- 优惠码(设置 → 优惠码,开关在“门店”中):每个代码适用于收银台和/或网店;使用次数两者合计。
- 暂停和繁忙:顶栏的 网店 按钮:暂停网店(附给客人的提示文字)和 繁忙(额外分钟)。几秒钟内同步到网店。
- 在线预订使用收银台的规则(设置 → 门店 → 预订):最多人数、提前天数、时间段、最少提前时间以及每个星期几的时间。
- 配送与时段:参见“配送与时段”中的网店跟随收银台。
- 餐桌自助餐(设置 → 门店 → 自助餐 → 通过二维码在餐桌点餐时也适用):如果该桌正在进行套餐方案,客人会看到该方案的菜品显示为 已包含,价格 € 0,并显示轮次、每人上限、等待时间和时间限制。其余部分照常付费;所有内容都记入该桌的账单。如果该桌状态刚刚发生变化,收银系统会拒绝订单,客人需重新下单。
- 挂账(设置 → 发票 → 挂账付款 → 也用于网店):参见挂账付款中的 网店中。
- 在线候位(设置 → 门店 → 候位名单):参见无预订客人的候位名单中的 在线候位。
- 追加推荐:"还要加点什么吗?"(可选,默认关闭;设置 → 门店 → 结账 → 网店追加推荐):选择商品分类(例如饮料、酱料、甜点)以及推荐数量。之后网店会在购物车和结账时显示这些分类中尚未加入购物车的商品(仅限当前在售、未售罄且无必选项的商品);顾客轻点一下即可添加。未选择分类 = 关闭,与以前相同。自助点餐机有自己的追加推荐(参见 自助点餐机)。
为此,网店菜单使用 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 中),按接收日期计算,不会在外带/配送中重复计算。桌边点餐照常计入桌台。
刷卡和支付终端
设置 → 付款(仅管理员):
- 终端:每台终端设置名称、终端 ID 以及来自 PinPortal 的专属 API 密钥(Klant → Bewerk klant → Overige → API Keys)。保存后只显示密钥的末尾部分;密钥永远不会回传到浏览器。用 测试连接 检查密钥和终端。
- 测试模式:模拟终端(约 7 秒后成功;以 13 分结尾的金额会被拒绝)。方便在没有刷卡机时测试。
只要至少有一台终端设置了 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(与收银服务器的上限相同)。
无网络
收银台在本地网络中运行,不需要互联网;只有通过对接刷卡时才需要。门店没有网络时,顶部栏显示 无网络 · 手动刷卡(每分钟检查一次)。此时(以及终端启动失败后),结账界面会出现 已在终端刷卡 按钮:在终端上直接刷卡,然后用此按钮记录。
平面图和桌台
设置 → 平面图(仅管理员):
- 添加平面图(例如大厅、露台、阳光房)、重命名、删除,并用 ◀ ▶ 调整顺序。
- 用网格上方的按钮添加桌台(圆形、方形、长桌、高脚桌),并用鼠标或手指拖到相应位置。选中桌台的蓝色角标可放大或缩小桌台。
- 每张桌台可设置名称/编号、座位数(桌台周围的小椅子会相应显示)和形状;可复制或删除。
- 键盘操作:方向键移动(Shift = 大步移动),Delete 删除。
- 修改在点击 保存 后才生效;“撤销”可将一切恢复。
- 有未结订单的桌台或平面图无法删除。已删除的桌台会保留在旧订单中。
将配置迁移到第二家门店
设置 → 导入/导出(仅管理员)。一家门店完全设置好后,可将配置导出为 .json 文件,再导入第二家门店的收银台。可按部分选择:
- 商品:分类、商品、价格(也按订单类型)、增值税、选项、套餐、欢乐时光(含季节)、餐段、过敏原、原料/配方、集章卡、自助餐套餐以及商品照片。
- 平面图:区域和桌台。
- 其他设置:门店的所有选项、打印机(不含 IP 地址)、各角色权限和会计设置。
永远不会导出:门店的名称、地址、邮编、城市、电话、邮箱、增值税号和小票结尾语、Z 报表的邮箱、刷卡终端及其密钥、员工和 PIN 码,以及所有营业额、小票、顾客和库存数量。
导入有严格保护:醒目的红色警告、勾选“Ik begrijp...”、重新输入管理员自己的 PIN 码、没有未结订单、相同国家(增值税税率),并事先自动备份。导入在一个事务中完成:如出错,则什么都不会改变。已有的商品、分类、原料和桌台不会被清除,而是从收银台中移除(与删除相同),因此旧小票和报表仍然准确。
从其他收银系统导入
换系统无需重新录入。始终可用(无需开关):在 设置 → 导入/导出(仅限管理员)中有 从其他收银系统导入。
- 可导入内容:商品(名称、含增值税价格、增值税、分类、代码/PLU、库存)或会员卡顾客(姓名、电话、邮箱、积分、地址、邮编、城市;名和姓会合并)。
- 文件:旧收银系统的导出文件(Dobizzz/DoPos、Lightspeed、MplusKASSA、unTill、Tebi ...)或自制清单:CSV(; , 制表符或 |;UTF-8 或荷兰语版 Excel)或 Excel (.xlsx),第一个工作表,第一行为列名。旧的 .xls 文件请先另存为 .xlsx 或 CSV。
- 预览:收银机根据列名识别各列(Omschrijving、Verkoopprijs incl. BTW、BTW %、Omzetgroep、Artikelnummer、GSM、Spaarpunten ...),并显示前 10 行。如果某列不对,请自行选择。点击 导入 后才会生效。
- 商品:价格可写作 3,50、€ 3,50 或 1.234,50;增值税可写作 21、9%、0,09、高或低(未知或为空:使用您选择的税率,默认最高税率)。尚不存在的商品分类会自动创建(无分类时:"已导入")。
- 库存(列 Voorraad、Stock、Aantal ...):如果已开启库存管理(设置 → 门店),该商品会进行库存管理,库存将设为该数量(库存历史中的一次盘点,原因 "已导入")。为空:库存保持不变。
- 示例文件 (CSV):一份可自行填写的清单(Naam;Productgroep;Prijs;Btw;Voorraad;Code),例如在 Excel 中。
- 顾客:积分以更正 "从其他收银系统导入" 的形式加入(可在历史记录中查看)。短信或邮件的同意不会一并导入(GDPR):需重新征求。请先开启会员卡。
- 已有商品(代码相同,或无代码时名称相同)和顾客(电话或邮箱相同)会被跳过,勾选后则会更新(商品更新名称、价格、增值税、分类和库存)。文件中的重复行只取一次。
- 完成后:显示新增、更新和跳过的数量,并逐行说明问题(例如没有价格)。每次最多 5000 行。日志中记为 "已导入配置"。
语言(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),然后是天城文语言:हिन्दी(印地语),然后是吉兹字母语言:ትግርኛ(提格里尼亚语)和 አማርኛ(阿姆哈拉语),然后是提非纳字母语言:ⵜⴰⵎⴰⵣⵉⵖⵜ(塔马齐格特语,柏柏尔语),最后是 中文(简体)(简体中文)。收银服务器的所有界面、按钮、提示和错误信息都会被翻译。
- 按员工:所选语言会保存在已登录的员工账户中(
gebruiker.taal)。使用其他语言的员工登录时,收银台会立即切换。设备本身会记住最近使用的语言,因此 PIN 码界面也会显示该语言。如果你选择了一种语言(在 PIN 码界面或登录后),并在 10 分钟内(重新)登录,则以该选择为准,并成为该员工的语言。切换语言会重新加载界面;你仍保持登录,未结账单也保持打开。 - 设备首次使用:如果平板或电脑上尚未设置语言,收银台会以安装时选择的语言启动。如果未选择语言,则使用设备本身的语言(浏览器或操作系统,Android 应用中也是如此);如果该语言不在支持范围内,则使用荷兰语。之后每台设备都会记住自己的选择。
- 东欧:波兰语、捷克语、斯洛伐克语、匈牙利语、罗马尼亚语、保加利亚语、克罗地亚语(也适用于波斯尼亚语)、立陶宛语、拉脱维亚语、乌克兰语和俄语:荷兰和比利时大多数中东欧外来务工人员所说的语言。
- 巴尔干:塞尔维亚语(拉丁字母,荷兰和比利时的大多数塞尔维亚人都这样书写;也适用于黑山语)和阿尔巴尼亚语(阿尔巴尼亚、科索沃和北马其顿)。
- 非洲之角:提格里尼亚语(厄立特里亚)和阿姆哈拉语(埃塞俄比亚),均使用吉兹字母,以及索马里语(拉丁字母)。
- 伊朗:波斯语(法尔西语)。设置为阿富汗波斯语(fa-AF)的设备使用达利语,其余使用法尔西语。
- 荷属加勒比和苏里南:帕皮阿门托语(Papiamentu,库拉索和博奈尔拼写;也适用于阿鲁巴)和苏里南汤加语(Sranantongo)。
- 亚洲:印地语(天城文;也适用于苏里南印度斯坦语 Sarnami Hindustani)、乌尔都语(从右到左)、印度尼西亚语和越南语(拉丁字母,小票上也可使用)。
- 摩洛哥语言:达里贾语(摩洛哥阿拉伯语,日常口语),提供阿拉伯字母和拉丁字母两种写法(许多荷兰摩洛哥裔人士发消息时就用拉丁字母),另有标准阿拉伯语。柏柏尔语:塔里菲特语(里夫语,拉丁字母;大多数荷兰摩洛哥裔人士来自里夫地区)和以提非纳字母书写的标准摩洛哥塔马齐格特语。
- 从右到左:阿拉伯语(标准阿拉伯语)、乌尔都语、阿拉伯字母达里贾语、达利语和普什图语(阿富汗)、波斯语(法尔西语,伊朗)、库尔德语索拉尼方言(伊拉克/伊朗)以及叙利亚-阿拉米语(Suryoyo,叙利亚字母)。金额、代码和数字键仍为从左到右。库尔德语库尔曼吉方言(土耳其/叙利亚)使用拉丁字母。
- 厨房单(厨房/吧台):默认使用传递订单的员工的语言。也可以在 设置 → 打印机 → 厨房单语言 中为每台打印机设置固定语言(例如厨师的语言),限拉丁字母: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 或 Türkçe。保加利亚语、俄语和乌克兰语在厨房单上以拉丁字母转写打印(小票打印机不支持西里尔字母)。阿拉伯字母、叙利亚字母、天城文、吉兹字母和提非纳字母以及中文无法在小票打印机上打印:此时达里贾语改用拉丁字母,塔马齐格特语改为塔里菲特语,其余使用荷兰语。固定文字(TAFEL、Gang、WACHT op afroep、AFROEP GANG、LATER GEPRINT、Afhalen、Balie)会被翻译;商品名称和备注保持录入时的样子。原先设为荷兰语的打印机现在跟随员工的语言。
- 收银小票(适用于所有顾客):默认为荷兰语,与界面语言无关。可在 设置 → 门店 → 小票语言(就在小票底部文字下方)中选择其他语言,仅限拉丁字母语言。这同样适用于预结单、退货单、副本、礼品券和电子邮件小票。金额、增值税代码、门店的增值税号和税务行(比利时)保持不变;小票底部的自定义文字保持门店输入的样子。
- 商品、分类和选项使用门店录入的名称;这些不会被翻译。
- 也可以在设置 → 员工中为每位员工设置语言。
- 介绍和使用手册同样提供所有这些语言版本。通过 © 按钮会以收银机的语言打开;在顶部可用旗帜选择其他语言(这不会改变收银机中的任何设置)。
开发者须知:每条可见文字在代码中写作 vt('Nederlandse tekst')(apps/pos-web/lib/i18n.ts);荷兰语文本即为键。翻译位于 apps/pos-web/lib/vertalingen/<taal>.ts。如缺少翻译,收银台显示荷兰语;测试 i18n(pos-web)会检查每条文字在每种语言中都有翻译,且 {0} 占位符正确。收银服务器的消息保持荷兰语,在浏览器中翻译(也支持 {0},例如消息中的商品名称)。
设置打印机
新收银台没有打印机。以管理员身份登录(演示:1111),然后在顶部栏选择 设置。
- 打印机:按门店实际情况添加打印机(例如收银、厨房、吧台、披萨),每台设置连接方式(通常为网络:IP 地址和端口 9100)和纸宽。用 测试打印 检查是否正常。在顶部选择由哪台打印机打印小票和预结单(并打开钱箱)。每台打印机还可选择厨房单语言(见“语言”);小票始终为荷兰语。
- 每台打印机的连接:
- 网络(IP 地址):IP 地址和端口(通常为 9100)。一直以来都是这样工作,今后也一样:现有打印机自动设为网络。
- USB:在 Linux 上填写设备,例如
/dev/usb/lp0。在 Android 上为连接到设备的 USB 打印机(OTG 线;留空 = 第一台 USB 打印机)。在 Windows 和 macOS 上请选择系统打印机。 - 串口(COM / ttyUSB):COM 端口(Windows)、
/dev/ttyUSB0或/dev/ttyS0(Linux、Android)或/dev/cu.…(macOS),并设置速度(通常为 9600、19200 或 38400 baud)。也适用于 Windows 或 Linux 配对为 COM 端口或/dev/rfcomm0的 Bluetooth 打印机。 - Bluetooth:在 Android 上的 HorecaPOS 应用中使用,填写已配对打印机的 Bluetooth 地址(例如移动小票打印机)。请先在 Android 的 Bluetooth 设置中配对打印机。
- 系统打印机(Windows / CUPS):即 Windows 或 CUPS(Linux、macOS)中识别的打印机,使用其自带驱动程序或设为 Generic / Text Only。单据以原始数据(RAW)发送到打印机,不经驱动程序排版。
- 内置(Sunmi、iMin ...):Android 收银机自带的打印机。
- 搜索 会显示收银台能检测到的打印机和端口。选择其中一个,地址即自动填写。
- 协议:ESC/POS(几乎所有小票打印机,包括处于 ESC/POS 模式的 Star 打印机)或 Star(Star Line Mode)。选择 Star 时由收银系统自行转换单据;打印效果相同。
- 带自有打印机的服务员终端:装有 HorecaPOS 应用的 Android 服务员终端(例如带移动 Bluetooth 打印机的手持终端,或用作服务员终端的 Sunmi)可以自行打印。请在该设备上进行注册(设置 → 打印机 → 带自有打印机的服务员终端),然后在打印机处选择连接到。服务员终端从收银台获取自己的单据;请在该终端上保持应用打开。如果无法打印(应用已关闭、超出 Wi-Fi 范围),厨房单会进入打印队列,与关机的网络打印机相同。取消注册设备会将打印机重新设回收银台本身。
- 按分类 / 商品设置打印机:为每个商品分类选择厨房单的打印机。每个商品可单独指定打印机或“无厨房单”来覆盖。
打印时相同商品会合并:两次 1x 可乐 会变成 2x 可乐,厨房单和小票上都是如此。只有选项和备注相同的商品才会合并。
Linux 安装程序会将收银系统用户加入 lp 和 dialout 组,使收银系统可以使用 USB 和串口打印机。
需要帮助?
Optimum POS · 085 560 00 60 · support@optimumpos.nl · 周一至周五 9:00–20:00,周六至周日 14:00–20:00