## 复购区域分红改为支持比率+比值;
This commit is contained in:
parent
10bc31dc50
commit
2c292a0ec1
|
@ -552,13 +552,15 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
) {
|
||||
// 注册或升级订单并且存在盒数产品,才有 直推级差收益 和 平级收益
|
||||
for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) {
|
||||
// 直推级差 + 平级收益
|
||||
if (RetailConstants.ALL_BOX_WARES_LIST.contains(saOrderItems.getWaresCode())) {
|
||||
// 盒数商品 计算 直推级差 + 平级收益
|
||||
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt));
|
||||
}
|
||||
|
||||
// 计算完奖金算等级
|
||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
||||
// 订单存在升级记录
|
||||
// if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||
// || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
||||
// // 订单存在升级记录
|
||||
if (memberLevelMap.containsKey(saOrderExt.getPkId())) {
|
||||
CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId());
|
||||
if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) {
|
||||
|
@ -570,7 +572,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1403,9 +1405,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) {
|
||||
// 复购订单, 区域收益 = 复购区域分红 * 商品数量
|
||||
for (SaOrderWaresExt saOrderWaresExt : saOrder.getOrderWaresExtList()) {
|
||||
if (ERatioType.VALUE.getValue() == saOrderWaresExt.getAreaIncomeType()) {
|
||||
// 按比值处理
|
||||
benefitIncome = benefitIncome.add(saOrderWaresExt.getAreaIncome().multiply(new BigDecimal(saOrderWaresExt.getWaresQuantity())));
|
||||
} else {
|
||||
// 按比率处理
|
||||
benefitIncome = benefitIncome.add(saOrderWaresExt.getWaresPrice().multiply(saOrderWaresExt.getAreaIncome()).divide(new BigDecimal("100"), 6, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(saOrderWaresExt.getWaresQuantity())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, null, RetailConstants.SAME_RATIO, benefitIncome,
|
||||
cuMemberRetailRangeExt, EBonusItems.RETAIL_AREA_INCOME.getValue(), BonusMsgConstants.RETAIL_AREA_INCOME);
|
||||
// 计算业绩以盒数做为基础
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
<result column="WARES_PRICE" property="waresPrice"/>
|
||||
<result column="WARES_CODE" property="waresCode"/>
|
||||
<result column="AREA_INCOME" property="areaIncome"/>
|
||||
<result column="AREA_INCOME_TYPE" property="areaIncomeType"/>
|
||||
<result column="WARES_BOX_NUM" property="waresBoxNum"/>
|
||||
</collection>
|
||||
<collection property="orderItemsExtList" ofType="com.hzs.common.domain.sale.ext.SaOrderItemsExt">
|
||||
|
@ -154,9 +155,10 @@
|
|||
nvl(st.pk_order,0) pk_order,
|
||||
nvl(st.pk_wares,0) pk_wares,
|
||||
nvl(st.wares_price,0) wares_price,
|
||||
nvl(bw.wares_code,'~') wares_code,
|
||||
nvl(st.wares_quantity,0) wares_quantity,
|
||||
nvl(bw.wares_code,'~') wares_code,
|
||||
nvl(bw.area_income, 0) area_income,
|
||||
nvl(bw.area_income_type, 0) area_income_type,
|
||||
nvl(bw.box_num, 0) wares_box_num
|
||||
from sa_order so
|
||||
left join sa_order_wares st
|
||||
|
@ -164,6 +166,67 @@
|
|||
left join bd_wares bw
|
||||
on bw.pk_id = st.pk_wares and bw.del_flag = 0
|
||||
where so.order_status = 1
|
||||
and so.order_type in (41, 42)
|
||||
<if test="orderCode != null and orderCode != ''">
|
||||
and so.order_code=#{orderCode}
|
||||
</if>
|
||||
and so.pay_time >= #{startDate}
|
||||
and so.pay_time < #{endDate}
|
||||
union
|
||||
select so.pk_id,
|
||||
so.pk_member,
|
||||
so.order_code,
|
||||
so.order_type,
|
||||
so.pk_rate,
|
||||
so.rec_province,
|
||||
so.rec_city,
|
||||
so.rec_county,
|
||||
so.order_amount,
|
||||
so.order_achieve,
|
||||
so.order_ass_achieve,
|
||||
so.upload_achieve,
|
||||
so.pk_reference,
|
||||
so.pk_vertex,
|
||||
so.pk_country,
|
||||
so.del_flag,
|
||||
so.pay_time,
|
||||
so.pk_creator,
|
||||
so.consume_amount,
|
||||
so.box_num,
|
||||
soi.items_id,
|
||||
soi.pk_order,
|
||||
soi.pk_wares,
|
||||
soi.wares_price,
|
||||
soi.wares_quantity,
|
||||
nvl(bw.wares_code, '~') wares_code,
|
||||
nvl(bw.area_income, 0) area_income,
|
||||
nvl(bw.area_income_type, 0) area_income_type,
|
||||
nvl(bw.box_num, 0) wares_box_num
|
||||
from sa_order so
|
||||
left join (select max(soi.pk_id) items_id,
|
||||
nvl(soi.pk_order, 0) pk_order,
|
||||
nvl(soi.pk_wares, 0) pk_wares,
|
||||
sum(soi.achievement * soi.quantity) wares_price,
|
||||
max(soi.wares_quantity) wares_quantity
|
||||
from sa_order so
|
||||
left join sa_order_items soi
|
||||
on soi.pk_order = so.pk_id
|
||||
and soi.del_flag = 0
|
||||
and soi.is_gift = 1
|
||||
where so.order_status = 1
|
||||
and so.order_type in (43)
|
||||
<if test="orderCode != null and orderCode != ''">
|
||||
and so.order_code=#{orderCode}
|
||||
</if>
|
||||
and so.pay_time >= #{startDate}
|
||||
and so.pay_time < #{endDate}
|
||||
group by soi.pk_order, soi.pk_wares) soi
|
||||
on soi.pk_order = so.pk_id
|
||||
left join bd_wares bw
|
||||
on bw.pk_id = soi.pk_wares
|
||||
and bw.del_flag = 0
|
||||
where so.order_status = 1
|
||||
and so.order_type in (43)
|
||||
<if test="orderCode != null and orderCode != ''">
|
||||
and so.order_code=#{orderCode}
|
||||
</if>
|
||||
|
|
Loading…
Reference in New Issue