交投智慧服务区 · 租金清分
计费算法与流程
评审讲解
讲清楚三件事:怎么分期(一期从哪天到哪天)、分期后怎么算钱(各类租金的公式,以及每个字段从哪来、取什么值)、
什么时点出账、谁操作什么推动流程、操作之后界面状态怎么变。全部内容以定版 Design 为依据。
期租金 = 年标准 ÷ 年期内数
年标准 ← 合同管理 · 合同年度租金标准(元/年)
年期内数 ← 缴租周期:月 12 / 季 4 / 半年 2 / 年 1
取哪一年 ← 看「账期结束日」落在哪个合同年
所有固定租金与取高保底都由这一条派生。逐期四舍五入保留 2 位,尾差归该合同年最后一个完整期,使整年各期合计恰等于该年年标准。
01
分期:一期从哪天到哪天
先把三个词说清楚,再讲怎么切
租期起始日 锚点
合同里约定的开始计租那一天。由合同管理提供,已剔除免租装修期。它是一切切分的起点,合同订立后不再变。
来源:合同管理 · 租期起始日
一期有多长
就是合同约定的缴租周期:
按月 = 1 个月 按季 = 3 个月
按半年 = 6 个月 按年 = 12 个月
来源:合同管理 · 租金缴纳方式
第几期
从租期起始日开始数:第 1 期、第 2 期、第 3 期……
数的是已经过去了几个完整期。
四步推出每一期的起止
第 2 步第 2 期开始日 = 租期起始日往后推一期(月缴推 1 个月、季缴推 3 个月)
第 3 步第 3 期开始日 = 再往后推一期,依此类推
第 4 步每一期的结束日 = 下一期开始日 的 前一天
举例:租期起始日 = 2024 年 2 月 1 日,按季缴
| 期次 | 这一期从哪天开始 | 这一期到哪天结束 | 怎么推出来的 |
| 第 1 期 | 2024-02-01 | 2024-04-30 | 开始日 = 租期起始日;结束日 = 第 2 期开始日(5/1)的前一天 |
| 第 2 期 | 2024-05-01 | 2024-07-31 | 开始日 = 2/1 往后推 3 个月 = 5/1 |
| 第 3 期 | 2024-08-01 | 2024-10-31 | 开始日 = 5/1 再往后推 3 个月 = 8/1 |
| 第 4 期 | 2024-11-01 | 2025-01-31 | 开始日 = 8/1 再往后推 3 个月 = 11/1 |
月末没有这一天怎么办
假设租期起始日 = 1 月 31 日,按月缴。第 2 期开始日应该是「1 月 31 日往后推 1 个月」= 2 月 31 日 —— 但 2 月没有 31 日。这时就取当月最后一天。
| 期次 | 开始日 | 结束日 | 说明 |
| 第 1 期 | 01-31 | 02-27 | 第 2 期开始日 2/28 的前一天 |
| 第 2 期 | 02-28 | 03-30 | 2 月无 31 日 → 取月末 |
| 第 3 期 | 03-31 | 04-29 | 恢复 31 日 |
| 第 4 期 | 04-30 | 05-30 | 4 月无 31 日 → 取月末 |
推法(每次都从 1 月 31 日出发):
推 1 个月 → 2/28(2 月无 31 日,取月末)
推 2 个月 → 3/31(3 月有 31 日,恢复)
推 3 个月 → 4/30(4 月无 31 日,取月末)
规则:目标月不存在租期起始日的日号时,那一次取当月最后一日。
关键:下一次仍然回到租期起始日重新推,不拿被截断后的 2 月 28 日当新起点。
✗ 错:把 2 月 28 日当成新锚点,后面一路按 28 日切。
✗ 错:用本期开始日反推结束日(如 2/28 + 1 个月 − 1 天)。
✓ 对:结束日只能用下一期开始日减 1 天,下一期开始日必须从租期起始日推出来。
首期天然完整,不折算。月缴不做破月:无论相邻两个开始日之间相隔 28、29、30 还是 31 天,都计收整月租金,不按天数折算。只有合同终止造成的末期截断才按天折算(见第 05 节)。
研发对齐时会写成 B(k) = S 的年月 + k×N 个月 —— 意思就是上面第 2、3 步这句话:第 k+1 期的开始日 = 租期起始日往后推 k 个期。
02
期租金与尾差归集
除不尽时那几分钱去哪了
期租金 = 年标准 ÷ 年期内数 → 保留 2 位(四舍五入)
年标准 ← 账期结束日所属合同年度的年标准
年期内数 ← 月 12 / 季 4 / 半年 2 / 年 1
合同年 ← 自租期起始日起每 12 个月,编号从 1
舍入 ← ROUND_HALF_UP,禁止银行家舍入
算例 A · 月缴,年标准 3.30 元
3.30 ÷ 12 = 0.275 → 每期取 0.28
前 11 期:0.28 × 11 = 3.08
第 12 期(尾差):0.22
整年合计:3.30 = 年标准 ✓
算例 B · 季缴,年标准 344,792.50 元
344792.50 ÷ 4 = 86198.125 → 每期取 86198.13
前 3 期:86198.13 × 3 = 258594.39
第 4 期(尾差):86198.11
整年合计:344,792.50 = 年标准 ✓
为什么必须四舍五入而不是银行家舍入:银行家舍入(四舍六入五取偶)会把 86198.125 舍成 86198.12,而业主在用 Excel 结算表上是 86198.13 —— 差 2 分,逐行对账不平。
取舍已明确:尾差归集后,该合同年最后一期的金额会与业主 Excel 该行的「年标准 ÷ 期数」展示值相差 1~2 分。本系统以整年合计与合同金额勾稽闭合为准,该分位差由最后一个完整期承担,不跨年分摊、不单独挂账、不生成补退差额。
例外:合同终止当年不足整年的,不做尾差归集。
03
四类租金的算法
前两类提前出账,后两类等数据出来才出账
01 固定租金
应收 = 账期结束日所属合同年度
固定租金年标准 ÷ 年期内数
年标准 ← 合同管理(元/年)
年期内数 ← 租金缴纳方式
预缴类,提前出账。完整期取整期金额,被合同终止截断时按天折算。
02 纯营业额租金
应收 = 已确认营业额 × 合同约定提成比例
营业额 ← 销售统计(已确认汇总)
提成比例 ← 合同管理
提成类,滞后出账:账期结束、数据确认后才出,不提前预缴。
03 销量租金
应收 = 已确认销量 × 合同约定单价
销量 ← 销售统计(已确认汇总)
单价 ← 合同管理
同为提成类滞后出账,与纯营业额租金共用同一条可出账条件。
04 保底与营业额取高
保底账单 = 保底年标准 ÷ 年期内数
提成账单 = 该期营业额提成 − 该期保底应收
(结果 ≤ 0 时记为 0)
保底年标准 ← 合同管理(元/年)
一个账期由两张关联账单构成取高对,不生成第三张「取高差额」账单。
04
取高:一个账期两张账单
保底账单先出,提成账单后出,合计恒等于取高值
| 场景 | 该期保底应收 | 该期营业额提成 | 提成账单 | 该期合计 |
| 提成高于保底 | 30,000 | 42,000 | 12,000 | 42,000 |
| 提成低于保底 | 30,000 | 26,000 | 0 | 30,000 |
| 提成等于保底 | 30,000 | 30,000 | 0 | 30,000 |
关键规则一:扣减基数是「保底应收」,不是「保底实缴」。
例:保底应收 30,000 元,商户只到账 20,000 元,该期营业额提成 42,000 元 —— 提成账单仍是 42,000 − 30,000 = 12,000,不是减 20,000。未缴的 10,000 元留在保底账单继续作为欠租,不静默冲销。
关键规则二:两张账单分别独立取整,不合并后再取整。由此「保底 + 提成」合计恒等于 max(保底应收, 营业额提成),期间层即取高值,不依赖年度清算来纠正多收。
零金额处理:提成账单为 0 时,财务确认应收后账单直接关闭,缴费状态为无需缴纳,不发送缴费通知、不登记到账。
特例:若同合同同账期已有手动新增的保底分量账单,系统跳过自动保底生成,仍生成提成账单,避免双计。
05
分支例外的算法
三个必须单独讲的场景
例外①:合同终止截断折算
这是唯一会「按天算钱」的场景(一次性付清除外)。完整期取整期金额,只有被终止截断才按天折算。
应收 = 期租金 ÷ (30 × N) × 实际计租天数
期租金 ← 年标准 ÷ 年期内数(已取整)
N ← 期月数:月 1 / 季 3 / 半年 6 / 年 12
实际计租天数 ← 账期起始日至结束日的自然日天数(含首尾)
| 缴租周期 | 末期账期 | 天数 | 折算过程 | 末期应收 |
| 按月 | 2029-08-20 ~ 2029-09-29 | 41 天 | 3.99 ÷ 12 ÷ 30 × 41 | 0.45 元 |
| 按月(另一算例) | 2029-09-20 ~ 2029-09-29 | 10 天 | 3.99 ÷ 12 ÷ 30 × 10 | 0.11 元 |
| 按季 | 2029-08-20 ~ 2029-09-29 | 41 天 | 3.99 ÷ 4 ÷ 90 × 41 | 0.45 元 |
怎么数天数:实际计租天数 = 账期起始日到结束日的自然日天数,含首尾两天。
✗ 不按「每月 30 天」去数这段期间有多长 —— 30 只是折算分母,不是期间长度。
✓ 期间长度用真实自然日。
边界:合同终止日当日不计租,计租终点是终止日前一日。系统只折算租金差额,不判定违约责任、不计违约金、不处理履约保证金没收 —— 这些由线下按合同处理。
例外②:一次性付清
应收 = 合同总租金 × 实际计租天数 ÷ 合同期计租总天数
应退 = 合同总租金 − 应收
合同总租金 ← 合同管理 · 合同金额
实际计租天数 ← 租期起始日 至 终止日前一日(含首尾)
合同期计租总天数 ← 租期起始日 至 到期日前一日(含首尾)
算例:8 年期合同中途终止
合同期 2023-06-01 ~ 2031-05-31,总租金 96 万
2026-05-31 终止
实际计租:1,095 天
合同期计租总天数:2,921 天
应收:960000 × 1095 ÷ 2921 = 359,876.75 元
应退:600,123.25 元
为什么分母不能用 30/360
30/360 按每月 30 天计,会把 31 天的月份算少,长周期累计偏差显著。以这份 8 年期合同为例:期满按 30/360 折算会得出合同总额的 约 101.4% —— 正常履行完反而多收约 1.4%。用合同期实际天数则期满恰好等于合同总额,公式闭合。
所以:一次性付清的分母必须是「合同期实际自然日天数」。
一次性付清不是缴租周期的一种网格,它是合同期整体一个账期。正常履行至期满时 应收 = 合同总租金,不折算。不支持提成租金:提成依赖期末实际营业额,一次性付清没有完整账期结束后的出账时点。折算后的应退差额并入多缴余额,由财务选择冲抵下一期或登记退还。
例外③:提成类账单的可出账条件
纯营业额、销量、取高提成三类共用同一条判定:
可出账 = 出账日 > 账期结束日
且 上游数据已确认
且 统计期间完整覆盖整个账期(含结束日当天)
问题场景:账期结束日刚好是某月 1 日(出账日也是每月 1 日),这一天的营业额还没汇总完,此时取数会少算最后一天。
处理:该账期不进入当日出账批次,账单保留「待生成」并展示等待原因;末日数据确认后按既有的自动重算 / 手动重试路径补出账,最迟由下一个出账日兜底。这条不新增状态、不新增人工动作。
注意:该条件只约束生成时点,不改变账期口径 —— 账期始终包含账期结束日当天。
06
出账时间节点
固定每月 1 日跑账,但预缴类和提成类取的是不同账期
出账日 = 每月 1 日(业内也称「跑账日」)
出账日 ← 系统固定
应交时间 ← 合同管理 · 周期内应交日(本模块只读消费)
预缴类:出「下一期」
固定租金、取高保底
- ▸ 在出账日生成下一个完整缴费周期的账单,相当于提前收
- ▸ 出账日 = 该缴费周期起始日所在月份内的首个出账日
- ▸ 账单的应交时间必须落在该缴费周期的月份范围内
合同季起始日 = 2 月 15 日
→ 出账日是 2 月 1 日(不是 1 月 1 日)
提成类:出「上一期」
纯营业额、销量、取高提成
- ▸ 生成账期已结束且数据已确认的账单,不提前预缴
- ▸ 满足可出账条件后的最近一个出账日生成
- ▸ 一次性付清:按应交日所在月份提前一个月出账
账期 1/15 ~ 2/14 结束
→ 最早 3 月 1 日 出账(2 月 1 日不出)
去重规则:同一合同、同一账期、同一账单阶段已有账单时,重复触发只展示已有账单,不重复创建、不覆盖原计算依据。
非自然首期:首个能覆盖到该首期账期完整结束之后的最近出账日补生成,不提前出账。
应交时间不是本模块算的:由合同管理按缴租周期和合同约定的周期内应交日提供,租金清分只在账单生成时固化快照,财务确认应收后锁定。
07
流程与角色:谁推动流程
系统只做第一步和最后一步,中间全靠人推动
服务区管理员
所辖服务区(可多个)
- ▸ 提交核对
- ▸ 手动新增账单(仅固定合同与取高保底分量)
- ▸ 关联线下核对凭证
- ▸ 到上游修正营业额数据
- ▸ 重试生成异常账单
区域中心
所辖区域
- ▸ 审核通过
- ▸ 驳回至服务区核对(原因必填)
- ▸ 批量通过 / 批量驳回
- ▸ 只动「待区域审核」
服务中心
所辖服务中心
- ▸ 审核通过
- ▸ 驳回至区域审核(原因必填)
- ▸ 批量通过 / 批量驳回
- ▸ 只动「待服务中心审核」
服务中心财务
全量或授权财务组织
- ▸ 确认应收(锁定金额)
- ▸ 发送 / 重发通知
- ▸ 确认到账(手工填金额)
- ▸ 修正租金(确认应收前)
- ▸ 处理多缴 / 在末期营业额单确认年度清算调整
批量操作(列表勾选后执行,单次上限 200 条)
| 动作 | 谁能做 | 约束 |
| 批量提交 | 服务区管理员 → 待服务区核对 | 统一驳回原因必填;执行前逐项重查状态与权限 |
| 批量通过 / 驳回 | 区域中心 / 服务中心 → 各自阶段 | 不越级;任一项已变化或越权则跳过并提示 |
| 批量确认应收 / 重发通知 | 服务中心财务 → 对应阶段 | 确认到账维持逐单(涉金额,风险高) |
并发保护:重复点击提交/审核/确认/通知时,不产生重复账单、重复应收或重复通知,页面提示当前已处理结果。退回不是终态:区域退回 → 待服务区核对;服务中心退回 → 待区域审核;原退回记录和意见都保留。
08
操作之后:数据与状态怎么变
业务状态管「流程到哪」,缴费状态管「钱到哪」
业务处理状态(流程进度)
缴费状态(应收实收关系)
财务操作 → 界面上看到什么
| 财务操作 | 业务状态变化 | 缴费状态变化 | 界面上能看到什么 |
| 确认应收(应收 > 0) | → 已确认应收 | 未缴 | 出现「应收确认人 / 时间」,隐藏上游重算入口,出现发送通知入口 |
| 确认应收(应收 = 0 且无差额) | → 已结清(直接关闭) | 无需缴纳 | 不出现通知与到账入口,账单只读 |
| 确认到账(金额 < 应收) | 待到账(保持) | 未缴 → 部分缴 | 实收增加,余额差额显示为正数(欠租),缴款记录新增一行 |
| 确认到账(足额) | → 已结清 | → 已缴 | 余额差额归零,账单关闭,进入台账与报表统计 |
| 确认到账(超额) | → 待差额处理 | → 预缴 | 出现「多缴与冲抵处理」区块:初始多缴、累计已处理、剩余多缴,以及冲抵/退还逐笔记录 |
多缴怎么消化:非合同最后一年,系统默认给「冲抵下一期」建议,须财务逐笔确认才生效;单次冲抵不得超过剩余多缴和关联下一期账单的未缴应收。剩余多缴 > 0 时必须保持「待差额处理」,只有归零才结清。合同最后一年只能退还,每笔都要登记退还凭证。
09
年度清算(并入合同年最后一期营业额租金单)
按合同年拉通算一次,并入末期营业额单,只退不补
年度清算调整 = max(全年提成, 全年保底预缴) − 本合同年已确认应收
全年提成 ← 各期营业额提成毛额合计(未扣保底)
全年保底预缴 ← 该合同年取高保底账单确认应收合计(含末期保底)
本合同年已确认应收 ← 该合同年取高账单已确认应收合计(含末期保底、不含末期营业额租金单本身)
末期营业额租金单应收 = max(0, 末期提成增量 + 年度清算调整)
归属口径 ← 三个量均按「账期结束日」归属该合同年
| 提成结算方式 | 期间结算 | 年度清算 | 说明 |
| 按月度结算 | 每月 | 不做 | 仅按月结算并支付提成租金 |
| 按季度结算 | 每季 | 不做 | 仅按季结算并支付提成租金 |
| 先月度后年结算 | 每月 | 做 | 先按月结算,合同年最后一期营业额租金单内并入年度清算调整;只做多缴退还或冲抵,不做补交 |
| 先季度后年结算 | 每季 | 做 | 先按季结算,合同年最后一期营业额租金单内并入年度清算调整;只做多缴退还或冲抵,不做补交 |
取数最容易错的一处
- ✗ 不能按「提成账单金额」汇总全年提成 —— 提成账单本身已扣减过该期保底应收,再汇总会重复扣减
- ✓ 全年提成 = 各期已确认营业额 × 合同约定比例,逐期求和(毛额)
- ✗ 不使用实收到账金额参与清算计算
- ✓ 三个量都按账期结束日是否落在该合同年来归属
- ✓ 年度清算不再单独建单,并入该合同年最后一期营业额租金单;末期保底按原规则照常收取,末期营业额提成不单独先收
- ✓ 前期各期欠租只在末期营业额单展示、不并入本单应收,仍在各自账单继续收款,可能多笔缴款
为什么「只退不补」
期间已经逐期取高足额结算(保底账单 + 提成账单合计 = 该期取高值),所以年度拉通后调整恒 ≤ 0,只可能是多缴。该调整并入末期营业额租金单:本期提成增量 ≥ 0 时先被抵掉,抵不完的部分形成统一多缴余额,因此系统不生成补交账单。未确认应收的账单不计入「本合同年已确认应收」,存在时末期营业额单的年度清算区块显示未完成。
10
公式速查表
每一行的「字段来源」都可以直接拿去对合同管理与销售统计
| 项目 | 怎么算 | 字段从哪来 / 注意 |
| A · 分期 |
| 每期开始日 | 租期起始日 往后推 k 个期 (月缴推 k 个月、季缴推 k×3 个月…) | 租期起始日 ← 合同管理(已剔除免租装修期);推多长 ← 缴租周期;目标月无该日号时取当月最后一日,下一次仍回到租期起始日重推 |
| 每期结束日 | = 下一期开始日 的 前一天 | 不能用本期开始日反推;必须从租期起始日推出下一期开始日 |
| 合同年 | 自租期起始日起每 12 个月,编号从 1 | 账期结束日落在该年区间即归属该年 |
| B · 金额 |
| 期租金 | 年标准 ÷ 年期内数,保留 2 位 | 年标准 ← 合同管理(元/年),按账期结束日所属合同年取;年期内数 ← 月12/季4/半年2/年1 |
| 尾差 | 归该合同年最后一个完整期 | 四舍五入 ROUND_HALF_UP;整年合计恰等于年标准;终止当年不做 |
| 固定租金 | 应收 = 期租金 | 完整期取整期;被终止截断时按天折算 |
| 纯营业额 | 应收 = 已确认营业额 × 提成比例 | 营业额 ← 销售统计(已确认汇总);比例 ← 合同管理 |
| 销量租金 | 应收 = 已确认销量 × 单价 | 销量 ← 销售统计;单价 ← 合同管理 |
| 取高 · 保底 | 应收 = 保底年标准 ÷ 年期内数 | 保底年标准 ← 合同管理;预缴提前出账 |
| 取高 · 提成 | 应收 = 营业额提成 − 保底应收(≤0 记 0) | 扣减基数是保底应收,与实缴进度无关 |
| 终止折算 | 期租金 ÷ (30×N) × 实际计租天数 | 实际计租天数含首尾;30 仅为分母,不是期间长度 |
| 一次性付清 | 总租金 × 实际计租天数 ÷ 合同期计租总天数 | 分母必须用合同期实际自然日天数,禁用 30/360 |
| 年度清算(并入末期营业额单) | 调整 = max(全年提成, 全年保底预缴) − 本合同年已确认应收 末期营业额单应收 = max(0, 末期提成增量 + 调整) | 全年提成按毛额;末期保底照收、末期提成不单独先收;只退不补,不生成补交账单 |
| C · 时点与条件 |
| 出账日 | 每月 1 日 | 系统固定;预缴类出下一期(周期起始月内首个出账日),提成类出上一期(账期结束后最近出账日) |
| 提成可出账 | 出账日 > 账期结束日 且 数据已确认 且 覆盖完整 | 同日不出账,最迟下一个出账日兜底 |
| 应交时间 | 账单生成时固化快照 | ← 合同管理 · 周期内应交日;本模块只读消费,确认应收后锁定 |