From 87967eb73fc5a84393aa2824dc0a0bb1853651ee Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Thu, 22 Aug 2024 13:59:19 +0300 Subject: [PATCH] =?utf8?q?[ERP-105]=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?utf8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D1=83=D0=BB=D0=B0?= =?utf8?q?=20=D1=80=D0=B0=D1=81=D1=87=D1=91=D1=82=D0=B0=20=D0=9C=D0=B8?= =?utf8?q?=D0=BD=D0=B8=D0=BC=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BF?= =?utf8?q?=D0=BE=D1=80=D0=BE=D0=B3=20=D0=A7=D0=B8=D1=81=D1=82=D0=BE=D0=B9?= =?utf8?q?=20=D0=BF=D1=80=D0=B8=D0=B1=D1=8B=D0=BB=D0=B8,=20=D1=80=D1=83?= =?utf8?q?=D0=B1.,=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=20=D0=A0=D0=B0=D1=81?= =?utf8?q?=D1=87=D0=B5=D1=82=20=D0=BF=D1=80=D0=B5=D0=BC=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/actions/motivation/IndexAction.php | 2 +- erp24/services/MotivationService.php | 52 ++++++++++++++++++------ 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/erp24/actions/motivation/IndexAction.php b/erp24/actions/motivation/IndexAction.php index f46eb678..a74a1e67 100644 --- a/erp24/actions/motivation/IndexAction.php +++ b/erp24/actions/motivation/IndexAction.php @@ -161,7 +161,7 @@ class IndexAction extends Action } } - MotivationService::calculateFactFormula($motivationDataTableSort); + MotivationService::calculateFactFormula($motivationDataTableSort, $model->year, $model->month); // Формируем заголовок для 5-й недели if ($model->month == 2) { // Февраль diff --git a/erp24/services/MotivationService.php b/erp24/services/MotivationService.php index ee89be77..17886549 100644 --- a/erp24/services/MotivationService.php +++ b/erp24/services/MotivationService.php @@ -1009,7 +1009,10 @@ class MotivationService return $weeks; } - public static function calculateFactFormula(&$motivationDataTableSort) { + public static function calculateFactFormula(&$motivationDataTableSort, $year, $month) { + // Определяем последний день месяца + $lastDayOfMonth = date('t', strtotime("$year-$month-01")); + $indMap = []; foreach ($motivationDataTableSort as $ind => $row) { if (!key_exists('name', $row)) { @@ -1134,19 +1137,44 @@ class MotivationService $motivationDataTableSort[$indMap["Чистая прибыль"]][$column] / $c5; } - if ($ind > 0) { - $c62 = $motivationDataTableSort[$indMap["Чистая прибыль"]][$column]; - $b64 = $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$ind == 6 ? "plan" : $column]; - - $j66 = 0; - if ($c62 >= $b64) { - $formula = $c62 - $c5 * $motivationDataTableSort[$indMap["Пороговый коэффициент"]]["plan"]; - if ($formula > 0) { - $j66 = $formula; - } + if ($ind == 0) { + $b62 = $motivationDataTableSort[$indMap["Чистая прибыль"]]["plan"]; + if ($b62 > 0) { + $b64 = $b62 * 0.9; + } else { + $b64 = $b62 * 1.1; } - $motivationDataTableSort[$indMap["Расчет премии"]][$column] = $j66 + 0; + $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]["plan"] = $b64; } + if ($ind >= 1 && $ind <= 4) { + $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$column] = + $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]["plan"] / $lastDayOfMonth * 7; + } + if ($ind == 5) { + $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$column] = + $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]["plan"] / $lastDayOfMonth * ($lastDayOfMonth - 4 * 7); + } + if ($ind == 7) { + $sum = 0; + foreach (range(1, 5) as $index) { + $sum += $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]['week' . $index]; + } + $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$column] = $sum; + } + +// if ($ind > 0) { +// $c62 = $motivationDataTableSort[$indMap["Чистая прибыль"]][$column]; +// $b64 = $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$ind == 6 ? "plan" : $column]; +// +// $j66 = 0; +// if ($c62 >= $b64) { +// $formula = $c62 - $c5 * $motivationDataTableSort[$indMap["Пороговый коэффициент"]]["plan"]; +// if ($formula > 0) { +// $j66 = $formula; +// } +// } +// $motivationDataTableSort[$indMap["Расчет премии"]][$column] = $j66 + 0; +// } } // Отклонение -- 2.39.5