$result = 0;
foreach ($adminIds as $admin_id) {
$timetableFactModel = TimetableFactModel::find()->select(['COUNT(*) as total', 'admin_group_id', 'admin_id'])->where(['store_id' => $store_id, 'admin_id' => $admin_id])
- ->andWhere(['between', 'date', $monthStart, $monthEnd])->groupBy(['admin_group_id', 'admin_id'])->asArray()->one();
- $admin = Admin::findOne($timetableFactModel['admin_id']);
+ ->andWhere(['between', 'date', $monthStart, $monthEnd])->groupBy(['admin_group_id', 'admin_id'])->asArray()->all();
+ $total = array_sum(ArrayHelper::getColumn($timetableFactModel, 'total'));
+
+ $admin = Admin::findOne($timetableFactModel[0]['admin_id'] ?? -1);
$work_rate = $admin && $admin->work_rate > 1 ? $admin->work_rate : 1;
- $norma = $timetableFactModel['admin_group_id'] == AdminGroup::GROUP_ADMINISTRATORS && $work_rate == 1 ?
- HtmlHelper::getWorkDays($month, $year) : 15;
- $result += $norma == 0 ? 0 : $timetableFactModel['total'] / $norma;
+ $norma = count($timetableFactModel) == 1 &&
+ ($timetableFactModel[0]['admin_group_id'] ?? -1) == AdminGroup::GROUP_ADMINISTRATORS &&
+ $work_rate == 1 ? HtmlHelper::getWorkDays($month, $year) : 15;
+
+ $result += $norma == 0 ? 0 : $total / $norma;
}
self::saveOrUpdateMotivationValue($motivation->id, 'fact', MotivationCostsItem::CODE_EMPLOYEES_QUANTITY, 'float', $result);
}