mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-01-03 20:14:31 +00:00
New stuff!
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
use FireflyIII\Database\Account as AccountRepository;
|
||||
use FireflyIII\Exception\FireflyException;
|
||||
use Illuminate\Support\MessageBag;
|
||||
|
||||
/**
|
||||
* Class AccountController
|
||||
@@ -9,11 +9,53 @@ use Illuminate\Support\MessageBag;
|
||||
class AccountController extends BaseController
|
||||
{
|
||||
|
||||
/** @var array */
|
||||
protected $_accountTypesByIdentifier
|
||||
= [
|
||||
'asset' => ['Default account', 'Asset account'],
|
||||
'expense' => ['Expense account', 'Beneficiary account'],
|
||||
'revenue' => ['Revenue account'],
|
||||
];
|
||||
|
||||
/** @var AccountRepository */
|
||||
protected $_repository;
|
||||
|
||||
/** @var array */
|
||||
protected $_shortNamesByFullName
|
||||
= [
|
||||
'Default account' => 'asset',
|
||||
'Asset account' => 'asset',
|
||||
'Expense account' => 'expense',
|
||||
'Beneficiary account' => 'expense',
|
||||
'Revenue account' => 'revenue',
|
||||
];
|
||||
|
||||
/** @var array */
|
||||
protected $_subIconsByIdentifier
|
||||
= [
|
||||
'asset' => 'fa-money',
|
||||
'Asset account' => 'fa-money',
|
||||
'Default account' => 'fa-money',
|
||||
'expense' => 'fa-shopping-cart',
|
||||
'Expense account' => 'fa-shopping-cart',
|
||||
'Beneficiary account' => 'fa-shopping-cart',
|
||||
'revenue' => 'fa-download',
|
||||
'Revenue account' => 'fa-download',
|
||||
];
|
||||
/** @var array */
|
||||
protected $_subTitlesByIdentifier
|
||||
= [
|
||||
'asset' => 'Asset accounts',
|
||||
'expense' => 'Expense accounts',
|
||||
'revenue' => 'Revenue accounts',
|
||||
];
|
||||
|
||||
/**
|
||||
*
|
||||
* @param AccountRepository $repository
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct(AccountRepository $repository)
|
||||
{
|
||||
$this->_repository = $repository;
|
||||
View::share('mainTitleIcon', 'fa-credit-card');
|
||||
View::share('title', 'Accounts');
|
||||
}
|
||||
@@ -25,18 +67,8 @@ class AccountController extends BaseController
|
||||
*/
|
||||
public function create($what)
|
||||
{
|
||||
switch ($what) {
|
||||
case 'asset':
|
||||
$subTitleIcon = 'fa-money';
|
||||
break;
|
||||
case 'expense':
|
||||
$subTitleIcon = 'fa-shopping-cart';
|
||||
break;
|
||||
case 'revenue':
|
||||
$subTitleIcon = 'fa-download';
|
||||
break;
|
||||
}
|
||||
$subTitle = 'Create a new ' . $what . ' account';
|
||||
$subTitleIcon = $this->_subIconsByIdentifier[$what];
|
||||
$subTitle = 'Create a new ' . $what . ' account';
|
||||
|
||||
return View::make('accounts.create', compact('subTitleIcon', 'what', 'subTitle'));
|
||||
}
|
||||
@@ -61,28 +93,15 @@ class AccountController extends BaseController
|
||||
public function destroy(Account $account)
|
||||
{
|
||||
|
||||
$type = $account->accountType->type;
|
||||
$name = $account->name;
|
||||
$type = $account->accountType->type;
|
||||
$typeName = $this->_shortNamesByFullName[$type];
|
||||
$name = $account->name;
|
||||
|
||||
/** @var \FireflyIII\Database\Account $acct */
|
||||
$acct = App::make('FireflyIII\Database\Account');
|
||||
$this->_repository->destroy($account);
|
||||
|
||||
$acct->destroy($account);
|
||||
Session::flash('success', 'The ' . $typeName . ' account "' . e($name) . '" was deleted.');
|
||||
|
||||
$return = 'asset';
|
||||
switch ($type) {
|
||||
case 'Expense account':
|
||||
case 'Beneficiary account':
|
||||
$return = 'expense';
|
||||
break;
|
||||
case 'Revenue account':
|
||||
$return = 'revenue';
|
||||
break;
|
||||
}
|
||||
|
||||
Session::flash('success', 'The ' . $return . ' account "' . e($name) . '" was deleted.');
|
||||
|
||||
return Redirect::route('accounts.index', $return);
|
||||
return Redirect::route('accounts.index', $type);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,42 +111,24 @@ class AccountController extends BaseController
|
||||
*/
|
||||
public function edit(Account $account)
|
||||
{
|
||||
$prefilled = [];
|
||||
|
||||
switch ($account->accountType->type) {
|
||||
case 'Asset account':
|
||||
case 'Default account':
|
||||
$subTitleIcon = 'fa-money';
|
||||
$prefilled['account_role'] = $account->getMeta('accountRole');
|
||||
break;
|
||||
case 'Expense account':
|
||||
case 'Beneficiary account':
|
||||
$subTitleIcon = 'fa-shopping-cart';
|
||||
break;
|
||||
case 'Revenue account':
|
||||
$subTitleIcon = 'fa-download';
|
||||
break;
|
||||
}
|
||||
$openingBalance = $this->_repository->openingBalanceTransaction($account);
|
||||
$subTitleIcon = $this->_subIconsByIdentifier[$account->accountType->type];
|
||||
$subTitle = 'Edit ' . strtolower($account->accountType->type) . ' "' . $account->name . '"';
|
||||
|
||||
/** @var \FireflyIII\Database\Account $acct */
|
||||
$acct = App::make('FireflyIII\Database\Account');
|
||||
// pre fill some useful values.
|
||||
$preFilled = [
|
||||
'account_role' => $account->getMeta('accountRole'),
|
||||
'openingBalanceDate' => $openingBalance ? $openingBalance->date->format('Y-m-d') : null,
|
||||
'openingBalance' => $openingBalance ? $openingBalance->getAmount($account) : null
|
||||
];
|
||||
Session::flash('preFilled', $preFilled);
|
||||
|
||||
$openingBalance = $acct->openingBalanceTransaction($account);
|
||||
Session::forget('prefilled');
|
||||
if (!is_null($openingBalance)) {
|
||||
$prefilled['openingbalancedate'] = $openingBalance->date->format('Y-m-d');
|
||||
$prefilled['openingbalance'] = floatval($openingBalance->transactions()->where('account_id', $account->id)->first()->amount);
|
||||
}
|
||||
Session::flash('prefilled', $prefilled);
|
||||
|
||||
return View::make('accounts.edit', compact('account', 'openingBalance', 'subTitleIcon'))->with(
|
||||
'subTitle', 'Edit ' . strtolower(
|
||||
$account->accountType->type
|
||||
) . ' "' . $account->name . '"'
|
||||
);
|
||||
return View::make('accounts.edit', compact('account', 'subTitle', 'openingBalance', 'subTitleIcon'));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $what
|
||||
*
|
||||
* @return View
|
||||
@@ -135,94 +136,28 @@ class AccountController extends BaseController
|
||||
*/
|
||||
public function index($what = 'default')
|
||||
{
|
||||
/** @var \FireflyIII\Database\Account $acct */
|
||||
$acct = App::make('FireflyIII\Database\Account');
|
||||
$subTitle = $this->_subTitlesByIdentifier[$what];
|
||||
$subTitleIcon = $this->_subIconsByIdentifier[$what];
|
||||
|
||||
switch ($what) {
|
||||
default:
|
||||
throw new FireflyException('Cannot handle account type "' . e($what) . '".');
|
||||
break;
|
||||
case 'asset':
|
||||
$subTitleIcon = 'fa-money';
|
||||
$subTitle = 'Asset accounts';
|
||||
$accounts = $acct->getAssetAccounts();
|
||||
break;
|
||||
case 'expense':
|
||||
$subTitleIcon = 'fa-shopping-cart';
|
||||
$subTitle = 'Expense accounts';
|
||||
$accounts = $acct->getExpenseAccounts();
|
||||
break;
|
||||
case 'revenue':
|
||||
$subTitleIcon = 'fa-download';
|
||||
$subTitle = 'Revenue accounts';
|
||||
$accounts = $acct->getRevenueAccounts();
|
||||
break;
|
||||
}
|
||||
|
||||
$accounts->each(
|
||||
function (Account $account) {
|
||||
if (Cache::has('account.' . $account->id . '.lastActivityDate')) {
|
||||
$account->lastActionDate = Cache::get('account.' . $account->id . '.lastActivityDate');
|
||||
} else {
|
||||
$transaction = $account->transactions()->orderBy('updated_at', 'DESC')->first();
|
||||
if (is_null($transaction)) {
|
||||
$account->lastActionDate = null;
|
||||
Cache::forever('account.' . $account->id . '.lastActivityDate', 0);
|
||||
} else {
|
||||
$account->lastActionDate = $transaction->updated_at;
|
||||
Cache::forever('account.' . $account->id . '.lastActivityDate', $transaction->updated_at);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
$accounts = $this->_repository->getAccountsByType($this->_accountTypesByIdentifier[$what]);
|
||||
|
||||
return View::make('accounts.index', compact('what', 'subTitleIcon', 'subTitle', 'accounts'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Account $account
|
||||
* @param string $view
|
||||
* @param string $range
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function show(Account $account, $view = 'session')
|
||||
public function show(Account $account, $range = 'session')
|
||||
{
|
||||
switch ($account->accountType->type) {
|
||||
case 'Asset account':
|
||||
case 'Default account':
|
||||
$subTitleIcon = 'fa-money';
|
||||
$what = 'asset';
|
||||
break;
|
||||
case 'Expense account':
|
||||
case 'Beneficiary account':
|
||||
$subTitleIcon = 'fa-shopping-cart';
|
||||
$what = 'expense';
|
||||
break;
|
||||
case 'Revenue account':
|
||||
$subTitleIcon = 'fa-download';
|
||||
$what = 'revenue';
|
||||
break;
|
||||
}
|
||||
$subTitleIcon = $this->_subIconsByIdentifier[$account->accountType->type];
|
||||
$what = $this->_shortNamesByFullName[$account->accountType->type];
|
||||
$journals = $this->_repository->getTransactionJournals($account, 50, $range);
|
||||
$subTitle = 'Details for ' . strtolower($account->accountType->type) . ' "' . $account->name . '"';
|
||||
|
||||
// get a paginated view of all transactions for this account:
|
||||
/** @var \FireflyIII\Database\Account $acct */
|
||||
$acct = App::make('FireflyIII\Database\Account');
|
||||
switch ($view) {
|
||||
default:
|
||||
case 'session':
|
||||
$journals = $acct->getTransactionJournals($account, 50);
|
||||
break;
|
||||
case 'all':
|
||||
$journals = $acct->getAllTransactionJournals($account, 50);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return View::make('accounts.show', compact('account', 'what', 'view', 'subTitleIcon', 'journals'))->with('account', $account)->with(
|
||||
'subTitle', 'Details for ' . strtolower($account->accountType->type) . ' "' . $account->name . '"'
|
||||
);
|
||||
return View::make('accounts.show', compact('account', 'what', 'range', 'subTitleIcon', 'journals', 'subTitle'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -232,45 +167,36 @@ class AccountController extends BaseController
|
||||
public function store()
|
||||
{
|
||||
|
||||
$data = Input::all();
|
||||
$data['what'] = isset($data['what']) && $data['what'] != '' ? $data['what'] : 'asset';
|
||||
/** @var \FireflyIII\Database\Account $acct */
|
||||
$acct = App::make('FireflyIII\Database\Account');
|
||||
$data = Input::except('_token');
|
||||
|
||||
switch ($data['post_submit_action']) {
|
||||
default:
|
||||
throw new FireflyException('Cannot handle post_submit_action "' . e($data['post_submit_action']) . '"');
|
||||
break;
|
||||
case 'return_to_edit':
|
||||
case 'store':
|
||||
$messages = $acct->validate($data);
|
||||
/** @var MessageBag $messages ['errors'] */
|
||||
if ($messages['errors']->count() > 0) {
|
||||
Session::flash('warnings', $messages['warnings']);
|
||||
Session::flash('successes', $messages['successes']);
|
||||
Session::flash('error', 'Could not save account: ' . $messages['errors']->first());
|
||||
// always validate:
|
||||
$messages = $this->_repository->validate($data);
|
||||
|
||||
return Redirect::route('accounts.create', $data['what'])->withInput()->withErrors($messages['errors']);
|
||||
}
|
||||
// store!
|
||||
$acct->store($data);
|
||||
Session::flash('success', 'New account stored!');
|
||||
|
||||
if ($data['post_submit_action'] == 'create_another') {
|
||||
return Redirect::route('accounts.create', $data['what']);
|
||||
} else {
|
||||
return Redirect::route('accounts.index', $data['what']);
|
||||
}
|
||||
break;
|
||||
case 'validate_only':
|
||||
$messageBags = $acct->validate($data);
|
||||
Session::flash('warnings', $messageBags['warnings']);
|
||||
Session::flash('successes', $messageBags['successes']);
|
||||
Session::flash('errors', $messageBags['errors']);
|
||||
|
||||
return Redirect::route('accounts.create', $data['what'])->withInput();
|
||||
break;
|
||||
// flash messages:
|
||||
Session::flash('warnings', $messages['warnings']);
|
||||
Session::flash('successes', $messages['successes']);
|
||||
Session::flash('errors', $messages['errors']);
|
||||
if ($messages['errors']->count() > 0) {
|
||||
Session::flash('error', 'Could not store account: ' . $messages['errors']->first());
|
||||
}
|
||||
|
||||
// return to create screen:
|
||||
if ($data['post_submit_action'] == 'validate_only' || $messages['errors']->count() > 0) {
|
||||
return Redirect::route('accounts.create', $data['what'])->withInput();
|
||||
}
|
||||
|
||||
// store:
|
||||
$this->_repository->store($data);
|
||||
Session::flash('success', 'Account "' . e($data['name']) . '" stored.');
|
||||
if ($data['post_submit_action'] == 'store') {
|
||||
return Redirect::route('accounts.index', $data['what']);
|
||||
}
|
||||
// create another.
|
||||
if ($data['post_submit_action'] == 'create_another') {
|
||||
return Redirect::route('accounts.create', $data['what'])->withInput();
|
||||
}
|
||||
|
||||
return Redirect::route('accounts.index', $data['what']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -281,62 +207,38 @@ class AccountController extends BaseController
|
||||
*/
|
||||
public function update(Account $account)
|
||||
{
|
||||
$data = Input::except('_token');
|
||||
$data['what'] = $this->_shortNamesByFullName[$account->accountType->type];
|
||||
|
||||
/** @var \FireflyIII\Database\Account $acct */
|
||||
$acct = App::make('FireflyIII\Database\Account');
|
||||
$data = Input::except('_token');
|
||||
// always validate:
|
||||
$messages = $this->_repository->validate($data);
|
||||
|
||||
switch ($account->accountType->type) {
|
||||
default:
|
||||
throw new FireflyException('Cannot handle account type "' . e($account->accountType->type) . '"');
|
||||
break;
|
||||
case 'Default account':
|
||||
case 'Asset account':
|
||||
$data['what'] = 'asset';
|
||||
break;
|
||||
case 'Expense account':
|
||||
case 'Beneficiary account':
|
||||
$data['what'] = 'expense';
|
||||
break;
|
||||
case 'Revenue account':
|
||||
$data['what'] = 'revenue';
|
||||
break;
|
||||
// flash messages:
|
||||
Session::flash('warnings', $messages['warnings']);
|
||||
Session::flash('successes', $messages['successes']);
|
||||
Session::flash('errors', $messages['errors']);
|
||||
if ($messages['errors']->count() > 0) {
|
||||
Session::flash('error', 'Could not update account: ' . $messages['errors']->first());
|
||||
}
|
||||
|
||||
switch (Input::get('post_submit_action')) {
|
||||
default:
|
||||
throw new FireflyException('Cannot handle post_submit_action "' . e(Input::get('post_submit_action')) . '"');
|
||||
break;
|
||||
case 'create_another':
|
||||
case 'update':
|
||||
$messages = $acct->validate($data);
|
||||
/** @var MessageBag $messages ['errors'] */
|
||||
if ($messages['errors']->count() > 0) {
|
||||
Session::flash('warnings', $messages['warnings']);
|
||||
Session::flash('successes', $messages['successes']);
|
||||
Session::flash('error', 'Could not save account: ' . $messages['errors']->first());
|
||||
|
||||
return Redirect::route('accounts.edit', $account->id)->withInput()->withErrors($messages['errors']);
|
||||
}
|
||||
// store!
|
||||
$acct->update($account, $data);
|
||||
Session::flash('success', 'Account updated!');
|
||||
|
||||
if ($data['post_submit_action'] == 'create_another') {
|
||||
return Redirect::route('accounts.edit', $account->id);
|
||||
} else {
|
||||
return Redirect::route('accounts.index', $data['what']);
|
||||
}
|
||||
case 'validate_only':
|
||||
$messageBags = $acct->validate($data);
|
||||
Session::flash('warnings', $messageBags['warnings']);
|
||||
Session::flash('successes', $messageBags['successes']);
|
||||
Session::flash('errors', $messageBags['errors']);
|
||||
|
||||
return Redirect::route('accounts.edit', $account->id)->withInput();
|
||||
break;
|
||||
// return to update screen:
|
||||
if ($data['post_submit_action'] == 'validate_only' || $messages['errors']->count() > 0) {
|
||||
return Redirect::route('accounts.edit', $account->id)->withInput();
|
||||
}
|
||||
|
||||
// update
|
||||
$this->_repository->update($account, $data);
|
||||
Session::flash('success', 'Account "' . e($data['name']) . '" updated.');
|
||||
|
||||
// go back to list
|
||||
if ($data['post_submit_action'] == 'update') {
|
||||
return Redirect::route('accounts.index', $data['what']);
|
||||
}
|
||||
// go back to update screen.
|
||||
if ($data['post_submit_action'] == 'return_to_edit') {
|
||||
return Redirect::route('accounts.edit', $account->id);
|
||||
}
|
||||
|
||||
return Redirect::route('accounts.index', $data['what']);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -110,7 +110,7 @@ class BudgetController extends BaseController
|
||||
*/
|
||||
public function edit(Budget $budget)
|
||||
{
|
||||
Session::flash('prefilled', ['name' => $budget->name]);
|
||||
Session::flash('preFilled', ['name' => $budget->name]);
|
||||
|
||||
return View::make('budgets.edit')->with('budget', $budget)->with('subTitle', 'Edit budget "' . $budget->name . '"');
|
||||
|
||||
|
||||
@@ -103,16 +103,16 @@ class PiggybankController extends BaseController
|
||||
/*
|
||||
* Flash some data to fill the form.
|
||||
*/
|
||||
$prefilled = ['name' => $piggybank->name,
|
||||
$preFilled = ['name' => $piggybank->name,
|
||||
'account_id' => $piggybank->account_id,
|
||||
'targetamount' => $piggybank->targetamount,
|
||||
'targetdate' => !is_null($piggybank->targetdate) ? $piggybank->targetdate->format('Y-m-d') : null,
|
||||
'reminder' => $piggybank->reminder,
|
||||
'remind_me' => intval($piggybank->remind_me) == 1 || !is_null($piggybank->reminder) ? true : false
|
||||
];
|
||||
Session::flash('prefilled', $prefilled);
|
||||
Session::flash('preFilled', $preFilled);
|
||||
|
||||
return View::make('piggybanks.edit', compact('piggybank', 'accounts', 'periods', 'prefilled'))->with('title', 'Piggybanks')->with(
|
||||
return View::make('piggybanks.edit', compact('piggybank', 'accounts', 'periods', 'preFilled'))->with('title', 'Piggybanks')->with(
|
||||
'mainTitleIcon', 'fa-sort-amount-asc'
|
||||
)->with('subTitle', 'Edit piggy bank "' . e($piggybank->name) . '"')->with('subTitleIcon', 'fa-pencil');
|
||||
}
|
||||
|
||||
@@ -33,13 +33,13 @@ class ReminderController extends BaseController
|
||||
break;
|
||||
case 'Piggybank':
|
||||
$amount = Reminders::amountForReminder($reminder);
|
||||
$prefilled = [
|
||||
$preFilled = [
|
||||
'amount' => round($amount, 2),
|
||||
'description' => 'Money for ' . $reminder->remindersable->name,
|
||||
'piggybank_id' => $reminder->remindersable_id,
|
||||
'account_to_id' => $reminder->remindersable->account_id
|
||||
];
|
||||
Session::flash('prefilled', $prefilled);
|
||||
Session::flash('preFilled', $preFilled);
|
||||
|
||||
return Redirect::route('transactions.create', 'transfer');
|
||||
break;
|
||||
|
||||
@@ -1,11 +1,41 @@
|
||||
<?php
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Database\Account as AccountRepository;
|
||||
use FireflyIII\Database\Report as ReportRepository;
|
||||
use FireflyIII\Database\TransactionJournal as TransactionJournalRepository;
|
||||
use FireflyIII\Report\ReportInterface as ReportHelper;
|
||||
|
||||
/**
|
||||
* Class ReportController
|
||||
*/
|
||||
class ReportController extends BaseController
|
||||
{
|
||||
/** @var AccountRepository */
|
||||
protected $_accounts;
|
||||
|
||||
/** @var TransactionJournalRepository */
|
||||
protected $_journals;
|
||||
|
||||
/** @var ReportHelper */
|
||||
protected $_reports;
|
||||
|
||||
/** @var ReportRepository */
|
||||
protected $_repository;
|
||||
|
||||
/**
|
||||
* @param AccountRepository $accounts
|
||||
* @param TransactionJournalRepository $journals
|
||||
* @param ReportHelper $reports
|
||||
* @param ReportRepository $repository
|
||||
*/
|
||||
public function __construct(AccountRepository $accounts, TransactionJournalRepository $journals, ReportHelper $reports, ReportRepository $repository)
|
||||
{
|
||||
$this->_accounts = $accounts;
|
||||
$this->_journals = $journals;
|
||||
$this->_reports = $reports;
|
||||
$this->_repository = $repository;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $year
|
||||
@@ -115,38 +145,13 @@ class ReportController extends BaseController
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
/** @var \FireflyIII\Database\TransactionJournal $journals */
|
||||
$journals = App::make('FireflyIII\Database\TransactionJournal');
|
||||
/** @var TransactionJournal $journal */
|
||||
$journal = $journals->first();
|
||||
if (is_null($journal)) {
|
||||
$date = Carbon::now();
|
||||
} else {
|
||||
$date = clone $journal->date;
|
||||
}
|
||||
$years = [];
|
||||
$months = [];
|
||||
while ($date <= Carbon::now()) {
|
||||
$years[] = $date->format('Y');
|
||||
$date->addYear();
|
||||
}
|
||||
// months
|
||||
if (is_null($journal)) {
|
||||
$date = Carbon::now();
|
||||
} else {
|
||||
$date = clone $journal->date;
|
||||
}
|
||||
while ($date <= Carbon::now()) {
|
||||
$months[] = [
|
||||
'formatted' => $date->format('F Y'),
|
||||
'month' => intval($date->format('m')),
|
||||
'year' => intval($date->format('Y')),
|
||||
];
|
||||
$date->addMonth();
|
||||
}
|
||||
$start = $this->_journals->firstDate();
|
||||
$months = $this->_reports->listOfMonths(clone $start);
|
||||
$years = $this->_reports->listOfYears(clone $start);
|
||||
$title = 'Reports';
|
||||
$mainTitleIcon = 'fa-line-chart';
|
||||
|
||||
|
||||
return View::make('reports.index', compact('years', 'months'))->with('title', 'Reports')->with('mainTitleIcon', 'fa-line-chart');
|
||||
return View::make('reports.index', compact('years', 'months', 'title', 'mainTitleIcon'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -235,40 +240,43 @@ class ReportController extends BaseController
|
||||
*/
|
||||
public function year($year)
|
||||
{
|
||||
Config::set('app.debug', false);
|
||||
try {
|
||||
$date = new Carbon('01-01-' . $year);
|
||||
new Carbon('01-01-' . $year);
|
||||
} catch (Exception $e) {
|
||||
App::abort(500);
|
||||
}
|
||||
$date = new Carbon('01-01-' . $year);
|
||||
$date = new Carbon('01-01-' . $year);
|
||||
$title = 'Reports';
|
||||
$subTitle = $year;
|
||||
$subTitleIcon = 'fa-bar-chart';
|
||||
$mainTitleIcon = 'fa-line-chart';
|
||||
|
||||
/** @var \FireflyIII\Database\TransactionJournal $tj */
|
||||
$tj = App::make('FireflyIII\Database\TransactionJournal');
|
||||
$balances = $this->_reports->yearBalanceReport($date);
|
||||
$groupedIncomes = $this->_reports->groupByRevenue($date, 'income');
|
||||
$groupedExpenses = $this->_reports->groupByRevenue($date, 'expense');
|
||||
|
||||
/** @var \FireflyIII\Database\Account $accountRepository */
|
||||
$accountRepository = App::make('FireflyIII\Database\Account');
|
||||
|
||||
/** @var \FireflyIII\Database\Report $reportRepository */
|
||||
$reportRepository = App::make('FireflyIII\Database\Report');
|
||||
return View::make(
|
||||
'reports.year', compact('date', 'groupedIncomes', 'groupedExpenses', 'year', 'balances', 'title', 'subTitle', 'subTitleIcon', 'mainTitleIcon')
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
* For this year, get:
|
||||
* - the sum of all expenses.
|
||||
* - the sum of all incomes
|
||||
* - per month, the sum of all expenses
|
||||
* - per month, the sum of all incomes
|
||||
* - 2x for shared and not-shared alike.
|
||||
*
|
||||
* - balance difference for all accounts.
|
||||
*/
|
||||
|
||||
$accounts = $accountRepository->getAssetAccounts();
|
||||
|
||||
// get some sums going
|
||||
$summary = [];
|
||||
|
||||
/** @var \Account $account */
|
||||
$accounts->each(
|
||||
function (\Account $account) {
|
||||
if ($account->getMeta('accountRole') == 'sharedExpense') {
|
||||
$account->sharedExpense = true;
|
||||
} else {
|
||||
$account->sharedExpense = false;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
$end = clone $date;
|
||||
$end->endOfYear();
|
||||
while ($date < $end) {
|
||||
@@ -280,7 +288,7 @@ class ReportController extends BaseController
|
||||
$expenseShared = 0;
|
||||
|
||||
foreach ($accounts as $account) {
|
||||
if ($account->sharedExpense === true) {
|
||||
if ($account->accountRole == 'sharedExpense') {
|
||||
$incomeShared += $reportRepository->getIncomeByMonth($account, $date);
|
||||
$expenseShared += $reportRepository->getExpenseByMonth($account, $date);
|
||||
} else {
|
||||
|
||||
@@ -103,14 +103,14 @@ class TransactionController extends BaseController
|
||||
/*
|
||||
* respond to a possible given values in the URL.
|
||||
*/
|
||||
$prefilled = Session::has('prefilled') ? Session::get('prefilled') : [];
|
||||
$preFilled = Session::has('preFilled') ? Session::get('preFilled') : [];
|
||||
$respondTo = ['account_id', 'account_from_id'];
|
||||
foreach ($respondTo as $r) {
|
||||
if (!is_null(Input::get($r))) {
|
||||
$prefilled[$r] = Input::get($r);
|
||||
$preFilled[$r] = Input::get($r);
|
||||
}
|
||||
}
|
||||
Session::put('prefilled', $prefilled);
|
||||
Session::put('preFilled', $preFilled);
|
||||
|
||||
return View::make('transactions.create')->with('accounts', $assetAccounts)->with('budgets', $budgets)->with('what', $what)->with('piggies', $piggies)
|
||||
->with('subTitle', 'Add a new ' . $what);
|
||||
@@ -244,7 +244,7 @@ class TransactionController extends BaseController
|
||||
/*
|
||||
* Data to properly display the edit form.
|
||||
*/
|
||||
$prefilled = [
|
||||
$preFilled = [
|
||||
'date' => $journal->date->format('Y-m-d'),
|
||||
'category' => '',
|
||||
'budget_id' => 0,
|
||||
@@ -256,7 +256,7 @@ class TransactionController extends BaseController
|
||||
*/
|
||||
$category = $journal->categories()->first();
|
||||
if (!is_null($category)) {
|
||||
$prefilled['category'] = $category->name;
|
||||
$preFilled['category'] = $category->name;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -267,33 +267,33 @@ class TransactionController extends BaseController
|
||||
case 'withdrawal':
|
||||
if (floatval($journal->transactions[0]->amount) < 0) {
|
||||
// transactions[0] is the asset account that paid for the withdrawal.
|
||||
$prefilled['account_id'] = $journal->transactions[0]->account->id;
|
||||
$prefilled['expense_account'] = $journal->transactions[1]->account->name;
|
||||
$prefilled['amount'] = floatval($journal->transactions[1]->amount);
|
||||
$preFilled['account_id'] = $journal->transactions[0]->account->id;
|
||||
$preFilled['expense_account'] = $journal->transactions[1]->account->name;
|
||||
$preFilled['amount'] = floatval($journal->transactions[1]->amount);
|
||||
} else {
|
||||
// transactions[1] is the asset account that paid for the withdrawal.
|
||||
$prefilled['account_id'] = $journal->transactions[1]->account->id;
|
||||
$prefilled['expense_account'] = $journal->transactions[0]->account->name;
|
||||
$prefilled['amount'] = floatval($journal->transactions[0]->amount);
|
||||
$preFilled['account_id'] = $journal->transactions[1]->account->id;
|
||||
$preFilled['expense_account'] = $journal->transactions[0]->account->name;
|
||||
$preFilled['amount'] = floatval($journal->transactions[0]->amount);
|
||||
}
|
||||
|
||||
|
||||
$budget = $journal->budgets()->first();
|
||||
if (!is_null($budget)) {
|
||||
$prefilled['budget_id'] = $budget->id;
|
||||
$preFilled['budget_id'] = $budget->id;
|
||||
}
|
||||
break;
|
||||
case 'deposit':
|
||||
if (floatval($journal->transactions[0]->amount) < 0) {
|
||||
// transactions[0] contains the account the money came from.
|
||||
$prefilled['account_id'] = $journal->transactions[1]->account->id;
|
||||
$prefilled['revenue_account'] = $journal->transactions[0]->account->name;
|
||||
$prefilled['amount'] = floatval($journal->transactions[1]->amount);
|
||||
$preFilled['account_id'] = $journal->transactions[1]->account->id;
|
||||
$preFilled['revenue_account'] = $journal->transactions[0]->account->name;
|
||||
$preFilled['amount'] = floatval($journal->transactions[1]->amount);
|
||||
} else {
|
||||
// transactions[1] contains the account the money came from.
|
||||
$prefilled['account_id'] = $journal->transactions[0]->account->id;
|
||||
$prefilled['revenue_account'] = $journal->transactions[1]->account->name;
|
||||
$prefilled['amount'] = floatval($journal->transactions[0]->amount);
|
||||
$preFilled['account_id'] = $journal->transactions[0]->account->id;
|
||||
$preFilled['revenue_account'] = $journal->transactions[1]->account->name;
|
||||
$preFilled['amount'] = floatval($journal->transactions[0]->amount);
|
||||
|
||||
}
|
||||
|
||||
@@ -301,17 +301,17 @@ class TransactionController extends BaseController
|
||||
case 'transfer':
|
||||
if (floatval($journal->transactions[0]->amount) < 0) {
|
||||
// zero = from account.
|
||||
$prefilled['account_from_id'] = $journal->transactions[0]->account->id;
|
||||
$prefilled['account_to_id'] = $journal->transactions[1]->account->id;
|
||||
$prefilled['amount'] = floatval($journal->transactions[1]->amount);
|
||||
$preFilled['account_from_id'] = $journal->transactions[0]->account->id;
|
||||
$preFilled['account_to_id'] = $journal->transactions[1]->account->id;
|
||||
$preFilled['amount'] = floatval($journal->transactions[1]->amount);
|
||||
} else {
|
||||
// one = from account
|
||||
$prefilled['account_from_id'] = $journal->transactions[1]->account->id;
|
||||
$prefilled['account_to_id'] = $journal->transactions[0]->account->id;
|
||||
$prefilled['amount'] = floatval($journal->transactions[0]->amount);
|
||||
$preFilled['account_from_id'] = $journal->transactions[1]->account->id;
|
||||
$preFilled['account_to_id'] = $journal->transactions[0]->account->id;
|
||||
$preFilled['amount'] = floatval($journal->transactions[0]->amount);
|
||||
}
|
||||
if ($journal->piggybankevents()->count() > 0) {
|
||||
$prefilled['piggybank_id'] = $journal->piggybankevents()->first()->piggybank_id;
|
||||
$preFilled['piggybank_id'] = $journal->piggybankevents()->first()->piggybank_id;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -322,7 +322,7 @@ class TransactionController extends BaseController
|
||||
|
||||
return View::make('transactions.edit')->with('journal', $journal)->with('accounts', $accounts)->with(
|
||||
'what', $what
|
||||
)->with('budgets', $budgets)->with('data', $prefilled)->with('piggies', $piggies)->with(
|
||||
)->with('budgets', $budgets)->with('data', $preFilled)->with('piggies', $piggies)->with(
|
||||
'subTitle', 'Edit ' . $what . ' "' . $journal->description . '"'
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user