]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-105] формула расширена по всем неделям, планам и прогнозу
authorAlexander Smirnov <fredeom@mail.ru>
Fri, 16 Aug 2024 11:17:38 +0000 (14:17 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Fri, 16 Aug 2024 11:17:38 +0000 (14:17 +0300)
erp24/services/MotivationService.php
erp24/views/motivation/index.php

index 27ac49b10f433232ee5abd236e1b052d2dc84056..42fe9eadf75541264df82507c6b031c3b501d260 100644 (file)
@@ -528,123 +528,134 @@ class MotivationService
             }
             $indMap[$row['name']] = $ind;
         }
-        $motivationDataTableSort[$indMap["Продажа товара"]]["fact"] =
-            $motivationDataTableSort[$indMap["Оффлайн продажи"]]["fact"] +
-            $motivationDataTableSort[$indMap["Онлайн продажи"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Прочие услуги"]]["fact"] =
-            $motivationDataTableSort[$indMap["Услуги по сборке"]]["fact"] +
-            $motivationDataTableSort[$indMap["Услуги по доставке"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Выручка от реализации"]]["fact"] =
-            $motivationDataTableSort[$indMap["Продажа товара"]]["fact"] +
-            $motivationDataTableSort[$indMap["Прочие услуги"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Услуги агентов (Расходы на закупку, хранение, доставку товара)"]]["fact"] =
-            (
-                $motivationDataTableSort[$indMap["Стоимость товара"]]["fact"] +
-                $motivationDataTableSort[$indMap["Брак, пересорт"]]["fact"]
-            ) *
-            $motivationDataTableSort[$indMap["Услуги агентов (тариф)"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Брак, пересорт"]]["fact"] =
-            $motivationDataTableSort[$indMap["Брак с поставки"]]["fact"] +
-            $motivationDataTableSort[$indMap["Списание неликвидного товара: порча, истечение срока годности"]]["fact"] +
-            $motivationDataTableSort[$indMap["Брак из-за поломки оборудования"]]["fact"] +
-            $motivationDataTableSort[$indMap["Пересорт"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Прямые расходы на продажу"]]["fact"] =
-            $motivationDataTableSort[$indMap["Стоимость товара"]]["fact"] +
-            $motivationDataTableSort[$indMap["Услуги агентов (Расходы на закупку, хранение, доставку товара)"]]["fact"] +
-            $motivationDataTableSort[$indMap["Брак, пересорт"]]["fact"] +
-            $motivationDataTableSort[$indMap["Расходные материалы (обеспечение продаж)"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Маржинальный доход"]]["fact"] =
-            $motivationDataTableSort[$indMap["Выручка от реализации"]]["fact"] -
-            $motivationDataTableSort[$indMap["Прямые расходы на продажу"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Оплата труда"]]["fact"] =
-            $motivationDataTableSort[$indMap["Фонд оплаты труда персонала"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Содержание помещения"]]["fact"] =
-            $motivationDataTableSort[$indMap["Аренда"]]["fact"] +
-            $motivationDataTableSort[$indMap["Коммунальные услуги"]]["fact"] +
-            $motivationDataTableSort[$indMap["Охрана"]]["fact"] +
-            $motivationDataTableSort[$indMap["Услуги по уборке помещений и территории"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Расходы по доставке"]]["fact"] =
-            $motivationDataTableSort[$indMap["Доставка до клиента курьер"]]["fact"] +
-            $motivationDataTableSort[$indMap["Доставка до клиента такси"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Содержание и обслуживание ОС и НМА"]]["fact"] =
-            $motivationDataTableSort[$indMap["Холодильное оборудование (ремонт, содержание, ТО)"]]["fact"] +
-            $motivationDataTableSort[$indMap["Расходы на содержание и ремонт оргтехники, в т.ч. расходные материалы"]]["fact"] +
-            $motivationDataTableSort[$indMap["Расходы на содержание и ремонт прочих ОС"]]["fact"] +
-            $motivationDataTableSort[$indMap["Техническое обслуживание кассовых аппаратов"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Услуги связи"]]["fact"] =
-            $motivationDataTableSort[$indMap["Интернет"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Прочие операционные расходы"]]["fact"] =
-            $motivationDataTableSort[$indMap["Хозяйственные товары"]]["fact"] +
-            $motivationDataTableSort[$indMap["Канцтовары"]]["fact"] +
-            $motivationDataTableSort[$indMap["Вода питьевая"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Операционные расходы (Себестоимость)"]]["fact"] =
-            $motivationDataTableSort[$indMap["Оплата труда"]]["fact"] +
-            $motivationDataTableSort[$indMap["Содержание помещения"]]["fact"] +
-            $motivationDataTableSort[$indMap["Расходы по доставке"]]["fact"] +
-            $motivationDataTableSort[$indMap["Услуги маркетплейсов"]]["fact"] +
-            $motivationDataTableSort[$indMap["Содержание и обслуживание ОС и НМА"]]["fact"] +
-            $motivationDataTableSort[$indMap["Услуги связи"]]["fact"] +
-            $motivationDataTableSort[$indMap["Прочие операционные расходы"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Валовая прибыль"]]["fact"] =
-            $motivationDataTableSort[$indMap["Маржинальный доход"]]["fact"] -
-            $motivationDataTableSort[$indMap["Операционные расходы (Себестоимость)"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Бухгалтерия и финансы"]]["fact"] =
-            $motivationDataTableSort[$indMap["Бухгалтерские услуги: постановка и ведение БУ и НУ"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Юридическое сопровождение"]]["fact"] =
-            $motivationDataTableSort[$indMap["Юридические услуги"]]["fact"];
-
-        $motivationDataTableSort[$indMap["HR- услуги"]]["fact"] =
-            $motivationDataTableSort[$indMap["Кадровое администрирование, охрана труда"]]["fact"] +
-            $motivationDataTableSort[$indMap["Услуги по подбору персонала"]]["fact"];
-
-        $motivationDataTableSort[$indMap["IT услуги"]]["fact"] =
-            $motivationDataTableSort[$indMap["Администрирование ИТ инфраструктуры (подключения к базам данных, ПО, почта, интернет)"]]["fact"] +
-            $motivationDataTableSort[$indMap["Лицензия на ПО: ERP система"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Общехозяйственные расходы"]]["fact"] =
-            $motivationDataTableSort[$indMap["Бухгалтерия и финансы"]]["fact"] +
-            $motivationDataTableSort[$indMap["Юридическое сопровождение"]]["fact"] +
-            $motivationDataTableSort[$indMap["HR- услуги"]]["fact"] +
-            $motivationDataTableSort[$indMap["IT услуги"]]["fact"] +
-            $motivationDataTableSort[$indMap["Продвижение и продажа товара через сайт"]]["fact"];
-
-        $motivationDataTableSort[$indMap["Чистая прибыль"]]["fact"] =
-            $motivationDataTableSort[$indMap["Валовая прибыль"]]["fact"] -
-            $motivationDataTableSort[$indMap["Общехозяйственные расходы"]]["fact"];
-
-        $j5 = $motivationDataTableSort[$indMap["Выручка от реализации"]]["fact"];
-        if ($j5 != 0) {
-            $motivationDataTableSort[$indMap["Рентабельность по чистой прибыли, %"]]["fact"] =
-                $motivationDataTableSort[$indMap["Чистая прибыль"]]["fact"] / $j5;
-        }
+        foreach (range(0,7) as $ind) {
+            switch ($ind) {
+                case 0: { $column = 'plan'; break; }
+                case 6: { $column = 'fact'; break; }
+                case 7: { $column = 'forecast'; break; }
+                default: { $column = 'week' . $ind; break; }
+            }
+
+            $motivationDataTableSort[$indMap["Продажа товара"]][$column] =
+                $motivationDataTableSort[$indMap["Оффлайн продажи"]][$column] +
+                $motivationDataTableSort[$indMap["Онлайн продажи"]][$column];
+
+            $motivationDataTableSort[$indMap["Прочие услуги"]][$column] =
+                $motivationDataTableSort[$indMap["Услуги по сборке"]][$column] +
+                $motivationDataTableSort[$indMap["Услуги по доставке"]][$column];
+
+            $motivationDataTableSort[$indMap["Выручка от реализации"]][$column] =
+                $motivationDataTableSort[$indMap["Продажа товара"]][$column] +
+                $motivationDataTableSort[$indMap["Прочие услуги"]][$column];
+
+            $motivationDataTableSort[$indMap["Услуги агентов (Расходы на закупку, хранение, доставку товара)"]][$column] =
+                (
+                    $motivationDataTableSort[$indMap["Стоимость товара"]][$column] +
+                    $motivationDataTableSort[$indMap["Брак, пересорт"]][$column]
+                ) *
+                $motivationDataTableSort[$indMap["Услуги агентов (тариф)"]][$column];
+
+            $motivationDataTableSort[$indMap["Брак, пересорт"]][$column] =
+                $motivationDataTableSort[$indMap["Брак с поставки"]][$column] +
+                $motivationDataTableSort[$indMap["Списание неликвидного товара: порча, истечение срока годности"]][$column] +
+                $motivationDataTableSort[$indMap["Брак из-за поломки оборудования"]][$column] +
+                $motivationDataTableSort[$indMap["Пересорт"]][$column];
+
+            $motivationDataTableSort[$indMap["Прямые расходы на продажу"]][$column] =
+                $motivationDataTableSort[$indMap["Стоимость товара"]][$column] +
+                $motivationDataTableSort[$indMap["Услуги агентов (Расходы на закупку, хранение, доставку товара)"]][$column] +
+                $motivationDataTableSort[$indMap["Брак, пересорт"]][$column] +
+                $motivationDataTableSort[$indMap["Расходные материалы (обеспечение продаж)"]][$column];
+
+            $motivationDataTableSort[$indMap["Маржинальный доход"]][$column] =
+                $motivationDataTableSort[$indMap["Выручка от реализации"]][$column] -
+                $motivationDataTableSort[$indMap["Прямые расходы на продажу"]][$column];
+
+            $motivationDataTableSort[$indMap["Оплата труда"]][$column] =
+                $motivationDataTableSort[$indMap["Фонд оплаты труда персонала"]][$column];
+
+            $motivationDataTableSort[$indMap["Содержание помещения"]][$column] =
+                $motivationDataTableSort[$indMap["Аренда"]][$column] +
+                $motivationDataTableSort[$indMap["Коммунальные услуги"]][$column] +
+                $motivationDataTableSort[$indMap["Охрана"]][$column] +
+                $motivationDataTableSort[$indMap["Услуги по уборке помещений и территории"]][$column];
+
+            $motivationDataTableSort[$indMap["Расходы по доставке"]][$column] =
+                $motivationDataTableSort[$indMap["Доставка до клиента курьер"]][$column] +
+                $motivationDataTableSort[$indMap["Доставка до клиента такси"]][$column];
+
+            $motivationDataTableSort[$indMap["Содержание и обслуживание ОС и НМА"]][$column] =
+                $motivationDataTableSort[$indMap["Холодильное оборудование (ремонт, содержание, ТО)"]][$column] +
+                $motivationDataTableSort[$indMap["Расходы на содержание и ремонт оргтехники, в т.ч. расходные материалы"]][$column] +
+                $motivationDataTableSort[$indMap["Расходы на содержание и ремонт прочих ОС"]][$column] +
+                $motivationDataTableSort[$indMap["Техническое обслуживание кассовых аппаратов"]][$column];
+
+            $motivationDataTableSort[$indMap["Услуги связи"]][$column] =
+                $motivationDataTableSort[$indMap["Интернет"]][$column];
+
+            $motivationDataTableSort[$indMap["Прочие операционные расходы"]][$column] =
+                $motivationDataTableSort[$indMap["Хозяйственные товары"]][$column] +
+                $motivationDataTableSort[$indMap["Канцтовары"]][$column] +
+                $motivationDataTableSort[$indMap["Вода питьевая"]][$column];
+
+            $motivationDataTableSort[$indMap["Операционные расходы (Себестоимость)"]][$column] =
+                $motivationDataTableSort[$indMap["Оплата труда"]][$column] +
+                $motivationDataTableSort[$indMap["Содержание помещения"]][$column] +
+                $motivationDataTableSort[$indMap["Расходы по доставке"]][$column] +
+                $motivationDataTableSort[$indMap["Услуги маркетплейсов"]][$column] +
+                $motivationDataTableSort[$indMap["Содержание и обслуживание ОС и НМА"]][$column] +
+                $motivationDataTableSort[$indMap["Услуги связи"]][$column] +
+                $motivationDataTableSort[$indMap["Прочие операционные расходы"]][$column];
+
+            $motivationDataTableSort[$indMap["Валовая прибыль"]][$column] =
+                $motivationDataTableSort[$indMap["Маржинальный доход"]][$column] -
+                $motivationDataTableSort[$indMap["Операционные расходы (Себестоимость)"]][$column];
+
+            $motivationDataTableSort[$indMap["Бухгалтерия и финансы"]][$column] =
+                $motivationDataTableSort[$indMap["Бухгалтерские услуги: постановка и ведение БУ и НУ"]][$column];
+
+            $motivationDataTableSort[$indMap["Юридическое сопровождение"]][$column] =
+                $motivationDataTableSort[$indMap["Юридические услуги"]][$column];
+
+            $motivationDataTableSort[$indMap["HR- услуги"]][$column] =
+                $motivationDataTableSort[$indMap["Кадровое администрирование, охрана труда"]][$column] +
+                $motivationDataTableSort[$indMap["Услуги по подбору персонала"]][$column];
+
+            $motivationDataTableSort[$indMap["IT услуги"]][$column] =
+                $motivationDataTableSort[$indMap["Администрирование ИТ инфраструктуры (подключения к базам данных, ПО, почта, интернет)"]][$column] +
+                $motivationDataTableSort[$indMap["Лицензия на ПО: ERP система"]][$column];
+
+            $motivationDataTableSort[$indMap["Общехозяйственные расходы"]][$column] =
+                $motivationDataTableSort[$indMap["Бухгалтерия и финансы"]][$column] +
+                $motivationDataTableSort[$indMap["Юридическое сопровождение"]][$column] +
+                $motivationDataTableSort[$indMap["HR- услуги"]][$column] +
+                $motivationDataTableSort[$indMap["IT услуги"]][$column] +
+                $motivationDataTableSort[$indMap["Продвижение и продажа товара через сайт"]][$column];
+
+            $motivationDataTableSort[$indMap["Чистая прибыль"]][$column] =
+                $motivationDataTableSort[$indMap["Валовая прибыль"]][$column] -
+                $motivationDataTableSort[$indMap["Общехозяйственные расходы"]][$column];
+
+            $c5 = $motivationDataTableSort[$indMap["Выручка от реализации"]][$column];
+            if ($c5 != 0) {
+                $motivationDataTableSort[$indMap["Рентабельность по чистой прибыли, %"]][$column] =
+                    $motivationDataTableSort[$indMap["Чистая прибыль"]][$column] / $c5;
+            }
 
-        $j62 = $motivationDataTableSort[$indMap["Чистая прибыль"]]["fact"];
-        $b64 = $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]["plan"];
+            if ($ind > 0) {
+                $c62 = $motivationDataTableSort[$indMap["Чистая прибыль"]][$column];
+                $b64 = $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$ind == 6 ? "plan" : $column];
 
-        $j66 = 0;
-        if ($j62 >= $b64) {
-            $formula = $j62 - $j5 * $motivationDataTableSort[$indMap["Пороговый коэффициент"]]["plan"];
-            if ($formula > 0) {
-                $j66 = $formula;
+                $j66 = 0;
+                if ($c62 >= $b64) {
+                    $formula = $c62 - $c5 * $motivationDataTableSort[$indMap["Пороговый коэффициент"]]["plan"];
+                    if ($formula > 0) {
+                        $j66 = $formula;
+                    }
+                }
+                $motivationDataTableSort[$indMap["Расчет премии"]][$column] = $j66;
             }
         }
-        $motivationDataTableSort[$indMap["Расчет премии"]]["fact"] = $j66;
 
         // Отклонение
         $deviationFunc = function ($name) use(&$motivationDataTableSort, &$indMap) {
index 38386efcadefcf479a0a223c760884edfa182d43..4872d8042e1a65284dfffb07e2583d43d767d584 100644 (file)
@@ -247,7 +247,7 @@ $this->registerJsFile('/js/motivation/index.js', ['position' => \yii\web\View::P
                             'header' => 'Отклонение, %',
                             'value' => function ($model) {
                                 if ($model["deviation"] !== null) {
-                                    return Yii::$app->formatter->asDecimal($model["deviation"], 2);
+                                    return Yii::$app->formatter->asDecimal($model["deviation"] * 100, 2) . "%";
                                 } else {
                                     return " ";
                                 }