> **先读** [`shb-warehouse-replacement-mutation-common.md`](shb-warehouse-replacement-mutation-common.md)（本域全部变更安全规则的唯一出处，含整行覆盖式更新与 fetch-then-merge、快捷 flag 不能改 `originalId`/`replaceId`、`edit enable` 直通语义）。

# shb-cli warehouse replacement edit（编辑替换记录与启停用）

覆盖 `replacement edit`（编辑元数据）与 `replacement edit enable`（启停用）。

## 编辑替换记录（`replacement edit`）

```bash
# 改备注和适用产品类型，originalId/replaceId 保持不变
shb-cli warehouse replacement edit --id <记录id> --remark "改一下备注" --catalog-ids 101,103

# 改生效/失效期
shb-cli warehouse replacement edit --id <记录id> --expiration-date "2027-06-30 23:59:59"
```

- `--id` 必填，是替换记录自己的 `id`（不是物料 id）。
- 快捷 flag 只能改元数据（`catalogIds`/`effectiveDate`/`expirationDate`/`permanently`/`remark`/`enable`），**不能改 `originalId`/`replaceId`/`priority`**——原因见 mutation-common 安全规则第 4、5 条；要改 `originalId`/`replaceId` 只能用 `--data` 显式指定（且同样受自我替换拦截）。
- 快捷 flag 模式内部会自动 fetch-then-merge（先查当前完整记录再叠加改动），正常使用即可（机制见 mutation-common 安全规则第 3 条）。
- **`--data`/`--file` 模式需要自己先查后改**：先 `replacement detail --id <id> -o json`（见 [`shb-warehouse-replacement-detail.md`](shb-warehouse-replacement-detail.md)）拿到当前完整记录，在此基础上只改要改的字段再提交——漏传的字段（除 `remark`/`enable` 外）会被清空成默认值。

## 启用/禁用替换记录（`replacement edit enable`）

```bash
shb-cli warehouse replacement edit enable --id <记录id> --enable true    # 设为启用
shb-cli warehouse replacement edit enable --id <记录id> --enable false   # 设为禁用
```

`--id`/`--enable` 均必填。这是直通调用，不做任何"先查当前状态"的判断，重复调用同一目标状态是安全、幂等的（语义见 mutation-common 安全规则第 7 条）。

## 典型组合场景

### 批量禁用一批过期未清理的替换记录

```bash
# 1. 先查已失效但还在启用状态的记录（搜索用法见 shb-warehouse-replacement-search.md）
shb-cli warehouse replacement search --state expired --enabled true --format-data --fields id,originalSN,replaceSN

# 2. 逐条禁用（enable 接口是单条调用，没有批量启停用端点）
shb-cli warehouse replacement edit enable --id <id1> --enable false
shb-cli warehouse replacement edit enable --id <id2> --enable false
```
