增加加价的截留扣点设置

This commit is contained in:
cb 2025-06-10 18:01:10 +08:00
parent 448b134f11
commit 75c06e6457
1 changed files with 23 additions and 8 deletions

View File

@ -582,6 +582,12 @@ public class OrderDetailServiceImpl implements OrderDetailService {
pcDeptRate = MoneyUtil.lt0(pcDeptRate) ? BigDecimal.ZERO : pcDeptRate;
BigDecimal pcDeptMoney = MoneyUtil.lt0(deptGoodsCategory.getPcDeptMoney()) ? BigDecimal.ZERO : deptGoodsCategory.getPcDeptMoney();
logger.info("平台追加抽成{},费率{}", pcDeptMoney, pcDeptRate);
BigDecimal retainRate = new BigDecimal(deptGoodsCategory.getRetainRate());
retainRate = MoneyUtil.lt0(retainRate) ? BigDecimal.ZERO : retainRate;
BigDecimal retainMoney = MoneyUtil.lt0(deptGoodsCategory.getRetainMoney()) ? BigDecimal.ZERO : deptGoodsCategory.getPcDeptMoney();
BigDecimal dtx = BigDecimal.ZERO;
// 追加金额分账
@ -602,7 +608,7 @@ public class OrderDetailServiceImpl implements OrderDetailService {
changeMoney = fcRecord.getChangeMoney();
logger.info("子订单加价金额{}", changeMoney);
BigDecimal dtx2 = changePaymentConfirm(fcRecord, orderDetailId, orderDetail.getWorkerId(), deptId, memberId,
masterMemberId, teamRete, teamMoney, deptRate, deptMoney, saleRateThree, placeId, saleRateTwo, parentPlaceId);
masterMemberId, teamRete, teamMoney, deptRate, deptMoney, saleRateThree, placeId, saleRateTwo, parentPlaceId,retainRate);
// dtx = dtx.add(dtx2);
logger.info("子订单加价记录{}加价完毕{}", dtx2, dtx);
}
@ -684,7 +690,7 @@ public class OrderDetailServiceImpl implements OrderDetailService {
// 增加手续费财务子单
FinancialDetail financialDetail1 = new FinancialDetail();
financialDetail1.setOrderDetailId(orderDetailId);
financialDetail1.setFinancialDetailType(2);
financialDetail1.setFinancialDetailType(6);
financialDetail1.setPayMoney(commissionAmount);
financialDetail1.setPayTime(new Date());
financialDetail1.setFinancialMasterId(financialMasterId);
@ -745,7 +751,7 @@ public class OrderDetailServiceImpl implements OrderDetailService {
private BigDecimal changePaymentConfirm(FinancialChangeRecord fcRecord, Long orderDetailId, Long workerId, Long deptId,
String memberId, String masterMemberId, BigDecimal teamRete, BigDecimal teamMoney,
BigDecimal deptRate, BigDecimal deptMoney,
BigDecimal oneRate, String placeOne, BigDecimal twoRate, String placeTwo) throws BaseAdaPayException {
BigDecimal oneRate, String placeOne, BigDecimal twoRate, String placeTwo,BigDecimal retainRate) throws BaseAdaPayException {
BigDecimal changeMoney = fcRecord.getChangeMoney();
// 分销金额
BigDecimal placeOneMoney = BigDecimal.ZERO;
@ -754,20 +760,24 @@ public class OrderDetailServiceImpl implements OrderDetailService {
BigDecimal platformFee = changeMoney.multiply(deptRate).add(deptMoney).setScale(2, RoundingMode.UP);
// 大师傅抽成
BigDecimal masterFee = changeMoney.multiply(teamRete).add(teamMoney).setScale(2, RoundingMode.UP);
BigDecimal retainRateMoney=BigDecimal.ZERO;
// 如果提成>追加金额 则去掉固定提成 只计算比例提成
if (MoneyUtil.lt(masterFee.add(platformFee), changeMoney)) {
platformFee = changeMoney.multiply(deptRate).setScale(2, RoundingMode.UP);
platformFee = changeMoney.multiply(deptRate).setScale(2, RoundingMode.DOWN);
}
// 分销抽成
// 1级分销
if (MoneyUtil.lt(oneRate, changeMoney)) {
placeOneMoney = changeMoney.multiply(oneRate).setScale(2, RoundingMode.UP);
placeOneMoney = changeMoney.multiply(oneRate).setScale(2, RoundingMode.DOWN);
}
// 2级分销
if (MoneyUtil.lt(twoRate, changeMoney)) {
placeTwoMoney = changeMoney.multiply(twoRate).setScale(2, RoundingMode.UP);
placeTwoMoney = changeMoney.multiply(twoRate).setScale(2, RoundingMode.DOWN);
}
if (MoneyUtil.lt(retainRate, changeMoney)) {
retainRateMoney = changeMoney.multiply(retainRate).setScale(2, RoundingMode.DOWN);
}
logger.info("子订单改价分账1级{}2级{}", placeOneMoney, placeTwoMoney);
// 上门师傅的报酬
@ -802,7 +812,12 @@ public class OrderDetailServiceImpl implements OrderDetailService {
workerFee = workerFee.subtract(platformFee);
feeFlag = true;
}
//截留扣点
if (MoneyUtil.gt0(retainRate)) {
divMembers.add(new DivMember("0", MoneyUtil.toS(retainRateMoney), true));
workerFee = workerFee.subtract(retainRateMoney);
feeFlag = true;
}
if (MoneyUtil.gt0(placeOneMoney) && StringUtils.isNotEmpty(placeOne)) {
divMembers.add(new DivMember(placeOne, MoneyUtil.toS(placeOneMoney), !feeFlag));
workerFee = workerFee.subtract(placeOneMoney);