From: Alexander Smirnov Date: Tue, 1 Oct 2024 12:35:09 +0000 (+0300) Subject: [ERP-187] исправлен баг в подсчёте числа рабочих дней + при смене должности норма... X-Git-Tag: 1.6~38^2~2 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=2f7350aa548c1661015c063860759d374e49d157;p=erp24_rep%2Fyii-erp24%2F.git [ERP-187] исправлен баг в подсчёте числа рабочих дней + при смене должности норма автоматом 15 --- diff --git a/erp24/helpers/HtmlHelper.php b/erp24/helpers/HtmlHelper.php index 0d68bcb2..b5f8b591 100755 --- a/erp24/helpers/HtmlHelper.php +++ b/erp24/helpers/HtmlHelper.php @@ -165,6 +165,9 @@ class HtmlHelper public static function getWorkDays($m, $y): int { + if ($m < 10) { + $m = '0' . $m; + } $firstDay = date($y . "-" . $m . '-01'); $lastDay = date($y . "-" . $m . '-t', strtotime($firstDay)); $cntWorkDays = 0; diff --git a/erp24/services/MotivationService.php b/erp24/services/MotivationService.php index 1c63ef67..8fb5fbb6 100644 --- a/erp24/services/MotivationService.php +++ b/erp24/services/MotivationService.php @@ -772,12 +772,16 @@ class MotivationService $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); }