vault backup: 2026-05-25 22:37:41
This commit is contained in:
170
prop-acc/scenarios/deposit/force-close-forfeit.md
Normal file
170
prop-acc/scenarios/deposit/force-close-forfeit.md
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: prop-acc · deposit · 场景 - 冻结状态强制全扣并关账
|
||||
aliases:
|
||||
- 强制全扣关账
|
||||
- ForceClose forfeit
|
||||
- force-close-forfeit
|
||||
- 场景-冻结强制扣罚关账
|
||||
tags:
|
||||
- 场景
|
||||
- prop-acc
|
||||
- 保证金
|
||||
- 强制关账
|
||||
audience:
|
||||
- 业务人员
|
||||
status: 已发布
|
||||
sub_feature: deposit
|
||||
last_review: 2026-05-25
|
||||
code_version: 2026-05-22
|
||||
---
|
||||
|
||||
# 场景:冻结状态强制全扣并关账
|
||||
|
||||
账户处于 **Frozen** 状态、**还有余额**,**纠纷结果明确利向物业**(损坏归责确认业户全责、违约严重、司法判决物业胜诉等)。物业用 `ForceCloseAction` 选 `forfeit` disposition,**一步完成"解冻 + 全额扣罚 + 关账"**。
|
||||
|
||||
## 典型情境
|
||||
|
||||
> [!example] 真实情境
|
||||
> 刘先生家装修时**多次违反装修管理协议**(深夜施工、随意丢弃建筑垃圾、损坏 3 处公共设施),物业累计要扣 ¥6,000,而账户只有 ¥5,000。其间刘先生拒绝补缴,账户被冻结进入仲裁。仲裁裁决"业户全责,押金 ¥5,000 全部用于罚款,差额 ¥1,000 业户另行支付"。
|
||||
>
|
||||
> 物业财务依据仲裁书走 ForceClose forfeit,把账户里的 ¥5,000 全扣转入物业收入,账户关闭。差额 ¥1,000 通过司法执行另案处理(不在本系统内)。
|
||||
|
||||
## 业户视角
|
||||
|
||||
### 您会感受到什么
|
||||
|
||||
- 收到通知:"您的押金账户已结清,余额 ¥5,000 全额扣罚"
|
||||
- 收到**红字收据**:"装修保证金扣罚 ¥-5,000(强制关账扣罚,事由:仲裁裁决业户全责)"
|
||||
- 银行 / 微信**没有退款**(钱已转入物业收入)
|
||||
- 小程序"我的押金账户"显示 "🔒 已结清,余额 0"
|
||||
|
||||
### 您要做什么
|
||||
|
||||
- 接受裁决结果(钱已转出账户,无法追回)
|
||||
- 保管红字收据(税务凭证,有时报税)
|
||||
- 如有异议走司法上诉(不在本系统内)
|
||||
|
||||
## 业务人员视角
|
||||
|
||||
### 第 1 步:确认全扣判定
|
||||
|
||||
- 仲裁裁决书 / 司法判决书 / 物业内部决议(必须书面)
|
||||
- 物业内部已审批,具备实施权限
|
||||
|
||||
> [!warning] 比 ForceClose refund 更敏感
|
||||
> 全扣是把业户的钱全部转入物业,**法律风险**比"全退"更高。书面凭证必须完整,内部多层审批,任何疏漏未来纠纷物业败诉概率大。
|
||||
|
||||
### 第 2 步:打开 Frozen 账户
|
||||
|
||||
后台 → 保证金 → 账户列表 → 找 Frozen 账户 → 进 `ViewDepositAccount`。
|
||||
|
||||
### 第 3 步:点击 `ForceCloseAction`(标签"强制关账")
|
||||
|
||||
Modal 表单:
|
||||
|
||||
| 字段 | 填什么 |
|
||||
|---|---|
|
||||
| **处置方式 (disposition)** | 选 ✅ **`forfeit`(扣罚)** |
|
||||
| **扣罚事由(memo)** | 必填且详细。例: "2026-XX-XX 仲裁案号 XXX 裁决:业户多次违约,押金 5000 全额作为罚款。" |
|
||||
|
||||
> [!info] forfeit 不需要选退款渠道
|
||||
> 扣罚的钱**不退给业户**,直接转入物业收入,无需 PaymentChannel。Modal 表单选 forfeit 后退款渠道字段隐藏。
|
||||
|
||||
> [!warning] Policy 守护
|
||||
> 同 [[force-close-refund]]:`update` 权限 + `isFrozen() && hasBalance()`。
|
||||
|
||||
### 第 4 步:提交
|
||||
|
||||
系统调 `ForceCloseDepositAccountAction(disposition=forfeit)`,事务内:
|
||||
|
||||
1. 校验 `isFrozen() && hasBalance()`
|
||||
2. 建 `CollectionOrder`(`actual_amount=-5000` 红字,`status=Completed`)—— 表达"从代管负债转出"
|
||||
3. 加 `DepositTransaction`(`type=forfeiture`,`amount=5000`,`balance_before=5000`,`balance_after=0`,关联红字 CO)
|
||||
4. 更新 `balance=0`
|
||||
5. 直接 `status=Closed`(Frozen → Closed)
|
||||
6. 在 `meta.force_closed_disposition=forfeit`、`meta.force_closed_memo=...`、`meta.force_closed_at=...` 记审计字段
|
||||
7. 触发 `CollectionOrderCompleted` → Listener 建红字 Receipt"装修保证金扣罚 ¥-5,000(强制关账扣罚,事由 XXX)"
|
||||
|
||||
### 第 5 步:无线下退款,只给红字凭证
|
||||
|
||||
后台找到红字 Receipt → 发业户。**不要走任何转账操作** —— 资金已通过 forfeiture 流水转入物业维修收入科目,账面已完成。
|
||||
|
||||
## 系统流程
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant 业户
|
||||
participant 财务
|
||||
participant Filament
|
||||
participant ForceCloseDepositAccountAction
|
||||
participant 数据库
|
||||
participant 监听器
|
||||
|
||||
Note over 业户,财务: 账户 Frozen + balance=5000,仲裁裁决全扣
|
||||
|
||||
财务->>Filament: ViewDepositAccount → ForceCloseAction (disposition=forfeit)
|
||||
Filament->>ForceCloseDepositAccountAction: handle(account, disposition=forfeit, memo)
|
||||
ForceCloseDepositAccountAction->>ForceCloseDepositAccountAction: isFrozen() && hasBalance()? yes
|
||||
ForceCloseDepositAccountAction->>数据库: 开启事务
|
||||
ForceCloseDepositAccountAction->>数据库: 1. 建 CO (-5000 红字, Completed)
|
||||
ForceCloseDepositAccountAction->>数据库: 2. 建 DepositTransaction (forfeiture, 5000→0)
|
||||
ForceCloseDepositAccountAction->>数据库: 3. balance=0, status=Closed
|
||||
ForceCloseDepositAccountAction->>数据库: 4. meta.force_closed_disposition=forfeit + memo + at
|
||||
ForceCloseDepositAccountAction->>监听器: 5. 触发 CollectionOrderCompleted
|
||||
监听器->>数据库: 6. 建 Receipt (强制关账扣罚 ¥-5,000)
|
||||
ForceCloseDepositAccountAction->>数据库: 提交事务
|
||||
Filament-->>财务: 成功通知
|
||||
财务-->>业户: 红字凭证(无退款)
|
||||
```
|
||||
|
||||
## 资金流意义
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[业户押金 5000<br/>物业代管负债] -->|forfeit| B[物业维修/罚没收入<br/>5000]
|
||||
```
|
||||
|
||||
会计上:**其他应付款 → 装修维修收入**,资金从未离开物业账户,只是科目变化。
|
||||
|
||||
## 常见问题
|
||||
|
||||
> [!question] forfeit 的钱进什么科目?
|
||||
> 通常进"装修维修收入"或"罚没收入"科目(视物业财务核算细则)。账面通过 `Receipt` 上的 line item 描述触发科目映射(Listener `generateDepositReceiptItems` 按 `DepositTransaction.type=forfeiture` 选词)。
|
||||
|
||||
> [!question] 业户能反悔追讨吗?
|
||||
> 已扣的钱要回去**只能走司法**:
|
||||
> - 业户起诉物业不当扣罚
|
||||
> - 法院判决物业败诉 → 物业按判决退款(可能需开新账户做反向 deposit + refund 操作记账,审计完整)
|
||||
> - 法院判决物业胜诉 → 维持原状
|
||||
>
|
||||
> 系统层面的 ForceClose 不可逆,司法判决物业败诉走"补偿"路径,不"撤销"原 ForceClose。
|
||||
|
||||
> [!question] 仲裁裁决有补充条款(例如要求物业方做某些工作)怎么办?
|
||||
> 系统只处理资金,补充条款(如修复方案、整改要求)需物业线下执行 + 留档。系统不强制关联。
|
||||
|
||||
> [!question] 业户已经搬走,联系不上怎么给红字收据?
|
||||
> 系统层面凭证已生成,业务上若联系不上业户:
|
||||
> - 用挂号信寄到登记地址
|
||||
> - 物业内部档案保留
|
||||
> - 等业户联系时再补发
|
||||
>
|
||||
> 如果业户失联前提下连扣罚都不应做(可能未让业户充分应诉),走 [[force-close-retain|资金保留]] 等业户出现更稳妥。
|
||||
|
||||
> [!question] 比 forfeit 多扣怎么办(扣 5000 还不够,要扣 6000)?
|
||||
> 账户最多扣到余额清零(`amount ≤ balance` 守护)。**差额追偿不在本系统内**:
|
||||
> - 单独的 [[adhoc-flow-a-vs-flow-b|adhoc 一次性收费]] 流(开违约金账单)
|
||||
> - 司法执行(系统不参与)
|
||||
|
||||
## 异常分支
|
||||
|
||||
- 部分扣部分退 → 走 [[unfreeze-after-mediation|解冻]] + 普通 [[refund-partial-after-forfeit|扣罚后退余]]
|
||||
- 全退给业户 → [[force-close-refund]]
|
||||
- 资金保留待定 → [[force-close-retain]]
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [[force-close-refund]]
|
||||
- [[force-close-retain]]
|
||||
- [[freeze-during-dispute]]
|
||||
- [[account-state-machine]]
|
||||
- [[forfeit-damage-public-area]]
|
||||
Reference in New Issue
Block a user