Commit 6e3a580a by jianan

根据入账检核汇率更新应付1

parent 06dc7e2e
......@@ -779,28 +779,39 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
String key = buildPolicyPeriodKey(expectedFortune.getPolicyNo(), expectedFortune.getFortunePeriod());
BigDecimal exchangeRate = exchangeRateMap.get(key);
if (exchangeRate != null) {
// 入账检核汇率 — 仅审计追溯,始终写入
fortune.setExchangeRate(exchangeRate);
fortune.setOriginalToHkdRate(exchangeRate);
// 重新计算港币金额
BigDecimal hkdAmount = fortune.getRuleAmount().multiply(exchangeRate);
fortune.setHkdAmount(hkdAmount);
fortune.setCurrentPaymentAmount(fortune.getRuleAmount());
fortune.setCurrentPaymentHkdAmount(hkdAmount);
// 重新计算发放币种金额
BigDecimal payoutAmount = hkdAmount.multiply(expectedFortune.getHkdToPayoutRate());
fortune.setPayoutAmount(payoutAmount);
// 更新预计发佣记录的港币金额
ExpectedFortune update = new ExpectedFortune();
update.setId(expectedFortune.getId());
update.setDefaultExchangeRate(exchangeRate);
update.setOriginalToHkdRate(exchangeRate);
update.setHkdAmount(hkdAmount);
update.setUnpaidAmount(hkdAmount);
update.setUnpaidRuleAmountHkd(hkdAmount);
update.setPayoutAmount(payoutAmount);
updatedExpectedFortuneList.add(update);
// 判断 commission.currency 是否为 HKD
Commission matchedCommission = commissionByPolicyPeriod.get(key);
boolean isCommissionHkd = matchedCommission != null
&& "HKD".equalsIgnoreCase(matchedCommission.getCurrency());
if (isCommissionHkd) {
// 入账币种=HKD 时,exchangeRate = 保单币种 → 港币,可安全使用
fortune.setOriginalToHkdRate(exchangeRate);
BigDecimal hkdAmount = fortune.getRuleAmount().multiply(exchangeRate);
fortune.setHkdAmount(hkdAmount);
fortune.setCurrentPaymentAmount(fortune.getRuleAmount());
fortune.setCurrentPaymentHkdAmount(hkdAmount);
BigDecimal payoutAmount = hkdAmount.multiply(expectedFortune.getHkdToPayoutRate());
fortune.setPayoutAmount(payoutAmount);
ExpectedFortune update = new ExpectedFortune();
update.setId(expectedFortune.getId());
update.setDefaultExchangeRate(exchangeRate);
update.setOriginalToHkdRate(exchangeRate);
update.setHkdAmount(hkdAmount);
update.setUnpaidAmount(hkdAmount);
update.setUnpaidRuleAmountHkd(hkdAmount);
update.setPayoutAmount(payoutAmount);
updatedExpectedFortuneList.add(update);
} else {
// 入账币种 ≠ HKD,无法推导保单币种 → 港币,用 ExpectedFortune 已有默认值
fortune.setExchangeRate(expectedFortune.getDefaultExchangeRate());
fortune.setCurrentPaymentAmount(expectedFortune.getOriginalAmount());
fortune.setCurrentPaymentHkdAmount(expectedFortune.getHkdAmount());
}
} else {
fortune.setExchangeRate(expectedFortune.getDefaultExchangeRate());
fortune.setCurrentPaymentAmount(expectedFortune.getOriginalAmount());
......
......@@ -505,6 +505,8 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
// 应发港币金额(估)
BigDecimal hkdAmount = hkdAmountMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO);
BigDecimal expectedHKD = hkdAmount.add(unpaidRuleAmountHkd);
// 发放币种金额 = 港币 × 港币兑发放币种汇率
BigDecimal expectedPayout = expectedHKD.multiply(ef.getHkdToPayoutRate());
// 累计出账港币金额
BigDecimal paid = paidMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO);
......@@ -527,7 +529,7 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
.set(ExpectedFortune::getUnpaidRuleAmount, unpaidRule)
.set(ExpectedFortune::getUnpaidRuleAmountHkd, unpaidRuleAmountHkd)
.set(ExpectedFortune::getHkdAmount, expectedHKD)
.set(ExpectedFortune::getPayoutAmount, expectedHKD)
.set(ExpectedFortune::getPayoutAmount, expectedPayout)
.set(ExpectedFortune::getPaidAmount, paid)
.set(ExpectedFortune::getUnpaidAmount, unpaidRuleAmountHkd)
.set(ExpectedFortune::getPaidRatio, totalPaidRatio)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment