diff --git a/app/AccountancyModule/EducationModule/presenters/BudgetPresenter.php b/app/AccountancyModule/EducationModule/presenters/BudgetPresenter.php new file mode 100644 index 000000000..1ffdb482f --- /dev/null +++ b/app/AccountancyModule/EducationModule/presenters/BudgetPresenter.php @@ -0,0 +1,82 @@ +aid) { + return; + } + + $this->flashMessage('Musíš vybrat akci', 'danger'); + $this->redirect('Default:'); + } + + public function renderDefault(int $aid): void + { + if (! $this->authorizator->isAllowed(Education::ACCESS_BUDGET, $this->aid)) { + $this->flashMessage('Nemáte právo prohlížet rozpočet akce', 'danger'); + $this->redirect('Education:'); + } + + $educationId = new SkautisEducationId($aid); + + $inconsistentTotals = $this->queryBus->handle(new InconsistentEducationCategoryTotalsQuery($educationId)); + $this->template->setParameters([ + 'isConsistent' => count($inconsistentTotals) === 0, + 'toRepair' => $inconsistentTotals, + 'budgetEntries' => $this->queryBus->handle(new EducationBudgetQuery($educationId, $this->event->grantId)), + 'categoriesSummary' => $this->queryBus->handle(new CategoriesSummaryQuery($this->getCashbookId($aid))), + 'isUpdateStatementAllowed' => $this->authorizator->isAllowed(Education::UPDATE_REAL_BUDGET_SPENDING, $aid), + ]); + if (! $this->isAjax()) { + return; + } + + $this->redrawControl('contentSnip'); + } + + /** + * přepočte hodnoty v jednotlivých kategorich + */ + public function handleConvert(int $aid): void + { + $this->editableOnly(); + + $this->commandBus->handle(new UpdateEducationCategoryTotals($this->getCashbookId($aid))); + $this->flashMessage('Kategorie byly přepočítány.'); + + if ($this->isAjax()) { + $this->redrawControl('flash'); + } else { + $this->redirect('this', $aid); + } + } + + private function getCashbookId(int $educationId): CashbookId + { + return $this->queryBus->handle(new EducationCashbookIdQuery(new SkautisEducationId($educationId))); + } +} diff --git a/app/AccountancyModule/EducationModule/templates/Budget/default.latte b/app/AccountancyModule/EducationModule/templates/Budget/default.latte new file mode 100644 index 000000000..5d81182c8 --- /dev/null +++ b/app/AccountancyModule/EducationModule/templates/Budget/default.latte @@ -0,0 +1,88 @@ +{block #title}{$event->getDisplayName()} - rozpočet{/block} + +{define #budgetTable $entries, $income} + + + + + + + + + + + +
PoložkaČástka
{$entry->name} + {$entry->total|price} +
+{/define} + +{define #categoriesTable $categoriesSummary, $income} + + + + + + + + {var $balance = 0} + + {do $balance += (float)$categorySummary->total->getAmount()/100} + + + + + + + +
PoložkaČástka
{$categorySummary->name} + {$categorySummary->total|price} +
Celkem{$balance|price}
+{/define} + +{block #content} + +{include ../header.latte} + +
+

Nekonzistentní data!

+

Součet paragonů v kategoriích neodpovídá částkám uvedeným ve SkautISu.

+ {if $isEditable} +

Hospodaření může aktualizovat data ve SkautISu tak, aby byla shodná s evidencí plateb.

+
+ {if $isUpdateStatementAllowed} + + + Aktualizovat data ve SkautISu + + {else} +

+ + Nemáte oprávnění pro úpravu částek v rozpočtu uvedených ve skautisu. +

+ {/if} + {/if} +
+ +
+
+

Skutečné náklady

+ {include #categoriesTable $categoriesSummary, FALSE} +
+
+

Skutečné výnosy

+ {include #categoriesTable $categoriesSummary, TRUE} +
+ +
+ +
+

Předpokl. náklady

+ {include #budgetTable $budgetEntries, FALSE} +
+
+

Předpokládané výnosy

+ {include #budgetTable $budgetEntries, TRUE} +
+
diff --git a/app/AccountancyModule/EducationModule/templates/header.latte b/app/AccountancyModule/EducationModule/templates/header.latte index 01dae47ed..4a1a59d32 100644 --- a/app/AccountancyModule/EducationModule/templates/header.latte +++ b/app/AccountancyModule/EducationModule/templates/header.latte @@ -16,6 +16,10 @@ Evidence plateb +
  • + Rozpočet +