产品与分类
概览
产品是您销售的商品。您必须先有产品才能开单销售——而且多项积分功能 (印花卡、折扣、 代金券)都会针对特定产品或分类生效,因此值得花心思整理。
产品被分组到分类中,并可以选择性地用产品类型进行标记。
默认设置
Bean & Brew 示例: 一个名为
Coffee的分类,里面有一个Latte产品。
1. 创建分类
- 在侧边栏中打开 Products → Product Categories,然后点击 Create。
- 设置 Name(
Coffee)、Order 编号,可选地设置颜色和图片。 - 保存。
2. 创建产品
- 打开 Products → Products,然后点击 Create。
- 在 Basic info 中:添加图片、Name(
Latte)、Category (Coffee)和 Code。 - 在 Pricing 中:设置价格,并将 Loyalty Ratio 保持为 Default Ratio。
- 保存,然后对其余产品重复此操作。

产品列表
Products → Products (/products) 会打开一个包含所有产品的数据网格,按最近更新时间排序。每一行显示:
| 列 | 显示内容 |
|---|---|
| Image | 产品缩略图。 |
| Name | 产品名称。 |
| Code | 产品编号。点击即可复制到剪贴板。当您的产品超过 300 个时,按编号排序会被无声地禁用。 |
| Source | 产品的来源(rewardly / eats365-menu / shopify / vend)。 |
| Tags | 产品的标签。 |
| Type | Single、Combo 或 Variant。 |
| Categories | 产品所属的分类。 |
| Track Quantity | 一个 Yes / No 标签。 |
| Exclude from Discount | 产品是否被排除在折扣之外。 |
| Visible On | Channels 标签——kiosk、pos、customer、grab、foodpanda、deliveroo、keeta。 |
| Dine-In / Takeout / Delivery price | 各 Channel 的价格标签;当该 Channel 启用时显示为绿色,关闭时显示为红色。 |
行操作
- Clone / duplicate — 复制图标会复制该记录,在编号后追加
_<timestamp>,并打开一个预填的创建表单,让您调整并保存一个几乎相同的产品。 - Export — 确认后,将所有已筛选的产品导出为一个层级丰富的 CSV,其中包含 modifier、combo、运营时间和价格层级。由于它覆盖整个筛选结果集,文件可能会很大。
筛选器
点击 Filter 可按以下条件缩小列表范围:
- Search name、outlets、categories、tags。
- Product Type — product / membership / program / storeValue。
- Type — single / combo / variant。
- Source — rewardly / eats365-menu / shopify / vend。
- Visible On Channel。
- Dine-in / Takeout / Delivery(布尔值)。
- No Tag — 没有标签的产品。
批量操作
选择一行或多行以显示批量操作:
- Bulk Delete — 删除每个选中的产品。
- Bulk Update — 一排复选框(Track Quantity、Exclude from Discount、Track Ingredients、Dine-In、Takeout、Delivery)以及 Enable / Disable 按钮。勾选您想更改的字段,然后点击 Enable 或 Disable,即可一次性为每个选中的产品设置这些布尔字段。
一次编辑多个产品
使用 Bulk Update 可在整个产品分类范围内开启或关闭某个 Channel,或开启 Track Quantity,而无需逐个打开产品。
产品分类
打开 Products → Product Categories (/productCategories)。分类将相关的产品分组在一起。关键字段:
| 字段 | 作用 |
|---|---|
| Name | 分类名称。 |
| Order | 在列表中的位置。必须 ≥1 且唯一。创建时表单会自动建议下一个空闲编号(当前最大值 + 1);唯一性会与您现有的分类进行校验。 |
| Color / Image | 视觉样式。 |
| Product Type | Product、Membership、Program 或 Store Value。切换类型会清除已设置的任何 membership/program/store-value 关联。 |
| Source | 分类的来源。创建时锁定为 rewardly。从 eats365-menu、shopify 或 vend 同步的分类会被来源锁定,并以只读方式显示其来源 ID。 |
| Outlets | 哪些 Outlet 显示该分类。 |
| Age Restriction | 将该分类标记为有年龄限制。默认开启。 |
| Visible on | 哪些 Channels 显示该分类——Kiosk、POS、Customer 和外卖平台(Grab、Foodpanda、Deliveroo、Keeta)。新分类默认为 Kiosk、POS 和 Customer。 |
| Potential Quantity Limit | 该分类的可选数量上限。 |
| Start / End datetime | 分类处于活动状态的时间窗口。设置结束时间会自动将其时间设为 23:59:59 并开启 has end time。 |
| Time Slots | 按 Channel、按工作日的可用时间窗口,以 HH:mm 格式的时间对录入。 |
| Tags | 应用到该分类的产品标签。使用内联的 + Add new tag 提示可在不离开表单的情况下创建或查找标签。 |
| Container discount | 可选的分类级整体折扣——见下文。 |
Order 唯一性
Order 编号会在您的浏览器中针对最多 500 个分类进行校验。如果您的分类数量超过此值,请在保存前再次确认该编号是空闲的。
Container discount
Container discount 用于饮料容器 / 杯子押金的视觉展示。它包含:
- 一个 discount value 和一个 type —— percentage 或 fixed。
- 一组命名的 container colours,每个都有自己的取色器,以便 POS 能为押金显示正确的杯子或容器视觉效果。
产品字段
产品表单较大。其主要部分包括:
| 部分 | 涵盖内容 |
|---|---|
| Basic info | 图片、名称、简称、品牌、描述、分类、编号/条码、Outlets,以及该产品可见的 Channels。 |
| Pricing | 各服务类型的价格(堂食 / 外带 / 配送)、open price,以及下方的积分设置。 |
| Inventory | 库存跟踪。 |
| Cover images | 额外的产品图片。 |
| Modifiers | 加料和选项(例如奶选、加一份浓缩)。 |
| Variants | 如尺寸或口味等变体,每个变体可有自己的价格和库存。 |
| Combo | 将多个产品打包成一个组合产品。 |
| Availability / Time slots | 产品可售的时间和地点。 |
积分关联
这些产品字段决定了产品在您的积分功能中的行为:
| 字段 | 作用 |
|---|---|
| Loyalty Ratio | Default Ratio = 按积分计划的比例累积积分。No Loyalty = 不累积积分。Custom Ratio = 仅按该产品的专属比例累积积分。 |
| Exclude from discount | 即使存在有效的折扣,该产品也永远不会被打折。 |
| Only Buy With Voucher | 该产品只能通过代金券获取。 |
| Only Buy With Member | 只有会员才能购买该产品。 |
按产品设置累积比例
对高毛利商品使用 Custom Ratio 以更快累积积分,或对您不想给予奖励的商品 (如礼品卡)使用 No Loyalty。
产品类型、Channels 与价格
除基础内容外,产品表单还提供了若干可配置字段:
| 字段 | 作用 |
|---|---|
| Product Type | Product、Membership、Program 或 Store Value。选择任何非 product 类型都会显示一个关联选择器,用于选取对应的 membership、program 或 store-value 记录。 |
| Type | Single、Combo 或 Variant。Variant 产品驱动一套独立的 variant/SKU 模型(见 Variant Attributes)。 |
| Is Dine-in / Is TakeOut / Is Delivery | 各 Channel 的可售开关,每个都有自己的价格。 |
| Open Price | 允许收银员在 POS 上输入价格,而不使用固定价格。 |
税费与附加费
| 字段 | 作用 |
|---|---|
| Has Tax | 该产品需要纳税。 |
| Has Secondary Tax | 应用 Outlet 的二级税。取决于 Outlet 的 secondaryTaxes 配置(Outlet → Order 标签页)。 |
| Has Service Charge | 应用 Outlet 的服务费。取决于 Outlet 的 serviceChargeType 配置(Outlet → Order 标签页)。 |
新加坡合规
对于新加坡的 Outlet,表单会增加合规字段:
| 字段 | 作用 |
|---|---|
| BCRS Deposit Mark | 将该产品标记为带有 Beverage Container Return Scheme 押金。 |
| Nutri-Grade | Show Nutri-Grade Symbol、Nutri-Grade Symbol 本身、Show Healthier Choice Symbol,以及用于打印/显示等级的 sugar level %。 |
| Age Restriction | 将该产品标记为有年龄限制。 |
Best Before、条码与购物车行为
| 字段 | 作用 |
|---|---|
| Best Before | Is Best Before Date Enabled,然后以 Hours / Days / Months 设置 Best Before By,外加自由文本 Best Before Info。 |
| Barcode Type | 产品的条码格式。 |
| Auto add to cart | 按 Channel(dine-in / pick-up / delivery)自动将产品加入购物车,并带有 Min order amount 阈值。 |
| Upsell | 将该产品标记为可作为追加销售推荐。 |
| Special Request | 启用特殊要求备注,并带有一个 level。 |
运营时间 / Time Slots
按工作日设置 start 和 end 时间,以控制产品的可售时间。
价格层级
每个产品都可以带有按产品设置的 Pricing Tiers —— 在某个价格规则下生效的替代价格,例如欢乐时光或会员层级。
库存与配料
在 Inventory 部分,除库存跟踪外,您还可以设置:
| 字段 | 作用 |
|---|---|
| Track ingredients | 当产品售出时扣减配方配料。 |
| Ingredient Bundles | 附加到产品上的可复用配料配方。 |
| Ingredients | 产品消耗的单个配料。 |
Variant 产品与库存
Variant 产品(Type = Variant)会生成一套独立的 variant/SKU 模型。每个变体都带有自己的价格和库存,并在 Inventory(Product Inventories)下管理,依托于在 Variant Attributes 中定义的可复用选项。
Modifiers
Modifier(修饰项)是顾客为产品选择的加料和选项——例如牛奶选择、鸡蛋做法、额外配料。一个产品可以有多个 modifier 分组(例如 "Add on"),每个分组包含一组选项(例如 Sunny Side Up、Over Well)。
每个分组在其标题处有几项设置:
| 字段 | 作用 |
|---|---|
| Name | 分组的显示名称。 |
| Mandatory | 在将产品加入购物车前强制顾客做出选择。 |
| Selection Min / Max | 对于多选分组,顾客可选择的最少和最多选项数。 |
选项本身在一个表格中编辑(向右滚动可查看后面的列):
| 列 | 作用 |
|---|---|
| Image | 选项的可选图片。 |
| Option Name / Short Name | 向顾客显示的名称,下方为(打印在小票上的)简称。 |
| Add-on Price | 选项的加价,按用餐方式分别设置——Dine-in / Takeout / Delivery。 |
| Active | 选项的总开关。关闭后会在所有地方隐藏该选项,但不会丢失其设置。 |
| Channels | 哪些 Channel 提供该选项——POS、Kiosk、Customer。 |
| Dining mode | 哪些用餐方式提供该选项——Dine-in、Take-out、Delivery。 |
| Quantity | 对于多选分组:该单个选项的 Min、Max 和 Default 数量。对于单选分组,此列会收起为一个 Default 开关,用于标记预选选项。 |
| Nutrition | 选项的卡路里、蛋白质、碳水和脂肪。 |
| Master Modifier | 将选项关联到共享的 master modifier 以进行库存追踪。 |
| Track Ingredients | 选项售出时扣减配方配料的开关。 |
| Ingredient Bundles | 附加到选项上的可复用配料配方。 |
Channel 与用餐方式的可用性
Channels 和 Dining mode 复选框控制每个选项在哪里出现:
- 全部勾选(默认)——选项会在产品出现的所有地方出现。
- 取消勾选某一项——该选项在对应的 Channel 或用餐方式上隐藏。例如做一个仅限自助机的加购,只勾选 Kiosk。
- 全部取消勾选——选项被完全隐藏(与关闭 Active 的最终效果相同;但当你想要快速、非破坏性的开关时,Active 更清晰)。
可用性只会收窄,绝不会扩展
modifier 选项只能在产品本身可见的地方出现。即使在选项上勾选 Customer,如果产品自身的 Visible On 排除了 Customer,它也不会出现在 customer app 中——选项的复选框只会进一步限制可用性,绝不会扩展产品的覆盖范围。用餐方式相对于产品自身的 dine-in / takeout / delivery 设置同理。
产品类型
产品类型是用来给产品分门别类的一个简单标签。打开 Products → Product Types (/productTypes) 进行创建——表单只有一个 Name 字段。
产品 Variant Attributes
打开 Products → Variant Attributes (/product-variant-attributes) 可管理可复用的属性——例如 Size 或 Colour —— 供 variant 类型的产品使用。这是您要编辑的目录,用于添加多个 variant 产品可共享的新尺寸或颜色选项。
每个属性具有以下字段:
| 字段 | 作用 |
|---|---|
| Name | 属性名称(例如 Size)。 |
| Description | 可选的描述。 |
| Is Required | 是否必须为此属性选择一个值。 |
| Is Active | 该属性是否正在使用。创建时默认为启用。 |
| Possible Values | 选项列表。每个值都有一个 value、一个 display name 和一个 sort order。 |
这些属性为 Variant(Type = Variant)产品提供数据。此类产品的每个变体都是它自己的 SKU,带有自己的价格和库存,并在 Inventory(Product Inventories)下管理。
一次在所有地方添加一个选项
要在所有 variant 产品中提供新的尺寸或颜色,请在此处相关的 Variant Attribute 上将其添加为一个 Possible Value —— 使用该属性的产品会自动获取它。
相关内容
- 库存(Inventory) — 跟踪您在此处创建的产品的库存。
- 菜单(Menus) — 将产品分组成菜单,供 POS 和在线点餐使用。
- 积分(Loyalty Points) — 产品可按自定义比例累积。
- 价格规则(Pricing Rules) — 驱动按产品设置的价格层级。
- 印花卡、折扣、代金券 — 这些功能针对产品和分类生效。
- 入门指南 — 添加您的第一批产品。