Пример #1
0
 /**
  * @param Carbon     $start
  * @param Carbon     $end
  * @param Collection $accounts
  *
  * @return Balance
  */
 public function getBalanceReport(Carbon $start, Carbon $end, Collection $accounts)
 {
     $balance = new Balance();
     // build a balance header:
     $header = new BalanceHeader();
     $budgets = $this->budgetRepository->getBudgetsAndLimitsInRange($start, $end);
     $spentData = $this->budgetRepository->spentPerBudgetPerAccount($budgets, $accounts, $start, $end);
     foreach ($accounts as $account) {
         $header->addAccount($account);
     }
     /** @var BudgetModel $budget */
     foreach ($budgets as $budget) {
         $balance->addBalanceLine($this->createBalanceLine($budget, $accounts, $spentData));
     }
     $balance->addBalanceLine($this->createEmptyBalanceLine($accounts, $spentData));
     $balance->addBalanceLine($this->createTagsBalanceLine($accounts, $start, $end));
     $balance->addBalanceLine($this->createDifferenceBalanceLine($accounts, $spentData, $start, $end));
     $balance->setBalanceHeader($header);
     return $balance;
 }