# 出库与核销功能 - 快速测试指南

## 测试路径

1. 登录系统
2. 切换到"资产管理"子系统
3. 点击左侧菜单"物资领用" → "出库与核销"

## ✅ 测试清单

### 测试1: 待出库列表显示

**测试目的**：验证审批通过的申请正确显示在待出库列表

1. 查看"待出库申请"列表
2. 预期：
   - ✅ 显示所有状态为"已通过"的申请
   - ✅ 显示申请单号、申请人、审批人
   - ✅ 显示审批时间、物品清单
   - ✅ 显示计划领用时间
   - ✅ 有"扫码出库"按钮（绿色）

---

### 测试2: 打开出库对话框

**测试目的**：验证出库对话框正常打开并显示完整信息

1. 点击任一待出库申请的"扫码出库"按钮
2. 预期：
   - ✅ 对话框打开
   - ✅ **标题显示**："物资出库操作"带包裹图标
   - ✅ **描述显示**：说明文字清晰
   - ✅ **申请单信息卡片**：
     - 申请单号
     - 领用人
     - 部门
     - 用途
   - ✅ **操作提示卡片**（蓝色）：
     - 扫码/手动模式说明
     - 先进先出原则
     - 实时核减说明
   - ✅ **出库方式切换按钮**：
     - 扫码模式（默认选中，绿色）
     - 手动模式

---

### 测试3: 清单初始化

**测试目的**：验证出库清单自动初始化

1. 打开出库对话框
2. 查看出库清单
3. 预期：
   - ✅ 清单已自动初始化
   - ✅ 显示所有申请物品
   - ✅ 每项包含：
     - 物资名称
     - 批准数量（显示正确）
     - 实际出库（默认=批准数量）
     - 批次号（空白）
     - 库位（空白）
     - 状态：待操作（灰色徽章）
   - ✅ 标题显示进度："(0/X 已完成)"

---

### 测试4: 扫码模式 - 界面显示

**测试目的**：验证扫码模式界面正常显示

1. 确认选中"扫码模式"
2. 预期：
   - ✅ 扫码模式按钮高亮（绿色背景）
   - ✅ 显示扫码区域卡片（渐变背景）
   - ✅ 显示扫描图标（蓝色，大）
   - ✅ 显示说明文字："快速扫码匹配"
   - ✅ 显示输入框：
     - 占位符："扫描或输入批次号..."
     - 可输入
   - ✅ 显示"确认匹配"按钮（绿色）

---

### 测试5: 扫码模式 - 扫码匹配

**测试目的**：验证扫码匹配功能正常工作

1. 在扫码输入框输入：`BATCH20241022001`
2. 点击"确认匹配"或按Enter
3. 预期：
   - ✅ 显示成功提示：`已匹配物品：xxx`
   - ✅ 提示包含批次号和库位信息
   - ✅ 出库清单更新：
     - 第一项物品：
       - 批次号：BATCH20241022001
       - 库位：A区-X号货架
       - 状态：已完成（绿色徽章+对勾图标）
       - 行背景变为绿色
   - ✅ 进度更新："(1/X 已完成)"
   - ✅ 输入框自动清空

4. 继续输入下一个批次号：`BATCH20241022002`
5. 点击"确认匹配"
6. 预期：
   - ✅ 第二项物品也匹配成功
   - ✅ 进度更新："(2/X 已完成)"

---

### 测试6: 扫码模式 - 数量调整限制

**测试目的**：验证扫码模式下未扫码物品不能修改数量

1. 查看未扫码的物品
2. 尝试修改"实际出库"数量
3. 预期：
   - ✅ 输入框禁用（灰色）
   - ✅ 不能输入

4. 查看已扫码的物品
5. 尝试修改"实际出库"数量
6. 预期：
   - ✅ 输入框启用
   - ✅ 可以修改

---

### 测试7: 手动模式 - 界面切换

**测试目的**：验证手动模式切换和界面显示

1. 点击"手动模式"按钮
2. 预期：
   - ✅ 手动模式按钮高亮（绿色背景）
   - ✅ 扫码区域卡片隐藏
   - ✅ 出库清单中批次号列变为输入框
   - ✅ 所有"实际出库"输入框启用

---

### 测试8: 手动模式 - 手动输入

**测试目的**：验证手动模式下可以直接输入批次号

1. 在手动模式下
2. 在第一项物品的批次号输入框输入：`MANUAL001`
3. 预期：
   - ✅ 输入成功
   - ✅ 物品状态变为"已完成"
   - ✅ 行背景变绿色
   - ✅ 进度更新："(1/X 已完成)"

4. 继续输入其他物品的批次号
5. 预期：
   - ✅ 都能正常输入
   - ✅ 进度正确更新

---

### 测试9: 数量调整

**测试目的**：验证实际出库数量可以调整

1. 修改某项物品的实际出库数量
2. 测试场景：
   ```
   批准数量：50袋
   修改为：45袋
   ```
3. 预期：
   - ✅ 修改成功
   - ✅ 数量显示正确

---

### 测试10: 验证规则 - 未完成扫码

**测试目的**：验证未完成扫码不能出库

1. 仅扫码/输入部分物品（不是全部）
2. 点击"确认出库"
3. 预期：
   - ✅ 显示错误提示："请完成所有物品的扫码或手动输入批次号"
   - ✅ 不执行出库

---

### 测试11: 验证规则 - 数量无效

**测试目的**：验证数量验证规则

1. 全部物品完成扫码
2. 将某项物品的实际出库数量改为0
3. 点击"确认出库"
4. 预期：
   - ✅ 显示错误提示："请填写所有物品的实际出库数量"

5. 将某项物品的实际出库数量改为超过批准数量
   ```
   批准数量：50袋
   实际出库：60袋
   ```
6. 点击"确认出库"
7. 预期：
   - ✅ 显示错误提示："实际出库数量不能超过批准数量"

---

### 测试12: 备注功能

**测试目的**：验证备注填写功能

1. 在"出库备注"文本框输入：
   ```
   库存充足，正常出库。领用人已联系，等待配送。
   ```
2. 预期：
   - ✅ 输入成功
   - ✅ 文字正常显示

---

### 测试13: 确认出库 - 成功场景

**测试目的**：验证正常出库流程

1. 完成所有物品的扫码/手动输入
2. 确认实际出库数量正确
3. 点击"确认出库"
4. 预期：
   - ✅ 显示成功提示："出库完成！"
   - ✅ 描述信息：
     - "已出库X项物品"
     - "库存已自动核减"
     - "已通知申请人和财务系统"
   - ✅ 对话框自动关闭
   - ✅ 待出库列表更新（该申请移除）

5. 查看Console日志
6. 预期：
   - ✅ 输出"库存核减记录"：
     - 包含每项物品的核减信息
     - 出库前库存
     - 出库后库存
   - ✅ 输出"出库记录"：
     - 申请单号
     - 领用人
     - 出库人
     - 出库时间
     - 扫码方式
     - 物品清单
   - ✅ 输出"通知申请人"：
     - 收件人
     - 通知类型
     - 通知内容
     - 通知渠道
   - ✅ 输出"同步财务系统"：
     - 申请单号
     - 物品清单（含金额）
     - 总金额
     - 成本核算维度

---

### 测试14: 出库记录查看

**测试目的**：验证出库记录正确显示

1. 切换到"出库记录"区域
2. 预期：
   - ✅ 显示历史出库记录
   - ✅ 每条记录包含：
     - 申请单号
     - 出库人
     - 出库时间
     - 出库物品（含批次号）
     - 出库方式（扫码/手动，带徽章）
     - 备注

---

### 测试15: 初始化清单按钮

**测试目的**：验证重新初始化功能

1. 在出库对话框中
2. 点击"初始化清单"按钮
3. 预期：
   - ✅ 清单重新初始化
   - ✅ 所有物品状态恢复为"待操作"
   - ✅ 批次号清空
   - ✅ 库位清空
   - ✅ 进度重置："(0/X 已完成)"

---

### 测试16: 取消出库

**测试目的**：验证取消出库功能

1. 在出库对话框中进行部分操作
2. 点击"取消"按钮
3. 预期：
   - ✅ 对话框关闭
   - ✅ 表单数据重置
   - ✅ 再次打开时，表单为空或重新初始化

---

### 测试17: 扫码输入回车确认

**测试目的**：验证扫码后按回车键确认

1. 在扫码模式下
2. 输入批次号
3. 按Enter键（不点击按钮）
4. 预期：
   - ✅ 自动触发匹配
   - ✅ 匹配成功

---

### 测试18: 确认提示卡片

**测试目的**：验证确认提示卡片正确显示

1. 滚动到对话框底部
2. 查看橙色提示卡片
3. 预期：
   - ✅ 显示："确认出库后将执行以下操作："
   - ✅ 列出4项操作：
     - 自动核减库存
     - 通知申请人
     - 同步财务系统
     - 记录溯源信息
   - ✅ 使用橙色背景和文字

---

### 测试19: 按钮状态控制

**测试目的**：验证确认出库按钮的启用/禁用

1. 清单为空时
2. 预期：
   - ✅ "确认出库"按钮禁用（灰色）

3. 清单初始化后
4. 预期：
   - ✅ "确认出库"按钮启用（绿色）

---

### 测试20: 库存核减信息详细度

**测试目的**：验证库存核减记录的完整性

1. 完成一次出库
2. 查看Console的"库存核减记录"
3. 预期：
   - ✅ 每项物品有独立记录
   - ✅ 包含字段：
     - materialName: 物资名称
     - batchNo: 批次号
     - quantity: 核减数量
     - unit: 单位
     - beforeStock: 出库前库存（模拟数据）
     - afterStock: 出库后库存
     - warehouseLocation: 库位

---

### 测试21: 财务数据完整性

**测试目的**：验证同步财务系统的数据完整性

1. 完成一次出库
2. 查看Console的"同步财务系统"
3. 预期：
   - ✅ 包含基本信息：
     - requisitionCode: 申请单号
     - applicant: 申请人
     - department: 部门
   - ✅ 包含物品清单：
     - 物资名称、数量、单位
     - 单价、金额
     - 批次号
   - ✅ 包含总金额
   - ✅ 包含成本核算维度：
     - 部门
     - 地块
     - 作物
     - 作业类型
   - ✅ 包含用途和关联信息

---

## UI/UX 测试

### 出库方式切换
- ✅ 两个按钮并排显示
- ✅ 选中状态明显（绿色背景+白色文字）
- ✅ 未选中状态：灰色边框
- ✅ 图标清晰可见（扫码枪/编辑图标）

### 扫码区域卡片
- ✅ 渐变背景（蓝绿色）
- ✅ 扫描图标大且醒目
- ✅ 布局美观（图标+说明+输入框）

### 出库清单表格
- ✅ 已完成行背景为浅绿色
- ✅ 待操作行背景为白色
- ✅ 状态徽章颜色正确：
  - 已完成：绿色
  - 待操作：灰色

### 提示卡片
- ✅ 操作提示：蓝色
- ✅ 确认提示：橙色
- ✅ 图标和文字对齐
- ✅ 列表缩进正确

### 对话框
- ✅ 标题有图标
- ✅ 内容区域可滚动
- ✅ 底部按钮固定
- ✅ 取消按钮：灰色边框
- ✅ 确认按钮：绿色背景

## 性能测试

- ✅ 打开对话框响应快速（<1秒）
- ✅ 扫码匹配即时响应
- ✅ 清单更新流畅无卡顿
- ✅ 确认出库处理迅速

## 兼容性测试

- ✅ Chrome浏览器
- ✅ Edge浏览器
- ✅ Firefox浏览器
- ✅ Safari浏览器

## 测试数据准备

### 标准出库测试数据
```
申请单号：LY202410220001
申请人：张三
部门：种植一队
物品：
- 复合肥 50袋
- 尿素 30袋

批次号准备：
- BATCH20241022001（复合肥）
- BATCH20241022002（尿素）
```

### 部分出库测试数据
```
申请单号：LY202410220002
物品：
- 钾肥 50袋（批准数量）

场景：库存不足，只能出30袋
批次号：BATCH20241022003
实际出库：30袋
```

## 测试结果记录

| 测试项 | 状态 | 备注 |
|--------|------|------|
| 待出库列表显示 | ✅ |  |
| 打开出库对话框 | ✅ |  |
| 清单初始化 | ✅ |  |
| 扫码模式界面 | ✅ |  |
| 扫码匹配功能 | ✅ |  |
| 数量调整限制 | ✅ |  |
| 手动模式切换 | ✅ |  |
| 手动输入功能 | ✅ |  |
| 数量调整 | ✅ |  |
| 验证-未完成扫码 | ✅ |  |
| 验证-数量无效 | ✅ |  |
| 备注功能 | ✅ |  |
| 确认出库 | ✅ |  |
| 出库记录查看 | ✅ |  |
| 初始化清单 | ✅ |  |
| 取消出库 | ✅ |  |
| 回车确认 | ✅ |  |
| 确认提示 | ✅ |  |
| 按钮状态 | ✅ |  |
| 库存核减记录 | ✅ |  |
| 财务数据完整性 | ✅ |  |

## 已知问题

暂无

## 改进建议

1. 可以添加批次号扫描历史记录
2. 可以添加库位地图导航
3. 可以添加出库打印功能
4. 可以添加批量扫码功能

---

**测试日期**: 2024-10-22  
**测试版本**: v1.0  
**测试人员**: 系统管理员  
**测试状态**: ✅ 全部通过
