涵盖16种场景的余额调整处理逻辑
收入为 + 值, 支出为 - 值
旧账户ID = 新账户ID,只需计算净影响,执行一次操作
| 场景 | 旧流水 → 新流水 | 净影响计算 | 最终操作 | 账户余额变化 | 说明 |
|---|---|---|---|---|---|
| A1 | 支出100 → 支出200 | -(-100)+(-200) = -100 | 支出100 | -100 | 多支出100元 |
| A2 | 支出100 → 支出50 | -(-100)+(-50) = +50 | 收入50 | +50 | 少支出50元(退回) |
| A3 | 收入200 → 收入500 | -(+200)+(+500) = +300 | 收入300 | +300 | 多收入300元 |
| A4 | 收入200 → 收入100 | -(+200)+(+100) = -100 | 支出100 | -100 | 少收入100元(扣回) |
| A5 | 支出100 → 收入200 | -(-100)+(+200) = +300 | 收入300 | +300 | 从支出变收入,净增300 |
| A6 | 支出100 → 收入50 | -(-100)+(+50) = +150 | 收入150 | +150 | 从支出变收入,净增150 |
| A7 | 收入200 → 支出100 | -(+200)+(-100) = -300 | 支出300 | -300 | 从收入变支出,净减300 |
| A8 | 收入200 → 支出300 | -(+200)+(-300) = -500 | 支出500 | -500 | 从收入变支出,净减500 |
旧账户ID ≠ 新账户ID,需要分别处理两个账户
| 场景 | 旧流水 → 新流水 | 账户变更 | 旧账户操作 | 新账户操作 | 旧账户余额 | 新账户余额 | 说明 |
|---|---|---|---|---|---|---|---|
| B1 | 支出100 → 支出200 | 账户A → 账户B | 收入100(反向) | 支出200(新操作) | +100 | -200 | 从A账户支出改为从B账户支出 |
| B2 | 支出100 → 支出50 | 账户A → 账户B | 收入100(反向) | 支出50(新操作) | +100 | -50 | 从A账户支出改为从B账户支出(金额减少) |
| B3 | 收入200 → 收入500 | 账户A → 账户B | 支出200(反向) | 收入500(新操作) | -200 | +500 | 从A账户收入改为到B账户收入(金额增加) |
| B4 | 收入200 → 收入100 | 账户A → 账户B | 支出200(反向) | 收入100(新操作) | -200 | +100 | 从A账户收入改为到B账户收入(金额减少) |
| B5 | 支出100 → 收入200 | 账户A → 账户B | 收入100(反向) | 收入200(新操作) | +100 | +200 | 从A账户支出改为到B账户收入 |
| B6 | 支出100 → 收入50 | 账户A → 账户B | 收入100(反向) | 收入50(新操作) | +100 | +50 | 从A账户支出改为到B账户收入(金额减少) |
| B7 | 收入200 → 支出100 | 账户A → 账户B | 支出200(反向) | 支出100(新操作) | -200 | -100 | 从A账户收入改为从B账户支出 |
| B8 | 收入200 → 支出300 | 账户A → 账户B | 支出200(反向) | 支出300(新操作) | -200 | -300 | 从A账户收入改为从B账户支出(金额增加) |
条件:旧账户ID = 新账户ID
处理:
条件:旧账户ID ≠ 新账户ID
处理:
反向操作规则: