# 07-A 盘点权限、操作与开发复验

本次修复将查询、盘点管理、盘盈审批、盘亏审批分开。开发依据为设计仓详设 06 V1.1 §4.14、01 V1.0 的 S-15～S-18、10 V1.2 和 10A V1.0 岗位矩阵。正式岗位及业务验收尚未执行。

## 权限与办理顺序

所有桌面入口先要求 `SupplyCore.Stocktake`，各动作再要求下列权限。服务和 HTTP 控制器同步约束，页面也按同一权限显示入口。

| 权限后缀 | 允许动作 | 岗位种子 |
| --- | --- | --- |
| `Manage` | 建任务、生成盘点行、录实盘、确认差异、驳回任务、完成盘点 | MG、MM、WK；仅计划子岗不继承 |
| `SurplusApprove` | 审批、驳回盘盈单 | MG、MM |
| `ShortageApprove` | 审批、驳回盘亏单 | 沿用高敏感权限的人工配置；不因能盘点而自动获得 |

仓储执行岗仍禁止盘亏终审。审批岗只要有对应审批权限及查询权限，即可办理自己组织和仓库范围内的差异单，无需额外取得盘点管理权限。组织、仓库范围沿用现有校验；授权越界返回不可见。

1. 盘点管理岗创建任务，选择组织、仓库、盘点类型与日期，按既有规则设置冻结范围。
2. 生成盘点行后录入实盘数量；全部需盘行录完后确认差异。账面数相等的行不生成调账单。
3. 盘盈交盘盈审批岗；盘亏交具有专用审批权的岗位。盘亏可补责任人与原因，驳回须填写原因。
4. 审批通过按既有领域规则记库存流水并调整结存。重复审批不能再次过账。
5. 差异处理满足完结条件后，由管理岗完成盘点并解除任务冻结。任务驳回沿用原有回退规则。

本次为十个写动作补显式事务工作单元。真实数据库事务回滚仍需在部署后的测试站以故障注入或提供者测试复验，不能由内存替身测试代替。

## 原表 84 字段对照与验收样例

原件：设计仓 `docs/流程调研/调研原文档/控制表单（共88张）/11.  存货管理(83-84).xlsx`，工作表“存货盘点表及库龄分析”。以下对照原表第 3～4 行，未修改原件。

| 原表字段 | 当前来源或缺口 | 验收关注 |
| --- | --- | --- |
| 序号 | 报表行序号；现有盘点有 CountNo、Id | 区分显示序号与盘点行关联标识 |
| 类别、物资名称、规格型号 | 盘点行有 MaterialId；需关联物料档案形成原表投影 | 当前桌面明细主要显示标识，不能视作名称完整交付 |
| 供货单位、生产厂家 | 盘点 DTO 未投影这些字段 | 后续报表需明确批次/采购来源，不能凭物料标识猜供货单位 |
| 计量单位 | UnitId | 原表导出需投影单位名称 |
| 期末数量 | AccountQuantity 为任务盘点快照；CountQuantity 为实盘量 | 对照指定盘点日，不能把实盘量与账面数量混用 |
| 单价、期末金额 | 领域使用库存成本计算差异金额，桌面返回 DifferenceAmount；未直接返回原表期末单价与金额 | 完整原表报表另行补齐，差异金额不等于期末金额 |
| 存放地点 | WarehouseId、LocationId | 需关联仓库/货位名称；不是任意文本地址 |
| 责任部门 | 当前 OrgId 表达组织范围，不能直接证明是原表责任部门 | 责任部门口径与报表投影待 07-B 核定 |
| 盘盈/亏（±） | Difference = CountQuantity − AccountQuantity；Kind 区分方向 | 盘盈为正、盘亏为负；调账单 Quantity 本身为正值 |
| 存货状态：正常、超储、积压、报废、盘亏 | 任务状态、盘点状态与审批状态已具备；这些不等于原表存货状态五分类 | 完整分类留在报表任务；盘亏金额/数量不得直接替代库存状态 |
| 库龄：≤6 个月、>6 个月且≤1 年、>1 年 | 当前盘点 DTO 不含库龄桶 | 07-B 负责批次库龄及报表对照，本次不增加推断字段 |
| 备注 | 任务 Remark、差异 Reason | 报表需明确任务备注与逐项差异原因的归属 |

原表注释要求仓库保管员每月发起、财务人员监督或参与、计划部门监督；“参与监督”不自动授予调账审批权。

可用于测试站复验的样例：同一授权仓库中取三条可盘物料，账面分别为 10，实盘分别为 10、13、7。预期无差异行不调账，盘盈行产生 +3 流水，盘亏行产生 −3 流水；同单再次审批不得新增流水。再取范围外仓库的差异单，合法审批权仍不能越范围操作。

## 本地验证记录

- 解决方案 restore 成功；后端 build 0 错误、4 条既有警告。首次构建发现新增菜单权限目录的集合类型不匹配，修正后通过。
- 前端 `npm run build` 通过。
- Application 测试筛选 `FullyQualifiedName~Stocktake|FullyQualifiedName~Permissions`：119 项通过。
- Domain 测试筛选 `FullyQualifiedName~Identity`：32 项通过。
- 浏览器岗位回归：6 项通过；首次失败为缺少独立 Vite HTML 入口，补入口后通过。

新增后端回归覆盖只读与各动作权限声明、角色种子职责、服务与控制器一致、显式事务声明，以及无差异、盘盈/亏重复过账、越组织/仓库审批或驳回、快照过期拒绝。流程用例使用内存仓储替身与实际领域更新器，不是共享数据库验收。

现有快照校验以当前结存数量与盘点账面数量比较。数量发生变化时拒绝审批；先入后出且净量恢复的情况不会据此判为过期，这一既有边界保留。若后续要求识别每次流转，需要另行确认快照版本方案。

## 正式复验待办

部署及授权安排后，在 `https://test.fxkyjt.cn` 现有共享库以正式岗位复验上述三例、只读/录数岗强行调用审批接口、审批岗跨范围、重复审批和失败回滚。记录单据号、来源行、前后库存、流水数、人员与时间，再更新正式检查点。本次仅更新内部开发状态，不关闭整个 OPEN-044 或原表 84 报表任务。
