fix: 折扣金额修复
This commit is contained in:
parent
dcaf9f4adb
commit
8d90986206
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package cn.ysk.cashier.pojo.order;
|
package cn.ysk.cashier.pojo.order;
|
||||||
|
|
||||||
|
import cn.ysk.cashier.mybatis.entity.TbActivateOutRecord;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
@ -24,6 +25,7 @@ import javax.persistence.*;
|
||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lyf
|
* @author lyf
|
||||||
|
|
@ -171,6 +173,10 @@ public class TbCashierCart implements Serializable {
|
||||||
// 是否临时菜品
|
// 是否临时菜品
|
||||||
private Integer isTemporary;
|
private Integer isTemporary;
|
||||||
private String unit;
|
private String unit;
|
||||||
|
private BigDecimal discountSaleAmount;
|
||||||
|
private String discountSaleNote;
|
||||||
|
private Boolean isPrint;
|
||||||
|
private String useCouponInfo;
|
||||||
|
|
||||||
public void copy(TbCashierCart source) {
|
public void copy(TbCashierCart source) {
|
||||||
BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
|
BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
|
||||||
|
|
@ -189,7 +195,7 @@ public class TbCashierCart implements Serializable {
|
||||||
if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
|
if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
totalAmount = totalNumber.multiply(memberPrice).add(packFee);
|
totalAmount = totalNumber.multiply(memberPrice).add(packFee);
|
||||||
} else {
|
} else {
|
||||||
totalAmount = totalNumber.multiply(salePrice).add(packFee);
|
totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -216,15 +222,22 @@ public class TbCashierCart implements Serializable {
|
||||||
* 获取总价不包含打包费
|
* 获取总价不包含打包费
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public BigDecimal getTotalAmountByNum(BigDecimal num) {
|
public BigDecimal getTotalAmountByNum(BigDecimal num, BigDecimal discountRadio) {
|
||||||
|
if (discountRadio == null) {
|
||||||
|
discountRadio = new BigDecimal("1");
|
||||||
|
}
|
||||||
|
resetTotalAmount(discountRadio);
|
||||||
if (num == null) {
|
if (num == null) {
|
||||||
num = totalNumber;
|
num = totalNumber;
|
||||||
}
|
}
|
||||||
if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
|
|
||||||
return num.multiply(memberPrice);
|
return totalAmount.divide(totalNumber, 9, RoundingMode.HALF_UP).multiply(num).setScale(2, RoundingMode.HALF_UP);
|
||||||
} else {
|
// if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
return num.multiply(salePrice);
|
// return num.multiply(memberPrice);
|
||||||
}
|
// } else {
|
||||||
|
// return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1287,7 +1287,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
TbCashierCart balanceCart = null;
|
TbCashierCart balanceCart = null;
|
||||||
if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) < 0) {
|
if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) < 0) {
|
||||||
cashierCart.setUserCouponId(couponVo.getId());
|
cashierCart.setUserCouponId(couponVo.getId());
|
||||||
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
|
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null, null));
|
||||||
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
|
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
|
||||||
currentUseNum = cashierCart.getNumber();
|
currentUseNum = cashierCart.getNumber();
|
||||||
// 优惠券数量小于购物车数量,分割购物车数据
|
// 优惠券数量小于购物车数量,分割购物车数据
|
||||||
|
|
@ -1297,7 +1297,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
BigDecimal balanceNum = cashierCart.getTotalNumber().subtract(couponVo.getCurrentUseNum());
|
BigDecimal balanceNum = cashierCart.getTotalNumber().subtract(couponVo.getCurrentUseNum());
|
||||||
BigDecimal singlePackFee = cashierCart.getPackFee().divide(cartNum, RoundingMode.HALF_UP);
|
BigDecimal singlePackFee = cashierCart.getPackFee().divide(cartNum, RoundingMode.HALF_UP);
|
||||||
cashierCart.setPackFee(singlePackFee.multiply(currentUseNum));
|
cashierCart.setPackFee(singlePackFee.multiply(currentUseNum));
|
||||||
BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum());
|
BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum(), null);
|
||||||
cashierCart.setTotalAmount(totalAmountByNum.add(singlePackFee.multiply(currentUseNum)));
|
cashierCart.setTotalAmount(totalAmountByNum.add(singlePackFee.multiply(currentUseNum)));
|
||||||
cashierCart.setNumber(couponVo.getCurrentUseNum());
|
cashierCart.setNumber(couponVo.getCurrentUseNum());
|
||||||
cashierCart.setTotalNumber(couponVo.getCurrentUseNum());
|
cashierCart.setTotalNumber(couponVo.getCurrentUseNum());
|
||||||
|
|
@ -1315,7 +1315,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
balanceCart.setNumber(balanceNum);
|
balanceCart.setNumber(balanceNum);
|
||||||
balanceCart.setTotalNumber(balanceNum);
|
balanceCart.setTotalNumber(balanceNum);
|
||||||
balanceCart.setPackFee(singlePackFee.multiply(balanceNum));
|
balanceCart.setPackFee(singlePackFee.multiply(balanceNum));
|
||||||
balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(balanceNum)));
|
balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum, null).add(singlePackFee.multiply(balanceNum)));
|
||||||
balanceCartList.add(balanceCart);
|
balanceCartList.add(balanceCart);
|
||||||
} else {
|
} else {
|
||||||
currentUseNum =cashierCart.getNumber();
|
currentUseNum =cashierCart.getNumber();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue