|
@@ -1286,8 +1286,18 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
BigDecimal reduce = orderItemList.stream()
|
|
|
.map(omsOrderItem -> omsOrderItem.getCouponAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())))
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- OmsOrderItem omsOrderItem = orderItemList.get(0);
|
|
|
- omsOrderItem.setPrecisionAmount(coupon.subtract(reduce));
|
|
|
+ BigDecimal precisionAmount = coupon.subtract(reduce);
|
|
|
+ for (OmsOrderItem omsOrderItem : orderItemList) {
|
|
|
+ BigDecimal multiply = omsOrderItem.getProductPrice()
|
|
|
+ .multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())).subtract(omsOrderItem.getCouponAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())));
|
|
|
+ if (multiply.compareTo(precisionAmount) >=0) {
|
|
|
+ omsOrderItem.setPrecisionAmount(precisionAmount);
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ omsOrderItem.setPrecisionAmount(multiply);
|
|
|
+ precisionAmount = precisionAmount.subtract(multiply);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|