fix: 比例计算根据可退金额计算
This commit is contained in:
parent
77c895dbb2
commit
0c411b1072
|
|
@ -2771,6 +2771,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
ArrayList<TbOrderDetail> remainOrderDetailList = new ArrayList<>();
|
ArrayList<TbOrderDetail> remainOrderDetailList = new ArrayList<>();
|
||||||
boolean hasNormalReturn = false;
|
boolean hasNormalReturn = false;
|
||||||
for (TbOrderDetail orderDetail : detailList) {
|
for (TbOrderDetail orderDetail : detailList) {
|
||||||
|
// 原始金额
|
||||||
|
BigDecimal originalAmount = orderDetail.getPriceAmount();
|
||||||
|
BigDecimal originalPackAmount = orderDetail.getPackAmount();
|
||||||
// 退款数量
|
// 退款数量
|
||||||
BigDecimal returnNum = returnNumMap.get(orderDetail.getId().toString());
|
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);
|
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 returnPackFee = packFee.multiply(returnNum);
|
||||||
BigDecimal currentDetailAMount = BigDecimal.ZERO;
|
BigDecimal currentDetailAMount = BigDecimal.ZERO;
|
||||||
// 优惠券抵扣商品直接退券
|
// 优惠券抵扣商品直接退券
|
||||||
|
|
@ -2834,17 +2824,33 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
hasNormalReturn = true;
|
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());
|
saleAmount = saleAmount.add(orderDetail.getPrice());
|
||||||
packAMount = packAMount.add(orderDetail.getPackAmount()
|
if (remainNum.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
.divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
|
returnAmount = orderDetail.getPriceAmount();
|
||||||
.multiply(returnNum)).setScale(2, RoundingMode.HALF_UP);
|
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);
|
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.setNum(returnNum);
|
||||||
orderDetail.setPriceAmount(currentDetailAMount);
|
orderDetail.setPriceAmount(currentDetailAMount);
|
||||||
orderDetail.setPackAmount(returnPackFee);
|
orderDetail.setPackAmount(returnPackFee);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue