$tree Активные статьи пользователя, сгруппированные по parent_id * @var object[] $groups Верхнеуровневые группы (tree[0]) * @var array $plan [categorie_id => [month => ['plan_summ'=>float,'formula_pct_used'=>?float]]] * @var int $year */ use System\Classes\CSRF; $months = [ 1 => 'Янв', 2 => 'Фев', 3 => 'Мар', 4 => 'Апр', 5 => 'Май', 6 => 'Июн', 7 => 'Июл', 8 => 'Авг', 9 => 'Сен', 10 => 'Окт', 11 => 'Ноя', 12 => 'Дек', ]; $sections = [ 'income' => 'Доходы', 'expense' => 'Расходы', ]; // Категории, чей план считается автоматически по формуле связанной income-статьи — // у них своя ячейка readonly (см. CategoriesController::parseFormulaLink()). $formula_targets = []; foreach ($tree as $items) { foreach ($items as $c) { if ($c->linked_expense_categorie_id) { $formula_targets[(int)$c->linked_expense_categorie_id] = true; } } } /** * Одна ячейка ввода — общая и для карточек (комп/планшет), и для аккордeона (телефон), * чтобы имя поля/значение/readonly не разъезжались между двумя разметками одних данных. */ $planInput = static function (int $categorie_id, int $month, array $plan, bool $readonly) { $value = $plan[$categorie_id][$month]['plan_summ'] ?? ''; echo ''; }; $this->setScript('budgets.js'); ?>