$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'); ?>
План бюджета на год
←
→
$label): ?>
$g->type === $type); ?>
Нет статей — сначала добавьте их на странице «Статьи»
id] ?? []; ?>
title, ENT_QUOTES, 'UTF-8') ?>
id]); ?>
title, ENT_QUOTES, 'UTF-8') ?>
$mlabel): ?>
id, $m, $plan, $is_target); ?>
id] ?? []; $rows = $children !== [] ? $children : [$group]; $year_sum = 0.0; foreach ($rows as $row_category) { foreach ($months as $m => $_) { $year_sum += (float)($plan[$row_category->id][$m]['plan_summ'] ?? 0); } } ?>
title, ENT_QUOTES, 'UTF-8') ?> ₽/год id]); ?>
title, ENT_QUOTES, 'UTF-8') ?>
$mlabel): ?>
id, $m, $plan, $is_target); ?>