From dbb1c4d5341b904eb808dccb2bc0d00b7fbf4aea Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 17 May 2015 09:35:49 +0200 Subject: [PATCH] Fixed some reports. --- app/Helpers/Report/ReportQuery.php | 54 ------------------- app/Helpers/Report/ReportQueryInterface.php | 15 ------ app/Http/Controllers/Chart/BillController.php | 2 +- app/Http/Controllers/JsonController.php | 4 +- app/Http/Controllers/PiggyBankController.php | 11 ++-- app/Providers/ConfigServiceProvider.php | 2 + .../Account/AccountRepository.php | 6 ++- .../Account/AccountRepositoryInterface.php | 3 +- app/Repositories/Budget/BudgetRepository.php | 1 - app/Support/Navigation.php | 20 ++----- app/Support/Steam.php | 11 +--- app/Support/Twig/General.php | 1 + app/Support/Twig/Journal.php | 32 ++++++----- 13 files changed, 45 insertions(+), 117 deletions(-) diff --git a/app/Helpers/Report/ReportQuery.php b/app/Helpers/Report/ReportQuery.php index fdaed62f68..5a31f9f502 100644 --- a/app/Helpers/Report/ReportQuery.php +++ b/app/Helpers/Report/ReportQuery.php @@ -202,60 +202,6 @@ class ReportQuery implements ReportQueryInterface } - /** - * Gets a list of expense accounts and the expenses therein, grouped by that expense account. - * This result excludes transfers to shared accounts which are expenses, technically. - * - * So now it will include them! - * - * @param Carbon $start - * @param Carbon $end - * @param bool $includeShared - * - * @return Collection - */ - public function journalsByExpenseAccount(Carbon $start, Carbon $end, $includeShared = false) - { - $query = $this->queryJournalsWithTransactions($start, $end); - if ($includeShared === false) { - // get all withdrawals not from a shared accounts - // and all transfers to a shared account - $query->where( - function (Builder $query) { - $query->where( - function (Builder $q) { - $q->where('transaction_types.type', 'Withdrawal'); - $q->where('acm_from.data', '!=', '"sharedAsset"'); - } - ); - $query->orWhere( - function (Builder $q) { - $q->where('transaction_types.type', 'Transfer'); - $q->where('acm_to.data', '=', '"sharedAsset"'); - } - ); - } - ); - } else { - // any withdrawal goes: - $query->where('transaction_types.type', 'Withdrawal'); - } - $query->before($end)->after($start) - ->where('transaction_journals.user_id', Auth::user()->id) - ->groupBy('t_to.account_id') - ->orderBy('queryAmount', 'DESC'); - - $data = $query->get(['t_to.account_id as id', 'ac_to.name as name', 'ac_to.encrypted', DB::Raw('SUM(t_to.amount) as `queryAmount`')]); - - // decrypt - $data->each( - function (Model $object) { - $object->name = intval($object->encrypted) == 1 ? Crypt::decrypt($object->name) : $object->name; - } - ); - - return $data; - } /** * @param Account $account diff --git a/app/Helpers/Report/ReportQueryInterface.php b/app/Helpers/Report/ReportQueryInterface.php index b732337ff4..09478d885b 100644 --- a/app/Helpers/Report/ReportQueryInterface.php +++ b/app/Helpers/Report/ReportQueryInterface.php @@ -78,19 +78,4 @@ interface ReportQueryInterface public function spentNoBudget(Account $account, Carbon $start, Carbon $end, $shared = false); - /** - * Gets a list of expense accounts and the expenses therein, grouped by that expense account. - * This result excludes transfers to shared accounts which are expenses, technically. - * - * So now it will include them! - * - * @param Carbon $start - * @param Carbon $end - * @param bool $includeShared - * - * @return Collection - * - */ - public function journalsByExpenseAccount(Carbon $start, Carbon $end, $includeShared = false); - } diff --git a/app/Http/Controllers/Chart/BillController.php b/app/Http/Controllers/Chart/BillController.php index f4570c3d5a..f32611d055 100644 --- a/app/Http/Controllers/Chart/BillController.php +++ b/app/Http/Controllers/Chart/BillController.php @@ -96,7 +96,7 @@ class BillController extends Controller $creditCards = $accounts->getCreditCards(); foreach ($creditCards as $creditCard) { - $balance = Steam::balance($creditCard, null, true); + $balance = Steam::balance($creditCard, $end, true); $date = new Carbon($creditCard->getMeta('ccMonthlyPaymentDate')); if ($balance < 0) { // unpaid! create a fake bill that matches the amount. diff --git a/app/Http/Controllers/JsonController.php b/app/Http/Controllers/JsonController.php index 4fb1c49ba2..c3d198abff 100644 --- a/app/Http/Controllers/JsonController.php +++ b/app/Http/Controllers/JsonController.php @@ -59,7 +59,7 @@ class JsonController extends Controller // if the balance is not zero, the monthly payment is still underway. /** @var Account $creditCard */ foreach ($creditCards as $creditCard) { - $balance = Steam::balance($creditCard, null, true); + $balance = Steam::balance($creditCard, $end, true); if ($balance == 0) { // find a transfer TO the credit card which should account for // anything paid. If not, the CC is not yet used. @@ -99,7 +99,7 @@ class JsonController extends Controller $creditCards = $accountRepository->getCreditCards(); foreach ($creditCards as $creditCard) { - $balance = Steam::balance($creditCard, null, true); + $balance = Steam::balance($creditCard, $end, true); $date = new Carbon($creditCard->getMeta('ccMonthlyPaymentDate')); if ($balance < 0) { // unpaid! create a fake bill that matches the amount. diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php index aa128c8223..de177cfb76 100644 --- a/app/Http/Controllers/PiggyBankController.php +++ b/app/Http/Controllers/PiggyBankController.php @@ -45,7 +45,8 @@ class PiggyBankController extends Controller */ public function add(AccountRepositoryInterface $repository, PiggyBank $piggyBank) { - $leftOnAccount = $repository->leftOnAccount($piggyBank->account); + $date = Session::get('end', Carbon::now()->endOfMonth()); + $leftOnAccount = $repository->leftOnAccount($piggyBank->account, $date); $savedSoFar = $piggyBank->currentRelevantRep()->currentamount; $leftToSave = $piggyBank->targetamount - $savedSoFar; $maxAmount = min($leftOnAccount, $leftToSave); @@ -157,6 +158,7 @@ class PiggyBankController extends Controller { /** @var Collection $piggyBanks */ $piggyBanks = $piggyRepository->getPiggyBanks(); + $end = Session::get('end', Carbon::now()->endOfMonth()); $accounts = []; /** @var PiggyBank $piggyBank */ @@ -172,8 +174,8 @@ class PiggyBankController extends Controller if (!isset($accounts[$account->id])) { $accounts[$account->id] = [ 'name' => $account->name, - 'balance' => Steam::balance($account, null, true), - 'leftForPiggyBanks' => $repository->leftOnAccount($account), + 'balance' => Steam::balance($account, $end, true), + 'leftForPiggyBanks' => $repository->leftOnAccount($account, $end), 'sumOfSaved' => $piggyBank->savedSoFar, 'sumOfTargets' => floatval($piggyBank->targetamount), 'leftToSave' => $piggyBank->leftToSave @@ -215,7 +217,8 @@ class PiggyBankController extends Controller public function postAdd(PiggyBankRepositoryInterface $repository, AccountRepositoryInterface $accounts, PiggyBank $piggyBank) { $amount = round(floatval(Input::get('amount')), 2); - $leftOnAccount = $accounts->leftOnAccount($piggyBank->account); + $date = Session::get('end', Carbon::now()->endOfMonth()); + $leftOnAccount = $accounts->leftOnAccount($piggyBank->account, $date); $savedSoFar = $piggyBank->currentRelevantRep()->currentamount; $leftToSave = $piggyBank->targetamount - $savedSoFar; $maxAmount = round(min($leftOnAccount, $leftToSave), 2); diff --git a/app/Providers/ConfigServiceProvider.php b/app/Providers/ConfigServiceProvider.php index 4e54eb7f11..f5b1b6f7ab 100644 --- a/app/Providers/ConfigServiceProvider.php +++ b/app/Providers/ConfigServiceProvider.php @@ -17,6 +17,8 @@ class ConfigServiceProvider extends ServiceProvider * to overwrite any "vendor" or package configuration that you may want to * modify before the application handles the incoming request / command. * + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * * @return void */ public function register() diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index 7c3f3e94ff..6697651359 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -308,12 +308,14 @@ class AccountRepository implements AccountRepositoryInterface /** * @param Account $account + * @param Carbon $date * * @return float */ - public function leftOnAccount(Account $account) + public function leftOnAccount(Account $account, Carbon $date) { - $balance = Steam::balance($account, null, true); + + $balance = Steam::balance($account, $date, true); /** @var PiggyBank $p */ foreach ($account->piggybanks()->get() as $p) { $balance -= $p->currentRelevantRep()->currentamount; diff --git a/app/Repositories/Account/AccountRepositoryInterface.php b/app/Repositories/Account/AccountRepositoryInterface.php index cc80a6c403..1a25f120d5 100644 --- a/app/Repositories/Account/AccountRepositoryInterface.php +++ b/app/Repositories/Account/AccountRepositoryInterface.php @@ -115,10 +115,11 @@ interface AccountRepositoryInterface /** * @param Account $account + * @param Carbon $date * * @return float */ - public function leftOnAccount(Account $account); + public function leftOnAccount(Account $account, Carbon $date); /** * @param Account $account diff --git a/app/Repositories/Budget/BudgetRepository.php b/app/Repositories/Budget/BudgetRepository.php index f2fbc0c0ad..96a5899e13 100644 --- a/app/Repositories/Budget/BudgetRepository.php +++ b/app/Repositories/Budget/BudgetRepository.php @@ -261,7 +261,6 @@ class BudgetRepository implements BudgetRepositoryInterface * @param bool $shared * * @return float - * @internal param Carbon $date */ public function spentInPeriod(Budget $budget, Carbon $start, Carbon $end, $shared = true) { diff --git a/app/Support/Navigation.php b/app/Support/Navigation.php index 470089f369..a885931c92 100644 --- a/app/Support/Navigation.php +++ b/app/Support/Navigation.php @@ -28,21 +28,11 @@ class Navigation $add = ($skip + 1); $functionMap = [ - '1D' => 'addDays', - 'daily' => 'addDays', - '1W' => 'addWeeks', - 'weekly' => 'addWeeks', - 'week' => 'addWeeks', - '1M' => 'addMonths', - 'month' => 'addMonths', - 'monthly' => 'addMonths', - '3M' => 'addMonths', - 'quarter' => 'addMonths', - 'quarterly' => 'addMonths', - '6M' => 'addMonths', - 'half-year' => 'addMonths', - 'year' => 'addYears', - 'yearly' => 'addYears', + '1D' => 'addDays', 'daily' => 'addDays', + '1W' => 'addWeeks', 'weekly' => 'addWeeks', 'week' => 'addWeeks', + '1M' => 'addMonths', 'month' => 'addMonths', 'monthly' => 'addMonths', '3M' => 'addMonths', + 'quarter' => 'addMonths', 'quarterly' => 'addMonths', '6M' => 'addMonths', 'half-year' => 'addMonths', + 'year' => 'addYears', 'yearly' => 'addYears', ]; $modifierMap = [ 'quarter' => 3, diff --git a/app/Support/Steam.php b/app/Support/Steam.php index 22fa07e211..512e7bbe93 100644 --- a/app/Support/Steam.php +++ b/app/Support/Steam.php @@ -23,12 +23,9 @@ class Steam * * @return float */ - public function balance(Account $account, Carbon $date = null, $ignoreVirtualBalance = false) + public function balance(Account $account, Carbon $date, $ignoreVirtualBalance = false) { - $date = is_null($date) ? Carbon::now() : $date; - // find the first known transaction on this account: - // $firstDateObject = $account ->transactions() ->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id') @@ -37,12 +34,6 @@ class Steam $firstDate = is_null($firstDateObject) ? clone $date : new Carbon($firstDateObject->date); $date = $date < $firstDate ? $firstDate : $date; - /** - *select * from transactions - * left join transaction_journals ON transaction_journals.id = transactions.transaction_journal_id - * order by date ASC - */ - $balance = floatval( $account->transactions()->leftJoin( 'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id' diff --git a/app/Support/Twig/General.php b/app/Support/Twig/General.php index 1d36857366..d3f3a51cb6 100644 --- a/app/Support/Twig/General.php +++ b/app/Support/Twig/General.php @@ -21,6 +21,7 @@ class General extends Twig_Extension /** + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @return array */ public function getFilters() diff --git a/app/Support/Twig/Journal.php b/app/Support/Twig/Journal.php index bb63d656c4..02a2832f7e 100644 --- a/app/Support/Twig/Journal.php +++ b/app/Support/Twig/Journal.php @@ -18,6 +18,7 @@ class Journal extends Twig_Extension { /** + * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @return array */ public function getFilters() @@ -27,20 +28,25 @@ class Journal extends Twig_Extension $filters[] = new Twig_SimpleFilter( 'typeIcon', function (TransactionJournal $journal) { $type = $journal->transactionType->type; - if ($type == 'Withdrawal') { - return ''; - } - if ($type == 'Deposit') { - return ''; - } - if ($type == 'Transfer') { - return ''; - } - if ($type == 'Opening balance') { - return ''; + + switch ($type) { + case 'Withdrawal': + return ''; + break; + case 'Deposit': + return ''; + break; + case 'Transfer': + return ''; + break; + case 'Opening balance': + return ''; + break; + default: + return ''; + break; } - return ''; }, ['is_safe' => ['html']] ); @@ -49,6 +55,8 @@ class Journal extends Twig_Extension } /** + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * * @return array */ public function getFunctions()