--- title: prop-acc · deposit · 押金 vs 一次性收费 vs 预存款 aliases: - 押金 vs 一次性收费 vs 预存款 - 三种业户给钱的本质区别 - deposit vs adhoc vs prepaid tags: - 概念 - prop-acc - 保证金 - 跨子模块对比 audience: - 业户 - 业务人员 - 财务 status: 已发布 sub_feature: deposit last_review: 2026-05-25 code_version: 2026-05-22 --- # 押金 vs 一次性收费 vs 预存款 三个看似都是"业户给钱"的子模块,**会计本质完全不同**。本文说明何时用哪个,以及为什么不能合并。 ## 一句话区别 | 子模块 | 业户给钱的性质 | 钱属于谁 | 何时该用 | |---|---|---|---| | **adhoc(一次性收费)** | 物业**收入** | 物业 | 业户买东西/服务,钱归物业 | | **prepaid(预存款)** | 物业**预收账款**(负债) | 业户(未使用前) | 业户先存,以后抵扣账单 | | **deposit(保证金)** | 物业**其他应付款**(负债) | 业户(代管中) | 业户交给物业代为保管,迟早要还(全退或扣损还差) | ## 核心差异图 ```mermaid flowchart TD subgraph "adhoc 一次性收费(收入)" A1[业户付 30 买 IC 卡] --> A2[钱进物业账户] A2 --> A3[计入收入科目] A3 --> A4[完成,业户拿货走人] end subgraph "prepaid 预存款(预收)" B1[业户预存 5000] --> B2[钱进物业账户但**记为负债**] B2 --> B3[每月账单出来时,从预存款扣] B3 --> B4[扣的部分才进收入,余额仍是负债] end subgraph "deposit 保证金(代管)" C1[业户交 5000 装修押金] --> C2[钱进物业账户但**记为负债**] C2 --> C3{装修结束} C3 -->|无损坏| C4[退回 5000,清账] C3 -->|有损坏 800| C5[扣 800 进收入,退 4200,清账] end ``` ## 字段层面的差异 | 维度 | adhoc | prepaid | deposit | |---|---|---|---| | **主表** | `acc_ad_hoc_events` | `acc_prepaid_accounts` | `acc_deposit_accounts` | | **流水表** | `acc_collection_orders` + `acc_receipts`(一次性) | `acc_prepaid_transactions` | `acc_deposit_transactions` | | **账户对象** | 无(每笔独立) | `PrepaidAccount`(余额状态) | `DepositAccount`(余额状态 + 三状态机) | | **是否可冻结** | N/A | N/A | ✅ Frozen 状态 | | **退款机制** | [[adhoc-void-after-payment]](作废原单) | 提现 / 转账(待补具体场景) | 红字 CollectionOrder([[red-receipt-design]]) | | **会计科目** | 收入 | 预收账款 | 其他应付款 | | **凭证(Receipt)** | 单笔正数 | 充值正数,扣减不出 Receipt(在账单上体现) | 缴款正数 / 退款扣罚负数(红字) | ## 业务判定:某场景该归哪个? **判定三连问**: 1. **"这笔钱以后要不要还给业户?"** - 不还 → adhoc(收入) - 要还 → 看下一题 2. **"业户是为'以后买什么'存的,还是为'万一坏了赔'存的?"** - 以后买东西 → prepaid(预收) - 担保不出事 → deposit(押金) 3. **"如果业户不出事,钱原额回去吗?"** - 是(原额回) → deposit - 否(用完才退余) → prepaid ### 边界场景举例 > [!question] "充电桩电费充值"是哪种? > > **理论上是 prepaid**(预存抵扣)。但本系统提供了简化版本走 [[adhoc-flow-a-counter-ev-charging-topup]] —— 把它当一次性"购买充电码"卖,业户充值码自己输入。 > > 严格说,长期需要"逐次扣减、随时查余额"的应该走 prepaid 模块(待补)。 > [!question] "泳票套票(夏季 10 次)"是哪种? > > **理论上是 prepaid**(预付 10 次)。但目前作为 adhoc 处理:业户一次买 10 张泳票,系统一次出 10 张。 > > 等业务需要"实时显示剩余次数"时再迁到 prepaid。 > [!question] "装修押金"为什么不是 prepaid? > > 因为押金**不抵扣账单**,只用来"押到事情结束"。无损则原退,有损则扣差。这是担保性质,不是预付性质。 ## 业户视角 > [!example] 业户王先生的某月账单 > > 王先生这个月的财务往来: > - **3 月 1 日**:小区门禁卡丢了,前台补办 → ¥30(**adhoc 收入**) > - **3 月 15 日**:为方便每月免到柜台缴,预存 ¥5,000 到账户 → ¥5,000(**prepaid 预收**) > - **4 月 1 日**:物业费账单 ¥1,200 出账,自动从预存款扣 → 预存款余额变 ¥3,800 > - **3 月 20 日**:开始装修,交 ¥5,000 装修保证金 → ¥5,000(**deposit 代管**) > - **5 月 30 日**:装修完无损,押金原额退 → ¥-5,000(**deposit 红字**) > > 三种钱**走不同账本、不同凭证、不同退款机制**。业户拿到的收据上能区分: > - adhoc 收据:`门禁卡 ¥30` > - prepaid 收据:`预存款充值 ¥5,000` > - deposit 收据(缴款):`装修保证金缴纳 ¥5,000` > - deposit 收据(退款):`装修保证金退还 ¥-5,000` ← 红字 ## 业务人员视角 后台菜单也是三个独立入口: ``` prop-acc/ ├── 一次性收费(AdHocEvent) ├── 预存款(PrepaidAccount) ← 待补 └── 保证金(DepositAccount) ``` 每个有自己的资源(Filament Resource)、自己的列表/详情/操作。**不要试图在一个地方处理三种业务** —— 字段、状态、凭证、操作权限都不一样。 ## 财务视角 月底关账时: | 科目 | 来源 | 余额方向 | |---|---|---| | 收入 | `SUM(adhoc completed CO actual_amount)` + `SUM(prepaid 已扣减部分)` + `SUM(deposit forfeiture 进收入部分)` | 贷方(正) | | 预收账款 | `SUM(prepaid 未抵扣余额)` | 贷方(负债) | | 其他应付款 | `SUM(deposit balance)` | 贷方(负债) | 押金账户和预存款账户的**总余额**就是物业**应还给业户的钱**,必须能与银行账户里"对应代管资金"对账平衡。详见 [[audit-monthly-deposit-balance]]。 ## 相关文档 - [[deposit-account-vs-transaction]] - [[transaction-types]] - [[collection-order-and-receipt]] - [[adhoc-flow-a-vs-flow-b]] - [[audit-monthly-deposit-balance]]