fix: 比例计算根据可退金额计算
This commit is contained in:
parent
1546b0ee60
commit
c63f439a08
|
|
@ -2771,6 +2771,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
ArrayList<TbOrderDetail> remainOrderDetailList = new ArrayList<>();
|
||||
boolean hasNormalReturn = false;
|
||||
for (TbOrderDetail orderDetail : detailList) {
|
||||
// 原始金额
|
||||
BigDecimal originalAmount = orderDetail.getPriceAmount();
|
||||
BigDecimal originalPackAmount = orderDetail.getPackAmount();
|
||||
// 退款数量
|
||||
BigDecimal returnNum = returnNumMap.get(orderDetail.getId().toString());
|
||||
// 剩余数量
|
||||
|
|
@ -2781,19 +2784,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
|
||||
// 将未退款的剩余订单详情重新生成记录
|
||||
BigDecimal packFee = orderDetail.getPackAmount().divide(orderDetail.getNum(), RoundingMode.HALF_UP);
|
||||
if (remainNum.compareTo(BigDecimal.ZERO) > 0) {
|
||||
// 单个打包费
|
||||
BigDecimal remainPackFee = packFee.multiply(remainNum);
|
||||
TbOrderDetail remainOrderDetail = BeanUtil.copyProperties(orderDetail, TbOrderDetail.class);
|
||||
remainOrderDetail.setNum(remainNum);
|
||||
remainOrderDetail.setPriceAmount(remainNum.multiply(orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP))
|
||||
.add(remainPackFee).setScale(2, RoundingMode.HALF_UP));
|
||||
remainOrderDetail.setPackAmount(remainPackFee);
|
||||
remainOrderDetail.setReturnNum("0");
|
||||
remainOrderDetail.setId(null);
|
||||
remainOrderDetailList.add(remainOrderDetail);
|
||||
}
|
||||
|
||||
BigDecimal returnPackFee = packFee.multiply(returnNum);
|
||||
BigDecimal currentDetailAMount = BigDecimal.ZERO;
|
||||
// 优惠券抵扣商品直接退券
|
||||
|
|
@ -2834,17 +2824,33 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
|
||||
} else {
|
||||
hasNormalReturn = true;
|
||||
currentDetailAMount = orderDetail.getPriceAmount()
|
||||
.divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
|
||||
.multiply(returnNum).setScale(2, RoundingMode.HALF_UP);
|
||||
returnAmount = returnAmount.add(currentDetailAMount);
|
||||
saleAmount = saleAmount.add(orderDetail.getPrice());
|
||||
packAMount = packAMount.add(orderDetail.getPackAmount()
|
||||
.divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
|
||||
.multiply(returnNum)).setScale(2, RoundingMode.HALF_UP);
|
||||
if (remainNum.compareTo(BigDecimal.ZERO) > 0) {
|
||||
returnAmount = orderDetail.getPriceAmount();
|
||||
packAMount = orderDetail.getPackAmount();
|
||||
}else {
|
||||
currentDetailAMount = orderDetail.getPriceAmount()
|
||||
.divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
|
||||
.multiply(returnNum).setScale(2, RoundingMode.HALF_UP);
|
||||
returnAmount = returnAmount.add(currentDetailAMount);
|
||||
packAMount = packAMount.add(orderDetail.getPackAmount()
|
||||
.divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
|
||||
.multiply(returnNum)).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
}
|
||||
returnAmount = returnAmount.setScale(2, RoundingMode.DOWN);
|
||||
|
||||
if (remainNum.compareTo(BigDecimal.ZERO) > 0) {
|
||||
// 单个打包费
|
||||
TbOrderDetail remainOrderDetail = BeanUtil.copyProperties(orderDetail, TbOrderDetail.class);
|
||||
remainOrderDetail.setNum(remainNum);
|
||||
remainOrderDetail.setPriceAmount(originalAmount.subtract(returnAmount));
|
||||
remainOrderDetail.setPackAmount(originalPackAmount.subtract(returnPackFee));
|
||||
remainOrderDetail.setReturnNum("0");
|
||||
remainOrderDetail.setId(null);
|
||||
remainOrderDetailList.add(remainOrderDetail);
|
||||
}
|
||||
|
||||
orderDetail.setNum(returnNum);
|
||||
orderDetail.setPriceAmount(currentDetailAMount);
|
||||
orderDetail.setPackAmount(returnPackFee);
|
||||
|
|
|
|||
Loading…
Reference in New Issue