Files
shanxia2.0/docs/crm-migration/plans/contract/01-prerequisite-create-for-quote.md
T
2026-06-01 08:21:21 +08:00

59 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 合同 create — 报价单前置(P1)
> **角色**:支撑报价单 **转合同**(`CrmQuoteServiceImpl.toContract`)及 `ToContractDialog`。
> **范围**:仅实现 **create 闭环**,不含合同审批/变更/模板等完整合同模块。
---
## 须对齐的 Java
| 文件 | 方法 |
|------|------|
| `CrmContractController.java` | `POST /` → `insertByBo` |
| `CrmContractServiceImpl.java` | `insertByBo`(主表 + 产品明细) |
| `CrmContractProductServiceImpl.java` | `batchInsert` / 明细保存 |
报价单转合同调用链(快照 `CrmQuoteServiceImpl.toContract` 时一并阅读):
1. 校验报价单 `accepted`、有产品、未转过
2. 组装 `CrmContractBo` + `CrmContractProductBo` 列表
3. `contractService.insertByBo`
4. 回写报价单 `status=contract`、`contract_id`
## 涉及表(最小集)
| 表 | 说明 |
|----|------|
| `crm_contract` | 门户已有简化 Model,须补字段 + create CRUD |
| `crm_contract_product` | **须新建** DDL |
其余合同表(approval/change/template…)**本阶段不做**。
## 门户 API(最小)
| 门户 | 说明 |
|------|------|
| POST `/web/crm/contract/add` | 对齐 Java `insertByBo` |
| POST `/web/crm/contract/detail` | 转合同后可选查看 |
| POST `/web/crm/contract/product/list` | 明细(若前端需要) |
`toContract` 在报价单 CRUD 内调用 `create_contract_from_bo(...)`,不暴露为独立合同「从报价创建」路由亦可(与 Java 内联调用一致)。
## 快照清单(P1-1 实施前执行)
```bash
./docs/crm-migration/scripts/snapshot-java.sh contract \
controller/CrmContractController.java \
service/impl/CrmContractServiceImpl.java \
service/impl/CrmContractProductServiceImpl.java \
domain/CrmContract.java \
domain/CrmContractProduct.java \
domain/bo/CrmContractBo.java \
domain/bo/CrmContractProductBo.java
```
## 完成标准
- [x] 可从 Python 传入与 Java `toContract` 相同语义的 Bo,创建合同 + 产品行
- [ ] 报价单 `C14 转合同` 可联调(在报价单全量功能范围内,**不可 stub**)