use yii_app\records\SalesProducts;
use yii_app\records\TimetableFactModel;
use yii_app\records\Timetable;
-use yii_app\records\SelfCostProduct;
-
-
-use yii_app\records\EmployeePayment;
++use yii_app\records\SelfCostProduct;
class MotivationService
{
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; }
+ }
+
-// Проверяем и инициализируем каждую запись, если она отсутствует
++ // Проверяем и инициализируем каждую запись, если она отсутствует
+ foreach ($numericConstants as $constantName => $code) {
+ if (!isset($indMap[$code])) {
+ continue;
+ }
+
+ if (!isset($motivationDataTableSort[$indMap[$code]][$column])) {
+ // Присваиваем null или 0 в зависимости от необходимости
+ $motivationDataTableSort[$indMap[$code]][$column] = null;
+ }
}
- $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[self::CODE_SALE_OF_GOODS]][$column] =
- $motivationDataTableSort[$indMap[self::CODE_OFFLINE_SALES]][$column] +
- $motivationDataTableSort[$indMap[self::CODE_ONLINE_SALES]][$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[self::CODE_OTHER_SERVICES]][$column] = // "Прочие услуги"
$motivationDataTableSort[$indMap[self::CODE_ASSEMBLY_SERVICES]][$column] + // "Услуги по сборке"
$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 $indexItem) {
- $sum += $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]['week' . $indexItem]; // "Минимальный порог Чистой прибыли, руб."
+ foreach (range(1, 5) as $index) {
+ $sum += $motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]]['week' . $index]; // "Минимальный порог Чистой прибыли, руб."
}
$motivationDataTableSort[$indMap[self::CODE_NET_PROFIT_THRESHOLD_RUB]][$column] = $sum; // "Минимальный порог Чистой прибыли, руб."
}
'header' => 'План',
],
[
- 'attribute' => 'correction',
+ 'attribute' => 'adjustment',
'value' => function ($model) {
- if ($model["adjustment"] !== null && $model["adjustment"] !== '') {
- return Yii::$app->formatter->asDecimal($model["adjustment"], 2);
- } else {
- return " ";
- }
+
+
- return $model["adjustment"] !== null ? FormatHelper::asDecimalMotivation($model["correction"]) : " ";
++ return $model["adjustment"] !== null ? FormatHelper::asDecimalMotivation($model["adjustment"]) : " ";
+
+
+
+
},
'header' => 'Корректировка',
],
'header' => 'Отклонение, %',
'value' => function ($model) {
- if ($model["deviation"] !== null) {
- return Yii::$app->formatter->asDecimal($model["deviation"] * 100, 2) . "%";
- } else {
- return " ";
- }
+
+ return $model["deviation"] !== null ? FormatHelper::asDecimalMotivation($model["deviation"]) : " ";
+
+
-
++
},
]