合同变更与履约
这篇解决什么
变更审批和履约流水各改哪张表。读完能对上 contract_change 和 contract_performance,不要把履约记录当成第四条流程。
先开模块和模型,见 合同功能设计。起草 / 台账见 合同台账。
示意图:变更走审批回写金额和日期。履约可挂收付款计划,本身不进 Flowable。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 变更 | /contract/change,key contract_change(302) | ruoyi-office/yudao-module-contract/.../ContractChangeController.java |
| 履约 | /contract/performance | ContractPerformanceController.java |
| 收付款计划 | /contract/payment-plan | ContractPaymentPlanController.java |
| 表 | 变更 / 履约 / 计划 | contract_change、contract_performance、contract_payment_plan |
| 前端 | 变更 list/info、履约台账 | ruoyi-office-vben/apps/web-antd/src/views/contract/change/、performance/ |
变更单 contractId 挂原合同。金额、生效日、截止日成对存 *Before / *After。changeReason / changeContent 是说明,originalValue / newValue 是正文快照。日期是 LocalDate。
履约 performanceType:1 交付 / 2 验收 / 3 开票 / 4 收款 / 5 付款 / 6 服务交付 / 99 其他。performanceDate 是 LocalDateTime,前端时间戳用 valueFormat: 'x'。可填 paymentPlanId、relatedBillType / relatedBillId(例如入库单回写)。
计划在 /contract/payment-plan。资产入库通过后的合同回写走资产侧 AssetContractPerformanceWriter,失败不应回滚已建卡片,见 资产领用。
移动变更目前是详情组件,权限 contract:change:query。PC 发起为主。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
amountBefore / amountAfter | 变更金额对 | ContractChangeDO |
endDateBefore / endDateAfter | 截止日期对 | 同上 |
performanceType / performanceAmount | 履约类型与金额 | ContractPerformanceDO |
paymentPlanId | 挂收付款计划 | 同上 |
履约加一行不会改流程状态
contract_performance 没有 processInstanceId。累计额回写合同的 performanceAmount / performanceStatus,不是再开一张审批。
变更未通过不要改台账
只改 contract_ledger.totalAmount 会和变更单对不上。等 contract_change 通过再让服务回写。
@RequestMapping("/contract/change")
public class ContractChangeController { }
@TableName(value = "contract_performance", autoResultMap = true)
public class ContractPerformanceDO extends TenantBaseDO { }配置与操作
已生效合同改金额或日期,走 合同 → 合同变更 的 list / info,填 *Before / *After 后提交 contract_change。未通过不要改 contract_ledger.totalAmount。
履约走 合同履约 台账:选类型、金额、performanceDate(时间戳,前端 valueFormat: 'x')。可挂 paymentPlanId。加一行只回写累计额,不会再开审批。

本系统截图:合同 → 合同变更。单据可点进 info。

本系统截图:变更单 info。金额、截止日期成对保存。
