diff --git a/app/Helpers/Report/ReportHelper.php b/app/Helpers/Report/ReportHelper.php index 90efd2b0c4..100a3fd753 100644 --- a/app/Helpers/Report/ReportHelper.php +++ b/app/Helpers/Report/ReportHelper.php @@ -115,8 +115,8 @@ class ReportHelper implements ReportHelperInterface $line->setBudget($budget); // get budget amount for current period: - $rep = $budget->limitrepetitions()->where('budget_limits.startdate',$start->format('Y-m-d 00:00:00'))->first(); - if($rep) { + $rep = $repository->getCurrentRepetition($budget, $start); + if ($rep) { $line->setBudgetAmount($rep->amount); } diff --git a/app/Helpers/Report/ReportQuery.php b/app/Helpers/Report/ReportQuery.php index 13ad59df6f..de586af539 100644 --- a/app/Helpers/Report/ReportQuery.php +++ b/app/Helpers/Report/ReportQuery.php @@ -23,69 +23,6 @@ use Steam; class ReportQuery implements ReportQueryInterface { - /** - * This method will get a list of all expenses in a certain time period that have no budget - * and are balanced by a transfer to make up for it. - * - * @param Account $account - * @param Carbon $start - * @param Carbon $end - * - * @return Collection - */ - public function balancedTransactionsList(Account $account, Carbon $start, Carbon $end) - { - - $set = TransactionJournal:: - leftJoin('transaction_group_transaction_journal', 'transaction_group_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id') - ->leftJoin( - 'transaction_group_transaction_journal as otherFromGroup', function (JoinClause $join) { - $join->on('otherFromGroup.transaction_group_id', '=', 'transaction_group_transaction_journal.transaction_group_id') - ->on('otherFromGroup.transaction_journal_id', '!=', 'transaction_journals.id'); - } - ) - ->leftJoin('transaction_journals as otherJournals', 'otherJournals.id', '=', 'otherFromGroup.transaction_journal_id') - ->leftJoin('transaction_types', 'transaction_types.id', '=', 'otherJournals.transaction_type_id') - ->leftJoin( - 'transactions', function (JoinClause $join) { - $join->on('transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('amount', '>', 0); - } - ) - ->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'otherJournals.id') - ->before($end)->after($start) - ->where('transaction_types.type', 'Withdrawal') - ->where('transaction_journals.user_id', Auth::user()->id) - ->whereNull('budget_transaction_journal.budget_id')->whereNull('transaction_journals.deleted_at') - ->whereNull('otherJournals.deleted_at') - ->where('transactions.account_id', $account->id) - ->orderBy('transaction_journals.date', 'DESC') - ->orderBy('transaction_journals.order', 'ASC') - ->orderBy('transaction_journals.id', 'DESC') - ->whereNotNull('transaction_group_transaction_journal.transaction_group_id') - ->get( - [ - 'transaction_journals.*', - 'transactions.amount as queryAmount' - ] - ); - - return $set; - } - - /** - * This method will get the sum of all expenses in a certain time period that have no budget - * and are balanced by a transfer to make up for it. - * - * @param Account $account - * @param Carbon $start - * @param Carbon $end - * - * @return float - */ - public function balancedTransactionsSum(Account $account, Carbon $start, Carbon $end) - { - return floatval($this->balancedTransactionsList($account, $start, $end)->sum('queryAmount')); - } /** * This method returns all "expense" journals in a certain period, which are both transfers to a shared account @@ -200,39 +137,7 @@ class ReportQuery implements ReportQueryInterface return $set; } - /** - * Grabs a summary of all expenses grouped by budget, related to the account. - * - * @param Account $account - * @param Carbon $start - * @param Carbon $end - * - * @return mixed - */ - public function getBudgetSummary(Account $account, Carbon $start, Carbon $end) - { - $query = $this->queryJournalsNoBudget($account, $start, $end); - return $query->get(['budgets.id', 'budgets.name', DB::Raw('SUM(`transactions`.`amount`) as `queryAmount`')]); - - } - - /** - * Get a list of transaction journals that have no budget, filtered for the specified account - * and the specified date range. - * - * @param Account $account - * @param Carbon $start - * @param Carbon $end - * - * @return Collection - */ - public function getTransactionsWithoutBudget(Account $account, Carbon $start, Carbon $end) - { - $query = $this->queryJournalsNoBudget($account, $start, $end); - - return $query->get(['budgets.name', 'transactions.amount as queryAmount', 'transaction_journals.*']); - } /** * This method returns all "income" journals in a certain period, which are both transfers from a shared account @@ -297,92 +202,7 @@ class ReportQuery implements ReportQueryInterface return $data; } - /** - * Gets a list of expenses grouped by the budget they were filed under. - * - * @param Carbon $start - * @param Carbon $end - * @param bool $includeShared - * - * @return Collection - */ - public function journalsByBudget(Carbon $start, Carbon $end, $includeShared = false) - { - $query = Auth::user()->transactionjournals() - ->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id') - ->leftJoin('budgets', 'budget_transaction_journal.budget_id', '=', 'budgets.id') - ->leftJoin( - 'transactions', function (JoinClause $join) { - $join->on('transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('transactions.amount', '<', 0); - } - ) - ->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id'); - if ($includeShared === false) { - $query->leftJoin( - 'account_meta', function (JoinClause $join) { - $join->on('account_meta.account_id', '=', 'accounts.id')->where('account_meta.name', '=', 'accountRole'); - } - )->where('account_meta.data', '!=', '"sharedAsset"'); - } - $query->leftJoin('transaction_types', 'transaction_journals.transaction_type_id', '=', 'transaction_types.id') - ->where('transaction_journals.date', '>=', $start->format('Y-m-d')) - ->where('transaction_journals.date', '<=', $end->format('Y-m-d')) - ->where('transaction_types.type', 'Withdrawal') - ->groupBy('budgets.id') - ->orderBy('budgets.name', 'ASC'); - - return $query->get(['budgets.id', 'budgets.name', DB::Raw('SUM(`transactions`.`amount`) AS `spent`')]); - } - - /** - * Gets a list of categories and the expenses therein, grouped by the relevant category. - * This result excludes transfers to shared accounts which are expenses, technically. - * - * @param Carbon $start - * @param Carbon $end - * @param bool $includeShared - * - * @return Collection - */ - public function journalsByCategory(Carbon $start, Carbon $end, $includeShared = false) - { - $query = Auth::user()->transactionjournals() - ->leftJoin( - 'category_transaction_journal', 'category_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id' - ) - ->leftJoin('categories', 'category_transaction_journal.category_id', '=', 'categories.id') - ->leftJoin( - 'transactions', function (JoinClause $join) { - $join->on('transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('transactions.amount', '<', 0); - } - ) - ->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id'); - if ($includeShared === false) { - $query->leftJoin( - 'account_meta', function (JoinClause $join) { - $join->on('account_meta.account_id', '=', 'accounts.id')->where('account_meta.name', '=', 'accountRole'); - } - )->where('account_meta.data', '!=', '"sharedAsset"'); - } - $query->leftJoin('transaction_types', 'transaction_journals.transaction_type_id', '=', 'transaction_types.id') - ->where('transaction_journals.date', '>=', $start->format('Y-m-d')) - ->where('transaction_journals.date', '<=', $end->format('Y-m-d')) - ->where('transaction_types.type', 'Withdrawal') - ->groupBy('categories.id') - ->orderBy('queryAmount'); - - $data = $query->get(['categories.id', 'categories.encrypted', 'categories.name', DB::Raw('SUM(`transactions`.`amount`) AS `queryAmount`')]); - // decrypt data: - $data->each( - function (Model $object) { - $object->name = intval($object->encrypted) == 1 ? Crypt::decrypt($object->name) : $object->name; - } - ); - - return $data; - - } /** * Gets a list of expense accounts and the expenses therein, grouped by that expense account. @@ -439,89 +259,6 @@ class ReportQuery implements ReportQueryInterface return $data; } - /** - * With an equally misleading name, this query returns are transfers to shared accounts. These are considered - * expenses. - * - * @param Carbon $start - * @param Carbon $end - * - * @return Collection - */ - public function sharedExpenses(Carbon $start, Carbon $end) - { - return TransactionJournal:: - leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id') - ->leftJoin( - 'transactions', function (JoinClause $join) { - $join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')->where( - 'transactions.amount', '>', 0 - ); - } - ) - ->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id') - ->leftJoin( - 'account_meta', function (JoinClause $join) { - $join->on('account_meta.account_id', '=', 'accounts.id')->where('account_meta.name', '=', 'accountRole'); - } - ) - ->where('account_meta.data', '"sharedAsset"') - ->after($start) - ->before($end) - ->where('transaction_types.type', 'Transfer') - ->where('transaction_journals.user_id', Auth::user()->id) - ->get( - ['transaction_journals.id', 'transaction_journals.description', 'transactions.account_id', 'accounts.name', - 'transactions.amount as queryAmount'] - ); - - } - - /** - * With a slightly misleading name, this query returns all transfers to shared accounts - * which are technically expenses, since it won't be just your money that gets spend. - * - * @param Carbon $start - * @param Carbon $end - * - * @return Collection - */ - public function sharedExpensesByCategory(Carbon $start, Carbon $end) - { - return TransactionJournal:: - leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id') - ->leftJoin( - 'transactions', function (JoinClause $join) { - $join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')->where( - 'transactions.amount', '>', 0 - ); - } - ) - ->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id') - ->leftJoin( - 'account_meta', function (JoinClause $join) { - $join->on('account_meta.account_id', '=', 'accounts.id')->where('account_meta.name', '=', 'accountRole'); - } - ) - ->leftJoin( - 'category_transaction_journal', 'category_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id' - ) - ->leftJoin('categories', 'category_transaction_journal.category_id', '=', 'categories.id') - ->where('account_meta.data', '"sharedAsset"') - ->after($start) - ->before($end) - ->where('transaction_types.type', 'Transfer') - ->where('transaction_journals.user_id', Auth::user()->id) - ->groupBy('categories.name') - ->get( - [ - 'categories.id', - 'categories.name as name', - DB::Raw('SUM(`transactions`.`amount`) * -1 AS `queryAmount`') - ] - ); - } - /** * @param Account $account * @param Budget $budget @@ -583,37 +320,4 @@ class ReportQuery implements ReportQueryInterface return $query; } - - /** - * - * This query will get all transaction journals and budget information for a specified account - * in a certain date range, where the transaction journal does not have a budget. - * There is no get() specified, this is up to the method itself. - * - * @param Account $account - * @param Carbon $start - * @param Carbon $end - * - * @return Builder - */ - protected function queryJournalsNoBudget(Account $account, Carbon $start, Carbon $end) - { - return TransactionJournal:: - leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id') - ->leftJoin('budgets', 'budgets.id', '=', 'budget_transaction_journal.budget_id') - ->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id') - ->leftJoin( - 'transactions', function (JoinClause $join) { - $join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')->where('transactions.amount', '<', 0); - } - ) - ->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id') - ->before($end) - ->after($start) - ->where('accounts.id', $account->id) - ->where('transaction_journals.user_id', Auth::user()->id) - ->where('transaction_types.type', 'Withdrawal') - ->groupBy('budgets.id') - ->orderBy('budgets.name', 'ASC'); - } } diff --git a/app/Helpers/Report/ReportQueryInterface.php b/app/Helpers/Report/ReportQueryInterface.php index 67f42ef115..b189f47ed0 100644 --- a/app/Helpers/Report/ReportQueryInterface.php +++ b/app/Helpers/Report/ReportQueryInterface.php @@ -15,30 +15,6 @@ use Illuminate\Support\Collection; interface ReportQueryInterface { - /** - * This method will get a list of all expenses in a certain time period that have no budget - * and are balanced by a transfer to make up for it. - * - * @param Account $account - * @param Carbon $start - * @param Carbon $end - * - * @return Collection - */ - public function balancedTransactionsList(Account $account, Carbon $start, Carbon $end); - - /** - * This method will get the sum of all expenses in a certain time period that have no budget - * and are balanced by a transfer to make up for it. - * - * @param Account $account - * @param Carbon $start - * @param Carbon $end - * - * @return float - */ - public function balancedTransactionsSum(Account $account, Carbon $start, Carbon $end); - /** * Get a users accounts combined with various meta-data related to the start and end date. * @@ -50,28 +26,6 @@ interface ReportQueryInterface */ public function getAllAccounts(Carbon $start, Carbon $end, $includeShared = false); - /** - * Grabs a summary of all expenses grouped by budget, related to the account. - * - * @param Account $account - * @param Carbon $start - * @param Carbon $end - * - * @return mixed - */ - public function getBudgetSummary(Account $account, Carbon $start, Carbon $end); - - /** - * Get a list of transaction journals that have no budget, filtered for the specified account - * and the specified date range. - * - * @param Account $account - * @param Carbon $start - * @param Carbon $end - * - * @return Collection - */ - public function getTransactionsWithoutBudget(Account $account, Carbon $start, Carbon $end); /** * This method returns all "income" journals in a certain period, which are both transfers from a shared account @@ -101,28 +55,6 @@ interface ReportQueryInterface */ public function expenseInPeriod(Carbon $start, Carbon $end, $includeShared = false); - /** - * Gets a list of expenses grouped by the budget they were filed under. - * - * @param Carbon $start - * @param Carbon $end - * @param bool $includeShared - * - * @return Collection - */ - public function journalsByBudget(Carbon $start, Carbon $end, $includeShared = false); - - /** - * Gets a list of categories and the expenses therein, grouped by the relevant category. - * This result excludes transfers to shared accounts which are expenses, technically. - * - * @param Carbon $start - * @param Carbon $end - * @param bool $includeShared - * - * @return Collection - */ - public function journalsByCategory(Carbon $start, Carbon $end, $includeShared = false); /** * @param Account $account @@ -151,25 +83,4 @@ interface ReportQueryInterface */ public function journalsByExpenseAccount(Carbon $start, Carbon $end, $includeShared = false); - /** - * With an equally misleading name, this query returns are transfers to shared accounts. These are considered - * expenses. - * - * @param Carbon $start - * @param Carbon $end - * - * @return Collection - */ - public function sharedExpenses(Carbon $start, Carbon $end); - - /** - * With a slightly misleading name, this query returns all transfers to shared accounts - * which are technically expenses, since it won't be just your money that gets spend. - * - * @param Carbon $start - * @param Carbon $end - * - * @return Collection - */ - public function sharedExpensesByCategory(Carbon $start, Carbon $end); } diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index 9f65632b27..a6aacdc3f6 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -65,75 +65,6 @@ class ReportController extends Controller return view('reports.index', compact('months', 'hasShared')); } - /** - * @param Account $account - * @param string $year - * @param string $month - * - * @return \Illuminate\View\View - */ - public function modalBalancedTransfers(Account $account, $year = '2014', $month = '1') - { - - $start = new Carbon($year . '-' . $month . '-01'); - $end = clone $start; - $end->endOfMonth(); - - $journals = $this->query->balancedTransactionsList($account, $start, $end); - - return view('reports.modal-journal-list', compact('journals')); - - - } - - /** - * @param Account $account - * @param string $year - * @param string $month - * - * @return View - * @internal param ReportQueryInterface $query - * - */ - public function modalLeftUnbalanced(Account $account, $year = '2014', $month = '1') - { - $start = new Carbon($year . '-' . $month . '-01'); - $end = clone $start; - $end->endOfMonth(); - $set = $this->query->getTransactionsWithoutBudget($account, $start, $end); - - $journals = $set->filter( - function (TransactionJournal $journal) { - $count = $journal->transactiongroups()->where('relation', 'balance')->count(); - if ($count == 0) { - return $journal; - } - - return null; - } - ); - - return view('reports.modal-journal-list', compact('journals')); - } - - /** - * @param Account $account - * @param string $year - * @param string $month - * - * @return \Illuminate\View\View - */ - public function modalNoBudget(Account $account, $year = '2014', $month = '1') - { - $start = new Carbon($year . '-' . $month . '-01'); - $end = clone $start; - $end->endOfMonth(); - $journals = $this->query->getTransactionsWithoutBudget($account, $start, $end); - - return view('reports.modal-journal-list', compact('journals')); - - } - /** * @param string $year * @param string $month diff --git a/app/Http/routes.php b/app/Http/routes.php index 941f44a147..923e3c593c 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -373,14 +373,6 @@ Route::group( ); // pop ups for budget report: - Route::get('/reports/modal/{account}/{year}/{month}/no-budget', ['uses' => 'ReportController@modalNoBudget', 'as' => 'reports.no-budget']); - Route::get( - '/reports/modal/{account}/{year}/{month}/balanced-transfers', - ['uses' => 'ReportController@modalBalancedTransfers', 'as' => 'reports.balanced-transfers'] - ); - Route::get( - '/reports/modal/{account}/{year}/{month}/left-unbalanced', ['uses' => 'ReportController@modalLeftUnbalanced', 'as' => 'reports.left-unbalanced'] - ); /** * Search Controller diff --git a/resources/twig/reports/modal-journal-list.twig b/resources/twig/reports/modal-journal-list.twig deleted file mode 100644 index 2d2d14b796..0000000000 --- a/resources/twig/reports/modal-journal-list.twig +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/tests/helpers/ReportHelperTest.php b/tests/helpers/ReportHelperTest.php index 4a0a1d2796..729032893b 100644 --- a/tests/helpers/ReportHelperTest.php +++ b/tests/helpers/ReportHelperTest.php @@ -39,8 +39,6 @@ class ReportHelperTest extends TestCase /** * @covers FireflyIII\Helpers\Report\ReportHelper::getBudgetsForMonth - * @covers FireflyIII\Helpers\Report\ReportQuery::journalsByBudget - * @covers FireflyIII\Helpers\Report\ReportQuery::sharedExpenses */ public function testGetBudgetsForMonthWithShared() { @@ -74,7 +72,6 @@ class ReportHelperTest extends TestCase /** * @covers FireflyIII\Helpers\Report\ReportHelper::getBudgetsForMonth - * @covers FireflyIII\Helpers\Report\ReportQuery::journalsByBudget */ public function testGetBudgetsForMonthWithoutShared() {