销售规则
Paid销售单据上的谓词守卫:报错阻止受限物料,或警告并允许用户确认后继续。
销售规则在销售单据上校验物料。如果条件不满足,规则要么阻止写入,要么警告并允许用户确认。规则作用于报价行、销售订单行和销售发票行。
例如,要限制受出口管制的部件,可以把规则限定到其物料组,启用三种单据类型,并要求 customer.location.countryCode notIn 受限国家列表。把严重程度设为 error,消息设为 `{item.id}` cannot ship to this destination。匹配的行随后会被该消息拒绝。
销售规则在 Carbon 定稿报价、将报价转为订单、确认订单、过账发货或过账发票时运行。这样可以捕获通过转换、导入和 API 创建的行。被阻止的单据不会写入任何内容。
规则检查什么
每条规则包含一棵小型条件树,以及对一行或多行「字段/运算符/值」的匹配方式:
- 匹配方式:
all(所有条件都成立)、any(至少一个成立)或none(都不能成立)。 - 字段:从固定注册表中选择:物料事实(
item.type、item.replenishmentSystem、item.itemTrackingType、物料自定义字段)、客户事实(customer.customerTypeId、customer.customerStatusId、客户自定义字段)、单据的收货国家(customer.location.countryCode),以及行的transaction.quantity。 - 运算符:
eq、neq、in、notIn、isSet、isNotSet、gt、lt。
违规时显示的消息支持 `{item.id}` 和 `{customer.location.countryCode}` 等标记,因此文本可以指明出问题的行。条件成立时规则「通过」;不成立时触发违规。
除 isSet / isNotSet 外,条件指向没有值的字段会被视为 "…is required" 违规。没有收货地点的订单上,国家规则会以 "Customer location is required" 失败关闭,而不是放行。没有来源订单、且发票上没有 "Ship To" 的独立发票行同样如此:绝不会用账单地址代替收货地址。
规则在哪里触发
规则列出其适用的场景(销售单据行类型):quoteLine、salesOrderLine 和 salesInvoiceLine。两类检查点会运行它们:
- 行检查:在报价、销售订单或销售发票上创建或编辑行时。
- 单据关卡:在每个承诺节点——定稿报价、报价转订单(或 RFQ 转报价)、确认销售订单、过账其发货、过账销售发票。关卡会重新读取单据上的每一行,因此也能捕获陈旧数据——行写入后才创建的规则,或已变更的收货地址。
国家规则评估的收货地址是货物实际发往的地方:直运会覆盖订单抬头地址,由销售订单转换而来的发票行通过该订单解析目的地,独立发票行使用发票自己的 "Ship To"。
在面向客户的数字化报价页面上,error 违规会用中性消息拒绝接受,你的内部规则文本绝不会到达客户。warn 违规会为销售方记录日志,接受流程继续——现场没有员工可以确认警告。
阻止还是警告
| 严重程度 | 行为 |
|---|---|
error | 阻止行或单据,直到条件满足。无法确认绕过。 |
warn | 显示消息,但允许用户确认并继续。 |
两种结果都会留下痕迹:被阻止的写入和已确认的警告都会记录为证据(规则、单据、行、物料、操作人、时间),并通过邮件通知销售规则通知组(设置 → 销售)中的人员。
作用域与分配
规则通过两种方式作用于目标行:
- 按筛选:限定物料类型和/或物料组,以 OR 或 AND 组合。空筛选匹配所有物料。
- 按分配:从物料库存页面的 Sales rules(销售规则) 卡片把规则固定到具体物料。
与存放规则不同,销售规则始终以物料为目标,没有工作中心目标。
规则字段
error(阻止)或 warn(确认后继续)。{token} 插值。在哪里管理
销售规则位于销售区域的 Sales Rules(销售规则) 下。可以在那里创建、编辑和启停规则。要把已有规则挂接到单个物料,请使用物料库存页面上的 Sales rules 卡片。
销售规则是企业版能力,受 Business 套餐门控。其他套餐下界面会显示升级提示,且不会求值任何规则。