]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-105] Подсчёт итогового факта мотивации
authorAlexander Smirnov <fredeom@mail.ru>
Thu, 15 Aug 2024 11:07:10 +0000 (14:07 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Thu, 15 Aug 2024 11:07:10 +0000 (14:07 +0300)
erp24/actions/motivation/IndexAction.php
erp24/services/MotivationService.php

index 5d800c6e97fa3f2cf0282e0f77c15d75e9bca58e..522573e1f5d4273d2179379beed361bda78b0dc9 100644 (file)
@@ -154,7 +154,7 @@ class IndexAction extends Action
                 }
             }
 
-
+            MotivationService::calculateFactFormula($motivationDataTableSort);
 
             // Формируем заголовок для 5-й недели
             if ($model->month == 2) { // Февраль
index 0ada3d5e52587793fd22291d954eac4179dee154..c625230e9cfbd9f748b63e1a3c1e389291a777c7 100644 (file)
@@ -519,4 +519,132 @@ class MotivationService
             }
         }
     }
+
+    public static function calculateFactFormula(&$motivationDataTableSort) {
+        $indMap = [];
+        foreach ($motivationDataTableSort as $ind => $row) {
+            if (!key_exists('name', $row)) {
+                continue;
+            }
+            $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;
+        }
+
+        $j62 = $motivationDataTableSort[$indMap["Чистая прибыль"]]["fact"];
+        $b64 = $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]["plan"];
+
+        $j66 = 0;
+        if ($j62 >= $b64) {
+            $formula = $j62 - $j5 * $motivationDataTableSort[$indMap["Пороговый коэффициент"]]["plan"];
+            if ($formula > 0) {
+                $j66 = $formula;
+            }
+        }
+        $motivationDataTableSort[$indMap["Расчет премии"]]["fact"] = $j66;
+
+    }
 }