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

2.1 KiB
Raw Blame History

合同 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 实施前执行)

./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

完成标准

  • 可从 Python 传入与 Java toContract 相同语义的 Bo,创建合同 + 产品行
  • 报价单 C14 转合同 可联调(在报价单全量功能范围内,不可 stub)