Files
uniprop-manual/prop-acc/scenarios/deposit/forfeit-damage-public-area.md
2026-05-25 22:27:38 +08:00

7.3 KiB
Raw Permalink Blame History

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
损坏扣罚
墙面损坏扣押金
forfeit-damage-public-area
场景-损坏扣罚
场景
prop-acc
保证金
扣罚
业户
业务人员
已发布 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。可以:

业务人员视角(物业财务)

第 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,事务内:

  1. 校验账户 canWithdraw()(Active only)
  2. 校验扣罚金额 ≤ 当前余额
  3. CollectionOrder(actual_amount=-800 红字,status=Completed)
  4. DepositTransaction(type=forfeiture,amount=800,balance_before=5000,balance_after=4200,关联红字 CO)
  5. 更新 DepositAccount.balance=4200
  6. 触发 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 调解

异常分支

相关文档