Files
uniprop-manual/prop-acc/scenarios/prepaid/consume-meter-bill.md
2026-05-25 23:27:56 +08:00

6.7 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 · prepaid · 场景 - 抵扣计量账单(水电费)
抵水电费
计量账单抵扣
consume-meter-bill
场景-预存款抵计量账单
场景
prop-acc
预存款
消费
计量
业户
业务人员
已发布 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 模块的纠错流程:

  1. 业户提报
  2. 物业核查抄表数据(物理表 vs 录入数据)
  3. 错了 → 走 Bill 的 reverse + reissue 流程(详见 Meter / Bill 模块文档)
  4. 没错 → 沟通业户接受(或走司法纠纷)

异常分支

相关文档