购物车折扣
WCPOS 为收银员提供多种即时为订单应用折扣的方式:快速百分比按钮、直接编辑商品行价格,以及订单级折扣费用。有关带使用规则的预配置促销,请参阅优惠券(Pro)。
在收银台降低的价格会被记录为该商品的促销价,而不是 WooCommerce 折扣 —— 原生的折扣总计仅保留给优惠券使用。为什么价格变更和优惠券的跟踪方式不同解释了这一模型;如果你在升级到 v1.9.0 后总计发生了变化,请参阅 v1.9.0 中的变更。
快速折扣
快速折扣按钮可让你轻点一下,即可对整个订单应用百分比折扣。
要进行配置,请打开购物车显示设置,并在快速折扣字段中输入以逗号分隔的百分比列表。例如,5,10,15,20 会创建四个快捷按钮。
轻点某个快速折扣按钮后,该百分比会应用于购物车中的所有商品行。
商品行折扣
你可以直接在购物车中更改任何单个商品行的价格:
- 点击商品行上的价格字段
- 输入新价格
- 按 Enter 确认
这适用于价格匹配、员工折扣或一次性调整。商品行的总额会根据数量 × 新价格自动更新。
有关编辑购物车商品的更多信息,请参阅商品行。
如果客户希望对同一商品的不同部分应用不同折扣(例如,3 件按原价、2 件享受折扣),请在购物车显示设置中启用拆分选项,以将一个商品行拆分为多行。
订单级折扣
要对整个订单应用固定折扣(而非单个商品),请添加一项负费用:
- 点击购物车商品下方的添加费用
- 输入名称(例如“员工折扣”)
- 以负数形式输入折扣金额(例如
-5.00)
该费用会显示为单独的商品行,并减少订单总额。如有需要,你可以通过三点菜单编辑该费用的税务状态和税务类别。
折扣费用的税额如何计算
WCPOS 会依据费用自身的税务设置对负费用计税:将其税务状态设为无,则不对其计税;保持应税,则按其自身的税务类别计税。你输入的金额就是被扣减的金额 —— 输入 -10.00,客户就少付 10。
WooCommerce 核心的处理方式不同。WooCommerce 本身会将负费用视为整篮折扣,并将其税额分摊到订单中其他所有商品的税务类别上,忽略你在该费用上设置的税务状态。它也不会考虑含税定价,因此在含税录入价格为是的商店上,一项 -10.00 的费用在 20% 税率下会扣减 12.00。WCPOS 覆盖了这一行为,使收银机恰好扣减收银员所输入的金额。
这种处理方式属于订单本身,而不属于你恰好正在使用的应用 —— 从 WP Admin → Orders 重新计算某个 POS 订单不会改变它。非 POS 订单则保持 WooCommerce 的标准行为。
如果你的价格含税,折扣费用会给客户正确的总额,但会使订单上记录的税额保持不变 —— 因此税额数字会略高于按减免后金额严格计算的结果。它偏向税务机关一方,绝不会偏向另一方。如果记录的税额对你的记账很重要,请改用优惠券来进行折扣:优惠券会减少应税金额并据此正确重新计算税额。正因如此,我们将在未来版本中把订单级 POS 折扣迁移到优惠券上。
POS 折扣与 WooCommerce 优惠券
本页面的折扣是收银员在收银台应用的临时调整;WooCommerce 优惠券则是预先配置、带有规则和跟踪功能的促销方式。下表概览了两者的对比:
| POS 折扣 | WooCommerce 优惠券(Pro) | |
|---|---|---|
| 应用方式 | 快速折扣、编辑商品行价格或负费用 | 在购物车中输入优惠券代码 |
| 配置位置 | 由收银员即时设置 | 在 WP Admin → Marketing → Coupons 中预先配置 |
| 跟踪方式 | 记录为商品行价格,如同促销价(参见原因) | 在 WooCommerce 报告中作为优惠券折扣跟踪 |
| 限制 | 无 —— 收银员可设置任意价格 | 使用次数限制、商品/类别限制、最低消费、有效期、电子邮件规则 |
| 适用场景 | 临时调整、价格匹配 | 结构化促销、可跟踪的折扣 |
对于一次性价格调整,本页的折扣更为简单。如果你需要在 WooCommerce 报告中跟踪折扣使用情况,或实施使用次数限制等规则,请使用优惠券。
为什么价格变更和优惠券的跟踪方式不同
WooCommerce 只有一个内置的折扣概念:优惠券。优惠券属于订单 —— 它记录在自己的字段中、计入报告的折扣列,并带有诸如使用次数限制和有效期等自身规则。
对 WooCommerce 而言,促销价并不是折扣。它只是该产品此刻的价格:当一件促销商品被售出时,订单只记录实付价格,别无其他。原价从不出现在订单上,报告也会将这笔销售计为普通营收 —— WooCommerce 本身不会保留客户省了钱的任何记录。
快速折扣和商品行价格调整遵循促销价模型:商品以收银员设定的价格“促销”售出。这一条规则解释了本页的其余内容 —— WooCommerce 的折扣总计保持为零,优惠券按降低后的价格计算,而“排除促销商品”的优惠券会跳过在收银台降价的商品。(订单级负费用又不同:它记录为一个费用行,而不是价格变更。)
收据是客户唯一期望看到自己省了多少的地方,因此 WCPOS 会在每一行上将原价与新价格一并记录。这样,收据就能将促销节省和优惠券折扣显示为各自独立的数字,既不会重复计算任何一项,也不会改变 WooCommerce 的订单总计或报告。
POS 价格变更如何与优惠券配合使用
当收银员为某个商品行设置自定义价格(例如将 $18 降至 $16),然后应用优惠券时,优惠券会基于 POS 折后价格($16)计算,而非原价($18)。这样可避免因将收银员折扣与优惠券都叠加在原价上而使客户获得过多折扣。
- WooCommerce 会将 POS 折后商品视为“促销中”。如果优惠券启用了排除促销商品,它会跳过 POS 折后商品 —— 与跳过常规促销商品的方式相同。开发者可通过
woocommerce_pos_item_is_on_sale筛选器覆盖此行为。 - 移除优惠券后,该商品行会保留其 POS 折后价格。
有关 POS 价格覆盖的存储方式及可用筛选器的技术详情,请参阅 POS 折扣参考。
v1.9.0 中的变更
如果你从 v1.8 升级后,收据和报告上的折扣总计现在显示为 0,原因如下:早期版本会将收银台的价格变更记录为 WooCommerce 折扣,而这会破坏优惠券的计算 —— 在其之上应用的优惠券会按原价计算,从而对订单过度折扣并少收客户的钱。从 v1.9.0 起,在收银台设置的价格即为商品行价格,与 WooCommerce 记录促销商品的方式完全一致,且只有优惠券才计为折扣。请参阅上文的为什么价格变更和优惠券的跟踪方式不同。
这对你意味着什么
- 收据可以显示记录的原价、从原价到售价的节省金额,以及将这些节省金额与优惠券合并计算的已节省总额。价格节省金额仍与 WooCommerce 的折扣字段分开显示。
- 报告在仅使用了 POS 商品行价格变更时会显示
discount_total = 0。仅计入优惠券折扣。 - 优惠券现在在叠加于 POS 折后商品之上时能正确计算。
- 记录的原价和售价会被存储在 POS 商品行元数据(
_woocommerce_pos_data)中,因此收据可以推导出节省金额,而不会改变 WooCommerce 的折扣总计。
在收据上显示原价和节省金额
当前随附的含价格模板会在商品促销或其价格在收银台被更改时,显示记录的原价和节省金额。当 WCPOS 能够计算出完整的订单级金额时,它们还会显示已节省总额。该总额会将原价节省金额与优惠券折扣合并,且不会重复计算其中任何一项。
从模板库复制的模板是可编辑的快照,不会被 WCPOS 更新覆盖。如果你的收据是在此变更之前创建的,请任选其一:
- 在随附模板的新副本上点击使用模板;或
- 使用收据数据参考中的字段更新你现有的模板。
主要的收据字段如下:
| 字段 | 含义 |
|---|---|
lines[].regular_price_display | 记录的常规单价 |
lines[].selling_price_display | 使用优惠券前的销售单价 |
lines[].unit_savings_display | 每件节省金额 |
lines[].line_regular_total_display | 该行的常规价格总计 |
lines[].line_savings_display | 该行的节省总额 |
totals.sale_savings_total_display | 来自目录促销和收银台价格变更的、从常规价格到销售价格的总节省金额 |
totals.discount_total_display | WooCommerce 折扣总计;通常为当前订单上的优惠券 |
totals.total_saved_display | 常规价格节省金额与 WooCommerce 折扣的合计 |
totals.total_saved_complete | 该合计是否完整且可安全显示 |
自定义模板应对已节省总额行进行条件处理,以便在历史价格数据不完整或未节省任何金额时隐藏该行 —— 确切模式请参阅收据数据参考。
WooCommerce 报告保持不变:原生折扣总计仍包含优惠券,而不包含当前促销价或收银台价格所节省的金额。收据请使用 totals.total_saved;当节省金额还需在报告中作为 WooCommerce 折扣进行跟踪时,请继续使用优惠券。
已知限制
- 没有自动折扣规则 —— POS 不支持“买二送一”类型的自动折扣。对于结构化促销,请使用 WooCommerce 优惠券。
- 快速折扣仅支持百分比 —— 没有用于固定金额折扣的内置快捷按钮。请改用负费用,或编辑单个商品价格。
- 折扣费用与含税定价 —— 订单级折扣费用会收取正确的总额,但不会减少订单上记录的税额。请参阅折扣费用的税额如何计算。