如何计算带条件的月度剩余限额(含跨月结转规则)
带条件的月度剩余限额(remaining_limit)计算规则
计算逻辑说明
1. 初始限额确定
- 每月初始限额默认是当月客户总
buy_amt - 若上月月末有结转的正数
remaining_limit,则当月初始限额为 上月结转额度 + 当月总buy_amt
2. 逐笔扣除规则
- 先将当月所有
transfer_amt记录按date字段的day_time升序排序 - 从上到下依次执行扣除计算:
- 用当前有效剩余限额减去当前
transfer_amt - 若计算结果为正:更新剩余限额为该结果,此扣除操作生效
- 若计算结果为负:不执行扣除,剩余限额保持之前的有效值
- 用当前有效剩余限额减去当前
3. 月度结转规则
月末时,取当月最后一个有效的正数remaining_limit,结转至下月,作为下月初始限额的组成部分
4. 当月重算规则
若当月未结束,且当前剩余限额为负时客户新增buy_amt,需基于包含新增金额后的当月总buy_amt(加上上月结转额度,若有)重新从第一步开始计算;当月结束后不再进行重算
示例计算表格
| 日期 | buy_amt | transfer_amt | remaining_limit | 计算方式 |
|---|---|---|---|---|
| 30-jun-2024 | 600 | 1000 | -400(跳过) | (600 - 1000) |
| 30-jun-2024 | 600 | 100 | 500 有效 | (600 - 100) |
| 30-jun-2024 | 600 | 300 | 200 有效 | (500 - 300) |
| 30-jun-2024 | 600 | 300 | -100(跳过) | (200 - 300) |
| 30-jun-2024 | 600 | 50 | 150 有效 | (200 - 50) |
| … | … | … | … | … |
| 31-jul-2024 | 100 | 0 | 250 | (150 + 100) |
内容的提问来源于stack exchange,提问作者Nikoloz Kalichava
相关产品推荐
相关产品推荐

