From 30de8407cf902cb0bb8048a56ce2acfd91334c9f Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Fri, 16 Aug 2024 14:17:38 +0300 Subject: [PATCH] =?utf8?q?[ERP-105]=20=D1=84=D0=BE=D1=80=D0=BC=D1=83=D0=BB?= =?utf8?q?=D0=B0=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5=D0=BD=D0=B0?= =?utf8?q?=20=D0=BF=D0=BE=20=D0=B2=D1=81=D0=B5=D0=BC=20=D0=BD=D0=B5=D0=B4?= =?utf8?q?=D0=B5=D0=BB=D1=8F=D0=BC,=20=D0=BF=D0=BB=D0=B0=D0=BD=D0=B0=D0=BC?= =?utf8?q?=20=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B3=D0=BD=D0=BE=D0=B7=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/services/MotivationService.php | 237 ++++++++++++++------------- erp24/views/motivation/index.php | 2 +- 2 files changed, 125 insertions(+), 114 deletions(-) diff --git a/erp24/services/MotivationService.php b/erp24/services/MotivationService.php index 27ac49b1..42fe9ead 100644 --- a/erp24/services/MotivationService.php +++ b/erp24/services/MotivationService.php @@ -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) { diff --git a/erp24/views/motivation/index.php b/erp24/views/motivation/index.php index 38386efc..4872d804 100644 --- a/erp24/views/motivation/index.php +++ b/erp24/views/motivation/index.php @@ -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 " "; } -- 2.39.5