## 复购区域分红改为支持比率+比值;
This commit is contained in:
parent
97aa32d3a0
commit
5be813550e
|
@ -552,25 +552,27 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
) {
|
) {
|
||||||
// 注册或升级订单并且存在盒数产品,才有 直推级差收益 和 平级收益
|
// 注册或升级订单并且存在盒数产品,才有 直推级差收益 和 平级收益
|
||||||
for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) {
|
for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) {
|
||||||
// 直推级差 + 平级收益
|
if (RetailConstants.ALL_BOX_WARES_LIST.contains(saOrderItems.getWaresCode())) {
|
||||||
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt));
|
// 盒数商品 计算 直推级差 + 平级收益
|
||||||
|
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt));
|
||||||
|
}
|
||||||
|
|
||||||
// 计算完奖金算等级
|
// 计算完奖金算等级
|
||||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
// if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
// || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
||||||
// 订单存在升级记录
|
// // 订单存在升级记录
|
||||||
if (memberLevelMap.containsKey(saOrderExt.getPkId())) {
|
if (memberLevelMap.containsKey(saOrderExt.getPkId())) {
|
||||||
CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId());
|
CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId());
|
||||||
if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) {
|
if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) {
|
||||||
BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel());
|
BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel());
|
||||||
if (bdGrade.getGradeValue() > sourceMemberRangeExt.getGradeValue()) {
|
if (bdGrade.getGradeValue() > sourceMemberRangeExt.getGradeValue()) {
|
||||||
sourceMemberRangeExt.setPkGrade(bdGrade.getPkId());
|
sourceMemberRangeExt.setPkGrade(bdGrade.getPkId());
|
||||||
sourceMemberRangeExt.setGradeValue(bdGrade.getGradeValue());
|
sourceMemberRangeExt.setGradeValue(bdGrade.getGradeValue());
|
||||||
sourceMemberRangeExt.setGradeName(bdGrade.getGradeName());
|
sourceMemberRangeExt.setGradeName(bdGrade.getGradeName());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1403,9 +1405,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) {
|
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) {
|
||||||
// 复购订单, 区域收益 = 复购区域分红 * 商品数量
|
// 复购订单, 区域收益 = 复购区域分红 * 商品数量
|
||||||
for (SaOrderWaresExt saOrderWaresExt : saOrder.getOrderWaresExtList()) {
|
for (SaOrderWaresExt saOrderWaresExt : saOrder.getOrderWaresExtList()) {
|
||||||
benefitIncome = benefitIncome.add(saOrderWaresExt.getAreaIncome().multiply(new BigDecimal(saOrderWaresExt.getWaresQuantity())));
|
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,
|
CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, null, RetailConstants.SAME_RATIO, benefitIncome,
|
||||||
cuMemberRetailRangeExt, EBonusItems.RETAIL_AREA_INCOME.getValue(), BonusMsgConstants.RETAIL_AREA_INCOME);
|
cuMemberRetailRangeExt, EBonusItems.RETAIL_AREA_INCOME.getValue(), BonusMsgConstants.RETAIL_AREA_INCOME);
|
||||||
// 计算业绩以盒数做为基础
|
// 计算业绩以盒数做为基础
|
||||||
|
|
|
@ -61,6 +61,7 @@
|
||||||
<result column="WARES_PRICE" property="waresPrice"/>
|
<result column="WARES_PRICE" property="waresPrice"/>
|
||||||
<result column="WARES_CODE" property="waresCode"/>
|
<result column="WARES_CODE" property="waresCode"/>
|
||||||
<result column="AREA_INCOME" property="areaIncome"/>
|
<result column="AREA_INCOME" property="areaIncome"/>
|
||||||
|
<result column="AREA_INCOME_TYPE" property="areaIncomeType"/>
|
||||||
<result column="WARES_BOX_NUM" property="waresBoxNum"/>
|
<result column="WARES_BOX_NUM" property="waresBoxNum"/>
|
||||||
</collection>
|
</collection>
|
||||||
<collection property="orderItemsExtList" ofType="com.hzs.common.domain.sale.ext.SaOrderItemsExt">
|
<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_order,0) pk_order,
|
||||||
nvl(st.pk_wares,0) pk_wares,
|
nvl(st.pk_wares,0) pk_wares,
|
||||||
nvl(st.wares_price,0) wares_price,
|
nvl(st.wares_price,0) wares_price,
|
||||||
nvl(bw.wares_code,'~') wares_code,
|
|
||||||
nvl(st.wares_quantity,0) wares_quantity,
|
nvl(st.wares_quantity,0) wares_quantity,
|
||||||
|
nvl(bw.wares_code,'~') wares_code,
|
||||||
nvl(bw.area_income, 0) area_income,
|
nvl(bw.area_income, 0) area_income,
|
||||||
|
nvl(bw.area_income_type, 0) area_income_type,
|
||||||
nvl(bw.box_num, 0) wares_box_num
|
nvl(bw.box_num, 0) wares_box_num
|
||||||
from sa_order so
|
from sa_order so
|
||||||
left join sa_order_wares st
|
left join sa_order_wares st
|
||||||
|
@ -164,6 +166,67 @@
|
||||||
left join bd_wares bw
|
left join bd_wares bw
|
||||||
on bw.pk_id = st.pk_wares and bw.del_flag = 0
|
on bw.pk_id = st.pk_wares and bw.del_flag = 0
|
||||||
where so.order_status = 1
|
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 != ''">
|
<if test="orderCode != null and orderCode != ''">
|
||||||
and so.order_code=#{orderCode}
|
and so.order_code=#{orderCode}
|
||||||
</if>
|
</if>
|
||||||
|
|
Loading…
Reference in New Issue