# ERP 采购管理模块完善 - 前端变更文档
## 概述
完善 ERP 采购管理模块,实现从采购申请到采购入库的完整流程管理。
**流程说明**:
- **采购申请**:需要 BPM 审批,审批通过后可生成采购订单
- **采购订单**:由采购申请生成,无需审批,直接可进行入库操作
---
## 一、前置条件
### BPM 流程配置(采购申请)
采购申请审批需要 BPM 流程支持,必须先完成以下配置:
1. **创建采购申请审批分类**:在 BPM 流程分类中创建 `purchase_request_approve` 分类
2. **创建采购申请审批流程**:在 BPM 流程模型中创建采购申请审批流程
**执行 SQL**:
```sql
-- 创建 BPM 采购申请审批分类
INSERT INTO bpm_category (id, name, code, description, status, sort, creator, create_time, updater, update_time, deleted)
VALUES (101, '采购申请审批', 'purchase_request_approve', '采购申请审批流程分类', 0, 11, '1', NOW(), '1', NOW(), 0);
```
---
## 二、功能清单
| 序号 | 功能模块 | 页面路径 | 功能说明 |
|------|----------|----------|----------|
| 1 | 采购申请 | `/erp/purchase/request` | 需求部门发起采购需求、BPM 审批、生成采购订单 |
| 2 | 供应商管理 | `/erp/purchase/supplier` | 供应商主数据档案管理 |
| 3 | 采购订单 | `/erp/purchase/order` | 采购订单管理(无需审批,由采购申请生成) |
| 4 | 采购入库 | `/erp/purchase/in` | 到货入库、验收管理 |
| 5 | 采购退货 | `/erp/purchase/return` | 采购退货管理 |
| 6 | 采购统计 | `/erp/purchase/statistics` | 统计分析报表 |
### 采购流程说明
完整的采购流程为:
**采购申请 -> 审批 -> 采购订单 -> 入库 -> 付款**
1. **采购申请**:需求部门发起采购需求,填写申请理由和产品明细
2. **审批**:通过 BPM 工作流进行审批
3. **采购订单**:审批通过后,选择供应商生成采购订单(无需再审批)
4. **入库**:供应商发货后,进行入库验收
5. **付款**:根据入库情况进行付款
**详细文档**:采购申请功能详见 `docs/erp_purchase_request_frontend.md`
---
## 三、供应商管理页面
### 涉及页面
- `/erp/purchase/supplier/index` - 供应商列表
- `/erp/purchase/supplier/form` - 供应商表单
### 新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| creditCode | String | 统一社会信用代码 |
| bankName | String | 开户银行 |
| bankAccount | String | 银行账号 |
| address | String | 地址 |
| contact | String | 联系人 |
| phone | String | 联系电话 |
| email | String | 邮箱 |
| taxNo | String | 税号 |
| qualification | String | 资质信息 |
| cooperationTime | Date | 合作开始时间 |
### 前端表单修改
```html
启用
禁用
```
---
## 四、采购入库页面(验收功能)
### 新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| inspectionStatus | Integer | 验收状态(0:待验收 1:已验收 2:验收不合格) |
| inspectionTime | DateTime | 验收时间 |
| inspectorId | Long | 遇收人员编号 |
| inspectionResult | String | 验收结果 |
### 前端修改
```html
验收
验收合格
验收不合格
取消
确定
```
---
## 五、采购统计页面
### 涉及页面
- `/erp/purchase/statistics/index` - 采购统计首页
- `/erp/purchase/statistics/supplier` - 供应商供货统计
- `/erp/purchase/statistics/price` - 采购价格分析
- `/erp/purchase/statistics/uncompleted` - 未完成订单跟踪
### API 变更
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /erp/purchase-statistics/summary | 采购汇总统计 |
| GET | /erp/purchase-statistics/supplier | 供应商供货统计 |
| GET | /erp/purchase-statistics/price | 采购价格分析 |
| GET | /erp/purchase-statistics/uncompleted | 未完成订单跟踪 |
#### 供应商供货统计响应
```json
{
"code": 0,
"data": [
{
"supplierId": 1,
"supplierName": "供应商A",
"orderCount": 10,
"orderAmount": 100000.00,
"inCount": 8,
"inAmount": 80000.00,
"returnCount": 1,
"returnAmount": 5000.00
}
],
"msg": "操作成功"
}
```
#### 采购价格分析响应
```json
{
"code": 0,
"data": [
{
"productId": 1,
"productName": "产品A",
"productBarCode": "12345678",
"avgPrice": 50.00,
"minPrice": 45.00,
"maxPrice": 55.00,
"latestPrice": 52.00,
"priceChangeRate": 4.0
}
],
"msg": "操作成功"
}
```
#### 未完成订单跟踪响应
```json
{
"code": 0,
"data": [
{
"orderId": 1,
"orderNo": "PO202401001",
"supplierName": "供应商A",
"orderTime": "2024-01-01",
"productNames": "产品A,产品B",
"orderAmount": 10000.00,
"inAmount": 5000.00,
"uncompletedAmount": 5000.00,
"daysOverdue": 5
}
],
"msg": "操作成功"
}
```
---
## 六、注意事项
1. **数据完整性**:供应商主数据需填写完整信息,包括信用代码、联系方式、银行信息等
2. **验收管理**:采购入库需进行验收,验收合格后才正式入库
3. **权限控制**:每个功能模块都有独立的权限控制,需配置角色权限
4. **数据追溯**:所有操作记录都有完整的创建人、创建时间、审批人、审批时间等信息