102 lines
3.0 KiB
Markdown
102 lines
3.0 KiB
Markdown
# 可开票金额计算逻辑更新说明
|
||
|
||
## 更新概述
|
||
|
||
本次更新修改了可开票金额的计算逻辑,从原来的"总充值金额 - 总赠送金额"改为"支付宝充值金额 + 对公转账金额"。
|
||
|
||
## 修改内容
|
||
|
||
### 1. 计算逻辑变更
|
||
|
||
**原逻辑:**
|
||
```
|
||
可开票金额 = 总充值金额 - 总赠送金额 - 已开票金额 - 待处理申请金额
|
||
```
|
||
|
||
**新逻辑:**
|
||
```
|
||
可开票金额 = 真实充值金额(支付宝充值 + 对公转账) - 已开票金额 - 待处理申请金额
|
||
```
|
||
|
||
### 2. 代码修改位置
|
||
|
||
#### 文件:`internal/application/finance/invoice_application_service.go`
|
||
|
||
**方法:`getAmountSummary`**
|
||
- 修改了充值金额的计算逻辑
|
||
- 只统计 `RechargeTypeAlipay`(支付宝充值)和 `RechargeTypeTransfer`(对公转账)的金额
|
||
- 赠送金额(`RechargeTypeGift`)不再计入可开票金额
|
||
|
||
**方法:`calculateAvailableAmount`**
|
||
- 更新了注释和变量名
|
||
- 移除了对赠送金额的扣除逻辑
|
||
- 直接使用真实充值金额进行计算
|
||
|
||
**方法:`GetAvailableAmount`**
|
||
- 更新了响应DTO中的 `TotalRecharged` 字段
|
||
- 现在返回的是真实充值金额(支付宝充值+对公转账)
|
||
|
||
### 3. 充值类型说明
|
||
|
||
根据 `internal/domains/finance/entities/recharge_record.go` 中的定义:
|
||
|
||
```go
|
||
const (
|
||
RechargeTypeAlipay RechargeType = "alipay" // 支付宝充值
|
||
RechargeTypeTransfer RechargeType = "transfer" // 对公转账
|
||
RechargeTypeGift RechargeType = "gift" // 赠送
|
||
)
|
||
```
|
||
|
||
**计入可开票金额的类型:**
|
||
- `alipay` - 支付宝充值
|
||
- `transfer` - 对公转账
|
||
|
||
**不计入可开票金额的类型:**
|
||
- `gift` - 赠送金额
|
||
|
||
### 4. 影响范围
|
||
|
||
#### 后端影响
|
||
- 可开票金额计算逻辑变更
|
||
- 前端显示的"总充值"字段现在显示的是真实充值金额
|
||
- 赠送金额不再影响可开票金额
|
||
|
||
#### 前端影响
|
||
- 用户端发票页面显示的"总充值"金额会发生变化
|
||
- 可开票金额的计算结果会发生变化
|
||
- 赠送金额不再从可开票金额中扣除
|
||
|
||
### 5. 业务逻辑
|
||
|
||
**为什么这样修改?**
|
||
1. **合规性**:只有真实的充值金额才能开具发票
|
||
2. **准确性**:赠送金额不应该计入可开票金额
|
||
3. **清晰性**:明确区分真实充值和赠送金额
|
||
|
||
**计算示例:**
|
||
```
|
||
用户充值记录:
|
||
- 支付宝充值:1000元
|
||
- 对公转账:500元
|
||
- 赠送金额:200元
|
||
|
||
原逻辑可开票金额:1000 + 500 + 200 - 200 = 1500元
|
||
新逻辑可开票金额:1000 + 500 = 1500元
|
||
|
||
结果相同,但逻辑更清晰
|
||
```
|
||
|
||
### 6. 注意事项
|
||
|
||
1. **历史数据**:此修改会影响所有用户的可开票金额计算
|
||
2. **前端显示**:前端显示的"总充值"字段含义发生变化
|
||
3. **业务验证**:需要验证新的计算逻辑是否符合业务需求
|
||
4. **测试建议**:建议在测试环境充分验证后再部署到生产环境
|
||
|
||
## 部署建议
|
||
|
||
1. 在测试环境验证新的计算逻辑
|
||
2. 确认前端显示正确
|
||
3. 通知相关业务人员了解变更
|
||
4. 监控生产环境的可开票金额计算 |