| @@ -131,18 +131,20 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB | |||||
| if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ | if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ | ||||
| prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,4, RoundingMode.HALF_UP); | prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,4, RoundingMode.HALF_UP); | ||||
| } | } | ||||
| BigDecimal realCashBackTotal = BigDecimal.ZERO; | |||||
| if(prop.compareTo(BigDecimal.ONE) < 0){ | if(prop.compareTo(BigDecimal.ONE) < 0){ | ||||
| for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | ||||
| grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule())); | grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule())); | ||||
| } | } | ||||
| } | } | ||||
| BigDecimal realCashBackTotal = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit()); | |||||
| activityGrant.setCashBack(realCashBackTotal); | |||||
| if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ | if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ | ||||
| //单独算税点 | //单独算税点 | ||||
| BigDecimal taxAmount = BigDecimal.ZERO; | BigDecimal taxAmount = BigDecimal.ZERO; | ||||
| for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | ||||
| realCashBackTotal = realCashBackTotal.add(grantAward.getCashBack()); | |||||
| grantAward.setTaxDeductionRules(cashBackActivity.getTaxDeductionRules()); | grantAward.setTaxDeductionRules(cashBackActivity.getTaxDeductionRules()); | ||||
| grantAward.setTaxAmount(BigDecimal.ZERO); | grantAward.setTaxAmount(BigDecimal.ZERO); | ||||
| WxVtwoActivityTaxDeductionRule taxDeductionRulesObject = cashBackActivity.getTaxDeductionRulesObject(); | WxVtwoActivityTaxDeductionRule taxDeductionRulesObject = cashBackActivity.getTaxDeductionRulesObject(); | ||||
| @@ -165,13 +167,11 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB | |||||
| } | } | ||||
| //税点分摊到发奖上面 | //税点分摊到发奖上面 | ||||
| for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ | ||||
| realCashBackTotal = realCashBackTotal.add(grantAward.getCashBack()); | |||||
| BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);; | BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);; | ||||
| grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP)); | grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP)); | ||||
| } | } | ||||
| } | } | ||||
| activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit()); | |||||
| activityGrant.setCashBack(realCashBackTotal); | |||||
| activityGrant.setGrantAwardList(grantAwardList); | activityGrant.setGrantAwardList(grantAwardList); | ||||
| } | } | ||||