6.4 KiB
6.4 KiB
title, tags, audience, status, last_reviewed, code_version
| title | tags | audience | status | last_reviewed | code_version | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| 场景 - 审计 - IC 卡库存与售出数对账 |
|
|
stable | 2026-05-25 | 2026-05-22 |
场景:IC 卡库存与售出数对账
物业月底核对:系统记录卖出的 IC 卡数量 是否等于 库存盒里减少的物理 IC 卡数量。
[!warning] 系统不直接管物理库存 本系统只管财务(收了多少钱),不管实物(IC 卡盒里还剩几张)。物理库存盘点是物业独立的内部流程,本场景描述如何用系统数据辅助核对物理库存。
典型情境
[!example] 真实情境 5 月 31 日,物业财务王姐做月度库存盘点。
- 月初库存:100 张工本卡(已制好的空白 IC 卡)
- 月底盘点:剩 47 张
- 推断:这个月用掉 53 张
在 Filament 后台查"5 月 IC 卡售出数",应该等于 53 张。如果不等,需要排查。
业务人员视角
步骤 1:盘点物理库存
1. 月初库存(从上月结存) 100 张
2. 本月入库(新采购) +50 张
3. 本月理论可用 150 张
4. 月底盘点(数库存盒) -47 张
─────────────────────────────────────
5. 本月实际"消耗" 103 张
步骤 2:从系统拉售出数据
SELECT
COUNT(*) AS 售出订单数,
SUM(quantity) AS 卡总张数
FROM acc_ad_hoc_events ahe
JOIN acc_rate_plans rp ON ahe.rate_plan_id = rp.id
WHERE rp.name LIKE '%IC 卡%'
AND ahe.occurred_at BETWEEN '2026-05-01' AND '2026-05-31 23:59:59'
AND ahe.status = 'completed';
输出例:
售出订单数:90 单
卡总张数:103 张 (有些订单买多张)
步骤 3:对账
物理消耗 vs 系统售出
103 vs 103 ✅ 完美一致
或者:
物理消耗 vs 系统售出
103 vs 101 ❌ 差 2 张
→ 物理少了 2 张 / 系统多算 2 张
步骤 4:差额排查
差额 > 0(物理消耗 > 系统售出)
意味着:卡发了但没记账。可能原因:
| 原因 | 处理 |
|---|---|
| 给 VIP 业户免费发卡(没收钱也没记录) | 物业政策合规,要补登记 0 元订单 |
| 测试卡(写卡测试用了几张) | 算损耗 |
| 业务人员私发 | 严重,核查员工 |
| 卡丢失 / 制卡失败报废 | 算损耗 |
差额 < 0(物理消耗 < 系统售出)
意味着:记账了但卡没发。可能原因:
| 原因 | 处理 |
|---|---|
| 业户已付款但实物没拿(走 场景-异常-支付完成但实物发不出) | 检查"待补发清单",物业还在保管 |
| 录单时数量填错(多录了) | 检查录入异常订单,可能要 场景-取消-录错金额作废重做 |
| 业户付了款作废后忘了取回卡 | 物业归档 |
物理库存管理建议
[!tip] 建议物业建一份独立的库存台账 不在系统里(系统不管物理库存),但用 Excel / 纸质本子记:
=== IC 卡库存台账 ===
日期 操作 数量 余额 经办人 备注
2026-04-30 月初余结存 100 上月结存
2026-05-03 采购入库 +50 150 李四 合同 #2026005
2026-05-15 发给业户 -1 149 张三 房号 12-3-501
2026-05-15 发给业户 -2 147 张三 房号 8-2-301
...(每天明细)
2026-05-31 月底盘点 47 王姐 实物数对
每周/每月与系统数据对照。
系统流程
sequenceDiagram
participant 财务
participant 物理库存
participant Filament/DB
participant 业务人员
Note over 财务: 月底
财务->>物理库存: 数库存盒
物理库存-->>财务: 47 张
财务->>财务: 计算消耗 = 100 + 50 - 47 = 103
财务->>Filament/DB: 查 5 月 IC 卡售出数
Filament/DB-->>财务: 103 张
财务->>财务: 对账 ✅
Note over 财务: 若不一致
财务->>业务人员: 找差额
业务人员-->>财务: 解释(免费发卡 / 录入错误 / 报废等)
其他实物的对账方法
同样的方法可以对账:
| 实物 | 系统侧查询 |
|---|---|
| 装修出入证 | SUM(quantity) WHERE rate_plan.name LIKE '%装修出入证%' |
| 泳票(纸质) | SUM(quantity) WHERE rate_plan.name LIKE '%泳票%' |
| 充值码 / 充值卡 | COUNT(*) WHERE rate_plan.name LIKE '%充值%' |
常见问题
[!question] 为什么系统不直接管物理库存? 物理库存涉及采购 / 入库 / 报废 / 盘点 等独立流程,可能跨多个仓库 / 多种实物。绑到收费系统里会让收费系统过重。最佳实践:
- 库存独立做(Excel / 专门的 ERP)
- 收费系统专注于"卖出与收钱"
- 月底用对账连接两者
[!question] VIP 业户免费发卡,系统里要建 0 元订单吗? 强烈建议建。便于库存对账。Filament 后台支持金额 = 0(不会失败)。备注栏注明"VIP 免费 + 审批单号"。
[!question] 制卡过程中报废的卡怎么入账? 系统侧不录任何订单(没有交易发生)。在库存台账里算损耗:
日期 制卡失败报废 -1 余额 X 备注 测试新读卡器
[!question] 差额超过 10 张能不能不查? 强烈不建议。差额是审计预警信号,长期不查可能掩盖:
- 员工私发
- 财务挪用
- 系统漏录
建议:月度差额 > 5 张必须给出书面解释。
与"现金对账"的区别
| 对账类型 | 对账对象 | 数据源 | 频率 |
|---|---|---|---|
| 场景-审计-月底现金对账 | 系统订单 vs 收银抽屉 | 数据库 + 物理现金 | 每月 |
| 库存对账(本场景) | 系统订单 vs 物理库存盒 | 数据库 + 物理盘点 | 每月 |
| 作废抽查 | 作废订单的事由记录 | 数据库 meta 字段 | 每季 |
三种对账独立做但互相印证 —— 现金对账过了但库存不对,可能是 VIP 免费发卡;反之可能是手工卖了卡没录系统。
相关概念
- 场景-A流-前台购买IC卡 — 售出的数据来源
- 场景-审计-月底现金对账 — 财务对账
- 场景-审计-作废事由抽查 — 第三种对账
异常分支
- 物理少了 → 内部排查
- 系统少了 → 找漏录单 / 补登记
- 多个月持续不一致 → 必查清 不能拖