7.3 KiB
title, aliases, tags, audience, status, sub_feature, last_review, code_version
| title | aliases | tags | audience | status | sub_feature | last_review | code_version | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| prop-acc · deposit · 场景 - 损坏公共走道墙面扣 800 |
|
|
|
已发布 | deposit | 2026-05-25 | 2026-05-22 |
场景:损坏公共走道墙面扣 800
最常见的扣罚场景。装修过程中工人损坏了公共区域(走道墙面、电梯轿厢、楼栋出入口等),物业凭损坏证据和修复成本从押金扣除。
典型情境
[!example] 真实情境 陈先生家装修运输板材时,工人在 12 楼到 1 楼搬运过程中撞坏了公共走道墙面(凹陷一块,约 50cm × 30cm)。物业找施工方维修报价 ¥800(刮腻子重新粉刷)。陈先生当初交了 ¥5,000 装修保证金,要扣这 ¥800。
业户视角
第 1 步:物业告知发现损坏
通常装修验收时发现,或装修过程中物业巡查发现。物业会:
- 拍照(损坏部位、范围)
- 出定损报价单(找的施工方报价)
- 联系您说明情况
第 2 步:决定接受或拒绝
| 决定 | 后续 |
|---|---|
| 接受 | 物业从押金扣 ¥800,装修结束后剩余退还,本场景 |
| 拒绝 | 物业冻结账户进入纠纷,走 freeze-during-dispute |
[!tip] 接受不等于"没事" 接受扣罚是同意"我损坏了,这 ¥800 修复成本由我承担"。如果对损坏归责有异议(可能是装修前就坏的、可能是其他业户损坏),应先拒绝走调解,而不是先接受再反悔(已扣的钱难以追回)。
第 3 步:收到红字收据
"装修保证金扣罚 ¥-800(公共走道墙面损坏)"
[!info] 钱去哪了 这 ¥800 从物业代管负债科目转入装修维修收入科目。账上的资金没有离开物业账户,只是性质变了 —— 用于支付实际修复成本。
第 4 步:剩余款怎么办
账户里还剩 ¥4,200。可以:
- 当下退 → 走 [refund-partial-after-forfeit]
- 暂留账户 → 万一装修后续还有问题,从余额继续扣;无问题再退
业务人员视角(物业财务)
第 1 步:准备扣罚证据
- 损坏照片(多角度)
- 定损报价单(第三方或物业内部维修队的)
- 业户书面同意(签字 / 微信确认截图)
[!warning] 没有证据不能扣 没有上述材料就执行扣罚等于单方面挪用代管资金,审计大忌。即使业户口头同意也必须留书面凭证。
第 2 步:打开账户
后台 → 保证金 → 账户列表 → 找到陈先生账户(Active,balance=5000)→ 进入 ViewDepositAccount。
第 3 步:点击 ForfeitureAction(标签"扣罚")
右上角状态管理组。Modal 表单:
| 字段 | 填什么 |
|---|---|
| 扣罚金额 | ¥800 |
| 扣罚事由(memo) | "公共走道墙面损坏,12-1F 楼梯口,定损报价 ¥800" |
| 关联凭证(选填) | 上传定损报价单 PDF / 损坏照片 |
[!warning] Policy 守护
ForfeitureAction加了->authorize('forfeit')守护:update权限 +canWithdraw()状态。Frozen 账户该按钮灰化。
第 4 步:提交
系统调 ForfeitFromDepositAccountAction,事务内:
- 校验账户
canWithdraw()(Active only) - 校验扣罚金额 ≤ 当前余额
- 建
CollectionOrder(actual_amount=-800红字,status=Completed) - 加
DepositTransaction(type=forfeiture,amount=800,balance_before=5000,balance_after=4200,关联红字 CO) - 更新
DepositAccount.balance=4200 - 触发
CollectionOrderCompleted→ Listener 建红字 Receipt"装修保证金扣罚 ¥-800(公共走道墙面损坏)"
注意:扣罚不会自动关账,因为余额非 0,账户保持 Active,后续可继续操作。
第 5 步:给业户红字收据
后台找到 Receipt → 打印 / 发微信 → 通知陈先生剩余款 ¥4,200。
系统流程
sequenceDiagram
participant 业户
participant 财务
participant Filament
participant ForfeitFromDepositAccountAction
participant 数据库
participant 监听器
财务->>业户: 拍照 + 定损 + 告知
业户->>财务: 接受扣 800
财务->>Filament: ViewDepositAccount → ForfeitureAction(modal)
Filament->>ForfeitFromDepositAccountAction: handle(account, 800, reason)
ForfeitFromDepositAccountAction->>ForfeitFromDepositAccountAction: canWithdraw()? (Active=true)
ForfeitFromDepositAccountAction->>ForfeitFromDepositAccountAction: 800 ≤ 5000? yes
ForfeitFromDepositAccountAction->>数据库: 开启事务
ForfeitFromDepositAccountAction->>数据库: 1. 建 CollectionOrder (-800 红字, Completed)
ForfeitFromDepositAccountAction->>数据库: 2. 建 DepositTransaction (forfeiture, 5000→4200)
ForfeitFromDepositAccountAction->>数据库: 3. balance=4200(不自动关账)
ForfeitFromDepositAccountAction->>监听器: 4. 触发 CollectionOrderCompleted
监听器->>数据库: 5. 建 Receipt (装修保证金扣罚 ¥-800)
ForfeitFromDepositAccountAction->>数据库: 提交事务
Filament-->>财务: 成功通知
财务-->>业户: 红字收据 + 余额通知
常见问题
[!question] 扣罚金额 > 押金余额怎么办? 系统校验
amount ≤ balance,提交时会被守护拦截抛错。业务上:
- 扣全部余额(走本流程,金额改成余额),账户余额 0 自动关
- 不足的部分需要业户单独补缴(开新订单 / 走司法程序),系统不自动处理
物业不应"先借后扣"或"超额扣罚",任何缺口必须有独立追偿凭证。
[!question] 扣罚后能撤销吗? 不能直接撤销(
DepositTransaction不可变)。如果扣错了:
- 走一笔
Deposit反向冲回(等于"退还扣罚款")- 备注清楚写明"撤销 2026-XX-XX 扣罚误判"
- 审计上能完整追溯"扣 → 撤" 全过程
这种做法虽然多两笔流水,但每笔都有合规凭证,不留信息空白。
[!question] 多次损坏分多次扣可以吗? 可以。例如:
- 周一:墙面损坏扣 ¥800
- 周三:电梯按钮被砸扣 ¥200
- 周五:楼栋玻璃损坏扣 ¥500
三笔独立
ForfeitureAction,各自有事由、各自有凭证。账户余额累计减少。
[!question] 扣罚事由写多详细? 越详细越好。审计、复盘、纠纷都需要。推荐结构:
- 损坏部位:"公共走道墙面,12-1F 楼梯口"
- 损坏程度:"凹陷 50×30cm,需刮腻子重新粉刷"
- 定损依据:"物业维修队报价 ¥800" 或 "第三方[xxx 装修公司] 报价单"
- 业户确认:"业户陈某某 2026-XX-XX 微信确认接受"
[!question] 业户拿到收据后反悔怎么办? 已扣的钱难追回。预防胜于补救:
- 扣罚前务必拿到业户书面同意
- 不要在业户犹豫时强扣
- 复杂纠纷先 freeze-during-dispute 调解
异常分支
- 业户拒绝接受扣罚 → freeze-during-dispute
- 扣罚后退余款 → refund-partial-after-forfeit
- 扣全部余额清零关账 → 继续走 [close-after-zero-balance]
- 未申请直接动工的违约扣罚 → forfeit-violation-no-permit