# 可开票金额计算逻辑更新说明 ## 更新概述 本次更新修改了可开票金额的计算逻辑,从原来的"总充值金额 - 总赠送金额"改为"支付宝充值金额 + 对公转账金额"。 ## 修改内容 ### 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. 监控生产环境的可开票金额计算