]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-105] Добавлена формула расчёта Минимальный порог Чистой прибыли, руб., убран...
authorAlexander Smirnov <fredeom@mail.ru>
Thu, 22 Aug 2024 10:59:19 +0000 (13:59 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Thu, 22 Aug 2024 10:59:19 +0000 (13:59 +0300)
erp24/actions/motivation/IndexAction.php
erp24/services/MotivationService.php

index f46eb678a270a2b2af475dbf611ece8742fb6887..a74a1e67acfbda89866fd209042d9620fd86247f 100644 (file)
@@ -161,7 +161,7 @@ class IndexAction extends Action
                 }
             }
 
-            MotivationService::calculateFactFormula($motivationDataTableSort);
+            MotivationService::calculateFactFormula($motivationDataTableSort, $model->year, $model->month);
 
             // Формируем заголовок для 5-й недели
             if ($model->month == 2) { // Февраль
index ee89be774e7f653e485df77d2e0156f445e71220..178865491a5fd9fc2b73779d4734c18d843ea64b 100644 (file)
@@ -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["РаÑ\81Ñ\87еÑ\82 Ð¿Ñ\80емии"]][$column] = $j66 + 0;
+                $motivationDataTableSort[$indMap["Ð\9cинималÑ\8cнÑ\8bй Ð¿Ð¾Ñ\80ог Ð§Ð¸Ñ\81Ñ\82ой Ð¿Ñ\80ибÑ\8bли, Ñ\80Ñ\83б."]]["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;
+//            }
         }
 
         // Отклонение