if ($model->store_id !== null && $model->year !== null && $model->month !== null) {
$showTable = true;
- $motivationService = new MotivationService();
+
// получаем данные из таблицы
- $motivationDataTableSort = $motivationService->getMotivationDataTableSort($model->store_id, $model->year, $model->month);
+ $motivationDataTableSort = MotivationService::getMotivationDataTableSort($model->store_id, $model->year, $model->month);
// Получаем количество дней в месяце
$daysInMonth = cal_days_in_month(CAL_GREGORIAN, $model->month, $model->year);
return $this->controller->render(
'index',
- compact('model', 'stores', 'years', 'months', 'motivationDataTableSort', 'showTable',
+ compact('model', 'stores', 'years', 'months', 'motivationDataTableSort', 'showTable',
'daysInMonth', 'daysInLastWeek', 'week5Header')
);
}
* @return array Ассоциативный массив, где ключами являются ID групп мотивации,
* а значениями — их алиасы.
*/
- private function getMotivationValueGroupAliases()
+ private static function getMotivationValueGroupAliases()
{
$groups = MotivationValueGroup::find()->all();
$aliases = [];
*
* @return array Отсортированный массив данных мотивации, включая плановые, фактические и другие элементы.
*/
- public function getMotivationDataTableSort($storeId = null, $year = null, $month = null)
+ public static function getMotivationDataTableSort($storeId = null, $year = null, $month = null)
{
// 1. Запрос к таблице Motivation
$motivation = Motivation::find()
// 4. Группировка значений
$result = [];
- $groupAliases = $this->getMotivationValueGroupAliases();
+ $groupAliases = self::getMotivationValueGroupAliases();
foreach ($motivationValues as $value) {
$valueId = $value->value_id;
foreach (self::$additionalItems as $key => $item) {
if (!isset($result[$key])) {
$result[$key] = array_merge($item, [
- 'code' => $item['code'],
- 'name' => $item['name'],
+
'plan' => null,
'adjustment' => null,
'week1' => null,
}
$indMap[intval($row['code'])] = $ind;
}
- foreach (range(0,7) as $ind) {
- switch ($ind) {
+ foreach (range(0,7) as $indexItem) {
+ switch ($indexItem) {
case 0: { $column = 'plan'; break; }
case 6: { $column = 'fact'; break; }
case 7: { $column = 'forecast'; break; }
- default: { $column = 'week' . $ind; break; }
+ default: { $column = 'week' . $indexItem; break; }
}
// Проверка на наличие необходимого ключа в $indMap
Yii::info("Брак " . $motivationDataTableSort[$indMap[self::CODE_DEFECT_RESORTING]][$column]);
$motivationDataTableSort[$indMap[self::CODE_AGENT_SERVICES_EXPENSES_FOR_PURCHASING_STORING_DELIVERING_GOODS]][$column] = // "Услуги агентов (Расходы на закупку, хранение, доставку товара)"
(
- $motivationDataTableSort[$indMap[self::CODE_COST_PRICE_OF_GOODS]][$column] + // "Себестоимость товара"
+ $motivationDataTableSort[$indMap[self::CODE_COSTS_OF_GOODS]][$column] + // "Себестоимость товара код 5"
$motivationDataTableSort[$indMap[self::CODE_DEFECT_RESORTING]][$column] // "Брак, пересорт"
) *
$motivationDataTableSort[$indMap[self::CODE_AGENT_SERVICES_TARIFF]]['plan']; // "Услуги агентов (тариф)"
$motivationDataTableSort[$indMap[self::CODE_NET_PROFIT]][$column] / $c5; // "Чистая прибыль"
}
- if ($ind == 0) {
+ if ($indexItem == 0) {
$b62 = $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT]]["plan"]; // "Чистая прибыль"
if ($b62 > 0) {
$b64 = $b62 * 0.9;
}
$motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]["plan"] = $b64; // "Минимальный порог Чистой прибыли, руб."
}
- if ($ind >= 1 && $ind <= 4) {
+ if ($indexItem >= 1 && $indexItem <= 4) {
$motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]][$column] = // "Минимальный порог Чистой прибыли, руб."
$motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]["plan"] / $lastDayOfMonth * 7; // "Минимальный порог Чистой прибыли, руб."
}
- if ($ind == 5) {
+ if ($indexItem == 5) {
$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) {
+ if ($indexItem == 7) {
$sum = 0;
- foreach (range(1, 5) as $index) {
- $sum += $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]['week' . $index]; // "Минимальный порог Чистой прибыли, руб."
+ foreach (range(1, 5) as $indexItem) {
+ $sum += $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]['week' . $indexItem]; // "Минимальный порог Чистой прибыли, руб."
}
$motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]][$column] = $sum; // "Минимальный порог Чистой прибыли, руб."
}