56 lines
1.4 KiB
Markdown
56 lines
1.4 KiB
Markdown
|
|
# Day 3 - 预算占用、释放、核销服务
|
||
|
|
|
||
|
|
## 目标
|
||
|
|
|
||
|
|
把预算变化统一收敛到预算服务,申请、报销、付款都只能通过预算服务改变预算状态。
|
||
|
|
|
||
|
|
## 服务能力
|
||
|
|
|
||
|
|
预算检查:
|
||
|
|
|
||
|
|
- 校验预算归属是否存在。
|
||
|
|
- 校验预算是否被冻结。
|
||
|
|
- 校验可用余额是否充足。
|
||
|
|
- 返回超预算金额和处理建议。
|
||
|
|
|
||
|
|
预算预占:
|
||
|
|
|
||
|
|
- 用于费用申请提交。
|
||
|
|
- 写入 `reserve` 交易。
|
||
|
|
- 记录来源单据。
|
||
|
|
|
||
|
|
预算释放:
|
||
|
|
|
||
|
|
- 用于申请撤回、退回、驳回、取消。
|
||
|
|
- 写入 `release` 交易。
|
||
|
|
- 必须找到原始预占来源。
|
||
|
|
|
||
|
|
预算核销:
|
||
|
|
|
||
|
|
- 用于报销审批通过。
|
||
|
|
- 写入 `consume` 交易。
|
||
|
|
- 如果来源申请已有预占,应先释放预占或转换为核销,不能重复占用。
|
||
|
|
|
||
|
|
预算回滚:
|
||
|
|
|
||
|
|
- 用于报销退回或撤销审批。
|
||
|
|
- 写入 `rollback` 交易。
|
||
|
|
|
||
|
|
## 关键防错
|
||
|
|
|
||
|
|
- 同一来源单据不能重复预占。
|
||
|
|
- 同一报销单不能重复核销。
|
||
|
|
- 释放金额不能超过原预占金额。
|
||
|
|
- 核销金额不能超过可用余额加当前来源预占余额。
|
||
|
|
- 所有预算交易必须有来源单据和操作人。
|
||
|
|
|
||
|
|
## 验收
|
||
|
|
|
||
|
|
- [ ] 预算预占后可用余额减少。
|
||
|
|
- [ ] 预算释放后可用余额恢复。
|
||
|
|
- [ ] 预算核销后已核销金额增加。
|
||
|
|
- [ ] 重复预占会被阻断。
|
||
|
|
- [ ] 重复核销会被阻断。
|
||
|
|
- [ ] 台账能解释每一次余额变化。
|
||
|
|
|