From fd5bdff6bff30c9c3f02154f264e9836d1f8624d Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Wed, 28 Aug 2024 15:08:23 +0300 Subject: [PATCH] =?utf8?q?[ERP-105]=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?utf8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=B4?= =?utf8?q?=D0=BE=D0=B2=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BD?= =?utf8?q?=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/actions/motivation/IndexAction.php | 2 +- erp24/services/MotivationService.php | 475 +++++++++++++---------- 2 files changed, 272 insertions(+), 205 deletions(-) diff --git a/erp24/actions/motivation/IndexAction.php b/erp24/actions/motivation/IndexAction.php index a74a1e67..44045ba2 100644 --- a/erp24/actions/motivation/IndexAction.php +++ b/erp24/actions/motivation/IndexAction.php @@ -161,7 +161,7 @@ class IndexAction extends Action } } - MotivationService::calculateFactFormula($motivationDataTableSort, $model->year, $model->month); + $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 17886549..4ad0b00a 100644 --- a/erp24/services/MotivationService.php +++ b/erp24/services/MotivationService.php @@ -28,34 +28,99 @@ use yii_app\records\EmployeePayment; class MotivationService { + const CODE_OFFLINE_SALES = 1; + const CODE_ONLINE_SALES = 2; + const CODE_ASSEMBLY_SERVICES = 3; + const CODE_DELIVERY_SERVICES = 4; + const CODE_DELIVERY_DEFECTS = 6; + const CODE_WRITE_OFF_ILLIQUID_GOODS_SPOOLAGE_EXPIRATION_OF_SHELF_LIFE = 7; + const CODE_EQUIPMENT_FAILURE_DEFECT = 8; + const CODE_REGRADING = 9; + const CODE_CONSUMABLES_SALES_SUPPORT = 10; + const CODE_RENT = 12; + const CODE_PUBLIC_SERVICES = 13; + const CODE_SECURITY = 14; + const CODE_CLEANING_SERVICES_FOR_PREMISES_AND_TERRITORY = 15; + const CODE_DELIVERY_TO_CLIENT_CURRIER = 16; + const CODE_DELIVERY_TO_CLIENT_TAXI = 17; + const CODE_MARKETPLACE_SERVICES = 18; + const CODE_REFRIGERATION_EQUIPMENT_REPAIR_MAINTANANCE = 19; + const CODE_COSTS_FOR_MAINTENANCE_AND_REPAIR_OF_OFFICE_EQUIPMENT_INCLUDING_CONSUMABLES = 20; + const CODE_EXPENSES_FOR_MAINENANCE_AND_REPAIR_OF_OTHER_FIXED_ASSETS = 21; + const CODE_MAINTENANCE_OF_CASH_REGISTERS = 22; + const CODE_INTERNET = 23; + const CODE_HOUSEHOLD_GOODS = 24; + const CODE_STATIONARY = 25; + const CODE_ACCOUNTING_SERVICES_SETTING_UP_AND_MAINTAINING_ACCOUNTING_AND_TAX_RECORDS = 27; + const CODE_LEGAL_SERVICES = 28; + const CODE_PERSONAL_ADMINISTRATION_LABOR_PROTECTION = 29; + const CODE_RECRUITMENT_SERVICES = 30; + const CODE_ADMINISTRATION_OF_IT_INFRASTRUCTURE_CONNECTIONS_TO_DATABASES_SOFTWARE_MAIL_INTERNET = 31; + const CODE_SOFTWARE_LICENSE_ERP_SYSTEM = 32; + const CODE_PROMOTION_AND_SALE_OF_GOODS_THROUGH_THE_WEBSITE = 33; + const CODE_PERSONAL_ADMINISTRATION_LABOR_PROTECTION_TARIFF = 36; + const CODE_BASE_BONUS = 37; + const CODE_BONUS_SIZE = 38; + const CODE_AGENT_SERVICES_TARIFF = 35; + const CODE_NUMBER_OF_EMPLOYEES = 34; + const CODE_PAYROLL_FUND = 11; + const CODE_THRESHOLD_COEFFICIENT = 39; + const CODE_DRINKING_WATER = 26; + const CODE_COSTS_OF_GOODS = 5; + + const CODE_REVENUE_FROM_SALES = 1001; + const CODE_SALE_OF_GOODS = 1002; + const CODE_OTHER_SERVICES = 1003; + const CODE_DIRECT_SELLING_COSTS = 1004; + const CODE_COST_PRICE_OF_GOODS = 1005; + const CODE_AGENT_SERVICES_EXPENSES_FOR_PURCHASING_STORING_DELIVERING_GOODS = 1006; + const CODE_DEFECT_RESORTING = 1007; + const CODE_MARGINAL_INCOME = 1008; + const CODE_OPERATIONAL_EXPANSES_COST = 1009; + const CODE_PAYMENT = 1010; + const CODE_MAINTENANCE_OF_PRIMISES = 1011; + const CODE_DELIVERY_COST = 1012; + const CODE_MAINTENANCE_AND_SERVICE_OF_FIXED_ASSETS_AND_INTANGIBLE_ASSETS = 1013; + const CODE_COMMUNICATION_SERVICES = 1014; + const CODE_OTHER_OPERATING_EXPENSES = 1015; + const CODE_GROSS_PROFIT = 1016; + const CODE_GENERAL_BUSINESS_EXPENSES = 1017; + const CODE_ACCOUNTING_AND_FINANCE = 1018; + const CODE_LEGAL_SUPPORT = 1019; + const CODE_HR_SERVICES = 1020; + const CODE_IT_SERVICES = 1021; + const CODE_NET_PROFIT = 1022; + const CODE_NET_PROFIT_MARGIN_PERCENT = 1023; + const CODE_NET_PROFIT_THRESHOLD_RUB = 1024; + const CODE_CALCULATION_OF_PREMIUM = 1025; // 6. Создание массива дополнительных элементов static $additionalItems = [ - 80 => ['name' => 'Выручка от реализации'], - 90 => ['name' => 'Продажа товара'], - 115 => ['name' => 'Прочие услуги'], - 135 => ['name' => 'Прямые расходы на продажу'], - 139 => ['name' => 'Себестоимость товара'], - 143 => ['name' => 'Услуги агентов (Расходы на закупку, хранение, доставку товара)'], - 146 => ['name' => 'Брак, пересорт'], - 192 => ['name' => 'Маржинальный доход'], - 194 => ['name' => 'Операционные расходы (Себестоимость)'], - 196 => ['name' => 'Оплата труда'], - 205 => ['name' => 'Содержание помещения'], - 245 => ['name' => 'Расходы по доставке'], - 275 => ['name' => 'Содержание и обслуживание ОС и НМА'], - 315 => ['name' => 'Услуги связи'], - 325 => ['name' => 'Прочие операционные расходы'], - 353 => ['name' => 'Валовая прибыль'], - 355 => ['name' => 'Общехозяйственные расходы'], - 357 => ['name' => 'Бухгалтерия и финансы'], - 365 => ['name' => 'Юридическое сопровождение'], - 375 => ['name' => 'HR- услуги'], - 395 => ['name' => 'IT услуги'], - 425 => ['name' => 'Чистая прибыль'], - 427 => ['name' => 'Рентабельность по чистой прибыли, %'], - 428 => ['name' => 'Минимальный порог Чистой прибыли, руб.'], - 435 => ['name' => 'Расчет премии'] + 80 => ['name' => 'Выручка от реализации', 'code' => self::CODE_REVENUE_FROM_SALES], + 90 => ['name' => 'Продажа товара', 'code' => self::CODE_SALE_OF_GOODS], + 115 => ['name' => 'Прочие услуги', 'code' => self::CODE_OTHER_SERVICES], + 135 => ['name' => 'Прямые расходы на продажу', 'code' => self::CODE_DIRECT_SELLING_COSTS], + 139 => ['name' => 'Себестоимость товара', 'code' => self::CODE_COST_PRICE_OF_GOODS], + 143 => ['name' => 'Услуги агентов (Расходы на закупку, хранение, доставку товара)', 'code' => self::CODE_AGENT_SERVICES_EXPENSES_FOR_PURCHASING_STORING_DELIVERING_GOODS], + 146 => ['name' => 'Брак, пересорт', 'code' => self::CODE_DEFECT_RESORTING], + 192 => ['name' => 'Маржинальный доход', 'code' => self::CODE_MARGINAL_INCOME], + 194 => ['name' => 'Операционные расходы (Себестоимость)', 'code' => self::CODE_OPERATIONAL_EXPANSES_COST], + 196 => ['name' => 'Оплата труда', 'code' => self::CODE_PAYMENT], + 205 => ['name' => 'Содержание помещения', 'code' => self::CODE_MAINTENANCE_OF_PRIMISES], + 245 => ['name' => 'Расходы по доставке', 'code' => self::CODE_DELIVERY_COST], + 275 => ['name' => 'Содержание и обслуживание ОС и НМА', 'code' => self::CODE_MAINTENANCE_AND_SERVICE_OF_FIXED_ASSETS_AND_INTANGIBLE_ASSETS], + 315 => ['name' => 'Услуги связи', 'code' => self::CODE_COMMUNICATION_SERVICES], + 325 => ['name' => 'Прочие операционные расходы', 'code' => self::CODE_OTHER_OPERATING_EXPENSES], + 353 => ['name' => 'Валовая прибыль', 'code' => self::CODE_GROSS_PROFIT], + 355 => ['name' => 'Общехозяйственные расходы', 'code' => self::CODE_GENERAL_BUSINESS_EXPENSES], + 357 => ['name' => 'Бухгалтерия и финансы', 'code' => self::CODE_ACCOUNTING_AND_FINANCE], + 365 => ['name' => 'Юридическое сопровождение', 'code' => self::CODE_LEGAL_SUPPORT], + 375 => ['name' => 'HR- услуги', 'code' => self::CODE_HR_SERVICES], + 395 => ['name' => 'IT услуги', 'code' => self::CODE_IT_SERVICES], + 425 => ['name' => 'Чистая прибыль', 'code' => self::CODE_NET_PROFIT], + 427 => ['name' => 'Рентабельность по чистой прибыли, %', 'code' => self::CODE_NET_PROFIT_MARGIN_PERCENT], + 428 => ['name' => 'Минимальный порог Чистой прибыли, руб.', 'code' => self::CODE_NET_PROFIT_THRESHOLD_RUB], + 435 => ['name' => 'Расчет премии', 'code' => self::CODE_CALCULATION_OF_PREMIUM] ]; // Код из таблицы MotivationCostsItem строки - Фонд оплаты труда персонала @@ -1009,16 +1074,16 @@ class MotivationService return $weeks; } - public static function calculateFactFormula(&$motivationDataTableSort, $year, $month) { + 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)) { + if (!key_exists('code', $row)) { continue; } - $indMap[$row['name']] = $ind; + $indMap[intval($row['code'])] = $ind; } foreach (range(0,7) as $ind) { switch ($ind) { @@ -1028,222 +1093,224 @@ class MotivationService default: { $column = 'week' . $ind; break; } } - $motivationDataTableSort[$indMap["Продажа товара"]][$column] = - $motivationDataTableSort[$indMap["Оффлайн продажи"]][$column] + - $motivationDataTableSort[$indMap["Онлайн продажи"]][$column] + 0; + $motivationDataTableSort[$indMap[self::CODE_SALE_OF_GOODS]][$column] = // "Продажа товара" + $motivationDataTableSort[$indMap[self::CODE_OFFLINE_SALES]][$column] + // "Оффлайн продажи" + $motivationDataTableSort[$indMap[self::CODE_ONLINE_SALES]][$column] + 0; // "Онлайн продажи" - $motivationDataTableSort[$indMap["Прочие услуги"]][$column] = - $motivationDataTableSort[$indMap["Услуги по сборке"]][$column] + - $motivationDataTableSort[$indMap["Услуги по доставке"]][$column] + 0; + $motivationDataTableSort[$indMap[self::CODE_OTHER_SERVICES]][$column] = // "Прочие услуги" + $motivationDataTableSort[$indMap[self::CODE_ASSEMBLY_SERVICES]][$column] + // "Услуги по сборке" + $motivationDataTableSort[$indMap[self::CODE_DELIVERY_SERVICES]][$column] + 0; // "Услуги по доставке" - $motivationDataTableSort[$indMap["Выручка от реализации"]][$column] = - $motivationDataTableSort[$indMap["Продажа товара"]][$column] + - $motivationDataTableSort[$indMap["Прочие услуги"]][$column] + 0; + $motivationDataTableSort[$indMap[self::CODE_REVENUE_FROM_SALES]][$column] = // "Выручка от реализации" + $motivationDataTableSort[$indMap[self::CODE_SALE_OF_GOODS]][$column] + // "Продажа товара" + $motivationDataTableSort[$indMap[self::CODE_OTHER_SERVICES]][$column] + 0; // "Прочие услуги" - $motivationDataTableSort[$indMap["Себестоимость товара"]][$column] = - $motivationDataTableSort[$indMap["Стоимость товара"]][$column] + 0; + $motivationDataTableSort[$indMap[self::CODE_COST_PRICE_OF_GOODS]][$column] = // "Себестоимость товара" + $motivationDataTableSort[$indMap[self::CODE_COSTS_OF_GOODS]][$column] + 0; // "Стоимость товара" - $motivationDataTableSort[$indMap["Услуги агентов (Расходы на закупку, хранение, доставку товара)"]][$column] = + $motivationDataTableSort[$indMap[self::CODE_AGENT_SERVICES_EXPENSES_FOR_PURCHASING_STORING_DELIVERING_GOODS]][$column] = // "Услуги агентов (Расходы на закупку, хранение, доставку товара)" ( - $motivationDataTableSort[$indMap["Себестоимость товара"]][$column] + - $motivationDataTableSort[$indMap["Брак, пересорт"]][$column] + $motivationDataTableSort[$indMap[self::CODE_COST_PRICE_OF_GOODS]][$column] + // "Себестоимость товара" + $motivationDataTableSort[$indMap[self::CODE_DEFECT_RESORTING]][$column] // "Брак, пересорт" ) * - $motivationDataTableSort[$indMap["Услуги агентов (тариф)"]][$column]; - - $motivationDataTableSort[$indMap["Брак, пересорт"]][$column] = - $motivationDataTableSort[$indMap["Брак с поставки"]][$column] + - $motivationDataTableSort[$indMap["Списание неликвидного товара: порча, истечение срока годности"]][$column] + - $motivationDataTableSort[$indMap["Брак из-за поломки оборудования"]][$column] + - $motivationDataTableSort[$indMap["Пересорт"]][$column] + 0; - - $motivationDataTableSort[$indMap["Прямые расходы на продажу"]][$column] = - $motivationDataTableSort[$indMap["Себестоимость товара"]][$column] + - $motivationDataTableSort[$indMap["Услуги агентов (Расходы на закупку, хранение, доставку товара)"]][$column] + - $motivationDataTableSort[$indMap["Брак, пересорт"]][$column] + - $motivationDataTableSort[$indMap["Расходные материалы (обеспечение продаж)"]][$column] + 0; - - $motivationDataTableSort[$indMap["Маржинальный доход"]][$column] = - $motivationDataTableSort[$indMap["Выручка от реализации"]][$column] - - $motivationDataTableSort[$indMap["Прямые расходы на продажу"]][$column] + 0; - - $motivationDataTableSort[$indMap["Оплата труда"]][$column] = - $motivationDataTableSort[$indMap["Фонд оплаты труда персонала"]][$column] + 0; - - $motivationDataTableSort[$indMap["Содержание помещения"]][$column] = - $motivationDataTableSort[$indMap["Аренда"]][$column] + - $motivationDataTableSort[$indMap["Коммунальные услуги"]][$column] + - $motivationDataTableSort[$indMap["Охрана"]][$column] + - $motivationDataTableSort[$indMap["Услуги по уборке помещений и территории"]][$column] + 0; - - $motivationDataTableSort[$indMap["Расходы по доставке"]][$column] = - $motivationDataTableSort[$indMap["Доставка до клиента курьер"]][$column] + - $motivationDataTableSort[$indMap["Доставка до клиента такси"]][$column] + 0; - - $motivationDataTableSort[$indMap["Содержание и обслуживание ОС и НМА"]][$column] = - $motivationDataTableSort[$indMap["Холодильное оборудование (ремонт, содержание, ТО)"]][$column] + - $motivationDataTableSort[$indMap["Расходы на содержание и ремонт оргтехники, в т.ч. расходные материалы"]][$column] + - $motivationDataTableSort[$indMap["Расходы на содержание и ремонт прочих ОС"]][$column] + - $motivationDataTableSort[$indMap["Техническое обслуживание кассовых аппаратов"]][$column] + 0; - - $motivationDataTableSort[$indMap["Услуги связи"]][$column] = - $motivationDataTableSort[$indMap["Интернет"]][$column] + 0; - - $motivationDataTableSort[$indMap["Прочие операционные расходы"]][$column] = - $motivationDataTableSort[$indMap["Хозяйственные товары"]][$column] + - $motivationDataTableSort[$indMap["Канцтовары"]][$column] + - $motivationDataTableSort[$indMap["Вода питьевая"]][$column] + 0; - - $motivationDataTableSort[$indMap["Операционные расходы (Себестоимость)"]][$column] = - $motivationDataTableSort[$indMap["Оплата труда"]][$column] + - $motivationDataTableSort[$indMap["Содержание помещения"]][$column] + - $motivationDataTableSort[$indMap["Расходы по доставке"]][$column] + - $motivationDataTableSort[$indMap["Услуги маркетплейсов"]][$column] + - $motivationDataTableSort[$indMap["Содержание и обслуживание ОС и НМА"]][$column] + - $motivationDataTableSort[$indMap["Услуги связи"]][$column] + - $motivationDataTableSort[$indMap["Прочие операционные расходы"]][$column] + 0; - - $motivationDataTableSort[$indMap["Валовая прибыль"]][$column] = - $motivationDataTableSort[$indMap["Маржинальный доход"]][$column] - - $motivationDataTableSort[$indMap["Операционные расходы (Себестоимость)"]][$column] + 0; - - $motivationDataTableSort[$indMap["Бухгалтерия и финансы"]][$column] = - $motivationDataTableSort[$indMap["Бухгалтерские услуги: постановка и ведение БУ и НУ"]][$column] + 0; - - $motivationDataTableSort[$indMap["Юридическое сопровождение"]][$column] = - $motivationDataTableSort[$indMap["Юридические услуги"]][$column] + 0; - - $motivationDataTableSort[$indMap["HR- услуги"]][$column] = - $motivationDataTableSort[$indMap["Кадровое администрирование, охрана труда"]][$column] + - $motivationDataTableSort[$indMap["Услуги по подбору персонала"]][$column] + 0; - - $motivationDataTableSort[$indMap["IT услуги"]][$column] = - $motivationDataTableSort[$indMap["Администрирование ИТ инфраструктуры (подключения к базам данных, ПО, почта, интернет)"]][$column] + - $motivationDataTableSort[$indMap["Лицензия на ПО: ERP система"]][$column] + 0; - - $motivationDataTableSort[$indMap["Общехозяйственные расходы"]][$column] = - $motivationDataTableSort[$indMap["Бухгалтерия и финансы"]][$column] + - $motivationDataTableSort[$indMap["Юридическое сопровождение"]][$column] + - $motivationDataTableSort[$indMap["HR- услуги"]][$column] + - $motivationDataTableSort[$indMap["IT услуги"]][$column] + - $motivationDataTableSort[$indMap["Продвижение и продажа товара через сайт"]][$column] + 0; - - $motivationDataTableSort[$indMap["Чистая прибыль"]][$column] = - $motivationDataTableSort[$indMap["Валовая прибыль"]][$column] - - $motivationDataTableSort[$indMap["Общехозяйственные расходы"]][$column] + 0; - - $c5 = $motivationDataTableSort[$indMap["Выручка от реализации"]][$column]; + $motivationDataTableSort[$indMap[self::CODE_AGENT_SERVICES_TARIFF]][$column]; // "Услуги агентов (тариф)" + + $motivationDataTableSort[$indMap[self::CODE_DEFECT_RESORTING]][$column] = // "Брак, пересорт" + $motivationDataTableSort[$indMap[self::CODE_DELIVERY_DEFECTS]][$column] + // "Брак с поставки" + $motivationDataTableSort[$indMap[self::CODE_WRITE_OFF_ILLIQUID_GOODS_SPOOLAGE_EXPIRATION_OF_SHELF_LIFE]][$column] + // "Списание неликвидного товара: порча, истечение срока годности" + $motivationDataTableSort[$indMap[self::CODE_EQUIPMENT_FAILURE_DEFECT]][$column] + // "Брак из-за поломки оборудования" + $motivationDataTableSort[$indMap[self::CODE_REGRADING]][$column] + 0; // "Пересорт" + + $motivationDataTableSort[$indMap[self::CODE_DIRECT_SELLING_COSTS]][$column] = // "Прямые расходы на продажу" + $motivationDataTableSort[$indMap[self::CODE_COST_PRICE_OF_GOODS]][$column] + // "Себестоимость товара" + $motivationDataTableSort[$indMap[self::CODE_AGENT_SERVICES_EXPENSES_FOR_PURCHASING_STORING_DELIVERING_GOODS]][$column] + // "Услуги агентов (Расходы на закупку, хранение, доставку товара)" + $motivationDataTableSort[$indMap[self::CODE_DEFECT_RESORTING]][$column] + // "Брак, пересорт" + $motivationDataTableSort[$indMap[self::CODE_CONSUMABLES_SALES_SUPPORT]][$column] + 0; // "Расходные материалы (обеспечение продаж)" + + $motivationDataTableSort[$indMap[self::CODE_MARGINAL_INCOME]][$column] = // "Маржинальный доход" + $motivationDataTableSort[$indMap[self::CODE_REVENUE_FROM_SALES]][$column] - // "Выручка от реализации" + $motivationDataTableSort[$indMap[self::CODE_DIRECT_SELLING_COSTS]][$column] + 0; // "Прямые расходы на продажу" + + $motivationDataTableSort[$indMap[self::CODE_PAYMENT]][$column] = // "Оплата труда" + $motivationDataTableSort[$indMap[self::CODE_PAYROLL_FUND]][$column] + 0; // "Фонд оплаты труда персонала" + + $motivationDataTableSort[$indMap[self::CODE_MAINTENANCE_OF_PRIMISES]][$column] = // "Содержание помещения" + $motivationDataTableSort[$indMap[self::CODE_RENT]][$column] + // "Аренда" + $motivationDataTableSort[$indMap[self::CODE_PUBLIC_SERVICES]][$column] + // "Коммунальные услуги" + $motivationDataTableSort[$indMap[self::CODE_SECURITY]][$column] + // "Охрана" + $motivationDataTableSort[$indMap[self::CODE_CLEANING_SERVICES_FOR_PREMISES_AND_TERRITORY]][$column] + 0; // "Услуги по уборке помещений и территории" + + $motivationDataTableSort[$indMap[self::CODE_DELIVERY_COST]][$column] = // "Расходы по доставке" + $motivationDataTableSort[$indMap[self::CODE_DELIVERY_TO_CLIENT_CURRIER]][$column] + // "Доставка до клиента курьер" + $motivationDataTableSort[$indMap[self::CODE_DELIVERY_TO_CLIENT_TAXI]][$column] + 0; // "Доставка до клиента такси" + + $motivationDataTableSort[$indMap[self::CODE_MAINTENANCE_AND_SERVICE_OF_FIXED_ASSETS_AND_INTANGIBLE_ASSETS]][$column] = // "Содержание и обслуживание ОС и НМА" + $motivationDataTableSort[$indMap[self::CODE_REFRIGERATION_EQUIPMENT_REPAIR_MAINTANANCE]][$column] + // "Холодильное оборудование (ремонт, содержание, ТО)" + $motivationDataTableSort[$indMap[self::CODE_COSTS_FOR_MAINTENANCE_AND_REPAIR_OF_OFFICE_EQUIPMENT_INCLUDING_CONSUMABLES]][$column] + // "Расходы на содержание и ремонт оргтехники, в т.ч. расходные материалы" + $motivationDataTableSort[$indMap[self::CODE_EXPENSES_FOR_MAINENANCE_AND_REPAIR_OF_OTHER_FIXED_ASSETS]][$column] + // "Расходы на содержание и ремонт прочих ОС" + $motivationDataTableSort[$indMap[self::CODE_MAINTENANCE_OF_CASH_REGISTERS]][$column] + 0; // "Техническое обслуживание кассовых аппаратов" + + $motivationDataTableSort[$indMap[self::CODE_COMMUNICATION_SERVICES]][$column] = // "Услуги связи" + $motivationDataTableSort[$indMap[self::CODE_INTERNET]][$column] + 0; // "Интернет" + + $motivationDataTableSort[$indMap[self::CODE_OTHER_OPERATING_EXPENSES]][$column] = // "Прочие операционные расходы" + $motivationDataTableSort[$indMap[self::CODE_HOUSEHOLD_GOODS]][$column] + // "Хозяйственные товары" + $motivationDataTableSort[$indMap[self::CODE_STATIONARY]][$column] + // "Канцтовары" + $motivationDataTableSort[$indMap[self::CODE_DRINKING_WATER]][$column] + 0; // "Вода питьевая" + + $motivationDataTableSort[$indMap[self::CODE_OPERATIONAL_EXPANSES_COST]][$column] = // "Операционные расходы (Себестоимость)" + $motivationDataTableSort[$indMap[self::CODE_PAYMENT]][$column] + // "Оплата труда" + $motivationDataTableSort[$indMap[self::CODE_MAINTENANCE_OF_PRIMISES]][$column] + // "Содержание помещения" + $motivationDataTableSort[$indMap[self::CODE_DELIVERY_COST]][$column] + // "Расходы по доставке" + $motivationDataTableSort[$indMap[self::CODE_MARKETPLACE_SERVICES]][$column] + // "Услуги маркетплейсов" + $motivationDataTableSort[$indMap[self::CODE_MAINTENANCE_AND_SERVICE_OF_FIXED_ASSETS_AND_INTANGIBLE_ASSETS]][$column] + // "Содержание и обслуживание ОС и НМА" + $motivationDataTableSort[$indMap[self::CODE_COMMUNICATION_SERVICES]][$column] + // "Услуги связи" + $motivationDataTableSort[$indMap[self::CODE_OTHER_OPERATING_EXPENSES]][$column] + 0; // "Прочие операционные расходы" + + $motivationDataTableSort[$indMap[self::CODE_GROSS_PROFIT]][$column] = // "Валовая прибыль" + $motivationDataTableSort[$indMap[self::CODE_MARGINAL_INCOME]][$column] - // "Маржинальный доход" + $motivationDataTableSort[$indMap[self::CODE_OPERATIONAL_EXPANSES_COST]][$column] + 0; // "Операционные расходы (Себестоимость)" + + $motivationDataTableSort[$indMap[self::CODE_ACCOUNTING_AND_FINANCE]][$column] = // "Бухгалтерия и финансы" + $motivationDataTableSort[$indMap[self::CODE_ACCOUNTING_SERVICES_SETTING_UP_AND_MAINTAINING_ACCOUNTING_AND_TAX_RECORDS]][$column] + 0; // "Бухгалтерские услуги: постановка и ведение БУ и НУ" + + $motivationDataTableSort[$indMap[self::CODE_LEGAL_SUPPORT]][$column] = // "Юридическое сопровождение" + $motivationDataTableSort[$indMap[self::CODE_LEGAL_SERVICES]][$column] + 0; // "Юридические услуги" + + $motivationDataTableSort[$indMap[self::CODE_HR_SERVICES]][$column] = // "HR- услуги" + $motivationDataTableSort[$indMap[self::CODE_PERSONAL_ADMINISTRATION_LABOR_PROTECTION]][$column] + // "Кадровое администрирование, охрана труда" + $motivationDataTableSort[$indMap[self::CODE_RECRUITMENT_SERVICES]][$column] + 0; // "Услуги по подбору персонала" + + $motivationDataTableSort[$indMap[self::CODE_IT_SERVICES]][$column] = // "IT услуги" + $motivationDataTableSort[$indMap[self::CODE_ADMINISTRATION_OF_IT_INFRASTRUCTURE_CONNECTIONS_TO_DATABASES_SOFTWARE_MAIL_INTERNET]][$column] + // "Администрирование ИТ инфраструктуры (подключения к базам данных, ПО, почта, интернет)" + $motivationDataTableSort[$indMap[self::CODE_SOFTWARE_LICENSE_ERP_SYSTEM]][$column] + 0; // "Лицензия на ПО: ERP система" + + $motivationDataTableSort[$indMap[self::CODE_GENERAL_BUSINESS_EXPENSES]][$column] = // "Общехозяйственные расходы" + $motivationDataTableSort[$indMap[self::CODE_ACCOUNTING_AND_FINANCE]][$column] + // "Бухгалтерия и финансы" + $motivationDataTableSort[$indMap[self::CODE_LEGAL_SUPPORT]][$column] + // "Юридическое сопровождение" + $motivationDataTableSort[$indMap[self::CODE_HR_SERVICES]][$column] + // "HR- услуги" + $motivationDataTableSort[$indMap[self::CODE_IT_SERVICES]][$column] + // "IT услуги" + $motivationDataTableSort[$indMap[self::CODE_PROMOTION_AND_SALE_OF_GOODS_THROUGH_THE_WEBSITE]][$column] + 0; // "Продвижение и продажа товара через сайт" + + $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT]][$column] = // "Чистая прибыль" + $motivationDataTableSort[$indMap[self::CODE_GROSS_PROFIT]][$column] - // "Валовая прибыль" + $motivationDataTableSort[$indMap[self::CODE_GENERAL_BUSINESS_EXPENSES]][$column] + 0; // "Общехозяйственные расходы" + + $c5 = $motivationDataTableSort[$indMap[self::CODE_REVENUE_FROM_SALES]][$column]; // "Выручка от реализации" if ($c5 != 0) { - $motivationDataTableSort[$indMap["Рентабельность по чистой прибыли, %"]][$column] = - $motivationDataTableSort[$indMap["Чистая прибыль"]][$column] / $c5; + $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_MARGIN_PERCENT]][$column] = // "Рентабельность по чистой прибыли, %" + $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT]][$column] / $c5; // "Чистая прибыль" } if ($ind == 0) { - $b62 = $motivationDataTableSort[$indMap["Чистая прибыль"]]["plan"]; + $b62 = $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT]]["plan"]; // "Чистая прибыль" if ($b62 > 0) { $b64 = $b62 * 0.9; } else { $b64 = $b62 * 1.1; } - $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]["plan"] = $b64; + $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]["plan"] = $b64; // "Минимальный порог Чистой прибыли, руб." } if ($ind >= 1 && $ind <= 4) { - $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$column] = - $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]["plan"] / $lastDayOfMonth * 7; + $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]][$column] = // "Минимальный порог Чистой прибыли, руб." + $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]["plan"] / $lastDayOfMonth * 7; // "Минимальный порог Чистой прибыли, руб." } if ($ind == 5) { - $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$column] = - $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]["plan"] / $lastDayOfMonth * ($lastDayOfMonth - 4 * 7); + $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]][$column] = // "Минимальный порог Чистой прибыли, руб." + $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]["plan"] / $lastDayOfMonth * ($lastDayOfMonth - 4 * 7); // "Минимальный порог Чистой прибыли, руб." } if ($ind == 7) { $sum = 0; foreach (range(1, 5) as $index) { - $sum += $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]]['week' . $index]; + $sum += $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]['week' . $index]; // "Минимальный порог Чистой прибыли, руб." } - $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$column] = $sum; + $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]][$column] = $sum; // "Минимальный порог Чистой прибыли, руб." } // if ($ind > 0) { -// $c62 = $motivationDataTableSort[$indMap["Чистая прибыль"]][$column]; -// $b64 = $motivationDataTableSort[$indMap["Минимальный порог Чистой прибыли, руб."]][$ind == 6 ? "plan" : $column]; +// $c62 = $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT]][$column]; // "Чистая прибыль" +// $b64 = $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]][$ind == 6 ? "plan" : $column]; // "Минимальный порог Чистой прибыли, руб." // // $j66 = 0; // if ($c62 >= $b64) { -// $formula = $c62 - $c5 * $motivationDataTableSort[$indMap["Пороговый коэффициент"]]["plan"]; +// $formula = $c62 - $c5 * $motivationDataTableSort[$indMap[self::CODE_THRESHOLD_COEFFICIENT]]["plan"]; // "Пороговый коэффициент" // if ($formula > 0) { // $j66 = $formula; // } // } -// $motivationDataTableSort[$indMap["Расчет премии"]][$column] = $j66 + 0; +// $motivationDataTableSort[$indMap[self::CODE_CALCULATION_OF_PREMIUM]][$column] = $j66 + 0; // "Расчет премии" // } } // Отклонение - $deviationFunc = function ($name) use(&$motivationDataTableSort, &$indMap) { - if ($motivationDataTableSort[$indMap[$name]]["plan"] != 0) { - $motivationDataTableSort[$indMap[$name]]["deviation"] = - $motivationDataTableSort[$indMap[$name]]["fact"] / - $motivationDataTableSort[$indMap[$name]]["plan"]; + $deviationFunc = function ($code) use(&$motivationDataTableSort, &$indMap) { + if ($motivationDataTableSort[$indMap[$code]]["plan"] != 0) { + $motivationDataTableSort[$indMap[$code]]["deviation"] = + $motivationDataTableSort[$indMap[$code]]["fact"] / + $motivationDataTableSort[$indMap[$code]]["plan"]; } }; - $names = [ - "Выручка от реализации", - "Продажа товара", - "Оффлайн продажи", - "Онлайн продажи", - "Прочие услуги", - "Услуги по сборке", - "Услуги по доставке", - "Прямые расходы на продажу", - "Себестоимость товара", - "Услуги агентов (Расходы на закупку, хранение, доставку товара)", - "Брак, пересорт", - "Брак с поставки", - "Списание неликвидного товара: порча, истечение срока годности", - "Брак из-за поломки оборудования", - "Пересорт", - "Расходные материалы (обеспечение продаж)", - "Маржинальный доход", - "Операционные расходы (Себестоимость)", - "Оплата труда", - "Фонд оплаты труда персонала", - "Содержание помещения", - "Аренда", - "Коммунальные услуги", - "Охрана", - "Услуги по уборке помещений и территории", - "Расходы по доставке", - "Доставка до клиента курьер", - "Доставка до клиента такси", - "Услуги маркетплейсов", - "Содержание и обслуживание ОС и НМА", - "Холодильное оборудование (ремонт, содержание, ТО)", - "Расходы на содержание и ремонт оргтехники, в т.ч. расходные материалы", - "Расходы на содержание и ремонт прочих ОС", - "Техническое обслуживание кассовых аппаратов", - "Услуги связи", - "Интернет", - "Прочие операционные расходы", - "Хозяйственные товары", - "Канцтовары", - "Вода питьевая", - "Валовая прибыль", - "Общехозяйственные расходы", - "Бухгалтерия и финансы", - "Бухгалтерские услуги: постановка и ведение БУ и НУ", - "Юридическое сопровождение", - "Юридические услуги", - "HR- услуги", - "Кадровое администрирование, охрана труда", - "Услуги по подбору персонала", - "IT услуги", - "Администрирование ИТ инфраструктуры (подключения к базам данных, ПО, почта, интернет)", - "Лицензия на ПО: ERP система", - "Продвижение и продажа товара через сайт", - "Чистая прибыль", - "Рентабельность по чистой прибыли, %" - ]; - foreach ($names as $name) { - $deviationFunc($name); +// $names = [ +// "Выручка от реализации", +// "Продажа товара", +// "Оффлайн продажи", +// "Онлайн продажи", +// "Прочие услуги", +// "Услуги по сборке", +// "Услуги по доставке", +// "Прямые расходы на продажу", +// "Себестоимость товара", +// "Услуги агентов (Расходы на закупку, хранение, доставку товара)", +// "Брак, пересорт", +// "Брак с поставки", +// "Списание неликвидного товара: порча, истечение срока годности", +// "Брак из-за поломки оборудования", +// "Пересорт", +// "Расходные материалы (обеспечение продаж)", +// "Маржинальный доход", +// "Операционные расходы (Себестоимость)", +// "Оплата труда", +// "Фонд оплаты труда персонала", +// "Содержание помещения", +// "Аренда", +// "Коммунальные услуги", +// "Охрана", +// "Услуги по уборке помещений и территории", +// "Расходы по доставке", +// "Доставка до клиента курьер", +// "Доставка до клиента такси", +// "Услуги маркетплейсов", +// "Содержание и обслуживание ОС и НМА", +// "Холодильное оборудование (ремонт, содержание, ТО)", +// "Расходы на содержание и ремонт оргтехники, в т.ч. расходные материалы", +// "Расходы на содержание и ремонт прочих ОС", +// "Техническое обслуживание кассовых аппаратов", +// "Услуги связи", +// "Интернет", +// "Прочие операционные расходы", +// "Хозяйственные товары", +// "Канцтовары", +// "Вода питьевая", +// "Валовая прибыль", +// "Общехозяйственные расходы", +// "Бухгалтерия и финансы", +// "Бухгалтерские услуги: постановка и ведение БУ и НУ", +// "Юридическое сопровождение", +// "Юридические услуги", +// "HR- услуги", +// "Кадровое администрирование, охрана труда", +// "Услуги по подбору персонала", +// "IT услуги", +// "Администрирование ИТ инфраструктуры (подключения к базам данных, ПО, почта, интернет)", +// "Лицензия на ПО: ERP система", +// "Продвижение и продажа товара через сайт", +// "Чистая прибыль", +// "Рентабельность по чистой прибыли, %" +// ]; + foreach (array_keys($indMap) as $code) { + $deviationFunc($code); } + + return $motivationDataTableSort; } } -- 2.39.5