存放规则
Paid校验库存交易的谓词守卫:报错阻止,或警告并允许用户继续。
存放规则在过账时校验库存交易。如果条件不满足,规则要么阻止交易,要么警告并允许用户确认后继续。规则作用于物料或****。
例如,为防止批次化学品进入常温库位,可以针对化学品物料组中的物料,启用 收货 和 上架 操作,并要求 storageUnit.storageTypeId eq 冷藏类型。把严重程度设为 error,消息设为 {item.id} must be stored in cold storage。收货到其他任何存储类型都会被该消息拒绝。
存放规则只校验数据,不会转换值、设置默认值或计算价格。规则只返回消息和严重程度。
规则检查什么
每条规则包含一棵小型条件树,以及对一行或多行「字段/运算符/值」的匹配方式:
- 匹配方式:
all(所有条件都成立)、any(至少一个成立)或none(都不能成立)。 - 字段:从固定注册表中选择:物料事实(
item.type、item.replenishmentSystem、item.itemTrackingType、自定义字段)、存储位置(storageUnit.storageTypeId、storageUnit.locationId)、工作中心事实,以及行的transaction.quantity。 - 运算符:
eq、neq、in、notIn、isSet、isNotSet、gt、lt。
违规时显示的消息支持 {item.id} 和 {transaction.quantity} 等标记,因此文本可以指明出问题的行。条件成立时规则「通过」;不成立时触发违规。
除 isSet / isNotSet 外,条件指向没有值的字段会被视为 "…is required" 违规。因此同一套规则也可用作必填检查(例如要求发货单过账前必须有批号)。
运算符
| 运算符 | 含义 |
|---|---|
eq · neq | 等于 · 不等于 |
in · notIn | 值在列表中 · 不在列表中 |
gt · lt | 大于 · 小于 |
isSet · isNotSet | 字段有值 · 没有值 |
规则在哪里触发
规则列出其适用的场景(交易类型)。可用场景取决于目标:
| 目标 | 场景 |
|---|---|
| 物料 | receipt、shipment、stockTransfer、warehouseTransfer、inventoryAdjustment、place、pick |
| 工作中心 | operationStart、operationFinish、materialIssue、materialReceive |
规则在交易过账时于服务端求值,先于任何会计或库存移动写入。被阻止的交易不会写入任何内容。
阻止还是警告
| 严重程度 | 行为 |
|---|---|
error | 阻止交易,直到条件满足。 |
warn | 显示消息,但允许用户确认并继续。 |
error 始终阻止。warn 只在用户确认前阻止,确认后同一次提交即可通过——适合「你确定吗?」这类不应硬性中断车间的护栏。
例如,在库存调整上设置 warn 规则,条件为 transaction.quantity gt 1000,消息为 Large adjustment — confirm the count,用户确认后过账即可完成,同时仍标记出异常值。
作用域与分配
规则通过两种方式作用于目标行:
- 按筛选:物料目标规则可以按物料类型和/或物料组限定,以 OR 或 AND 组合。空筛选匹配所有物料。
- 按分配:从物料的 Rules 标签页把规则固定到具体物料,或固定到具体工作中心。工作中心规则也可以设为应用于所有工作中心。
规则字段
error(阻止)或 warn(确认后继续)。{token} 插值。item 或 workCenter。在哪里管理
存放规则位于库存区域的 Storage Rules(存放规则) 下。可以在那里创建、编辑和启停规则。要把已有规则挂接到单个物料,请使用该物料的 Rules 标签页。
存放规则是企业版能力,受 Business 套餐门控。其他套餐下界面会显示升级提示,且不会求值任何规则。