|
|
@@ -3431,10 +3431,6 @@ class BonusCalc extends BaseObject {
|
|
|
|
|
|
// 奖金入库完成,将各个奖金计算流水会员聘级,更新成蓝星奖当时计算的聘级
|
|
|
public function loopCalcBlueEmpLv($offset = 0) {
|
|
|
- if( !$this->_isCalcMonth ) {
|
|
|
- // 不是结算月,则不需要进行聘级调整
|
|
|
- return false;
|
|
|
- }
|
|
|
$allData = CalcBonus::findUseDbCalc()
|
|
|
->where('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $this->_periodNum])
|
|
|
->offset($offset)
|
|
|
@@ -3443,17 +3439,35 @@ class BonusCalc extends BaseObject {
|
|
|
->all();
|
|
|
if ($allData) {
|
|
|
foreach ($allData as $data) {
|
|
|
- // 获取蓝星表中的数据
|
|
|
- $blueBsInfo = CalcBonusBS::findOneAsArray(
|
|
|
- 'PERIOD_NUM=:PERIOD_NUM AND USER_ID=:USER_ID',
|
|
|
- [':PERIOD_NUM'=>$this->_periodNum, ':USER_ID'=>$data['USER_ID']]
|
|
|
- );
|
|
|
- if (!empty($blueBsInfo)) {
|
|
|
- $nowBsEmpLv = $blueBsInfo['LEVEL_ID']; // 当前蓝星奖计算(即管理奖) 的等级
|
|
|
+ // 会员的最新级别,查看上一期,如果无数据,则就是无级别。 上一期到下一期结算月之间,都显示上一期的最新级别。
|
|
|
+ if ($this->_isCalcMonth) {
|
|
|
+ // 如果是结算月,则直接获取当期结算结果
|
|
|
+ $blueBsInfo = CalcBonusBS::findOneAsArray(
|
|
|
+ 'PERIOD_NUM=:PERIOD_NUM AND USER_ID=:USER_ID',
|
|
|
+ [':PERIOD_NUM'=>$this->_periodNum, ':USER_ID'=>$data['USER_ID']]
|
|
|
+ );
|
|
|
+ if (!empty($blueBsInfo)) {
|
|
|
+ $nowBsEmpLv = $blueBsInfo['LEVEL_ID']; // 当前蓝星奖计算(即管理奖) 的等级
|
|
|
+ } else {
|
|
|
+ $nowBsEmpLv = EmployLevel::NO_LEVEL_ID;
|
|
|
+ }
|
|
|
} else {
|
|
|
- $nowBsEmpLv = EmployLevel::NO_LEVEL_ID;
|
|
|
+ // 如果不是结算月,则找上一期的结算月数据
|
|
|
+ $forwardMonthPeriod = Period::find()
|
|
|
+ ->where('IS_MONTH=1 AND PERIOD_NUM<:PERIOD_NUM', [':PERIOD_NUM'=>$this->_periodNum])
|
|
|
+ ->asArray()
|
|
|
+ ->one();
|
|
|
+ $forwardPeriodNum = $forwardMonthPeriod['PERIOD_NUM'];
|
|
|
+ $blueBsInfo = CalcBonusBS::findOneAsArray(
|
|
|
+ 'PERIOD_NUM=:PERIOD_NUM AND USER_ID=:USER_ID',
|
|
|
+ [':PERIOD_NUM'=>$forwardPeriodNum, ':USER_ID'=>$data['USER_ID']]
|
|
|
+ );
|
|
|
+ if (!empty($blueBsInfo)) {
|
|
|
+ $nowBsEmpLv = $blueBsInfo['LEVEL_ID']; // 当前蓝星奖计算(即管理奖) 的等级
|
|
|
+ } else {
|
|
|
+ $nowBsEmpLv = EmployLevel::NO_LEVEL_ID;
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
// 修改AR_CALC_BONUS的LAST_EMP_LV聘级,修改奖金流水的聘级AR_FLOW_BONUS表的LAST_EMP_LV
|
|
|
// 期结算结果
|
|
|
CalcBonus::updateAll(['LAST_EMP_LV' => $nowBsEmpLv], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
|