# 购物车折扣

WCPOS 为收银员提供了多种即时为订单打折的方式：快速百分比按钮、直接编辑行项目价格，以及订单级折扣费用。对于带有使用规则的预配置促销，请参阅 [优惠券](/zh-CN/coupons/.md) (Pro)。

v1.9.0 中的变更

POS 价格修改在收据和报表中的显示方式已在 v1.9.0 中更改。如果你发现收据上的“折扣”总额现在显示为零，请查看下面的 [v1.9.0 中的变更](#what-changed-in-v190)。

## 快速折扣[​](#quick-discounts "直接链接到 快速折扣")

快速折扣按钮让你只需点按一次，就能对整个订单应用百分比折扣。

要配置它们，请打开购物车的[显示设置](/zh-CN/pos/cart/.md#display-settings)，并在 **快速折扣** 字段中输入以逗号分隔的百分比列表。例如，`5,10,15,20` 会创建四个快捷按钮。

点按快速折扣按钮时，该百分比会应用到购物车中的所有行项目。

## 行项目折扣[​](#line-item-discounts "直接链接到 行项目折扣")

你可以直接在购物车中修改任何单个行项目的价格：

1. 点击行项目上的 **价格** 字段
2. 输入新价格
3. 按 **Enter** 确认

这适用于价格匹配、员工折扣或一次性调整。行项目总额会根据数量 × 新价格自动更新。

有关编辑购物车项目的更多信息，请参阅[行项目](/zh-CN/pos/cart/line-items.md)。

拆分项目

如果客户希望同一产品的不同部分应用不同折扣（例如，3 件全价、2 件打折），请在购物车[显示设置](/zh-CN/pos/cart/.md#display-settings)中启用 **拆分** 选项，将一个行项目拆成多行。

## 订单级折扣[​](#order-level-discounts "直接链接到 订单级折扣")

要对整个订单应用固定金额折扣（而不是对单个项目应用），请添加一项 **负费用**：

1. 点击购物车项目下方的 **添加费用**
2. 输入名称（例如，“员工折扣”）
3. 将折扣金额输入为负数（例如，`-5.00`）

该费用会作为单独的行项目显示，并减少订单总额。如有需要，你可以使用三点菜单编辑该费用的税务状态。

## POS 折扣与 WooCommerce 优惠券[​](#pos-discounts-vs-woocommerce-coupons "直接链接到 POS 折扣与 WooCommerce 优惠券")

本页中的折扣是收银员在收银时应用的临时调整；WooCommerce **优惠券** 是带有规则和跟踪功能的预配置促销。下面是简要对比：

|              | POS 折扣                                                    | WooCommerce 优惠券 (Pro)                                      |
| ------------ | ----------------------------------------------------------- | ------------------------------------------------------------- |
| **应用方式** | 快速折扣、行价格编辑或负费用                                | 在购物车中输入优惠券代码                                      |
| **配置位置** | 由收银员即时设置                                            | 在 **WP Admin → Marketing → Coupons** 中预配置                |
| **跟踪方式** | 记录为行价格（请参阅 [v1.9.0 变更](#what-changed-in-v190)） | 在 WooCommerce 报表中作为优惠券折扣跟踪                       |
| **限制**     | 无：收银员可设置任意价格                                    | 使用次数限制、产品/类别限制、最低消费、到期日期、电子邮件规则 |
| **最适合**   | 临时调整、价格匹配                                          | 结构化促销、可跟踪折扣                                        |

我该使用哪一种？

对于一次性价格调整，本页中的折扣更简单。如果你需要在 WooCommerce 报表中跟踪折扣使用情况，或强制执行使用次数限制等规则，请使用[优惠券](/zh-CN/coupons/.md)。

## POS 价格修改如何与优惠券交互[​](#how-pos-price-changes-interact-with-coupons "直接链接到 POS 价格修改如何与优惠券交互")

当收银员为某个行项目设置自定义价格（例如，将 $18 降到 $16），随后又应用优惠券时，优惠券会基于 **POS 折扣后的价格**（$16）计算，而不是基于原价（$18）计算。这可以防止客户在原价基础上叠加收银员折扣和优惠券而获得过度折扣。

* POS 折扣项目会被 WooCommerce 视为“促销中”。如果优惠券启用了 **排除促销商品**，它将跳过 POS 折扣项目，就像跳过普通促销商品一样。开发者可以使用 `woocommerce_pos_item_is_on_sale` 过滤器覆盖此行为。
* 移除优惠券后，该行仍保留其 POS 折扣价格。

开发者参考

有关 POS 价格覆盖的存储方式以及可用过滤器的技术细节，请参阅 [POS 折扣参考](/zh-CN/reference/pos-discounts.md)。

## v1.9.0 中的变更[​](#what-changed-in-v190 "直接链接到 v1.9.0 中的变更")

如果你从 v1.8 升级后发现收据和报表上的 **折扣** 总额现在显示为 **0**，本节会解释原因以及你的可选方案。

### 变更内容[​](#the-change "直接链接到 变更内容")

在 v1.9.0 之前，当收银员降低某个行价格时（例如，$18 → $16），POS 会以 `subtotal = $18` 和 `total = $16` 记录订单。随后 WooCommerce 会计算出 `discount_total = $2`，并在收据和报表中将其显示为折扣。

当再叠加优惠券时，这会导致总额不正确：优惠券会基于原始 $18 计算，从而产生过度折扣，使客户被少收款。

从 v1.9.0 开始，WCPOS 与 WooCommerce 处理促销价格的方式保持一致：你在收银端设置的价格 **就是** 该行的小计。WooCommerce 只将优惠券代码计为“折扣”（这与 WC 对促销产品的行为一致，即促销价同样直接计入小计，而不会生成单独的折扣行）。

### 这对你意味着什么[​](#what-this-means-for-you "直接链接到 这对你意味着什么")

* **收据** 不再为行项目价格修改显示单独的“折扣”行。较低的价格就是实际价格。
* **报表** 在仅使用 POS 行项目价格修改时显示 `discount_total = 0`。只有优惠券折扣会被计入。
* **优惠券** 现在与 POS 折扣项目叠加时会正确计算。
* **折扣数据仍然会存储** 在每个订单的行项目元数据 (`_woocommerce_pos_data`) 中，因此如有需要仍可推导历史数据。

### 如果你想恢复折扣可见性[​](#if-you-want-discount-visibility-back "直接链接到 如果你想恢复折扣可见性")

如果你需要一个“今天给出的总折扣”数字用于日终对账，受支持的方式是使用[优惠券](/zh-CN/coupons/.md)来处理可跟踪折扣，而不是编辑行项目价格。在 **Marketing → Coupons** 中设置“Manager 10%”或“Loyalty $5”优惠券，并在购物车中应用它。它会原生显示在你的报表中。

我们也在评估一个 POS 专用的“总节省”数值，用于将行项目价格修改与优惠券折扣分开显示。如果这对你的工作流程很重要，请[告诉我们](https://wcpos.com/support)。

## 已知限制[​](#known-limitations "直接链接到 已知限制")

* **没有自动折扣规则**：POS 不支持“买 2 送 1”这类自动折扣。请使用 WooCommerce 优惠券处理结构化促销。
* **快速折扣仅支持百分比**：没有内置的固定金额折扣快捷按钮。请改用负费用，或编辑单个价格。
