|
@@ -95,17 +95,32 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
|
|
|
}
|
|
|
//获取分配的余额
|
|
|
BigDecimal balancePaymentAmount = studentPaymentOrder.getBalancePaymentAmount().multiply(totalRatioAmount).setScale(2, RoundingMode.DOWN);
|
|
|
+ //获取分配的现金
|
|
|
+ BigDecimal totalDetailActualAmount = studentPaymentOrder.getActualAmount().multiply(totalRatioAmount).setScale(2, RoundingMode.DOWN);
|
|
|
//获取总优惠券金额
|
|
|
BigDecimal detailTotalRemitPrice = goodsOrderDetails.stream().map(StudentPaymentOrderDetail::getRemitFee).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
List<SellOrder> sellOrders = new ArrayList<>();
|
|
|
-
|
|
|
+ if(balancePaymentAmount.add(totalDetailActualAmount).compareTo(detailTotalPrice) < 0){
|
|
|
+ //多出来的金额
|
|
|
+ BigDecimal subtract = detailTotalPrice.subtract(balancePaymentAmount).subtract(totalDetailActualAmount);
|
|
|
+ if(balancePaymentAmount.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ totalDetailActualAmount = totalDetailActualAmount.add(subtract);
|
|
|
+ }else if(totalDetailActualAmount.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ balancePaymentAmount = balancePaymentAmount.add(subtract);
|
|
|
+ }else {
|
|
|
+ balancePaymentAmount = balancePaymentAmount.add(subtract);
|
|
|
+ if(balancePaymentAmount.compareTo(studentPaymentOrder.getBalancePaymentAmount()) > 0){
|
|
|
+ totalDetailActualAmount = totalDetailActualAmount.add(balancePaymentAmount.subtract(studentPaymentOrder.getBalancePaymentAmount()));
|
|
|
+ balancePaymentAmount = studentPaymentOrder.getBalancePaymentAmount();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
//剩余待分配的余额
|
|
|
BigDecimal subDetailBalance = balancePaymentAmount;
|
|
|
//剩余待分配的优惠券金额
|
|
|
BigDecimal subDetailCouponRemitFee = detailTotalRemitPrice;
|
|
|
//剩余待分配现金
|
|
|
- BigDecimal totalDetailActualAmount = detailTotalPrice.subtract(balancePaymentAmount);
|
|
|
BigDecimal subDetailActualAmount = totalDetailActualAmount;
|
|
|
for (int i = 0; i < goodsOrderDetails.size(); i++) {
|
|
|
StudentPaymentOrderDetail orderDetail = goodsOrderDetails.get(i);
|