180 lines
6.7 KiB
Markdown
180 lines
6.7 KiB
Markdown
|
|
---
|
|||
|
|
title: prop-acc · prepaid · 场景 - 抵扣计量账单(水电费)
|
|||
|
|
aliases:
|
|||
|
|
- 抵水电费
|
|||
|
|
- 计量账单抵扣
|
|||
|
|
- consume-meter-bill
|
|||
|
|
- 场景-预存款抵计量账单
|
|||
|
|
tags:
|
|||
|
|
- 场景
|
|||
|
|
- prop-acc
|
|||
|
|
- 预存款
|
|||
|
|
- 消费
|
|||
|
|
- 计量
|
|||
|
|
audience:
|
|||
|
|
- 业户
|
|||
|
|
- 业务人员
|
|||
|
|
status: 已发布
|
|||
|
|
sub_feature: prepaid
|
|||
|
|
last_review: 2026-05-25
|
|||
|
|
code_version: 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 模块的出账配置。
|
|||
|
|
|
|||
|
|
## 系统流程
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
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 实现后,**月初一次 job 同时抵扣物业费 + 水电费 + 其他账单**。
|
|||
|
|
|
|||
|
|
> [!question] 业户对水电费金额有异议(认为抄表错了)?
|
|||
|
|
> 走 Meter / Bill 模块的纠错流程:
|
|||
|
|
> 1. 业户提报
|
|||
|
|
> 2. 物业核查抄表数据(物理表 vs 录入数据)
|
|||
|
|
> 3. 错了 → 走 Bill 的 reverse + reissue 流程(详见 Meter / Bill 模块文档)
|
|||
|
|
> 4. 没错 → 沟通业户接受(或走司法纠纷)
|
|||
|
|
|
|||
|
|
## 异常分支
|
|||
|
|
|
|||
|
|
- 物业费抵扣 → [[consume-monthly-property-bill]]
|
|||
|
|
- 多账单一起抵 → [[consume-multiple-bills-priority]]
|
|||
|
|
- 异常用量需 Bill 模块介入 → 见 Meter / Bill 模块(待补)
|
|||
|
|
- 月初批量(未来)→ [[consume-batch-auto-monthly]]
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [[consume-monthly-property-bill]]
|
|||
|
|
- [[consume-multiple-bills-priority]]
|
|||
|
|
- [[consume-via-bill-collection-type]]
|
|||
|
|
- [[transaction-types]]
|
|||
|
|
- [[auto-deduction-design]]
|