6.7 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 · prepaid · 场景 - 抵扣计量账单(水电费) |
|
|
|
已发布 | prepaid | 2026-05-25 | 2026-05-22 |
场景:抵扣计量账单(水电费)
业户的水表 / 电表 / 燃气表抄表后生成账单(由 Meter 模块出账,详见未来的 meter/ 子模块文档),业务人员从业户的预存款余额抵扣。流程与 consume-monthly-property-bill几乎相同,差异在账单的 bill_type 和金额浮动性。
典型情境
[!example] 真实情境 张阿姨家 5 月水表抄表:本月用水 12 吨,@ 4.5 元/吨 = ¥54;电表抄表:用电 280 度,@ 0.6 元/度 = ¥168。两张计量账单合计 ¥222,从张阿姨预存款余额 ¥3,400 抵扣。
业户视角
您会感受到什么
- 抄表数据通过物业 App / 集抄系统进入系统
- 几天内出账单(可能合并为"水电费"一张,也可能水、电分开两张)
- 业务人员手动 / 自动从预存款抵扣
- 收到收据:"水费 ¥54" + "电费 ¥168"(或合并"水电费 ¥222")
- 推送:"5 月水电费 ¥222 已抵扣,余额 ¥3,178"
您要做什么
什么都不用。看明白即可。关键差异:计量账单金额每月浮动(取决于用量),业户应:
- 用量大时确保余额充足(预存款充值要考虑这部分)
- 异常用量(突然翻倍)应自查(可能漏水 / 老人忘关电器)
- 对账单金额有异议 → 走 ../adhoc/cancel-amount-error-redo(见 adhoc 模块,通用)
业务人员视角
[!info] 流程基本同物业费抵扣 看 consume-monthly-property-bill 完整流程。本场景只补充计量账单特有的注意点。
关键差异:bill_type
| 字段 | 物业费抵扣 | 计量账单抵扣 |
|---|---|---|
Bill.bill_type |
property_fee |
meter(或 water / electricity / gas,看 Bill 模块设计) |
CollectionOrder.collection_type |
Bill |
Bill(都是 Bill 视角) |
meta.fund_source |
prepaid |
prepaid |
| Receipt 文案 | "物业费 ¥800" | "水费 ¥54" / "电费 ¥168"(看 Bill 的 line items) |
注:具体 bill_type 枚举值看 Bill 模块定义。本文按"计量类"统称。
关键差异:金额来源
物业费金额是固定的(合同约定,每月不变)。计量账单金额是计算出来的:
本月用量 = 本月抄表 - 上月抄表
本月金额 = 用量 × 单价(RatePlan)
数据流:Meter 抄表 → MeterReading 记录 → Bill 生成(按 RatePlan 计算金额) → 业务人员抵扣。
详见 Meter 模块文档(待补)。
关键差异:可能分单或合单
各物业财务习惯不同:
| 方式 | 优 | 缺 |
|---|---|---|
| 分单(水、电、燃气各一张 Bill) | 业户能看清单项 | 业务人员要抵多张 |
| 合单(一张"5月水电费 ¥222") | 操作快 | 业户看不清各项 |
系统两种都支持,看 Meter / Bill 模块的出账配置。
系统流程
sequenceDiagram
participant 集抄系统
participant Meter
participant Bill
participant 财务
participant Filament
participant Account[PrepaidAccount]
participant 数据库
集抄系统->>Meter: 推送本月抄表数据
Meter->>数据库: 写 MeterReading + 计算用量
Meter->>Bill: 生成 Bill(bill_type=meter, amount=222)
Bill->>数据库: status=Unpaid
Note over 财务: 几天后业务人员处理
财务->>Filament: ConsumeAction(选水电费 Bill)
Filament->>Account: consume(Bill, 222)
Account->>数据库: 建 CO(type=Bill, meta.fund_source=prepaid)
Account->>数据库: 建 PrepaidTransaction(consume, 3400→3178)
Account->>Bill: recordPayment(222) → Paid
Account->>监听器: 触发 CollectionOrderCompleted
监听器->>数据库: 建 Receipt("水电费 ¥222")
财务-->>业户: 推送 + 收据
流水台账(累计)
| 流水 | type | amount | balance_before | balance_after | related_bill_id | 备注 |
|---|---|---|---|---|---|---|
| ... | (前面省略) | |||||
| N | consume | 800 | 4200 | 3400 | Bill #5月物业费 | 5 月物业费抵扣 |
| N+1 | consume | 222 | 3400 | 3178 | Bill #5月水电费 | 本场景 |
用量异常的处理
[!warning] 用量翻倍 / 异常巨高如何处理
场景:张阿姨家平时月用水 12 吨,5 月用了 80 吨(翻 7 倍)。原因可能是:
原因 处理 水管漏水 业户自查,联系物业维修;账单按事实承担(可能可申请减免) 抄表录错 走 ../adhoc/cancel-amount-error-redo 流程,反向调整账单 集抄系统 bug 运维介入,重新抄表 / 校准 业户家用水设备故障 业户自担,可向物业申请协助维修 异常账单不要直接抵扣 —— 先核实再处理,避免业户余额被错误清空。系统不主动识别"用量异常",由业务人员判断。
常见问题
[!question] 水电费 Bill 是 Meter 模块生成的,跟其他账单有什么区别? 唯一差别在
bill_type字段和金额来源(计算 vs 固定)。对预存款 consume 流程完全透明 ——ConsumeFromPrepaidAccountAction不区分 bill_type,所有 Bill 一视同仁。
[!question] 业户预存款余额不够付水电费怎么办? 同 consume-monthly-property-bill 处理:
- 跳过该账单 → 推送业户充值
- 业户充值后再抵
- 不部分抵(避免半付状态)
[!question] 水、电、燃气分开还是合并出账? 看 Meter 模块配置 + 物业财务习惯。预存款抵扣端支持两种。
[!question] 月底 100+ 户的水电费账单要挨个抵,跟物业费一起 100+ 户,业务人员吃得消吗? 同样痛点 —— 等 auto-deduction-design 落地一起解决。job 实现后,月初一次 job 同时抵扣物业费 + 水电费 + 其他账单。
[!question] 业户对水电费金额有异议(认为抄表错了)? 走 Meter / Bill 模块的纠错流程:
- 业户提报
- 物业核查抄表数据(物理表 vs 录入数据)
- 错了 → 走 Bill 的 reverse + reissue 流程(详见 Meter / Bill 模块文档)
- 没错 → 沟通业户接受(或走司法纠纷)
异常分支
- 物业费抵扣 → consume-monthly-property-bill
- 多账单一起抵 → consume-multiple-bills-priority
- 异常用量需 Bill 模块介入 → 见 Meter / Bill 模块(待补)
- 月初批量(未来)→ consume-batch-auto-monthly