|
|
@@ -80,8 +80,8 @@ class Period extends \common\components\ActiveRecord
|
|
|
{
|
|
|
return [
|
|
|
[['PERIOD_NUM', 'CALC_MONTH', 'CALC_YEAR', 'START_TIME', 'END_TIME', 'CREATED_AT'], 'required'],
|
|
|
- [['PERIOD_NUM', 'CALC_MONTH', 'CALC_YEAR', 'START_TIME', 'END_TIME', 'IS_MONTH', 'IS_YEAR', 'IS_PERFED', 'IS_CALCULATED', 'IS_SENT', 'IS_PERFING', 'IS_CALCING', 'IS_SENDING', 'CALC_PERCENT', 'SENT_PERCENT', 'CLOSED_AT', 'PERF_STARTED_AT', 'PERFED_AT', 'CALCULATE_STARTED_AT', 'CALCULATED_AT','CREATED_AT'], 'integer'],
|
|
|
- [['ID', 'PERF_ADMIN_ID', 'CLOSE_ADMIN_ID', 'CALC_ADMIN_ID', 'SENT_ADMIN_ID'], 'string', 'max' => 32],
|
|
|
+ [['PERIOD_NUM', 'CALC_MONTH', 'CALC_YEAR', 'START_TIME', 'END_TIME', 'IS_MONTH', 'IS_YEAR', 'IS_PERFED', 'IS_CALCULATED', 'IS_SENT', 'IS_PERFING', 'IS_CALCING', 'CALC_PERCENT', 'CLOSED_AT', 'PERF_STARTED_AT', 'PERFED_AT', 'CALCULATE_STARTED_AT', 'CALCULATED_AT','CREATED_AT'], 'integer'],
|
|
|
+ [['ID'], 'string', 'max' => 32],
|
|
|
[['PERIOD_NUM'], 'unique'],
|
|
|
[['ID'], 'unique'],
|
|
|
];
|
|
|
@@ -101,26 +101,16 @@ class Period extends \common\components\ActiveRecord
|
|
|
'END_TIME' => '期数结束时间戳',
|
|
|
'IS_MONTH' => '是否结算月节点',
|
|
|
'IS_YEAR' => '是否结算年节点',
|
|
|
- 'IS_CLOSED' => '是否已封期',
|
|
|
'IS_PERFED' => '是否已生成业绩单',
|
|
|
'IS_CALCULATED' => '是否已结算',
|
|
|
- 'IS_SENT' => '是否已发放',
|
|
|
'IS_PERFING' => '是否正在生成业绩单',
|
|
|
'IS_CALCING' => '是否正在计算状态',
|
|
|
- 'IS_SENDING' => '是否正在挂网状态',
|
|
|
'CALC_PERCENT' => '结算进度',
|
|
|
- 'SENT_PERCENT' => '发放进度',
|
|
|
- 'PERF_ADMIN_ID' => '生成业绩单管理员',
|
|
|
- 'CLOSE_ADMIN_ID' => '手动封期管理员ID',
|
|
|
- 'CALC_ADMIN_ID' => '结算管理员ID',
|
|
|
- 'SENT_ADMIN_ID' => '发放管理员ID',
|
|
|
'CLOSED_AT' => '发放管理员ID',
|
|
|
'PERF_STARTED_AT' => '生成业绩单开始时间',
|
|
|
'PERFED_AT' => '生成业绩单结束时间',
|
|
|
'CALCULATE_STARTED_AT' => '结算开始时间',
|
|
|
'CALCULATED_AT' => '结算完成时间',
|
|
|
- 'SEND_STARTED_AT' => '发放开始时间',
|
|
|
- 'SENT_AT' => '发放完成时间',
|
|
|
'CREATED_AT' => '创建时间',
|
|
|
];
|
|
|
}
|
|
|
@@ -173,19 +163,6 @@ class Period extends \common\components\ActiveRecord
|
|
|
return static::find()->where(['PERIOD_NUM'=>$periodNum])->exists();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 获取当前未封期的最小期数
|
|
|
- * @return int
|
|
|
- */
|
|
|
- public function getNowPeriodNum(){
|
|
|
- $this->setPeriodNum();
|
|
|
- if($this->nowPeriodArr){
|
|
|
- return $this->nowPeriodArr['PERIOD_NUM'];
|
|
|
- } else {
|
|
|
- return self::SYSTEM_START_PERIOD_NUM;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 获取当前期的开始时间
|
|
|
* @return int
|
|
|
@@ -336,20 +313,6 @@ class Period extends \common\components\ActiveRecord
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 获取挂网的最大期数
|
|
|
- * @return int
|
|
|
- */
|
|
|
- public function getMaxIsSentPeriodNum() {
|
|
|
- $maxIsSentData = static::find()->where('IS_SENT=1')->orderBy('PERIOD_NUM DESC')->asArray()->one();
|
|
|
- $maxIsSentPeriodNum = self::SYSTEM_START_PERIOD_NUM;
|
|
|
- if( $maxIsSentData && $maxIsSentData["PERIOD_NUM"] ) {
|
|
|
- $maxIsSentPeriodNum = $maxIsSentData["PERIOD_NUM"];
|
|
|
- }
|
|
|
-
|
|
|
- return $maxIsSentPeriodNum;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 返回所传结算月包含的所有期数
|
|
|
* @param $year
|
|
|
@@ -404,184 +367,6 @@ class Period extends \common\components\ActiveRecord
|
|
|
else return null;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 是否已经封期
|
|
|
- * @param $periodNum
|
|
|
- * @return bool
|
|
|
- * @throws Exception
|
|
|
- */
|
|
|
- public function isClosed($periodNum = null){
|
|
|
- $period = $this->setPeriodNum($periodNum);
|
|
|
- if($period){
|
|
|
- return boolval($period['IS_CLOSED']);
|
|
|
- } else {
|
|
|
- throw new Exception('期数不存在');
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否已经生成业绩单
|
|
|
- * @param $periodNum
|
|
|
- * @return bool
|
|
|
- * @throws Exception
|
|
|
- */
|
|
|
- public function isPerfed($periodNum = null){
|
|
|
- $period = $this->setPeriodNum($periodNum);
|
|
|
- if($period){
|
|
|
- return boolval($period['IS_PERFED']);
|
|
|
- } else {
|
|
|
- throw new Exception('期数不存在');
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否已结算
|
|
|
- * @param null $periodNum
|
|
|
- * @return bool
|
|
|
- * @throws Exception
|
|
|
- */
|
|
|
- public function isCalculated($periodNum = null){
|
|
|
- $period = $this->setPeriodNum($periodNum);
|
|
|
- if($period){
|
|
|
- return boolval($period['IS_CALCULATED'] == self::CALCULATE_FINISH);
|
|
|
- } else {
|
|
|
- throw new Exception('期数不存在');
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否可被封期
|
|
|
- * @param $periodNum
|
|
|
- * @return bool
|
|
|
- */
|
|
|
- public function isCanClose($periodNum = null){
|
|
|
- $period = $this->setPeriodNum($periodNum);
|
|
|
- if($period['IS_CLOSED']){
|
|
|
- return false;
|
|
|
- }
|
|
|
- $previousPeriod = static::findOne(['PERIOD_NUM'=>$this->periodNum-1]);
|
|
|
- if($previousPeriod){
|
|
|
- if(!$previousPeriod['IS_CLOSED']){
|
|
|
- return false;
|
|
|
- }
|
|
|
- // 只要上期封期了,下期就可以封期
|
|
|
-// if(!$previousPeriod['IS_CALCULATED']){
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-// if(!$previousPeriod['IS_SENT']){
|
|
|
-// return false;
|
|
|
-// }
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否可以生成业绩单
|
|
|
- * @param $periodNum
|
|
|
- * @return bool
|
|
|
- */
|
|
|
- public function isCanPerf($periodNum = null){
|
|
|
- $period = $this->setPeriodNum($periodNum);
|
|
|
- // 查看该期是否已经封期
|
|
|
- if(!$period['IS_CLOSED']){
|
|
|
- return false;
|
|
|
- }
|
|
|
- // 已经挂网,不能生成业绩单
|
|
|
- if($period['IS_SENT'] == self::SEND_FINISH){
|
|
|
- return false;
|
|
|
- }
|
|
|
- //上1期奖金未发放,限制不能生成业绩单
|
|
|
- if(!$this->isLastSent($this->periodNum)){
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否可以结算
|
|
|
- * @param $periodNum
|
|
|
- * @return bool
|
|
|
- */
|
|
|
- public function isCanCalc($periodNum = null){
|
|
|
- $period = $this->setPeriodNum($periodNum);
|
|
|
- // 查看该期是否已经封期
|
|
|
- if(!$period['IS_CLOSED']){
|
|
|
- return false;
|
|
|
- }
|
|
|
- // 还没有生成业绩单,不能封期
|
|
|
- if(!$period['IS_PERFED'] || $period['IS_PERFED'] == self::PERF_FAIL){
|
|
|
- return false;
|
|
|
- }
|
|
|
- if($period['IS_SENT'] == self::SEND_FINISH){
|
|
|
- return false;
|
|
|
- }
|
|
|
-// $previousPeriod = static::findOneAsArray(['PERIOD_NUM'=>$this->periodNum-1]);
|
|
|
-// if($previousPeriod){
|
|
|
-// // 查看上一期是否已经挂网,上一期挂网了,本期才能结算
|
|
|
-// if(!$previousPeriod['IS_SENT']){
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-// }
|
|
|
- //上1期奖金未发放,限制不能结算
|
|
|
- if(!$this->isLastSent($this->periodNum)){
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否可以挂网
|
|
|
- * @param $periodNum
|
|
|
- * @return bool
|
|
|
- */
|
|
|
- public function isCanSend($periodNum = null){
|
|
|
- $period = $this->setPeriodNum($periodNum);
|
|
|
- if(!$period['IS_CLOSED']){
|
|
|
- return false;
|
|
|
- }
|
|
|
- if(!$period['IS_CALCULATED'] || $period['IS_CALCULATED'] == self::CALCULATE_FAIL){
|
|
|
- return false;
|
|
|
- }
|
|
|
- if($period['IS_SENT'] == self::SEND_FINISH){
|
|
|
- return false;
|
|
|
- }
|
|
|
- //上1期奖金未发放,限制不能挂网
|
|
|
- if(!$this->isLastSent($this->periodNum)){
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否已经挂网
|
|
|
- * @param $periodNum
|
|
|
- * @return bool
|
|
|
- */
|
|
|
- public function isSent($periodNum = null){
|
|
|
- $period = $this->setPeriodNum($periodNum);
|
|
|
- if($period['IS_SENT'] == self::SEND_FINISH) return true;
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 上期是否挂网
|
|
|
- * @param null $periodNum
|
|
|
- * @return bool
|
|
|
- */
|
|
|
- public function isLastSent($periodNum){
|
|
|
- $period = $this->setPeriodNum($periodNum-1);
|
|
|
- if ($period) {
|
|
|
- if($period['IS_SENT'] == self::SEND_FINISH) {
|
|
|
- return true;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
// 奖金计算,更新业绩表,进度百分比
|
|
|
public static function updatePercent($percent, $periodNum) {
|
|
|
$result = Period::updateAll(
|