5.1 KiB
5.1 KiB
合同结算方式:新增选项与第五条条款规则
目标
合同管理「结算方式」下拉增加 按量结算 / 月结 / 季结 / 其他 四个选项,供业务录入与列表/详情展示。
- 货到付款 / 款到发货:继续按现状驱动合同打印富文本「第五条、结算方式及期限」及 PDF 同源内容。
- 新四项:不走货到/款到那套自动条款;首次需填第五条时使用带当前选项 label 的约定句式;用户改过并保存后按结算方式分 key 保留草稿,不再被自动覆盖。
采用方案:按结算方式分默认文案 + 现有占位符/草稿机制(不拆第二字段、不真留空占位符)。
字典
字典类型:crm_settlement_method(已有)。
| dict_label | dict_value | order_num | 说明 |
|---|---|---|---|
| 货到付款 | arrive_payment |
0 | 已有;条款驱动 |
| 款到发货 | advance_payment |
1 | 已有;条款驱动 |
| 按量结算 | volume_settlement |
2 | 新增 |
| 月结 | monthly_settlement |
3 | 新增 |
| 季结 | quarterly_settlement |
4 | 新增 |
| 其他 | other_settlement |
5 | 新增 |
- 表单、列表
DictTag、详情展示继续读字典,无需改下拉组件结构。 - 需提供可重复执行的 SQL 迁移(
backend/scripts/),并同步基线快照约定(docs/sql/如有惯例则跟)。
第五条内容解析规则
仍使用:
- 模板正文第五条位置:
{{SETTLEMENT_METHOD_CONTENT}} - 分方式草稿字段:
settlement_clause_drafts(JSON:{ [settlementMethod]: string })
解析:
content = drafts[settlementMethod]
|| defaultClause(settlementMethod)
defaultClause
| settlementMethod | 默认正文 |
|---|---|
advance_payment |
款到发货。需方付款后安排发货,需方收到货物后,供方开具13%增值税专用发票。 |
arrive_payment |
货到付款,需方收到供方货物后,供方开具13%增值税专用发票,无异议后,以现汇方式月结。 |
volume_settlement / monthly_settlement / quarterly_settlement / other_settlement |
请根据双方约定填写结算方式:{label}。供方开具13%增值税专用发票,无异议后,以现汇方式月结。 |
| 其它未知值 | 回退 arrive_payment 默认文案(兼容脏数据) |
其中 {label} 为字典 label(按量结算 / 月结 / 季结 / 其他)。示例:
- 月结 →
请根据双方约定填写结算方式:月结。供方开具13%增值税专用发票,无异议后,以现汇方式月结。 - 按量结算 →
请根据双方约定填写结算方式:按量结算。供方开具13%增值税专用发票,无异议后,以现汇方式月结。
「占位不变」在本方案中的含义
- 存库模板第五条仍保存为占位符(与现网一致),打开打印/生成 PDF 时再解析。
- 新四项不得误用货到付款/款到发货整段默认句(这是相对现状的关键修复点)。
- 用户在打印弹窗编辑第五条并保存后,写入
settlement_clause_drafts[当前 settlementMethod];再次打开同方式优先用草稿,不自动覆盖。 - 在货到/款到与新四项之间切换时,各用各的草稿或默认,互不踩踏。
前后端一致性
前端(打印弹窗打开、replacePlaceholders、PDF 再替换)与后端 save_template 在空草稿兜底时,必须使用同一套 defaultClause 规则。
建议:
- 前端抽出共享函数(如
settlementClause.ts),ContractDetailDialog.vue与仍在用的detail.vue共用。 - 后端抽出纯函数(如 CRUD 旁或
services小模块),save_template调用;并补单测覆盖六种方式 + 未知值。
前端取 label:字典 crm_settlement_method;后端兜底可用固定 value→label 映射(与上表一致),避免依赖运行时字典表。
不变范围
- 不改合同其它条款(如第三条送货方式)的生成逻辑。
- 不新增独立「条款结算方式」字段。
- 不改变审批/执行等状态机。
- 不要求历史合同批量回填
settlement_clause_drafts(打开时按新规则即时解析即可)。
改动落点(实现时)
| 区域 | 内容 |
|---|---|
| SQL | 向 sys_dict_data 插入四条(幂等) |
| 前端 | 第五条 default / 解析逻辑;打印与 PDF 路径 |
| 后端 | save_template 空草稿默认文案与前端对齐 |
| 测试 | 后端 defaultClause / save 兜底单测 |
验收要点
- 新增/编辑结算方式下拉可见 6 项;新四项可保存,列表/详情 Tag 显示正确。
- 选「款到发货 / 货到付款」→ 第五条仍为原默认(或各自已有草稿)。
- 选「月结」且无草稿、首次打开打印 → 第五条为带「月结」的约定句;手改保存后再打开仍为改后内容。
- 「按量结算 / 季结 / 其他」同理,label 随选项变化。
- PDF 与打印弹窗第五条一致。
- 从「货到付款」改为「月结」再打开打印 → 显示月结约定句(或月结草稿),不再误显示货到付款默认句(除非用户曾把相同文案存进月结草稿)。