> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alforse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 定价规则与价格覆盖

> Alforse 如何为报价和销售订单行建议单价：从基准价格出发，采用最优价格覆盖，再叠加定价规则，并记录每一步。

Alforse 会为每一条报价行和销售订单行建议单价。销售和定价人员通过两种工具控制结果：价格覆盖用于保存协商价格和数量阶梯，定价规则用于保存全公司通用的折扣和加价。

## 价格如何得出

简而言之：先取基准价格，若有匹配度最高的价格覆盖则替换，再用匹配的定价规则调整，最后把计算过程作为追踪记录保存在行上。完整顺序见[引擎如何选择价格](#how-the-engine-picks-a-price)。

| 工具 | 作用 | 对价格的影响 |
| - | - | - |
| 价格覆盖 | 针对某一物料的协商价格，可带数量阶梯 | 替换基准价格 |
| 定价规则 | 折扣、加价或配置附加费 | 调整最终胜出的起始价格 |

## 定价规则

**定价规则**属于公司，用于上调或下调价格。只有当行满足规则的全部条件时，规则才会参与计算。

### 规则类型

| 规则类型 | 效果 | 金额 |
| - | - | - |
| `Discount` | 降低价格 | `Percentage` 或 `Fixed` |
| `Markup` | 提高价格 | `Percentage` 或 `Fixed` |
| `Configuration` | 为可配置零件的选项定价 | 按参数设置（见[配置规则](#configuration-rules)） |

### 规则字段

| 字段 | 类型 | 必填 | 含义 |
| - | - | - | - |
| **名称** | 文本 | 是 | 规则的标签。 |
| **规则类型** | 选项 | 是 | `Discount`、`Markup` 或 `Configuration`。 |
| **金额类型** | 选项 | 是 | `Percentage` 或 `Fixed`。百分比以 0 到 1 之间的小数存储（10% 即 `0.10`），因此表单最多允许 100%。 |
| **金额** | 数字 | 是 | 调整的幅度。百分比是当前价格的一个比例；固定金额是绝对值。 |
| **优先级** | 数字 | 否 | 在折扣之间，优先级高者胜出；在加价之间，决定应用顺序。默认为 `0`。 |
| **最小/最大数量** | 数字 | 否 | 规则所覆盖的行数量范围。 |
| **客户/客户类型** | 列表 | 否 | 将规则限定于这些客户或客户类型。留空表示全部。 |
| **物料/物料过账组** | 列表 | 否 | 将规则限定于这些物料或某个物料过账组。留空表示全部。 |
| **有效期开始/有效期至** | 日期 | 否 | 规则的生效期间。留空的一端表示不设限。 |
| **启用** | 是/否 | 否 | 未启用的规则会被跳过但保留，以便日后审计。 |

### 规则何时匹配

只有当规则设定的每个条件都成立时，规则才适用于该行：

* 数量位于 `min` 与 `max` 之间；
* 日期落在有效期内；
* 物料和客户通过物料与客户限制，其中空限制表示允许全部。

只有已启用且匹配的规则才会被使用。

HEADS UP

**百分比请输入小数**

10% 请输入 `0.10`。表单会拒绝大于 1 的值，因此想输入 15% 却输入 15，会被当作 1500% 的调整而被拒绝。

### 配置规则

`Configuration` 规则为客户在可配置零件上选择的选项定价。它自身没有金额或物料范围。

1. 将**规则类型**设为 `Configuration`。
2. 选择一个**可配置零件**。只会列出需要配置的零件。
3. 在出现的**配置价格**部分，针对该零件的配置参数输入金额。

当行的配置匹配时，每个金额都会作为每单位附加费加到行的单价上：

| 参数类型 | 定价方式 | 示例 |
| - | - | - |
| **列表** | 每个选项一个金额 | `Color = Red → 10` |
| **布尔** | 值为真时的金额 | |
| **数值** | 值的每单位金额 | `0.50 × Length` |
| 文本、日期、原材料 | 无法定价 | |

配置附加费的行为：

* **有正负号。** 负数金额表示抵扣。
* **可累加。** 所有匹配的 Configuration 规则的附加费会相加。
* **最先应用。** 附加费在折扣和加价之前加入，因此折扣也会减少附加费。
* **有追踪。** 每笔附加费都会在价格追踪中以 `Configuration` 步骤出现，并以其参数命名。
* **范围与其他规则相同。** 客户范围、日期、数量范围和优先级的作用与任何规则一致。
* **最终覆盖下仍保留。** 即使覆盖不在其上应用规则，配置价格仍然适用，因为它们对所选选项定价，而不是对零件定价。

它们适用于任何带配置的行：报价行（每当行被配置或重新配置时都会重新定价）以及销售订单行（有自己的**配置**按钮）。

## 价格覆盖

**价格覆盖**为某一物料固定一个协商价格，还可带数量阶梯。规则是调整价格；覆盖则是完全替换基准价格。

### 范围

每个覆盖恰好具有以下三种范围之一：

| 范围 | 适用对象 | 设置方式 |
| - | - | - |
| **客户** | 针对某一客户的该物料 | 选择一个客户 |
| **客户类型** | 针对某一类型的所有客户的该物料 | 选择一个客户类型 |
| **所有客户** | 针对所有客户的该物料 | 两者均留空 |

同一个覆盖上不能同时设置客户和客户类型；数据库强制要求单一范围。

### 数量阶梯

一个覆盖包含一个或多个**数量阶梯**，每个都是 `quantity` → `override price` 的一对值。对于某一行，Alforse 使用数量不超过订购数量的最高阶梯。若阶梯为 1、5 和 10，订购 8 件时采用 5 这一档的价格。

### 覆盖字段

| 字段 | 类型 | 必填 | 含义 |
| - | - | - | - |
| **物料** | 引用 | 是 | 被定价的物料。 |
| **客户** | 引用 | 否 | 将覆盖限定于某一客户。不能与客户类型同时使用。 |
| **客户类型** | 引用 | 否 | 将覆盖限定于某一客户类型。不能与客户同时使用。 |
| **数量阶梯** | 列表 | 是 | 至少一对 `quantity` → `override price`。数量不能重复。 |
| **在其上应用规则** | 是/否 | 否 | 默认开启：定价规则仍会调整覆盖价格。关闭：覆盖价格即为最终价格，规则被跳过。 |
| **有效期开始/有效期至** | 日期 | 否 | 覆盖的生效期间。 |
| **启用** | 是/否 | 否 | 未启用的覆盖会被跳过，但保留作历史记录。 |

### 复制价格表

若要以某个客户或客户类型的价格为另一个客户或客户类型的价格起点，请使用**复制价格表**。对于目标已有定价的物料，选择 `skip` 保留原价，或选择 `overwrite` 予以替换。

NOTE

**覆盖设定价格，规则调整价格**

覆盖提供起始价格。定价规则是否随后对其做出调整，由每个覆盖各自的**在其上应用规则**决定；不存在全公司范围的开关。

## 引擎如何选择价格

引擎按顺序执行四个步骤。它会把结果及每一步作为**价格追踪**保存在行上，行还会记录由哪条 `pricing rule`（如有）决定了最终数值。

1. **基准价格。** 物料的单位销售价格，或报价已计算出的成本汇总价格。追踪来源：`Base`。
2. **最优覆盖。** Alforse 按固定顺序检查各范围（**客户覆盖，其次客户类型覆盖，最后所有客户覆盖**），并采用第一个产生阶梯的范围。它不会从已匹配的范围回退到更低的范围。若订购数量低于某范围的最小阶梯，则该范围不匹配，转而尝试下一个。追踪来源：`Override`、`Type Override` 或 `All Override`。
3. **定价规则。** 所有匹配的已启用规则按下文所述顺序应用，除非胜出的覆盖关闭了**在其上应用规则**。追踪来源：`Rule`。
4. **取下限并保存。** 负数结果变为零，最终价格连同完整追踪写入该行。

因此起始价格按以下顺序选定：**客户覆盖 > 客户类型覆盖 > 所有客户覆盖 > 基准价格**。随后规则作用于胜出的那一个。

### 多条规则的组合

折扣与加价的行为相反：

| 规则类型 | 组合方式 |
| - | - |
| **折扣** | 只应用一条。匹配的折扣按优先级排序，并列时有效金额较大者优先，只使用排名第一的一条。 |
| **加价** | 全部应用，按优先级顺序，每一条都基于上一条调整后的价格计算。先 20% 再 10% 的加价是复合的，而不是相加成 30%。 |

完整顺序是：配置附加费，然后是唯一的折扣，再是叠加的加价，最后是零下限。

HEADS UP

**折扣不会叠加**

同时匹配 10% 规则和 15% 规则的客户得到的是 15%，而不是 25%，两者也不会先后依次应用。加价则相反：全部适用，并且复合计算。

NOTE

**建议价格仍可编辑**

当行的物料或数量改变时会执行价格解析并填入单价。您仍可手动覆写该价格；追踪会保留建议价格的得出过程。

## 定价在何处运行

| 行 | 价格解析何时运行 |
| - | - |
| **报价行** | 在成本汇总期间以及报价重新定价时。 |
| **销售订单行** | 在行表单中选择物料或更改数量时。 |

两类行都会保存解析出的价格及其来源，因此您可以将任何价格追溯到背后确切的覆盖和规则。

Alforse 中没有单独的价格表单据：价格表就是限定于某个客户或客户类型的一组覆盖。价格由应用程序解析，而不是由数据库解析。

## 相关内容

**报价**

协商价格最初的记录位置，每行都带有数量阶梯。

[Open](https://docs.alforse.com/zh/docs/reference/quotes.md)

**销售订单**

已确认的订单，其行带有解析后的单价。

[Open](https://docs.alforse.com/zh/docs/reference/sales-orders.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.