diff --git a/.gitignore b/.gitignore
index 411ae437cd..5cb379f496 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,7 +5,7 @@ Thumbs.db
.idea/
tests/_output/*
_ide_helper.php
-/build/logs/clover.xml
+/build/logs
index.html*
app/storage/firefly-export*
.vagrant
diff --git a/.travis.yml b/.travis.yml
index da826954ea..820282fa3a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,6 +10,9 @@ install:
- composer update
- php artisan env
- mv -v .env.testing .env
+ - touch storage/database/testing.db
+ - php artisan migrate --env=testing
+ - php artisan migrate --seed --env=testing
script:
- phpunit
diff --git a/app/Helpers/Csv/Importer.php b/app/Helpers/Csv/Importer.php
index 73286efa38..936cee2956 100644
--- a/app/Helpers/Csv/Importer.php
+++ b/app/Helpers/Csv/Importer.php
@@ -296,7 +296,7 @@ class Importer
// some debug info:
$journalId = $journal->id;
- $type = $journal->transactionType->type;
+ $type = $journal->getTransactionType();
/** @var Account $asset */
$asset = $this->importData['asset-account-object'];
/** @var Account $opposing */
@@ -314,13 +314,13 @@ class Importer
*/
protected function getTransactionType()
{
- $transactionType = TransactionType::where('type', 'Deposit')->first();
+ $transactionType = TransactionType::where('type', TransactionType::DEPOSIT)->first();
if ($this->importData['amount'] < 0) {
- $transactionType = TransactionType::where('type', 'Withdrawal')->first();
+ $transactionType = TransactionType::where('type', TransactionType::WITHDRAWAL)->first();
}
if (in_array($this->importData['opposing-account-object']->accountType->type, ['Asset account', 'Default account'])) {
- $transactionType = TransactionType::where('type', 'Transfer')->first();
+ $transactionType = TransactionType::where('type', TransactionType::TRANSFER)->first();
}
return $transactionType;
diff --git a/app/Helpers/Report/ReportQuery.php b/app/Helpers/Report/ReportQuery.php
index 2db0edcb43..ce942b696b 100644
--- a/app/Helpers/Report/ReportQuery.php
+++ b/app/Helpers/Report/ReportQuery.php
@@ -8,6 +8,7 @@ use Crypt;
use FireflyIII\Models\Account;
use FireflyIII\Models\Budget;
use FireflyIII\Models\TransactionJournal;
+use FireflyIII\Models\TransactionType;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
@@ -42,13 +43,13 @@ class ReportQuery implements ReportQueryInterface
function (Builder $query) {
$query->where(
function (Builder $q) { // only get withdrawals not from a shared account
- $q->where('transaction_types.type', 'Withdrawal');
+ $q->where('transaction_types.type', TransactionType::WITHDRAWAL);
$q->where('acm_from.data', '!=', '"sharedAsset"');
}
);
$query->orWhere(
function (Builder $q) { // and transfers from a shared account.
- $q->where('transaction_types.type', 'Transfer');
+ $q->where('transaction_types.type', TransactionType::TRANSFER);
$q->where('acm_to.data', '=', '"sharedAsset"');
$q->where('acm_from.data', '!=', '"sharedAsset"');
}
@@ -56,7 +57,7 @@ class ReportQuery implements ReportQueryInterface
}
);
} else {
- $query->where('transaction_types.type', 'Withdrawal'); // any withdrawal is fine.
+ $query->where('transaction_types.type', TransactionType::WITHDRAWAL); // any withdrawal is fine.
}
$query->orderBy('transaction_journals.date');
$data = $query->get( // get everything
@@ -132,13 +133,13 @@ class ReportQuery implements ReportQueryInterface
function (Builder $query) {
$query->where(
function (Builder $q) {
- $q->where('transaction_types.type', 'Deposit');
+ $q->where('transaction_types.type', TransactionType::DEPOSIT);
$q->where('acm_to.data', '!=', '"sharedAsset"');
}
);
$query->orWhere(
function (Builder $q) {
- $q->where('transaction_types.type', 'Transfer');
+ $q->where('transaction_types.type', TransactionType::TRANSFER);
$q->where('acm_from.data', '=', '"sharedAsset"');
$q->where('acm_to.data','!=','"sharedAsset"');
}
@@ -147,7 +148,7 @@ class ReportQuery implements ReportQueryInterface
);
} else {
// any deposit is fine.
- $query->where('transaction_types.type', 'Deposit');
+ $query->where('transaction_types.type', TransactionType::DEPOSIT);
}
$query->orderBy('transaction_journals.date');
@@ -195,7 +196,7 @@ class ReportQuery implements ReportQueryInterface
Auth::user()->transactionjournals()
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
- ->transactionTypes(['Withdrawal'])
+ ->transactionTypes([TransactionType::WITHDRAWAL])
->where('transactions.account_id', $account->id)
->before($end)
->after($start)
@@ -217,7 +218,7 @@ class ReportQuery implements ReportQueryInterface
Auth::user()->transactionjournals()
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
- ->transactionTypes(['Withdrawal'])
+ ->transactionTypes([TransactionType::WITHDRAWAL])
->where('transactions.account_id', $account->id)
->before($end)
->after($start)
diff --git a/app/Http/Controllers/TransactionController.php b/app/Http/Controllers/TransactionController.php
index ef8c33d0dc..8b9e7d92bd 100644
--- a/app/Http/Controllers/TransactionController.php
+++ b/app/Http/Controllers/TransactionController.php
@@ -12,6 +12,7 @@ use FireflyIII\Http\Requests\JournalFormRequest;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
+use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Input;
@@ -45,8 +46,9 @@ class TransactionController extends Controller
*
* @return \Illuminate\View\View
*/
- public function create(AccountRepositoryInterface $repository, $what = 'deposit')
+ public function create(AccountRepositoryInterface $repository, $what = TransactionType::DEPOSIT)
{
+ $what = strtolower($what);
$maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize'));
$maxPostSize = Steam::phpBytes(ini_get('post_max_size'));
$uploadSize = min($maxFileSize, $maxPostSize);
@@ -95,7 +97,7 @@ class TransactionController extends Controller
*/
public function delete(TransactionJournal $journal)
{
- $what = strtolower($journal->transactionType->type);
+ $what = strtolower($journal->getTransactionType());
$subTitle = trans('firefly.delete_' . $what, ['description' => $journal->description]);
// put previous url in session
@@ -137,7 +139,7 @@ class TransactionController extends Controller
public function edit(AccountRepositoryInterface $repository, TransactionJournal $journal)
{
// cannot edit opening balance
- if ($journal->transactionType->type == 'Opening balance') {
+ if ($journal->isOpeningBalance()) {
return view('error')->with('message', 'Cannot edit this transaction. Edit the account instead!');
}
@@ -145,7 +147,7 @@ class TransactionController extends Controller
$maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize'));
$maxPostSize = Steam::phpBytes(ini_get('post_max_size'));
$uploadSize = min($maxFileSize, $maxPostSize);
- $what = strtolower($journal->transactionType->type);
+ $what = strtolower($journal->getTransactionType());
$accounts = ExpandedForm::makeSelectList($repository->getAccounts(['Default account', 'Asset account']));
$budgets = ExpandedForm::makeSelectList(Auth::user()->budgets()->get());
$budgets[0] = trans('form.noBudget');
@@ -181,7 +183,7 @@ class TransactionController extends Controller
$preFilled['amount'] = $journal->amount_positive;
- if ($journal->transactionType->type == 'Withdrawal') {
+ if ($journal->isWithdrawal()) {
$preFilled['account_id'] = $journal->source_account->id;
$preFilled['expense_account'] = $journal->destination_account->name_for_editform;
} else {
@@ -269,8 +271,8 @@ class TransactionController extends Controller
$t->after = bcadd($t->before, $t->amount);
}
);
- $what = strtolower($journal->transactionType->type);
- $subTitle = trans('firefly.' . $journal->transactionType->type) . ' "' . e($journal->description) . '"';
+ $what = strtolower($journal->getTransactionType());
+ $subTitle = trans('firefly.' . $journal->getTransactionType()) . ' "' . e($journal->description) . '"';
return view('transactions.show', compact('journal', 'subTitle', 'what'));
}
@@ -287,7 +289,7 @@ class TransactionController extends Controller
$journalData = $request->getJournalData();
// if not withdrawal, unset budgetid.
- if ($journalData['what'] != 'withdrawal') {
+ if ($journalData['what'] != strtolower(TransactionType::WITHDRAWAL)) {
$journalData['budget_id'] = 0;
}
@@ -308,7 +310,7 @@ class TransactionController extends Controller
// rescan journal, UpdateJournalConnection
event(new JournalSaved($journal));
- if ($journal->transactionType->type == 'Transfer' && intval($request->get('piggy_bank_id')) > 0) {
+ if ($journal->isTransfer() && intval($request->get('piggy_bank_id')) > 0) {
event(new JournalCreated($journal, intval($request->get('piggy_bank_id'))));
}
@@ -340,7 +342,7 @@ class TransactionController extends Controller
{
// cannot edit opening balance
- if ($journal->transactionType->type == 'Opening balance') {
+ if ($journal->isOpeningBalance()) {
return view('error')->with('message', 'Cannot edit this transaction. Edit the account instead!');
}
diff --git a/app/Http/Requests/JournalFormRequest.php b/app/Http/Requests/JournalFormRequest.php
index ba7dc0dc19..7744c26fdc 100644
--- a/app/Http/Requests/JournalFormRequest.php
+++ b/app/Http/Requests/JournalFormRequest.php
@@ -5,6 +5,7 @@ namespace FireflyIII\Http\Requests;
use Auth;
use Carbon\Carbon;
use Exception;
+use FireflyIII\Models\TransactionType;
use Input;
/**
@@ -65,7 +66,7 @@ class JournalFormRequest extends Request
];
switch ($what) {
- case 'withdrawal':
+ case strtolower(TransactionType::WITHDRAWAL):
$rules['account_id'] = 'required|exists:accounts,id|belongsToUser:accounts';
$rules['expense_account'] = 'between:1,255';
$rules['category'] = 'between:1,255';
@@ -73,12 +74,12 @@ class JournalFormRequest extends Request
$rules['budget_id'] = 'exists:budgets,id|belongsToUser:budgets';
}
break;
- case 'deposit':
+ case strtolower(TransactionType::DEPOSIT):
$rules['category'] = 'between:1,255';
$rules['account_id'] = 'required|exists:accounts,id|belongsToUser:accounts';
$rules['revenue_account'] = 'between:1,255';
break;
- case 'transfer':
+ case strtolower(TransactionType::TRANSFER):
$rules['account_from_id'] = 'required|exists:accounts,id|belongsToUser:accounts|different:account_to_id';
$rules['account_to_id'] = 'required|exists:accounts,id|belongsToUser:accounts|different:account_from_id';
$rules['category'] = 'between:1,255';
diff --git a/app/Http/breadcrumbs.php b/app/Http/breadcrumbs.php
index 5d360aaf4c..37a49237b9 100644
--- a/app/Http/breadcrumbs.php
+++ b/app/Http/breadcrumbs.php
@@ -416,7 +416,7 @@ Breadcrumbs::register(
Breadcrumbs::register(
'transactions.show', function (Generator $breadcrumbs, TransactionJournal $journal) {
- $breadcrumbs->parent('transactions.index', strtolower($journal->transactionType->type));
+ $breadcrumbs->parent('transactions.index', strtolower($journal->getTransactionType()));
$breadcrumbs->push($journal->description, route('transactions.show', [$journal->id]));
}
diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php
index 52e026805c..aee80cdfc4 100644
--- a/app/Models/TransactionJournal.php
+++ b/app/Models/TransactionJournal.php
@@ -147,10 +147,9 @@ class TransactionJournal extends Model
}
bcscale(2);
- $type = $this->transactionType->type;
$transaction = $this->transactions->sortByDesc('amount')->first();
$amount = $transaction->amount;
- if ($type == 'Withdrawal') {
+ if ($this->isWithdrawal()) {
$amount = $amount * -1;
}
$cache->store($amount);
@@ -167,15 +166,15 @@ class TransactionJournal extends Model
*/
protected function amountByTagAdvancePayment(Tag $tag, $amount)
{
- if ($this->transactionType->type == 'Withdrawal') {
- $others = $tag->transactionJournals()->transactionTypes(['Deposit'])->get();
+ if ($this->isWithdrawal()) {
+ $others = $tag->transactionJournals()->transactionTypes([TransactionType::DEPOSIT])->get();
foreach ($others as $other) {
$amount = bcsub($amount, $other->amount_positive);
}
return $amount;
}
- if ($this->transactionType->type == 'Deposit') {
+ if ($this->isDeposit()) {
return '0';
}
@@ -190,8 +189,8 @@ class TransactionJournal extends Model
*/
protected function amountByTagBalancingAct($tag, $amount)
{
- if ($this->transactionType->type == 'Withdrawal') {
- $transfer = $tag->transactionJournals()->transactionTypes(['Transfer'])->first();
+ if ($this->isWithdrawal()) {
+ $transfer = $tag->transactionJournals()->transactionTypes([TransactionType::TRANSFER])->first();
if ($transfer) {
$amount = bcsub($amount, $transfer->amount_positive);
@@ -491,4 +490,43 @@ class TransactionJournal extends Model
return $this->belongsTo('FireflyIII\User');
}
+ /**
+ * @return string
+ */
+ public function getTransactionType()
+ {
+ return $this->transactionType->type;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isWithdrawal()
+ {
+ return $this->transactionType->isWithdrawal();
+ }
+
+ /**
+ * @return bool
+ */
+ public function isDeposit()
+ {
+ return $this->transactionType->isDeposit();
+ }
+
+ /**
+ * @return bool
+ */
+ public function isTransfer()
+ {
+ return $this->transactionType->isTransfer();
+ }
+
+ /**
+ * @return bool
+ */
+ public function isOpeningBalance()
+ {
+ return $this->transactionType->isOpeningBalance();
+ }
}
diff --git a/app/Models/TransactionType.php b/app/Models/TransactionType.php
index 3b00323459..1a07dd91d8 100644
--- a/app/Models/TransactionType.php
+++ b/app/Models/TransactionType.php
@@ -23,6 +23,11 @@ class TransactionType extends Model
{
use SoftDeletes;
+ const WITHDRAWAL = 'Withdrawal';
+ const DEPOSIT = 'Deposit';
+ const TRANSFER = 'Transfer';
+ const OPENING_BALANCE = 'Opening balance';
+
/**
* @return array
*/
@@ -38,4 +43,36 @@ class TransactionType extends Model
{
return $this->hasMany('FireflyIII\Models\TransactionJournal');
}
+
+ /**
+ * @return bool
+ */
+ public function isWithdrawal()
+ {
+ return $this->type === TransactionType::WITHDRAWAL;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isDeposit()
+ {
+ return $this->type === TransactionType::DEPOSIT;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isTransfer()
+ {
+ return $this->type === TransactionType::TRANSFER;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isOpeningBalance()
+ {
+ return $this->type === TransactionType::OPENING_BALANCE;
+ }
}
diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php
index b0c921b214..516be1fa6e 100644
--- a/app/Repositories/Account/AccountRepository.php
+++ b/app/Repositories/Account/AccountRepository.php
@@ -330,7 +330,7 @@ class AccountRepository implements AccountRepositoryInterface
->where('transaction_journals.user_id', Auth::user()->id)
->where('transaction_journals.date', '>=', $start->format('Y-m-d'))
->where('transaction_journals.date', '<=', $end->format('Y-m-d'))
- ->where('transaction_types.type', 'Transfer');
+ ->where('transaction_types.type', TransactionType::TRANSFER);
}
)->get();
@@ -376,7 +376,7 @@ class AccountRepository implements AccountRepositoryInterface
return TransactionJournal
::orderBy('transaction_journals.date', 'ASC')
->accountIs($account)
- ->transactionTypes(['Opening balance'])
+ ->transactionTypes([TransactionType::OPENING_BALANCE])
->orderBy('created_at', 'ASC')
->first(['transaction_journals.*']);
}
@@ -549,7 +549,7 @@ class AccountRepository implements AccountRepositoryInterface
*/
protected function storeInitialBalance(Account $account, Account $opposing, array $data)
{
- $transactionType = TransactionType::whereType('Opening balance')->first();
+ $transactionType = TransactionType::whereType(TransactionType::OPENING_BALANCE)->first();
$journal = TransactionJournal::create(
[
'user_id' => $data['user'],
diff --git a/app/Repositories/Bill/BillRepository.php b/app/Repositories/Bill/BillRepository.php
index 3b8215729e..3bc0326ffc 100644
--- a/app/Repositories/Bill/BillRepository.php
+++ b/app/Repositories/Bill/BillRepository.php
@@ -154,7 +154,7 @@ class BillRepository implements BillRepositoryInterface
}
$journals = new Collection;
if (count($ids) > 0) {
- $journals = Auth::user()->transactionjournals()->transactionTypes(['Withdrawal'])->whereIn('transaction_journals.id', $ids)->get(
+ $journals = Auth::user()->transactionjournals()->transactionTypes([TransactionType::WITHDRAWAL])->whereIn('transaction_journals.id', $ids)->get(
['transaction_journals.*']
);
}
@@ -280,7 +280,7 @@ class BillRepository implements BillRepositoryInterface
/*
* Can only support withdrawals.
*/
- if ($journal->transactionType->type !== 'Withdrawal') {
+ if (false === $journal->isWithdrawal()) {
return false;
}
diff --git a/app/Repositories/Budget/BudgetRepository.php b/app/Repositories/Budget/BudgetRepository.php
index d360d835e0..019e407f1f 100644
--- a/app/Repositories/Budget/BudgetRepository.php
+++ b/app/Repositories/Budget/BudgetRepository.php
@@ -7,6 +7,7 @@ use Carbon\Carbon;
use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\LimitRepetition;
+use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Shared\ComponentRepository;
use FireflyIII\Support\CacheProperties;
use Illuminate\Database\Query\Builder as QueryBuilder;
@@ -54,7 +55,7 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
public function expensesOnDayCorrected(Budget $budget, Carbon $date)
{
bcscale(2);
- $sum = $budget->transactionjournals()->transactionTypes(['Withdrawal'])->onDate($date)->get(['transaction_journals.*'])->sum('amount');
+ $sum = $budget->transactionjournals()->transactionTypes([TransactionType::WITHDRAWAL])->onDate($date)->get(['transaction_journals.*'])->sum('amount');
return $sum;
}
@@ -306,7 +307,7 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
)
->after($start)
->before($end)
- ->transactionTypes(['Withdrawal'])
+ ->transactionTypes([TransactionType::WITHDRAWAL])
->get(['transaction_journals.*'])->sum('amount');
bcscale(2);
diff --git a/app/Repositories/Category/CategoryRepository.php b/app/Repositories/Category/CategoryRepository.php
index 035f1079ed..0055789a4a 100644
--- a/app/Repositories/Category/CategoryRepository.php
+++ b/app/Repositories/Category/CategoryRepository.php
@@ -7,6 +7,7 @@ use Carbon\Carbon;
use Crypt;
use FireflyIII\Models\Category;
use FireflyIII\Models\TransactionJournal;
+use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Shared\ComponentRepository;
use FireflyIII\Support\CacheProperties;
use Illuminate\Support\Collection;
@@ -76,7 +77,7 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
->before($end)
->where('categories.user_id', Auth::user()->id)
->after($start)
- ->transactionTypes(['Withdrawal'])
+ ->transactionTypes([TransactionType::WITHDRAWAL])
->get(['categories.id as category_id', 'categories.encrypted as category_encrypted', 'categories.name', 'transaction_journals.*']);
bcscale(2);
@@ -200,7 +201,7 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
*/
public function spentOnDaySumCorrected(Category $category, Carbon $date)
{
- return $category->transactionjournals()->transactionTypes(['Withdrawal'])->onDate($date)->get(['transaction_journals.*'])->sum('amount');
+ return $category->transactionjournals()->transactionTypes([TransactionType::WITHDRAWAL])->onDate($date)->get(['transaction_journals.*'])->sum('amount');
}
/**
@@ -285,7 +286,7 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
return $cache->get(); // @codeCoverageIgnore
}
- $sum = $category->transactionjournals()->transactionTypes(['Withdrawal'])->before($end)->after($start)->get(['transaction_journals.*'])->sum(
+ $sum = $category->transactionjournals()->transactionTypes([TransactionType::WITHDRAWAL])->before($end)->after($start)->get(['transaction_journals.*'])->sum(
'amount'
);
@@ -315,7 +316,7 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
return $cache->get(); // @codeCoverageIgnore
}
- $sum = $category->transactionjournals()->transactionTypes(['Deposit'])->before($end)->after($start)->get(['transaction_journals.*'])->sum(
+ $sum = $category->transactionjournals()->transactionTypes([TransactionType::DEPOSIT])->before($end)->after($start)->get(['transaction_journals.*'])->sum(
'amount'
);
@@ -367,6 +368,6 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
*/
public function earnedOnDaySumCorrected(Category $category, Carbon $date)
{
- return $category->transactionjournals()->transactionTypes(['Deposit'])->onDate($date)->get(['transaction_journals.*'])->sum('amount');
+ return $category->transactionjournals()->transactionTypes([TransactionType::DEPOSIT])->onDate($date)->get(['transaction_journals.*'])->sum('amount');
}
}
diff --git a/app/Repositories/Journal/JournalRepository.php b/app/Repositories/Journal/JournalRepository.php
index eebbbf205a..3fd766b1a5 100644
--- a/app/Repositories/Journal/JournalRepository.php
+++ b/app/Repositories/Journal/JournalRepository.php
@@ -327,15 +327,15 @@ class JournalRepository implements JournalRepositoryInterface
$fromAccount = null;
$toAccount = null;
switch ($type->type) {
- case 'Withdrawal':
+ case TransactionType::WITHDRAWAL:
list($fromAccount, $toAccount) = $this->storeWithdrawalAccounts($data);
break;
- case 'Deposit':
+ case TransactionType::DEPOSIT:
list($fromAccount, $toAccount) = $this->storeDepositAccounts($data);
break;
- case 'Transfer':
+ case TransactionType::TRANSFER:
$fromAccount = Account::find($data['account_from_id']);
$toAccount = Account::find($data['account_to_id']);
break;
diff --git a/app/Repositories/Shared/ComponentRepository.php b/app/Repositories/Shared/ComponentRepository.php
index 7edbb7bfb3..4ddb7c9b7d 100644
--- a/app/Repositories/Shared/ComponentRepository.php
+++ b/app/Repositories/Shared/ComponentRepository.php
@@ -3,6 +3,7 @@
namespace FireflyIII\Repositories\Shared;
use Carbon\Carbon;
+use FireflyIII\Models\TransactionType;
use FireflyIII\Support\CacheProperties;
use Illuminate\Database\Query\JoinClause;
@@ -39,7 +40,10 @@ class ComponentRepository
}
if ($shared === true) { // shared is true: always ignore transfers between accounts!
- $sum = $object->transactionjournals()->transactionTypes(['Withdrawal', 'Deposit', 'Opening balance'])->before($end)->after($start)
+ $sum = $object->transactionjournals()
+ ->transactionTypes([TransactionType::WITHDRAWAL, TransactionType::DEPOSIT, TransactionType::OPENING_BALANCE])
+ ->before($end)
+ ->after($start)
->get(['transaction_journals.*'])->sum('amount');
} else {
// do something else, SEE budgets.
@@ -47,7 +51,7 @@ class ComponentRepository
$sum = $object->transactionjournals()->before($end)->after($start)
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
- ->transactionTypes(['Withdrawal', 'Deposit', 'Opening balance'])
+ ->transactionTypes([TransactionType::WITHDRAWAL, TransactionType::DEPOSIT, TransactionType::OPENING_BALANCE])
->leftJoin(
'account_meta', function (JoinClause $join) {
$join->on('account_meta.account_id', '=', 'accounts.id')->where('account_meta.name', '=', 'accountRole');
diff --git a/app/Repositories/Tag/TagRepository.php b/app/Repositories/Tag/TagRepository.php
index 1d8f848f51..8f395b4218 100644
--- a/app/Repositories/Tag/TagRepository.php
+++ b/app/Repositories/Tag/TagRepository.php
@@ -77,7 +77,7 @@ class TagRepository implements TagRepositoryInterface
/** @var Tag $tag */
foreach ($tags as $tag) {
- $journals = $tag->transactionjournals()->after($start)->before($end)->transactionTypes(['Transfer'])->get(['transaction_journals.*']);
+ $journals = $tag->transactionjournals()->after($start)->before($end)->transactionTypes([TransactionType::TRANSFER])->get(['transaction_journals.*']);
/** @var TransactionJournal $journal */
foreach ($journals as $journal) {
@@ -158,7 +158,7 @@ class TagRepository implements TagRepositoryInterface
if ($tag->tagMode == 'balancingAct' || $tag->tagMode == 'nothing') {
foreach ($tag->transactionjournals as $journal) {
- if ($journal->transactionType->type == 'Transfer') {
+ if ($journal->isTransfer()) {
return false;
}
}
@@ -169,7 +169,7 @@ class TagRepository implements TagRepositoryInterface
*/
$count = 0;
foreach ($tag->transactionjournals as $journal) {
- if ($journal->transactionType->type == 'Withdrawal') {
+ if ($journal->isWithdrawal()) {
$count++;
}
}
@@ -201,7 +201,7 @@ class TagRepository implements TagRepositoryInterface
* If any transaction is a deposit, cannot become a balancing act.
*/
foreach ($tag->transactionjournals as $journal) {
- if ($journal->transactionType->type == 'Deposit') {
+ if ($journal->isDeposit()) {
return false;
}
}
@@ -239,10 +239,10 @@ class TagRepository implements TagRepositoryInterface
protected function connectBalancingAct(TransactionJournal $journal, Tag $tag)
{
/** @var TransactionType $withdrawal */
- $withdrawal = TransactionType::whereType('Withdrawal')->first();
+ $withdrawal = TransactionType::whereType(TransactionType::WITHDRAWAL)->first();
$withdrawals = $tag->transactionjournals()->where('transaction_type_id', $withdrawal->id)->count();
/** @var TransactionType $transfer */
- $transfer = TransactionType::whereType('Transfer')->first();
+ $transfer = TransactionType::whereType(TransactionType::TRANSFER)->first();
$transfers = $tag->transactionjournals()->where('transaction_type_id', $transfer->id)->count();
@@ -275,11 +275,11 @@ class TagRepository implements TagRepositoryInterface
protected function connectAdvancePayment(TransactionJournal $journal, Tag $tag)
{
/** @var TransactionType $transfer */
- $transfer = TransactionType::whereType('Transfer')->first();
+ $transfer = TransactionType::whereType(TransactionType::TRANSFER)->first();
/** @var TransactionType $withdrawal */
- $withdrawal = TransactionType::whereType('Withdrawal')->first();
+ $withdrawal = TransactionType::whereType(TransactionType::WITHDRAWAL)->first();
/** @var TransactionType $deposit */
- $deposit = TransactionType::whereType('Deposit')->first();
+ $deposit = TransactionType::whereType(TransactionType::DEPOSIT)->first();
$withdrawals = $tag->transactionjournals()->where('transaction_type_id', $withdrawal->id)->count();
$deposits = $tag->transactionjournals()->where('transaction_type_id', $deposit->id)->count();
@@ -326,10 +326,10 @@ class TagRepository implements TagRepositoryInterface
foreach ($tag->transactionjournals as $check) {
// $checkAccount is the source_account for a withdrawal
// $checkAccount is the destination_account for a deposit
- if ($check->transactionType->type == 'Withdrawal' && $check->source_account->id != $journal->destination_account->id) {
+ if ($check->isWithdrawal() && $check->source_account->id != $journal->destination_account->id) {
$match = false;
}
- if ($check->transactionType->type == 'Deposit' && $check->destination_account->id != $journal->destination_account->id) {
+ if ($check->isDeposit() && $check->destination_account->id != $journal->destination_account->id) {
$match = false;
}
diff --git a/app/Support/Amount.php b/app/Support/Amount.php
index 50e72c37b3..86cac1185b 100644
--- a/app/Support/Amount.php
+++ b/app/Support/Amount.php
@@ -100,13 +100,13 @@ class Amount
$symbol = $journal->symbol;
}
- if ($journal->transactionType->type == 'Transfer' && $coloured) {
+ if ($journal->isTransfer() && $coloured) {
$txt = '' . $this->formatWithSymbol($symbol, $journal->amount_positive, false) . '';
$cache->store($txt);
return $txt;
}
- if ($journal->transactionType->type == 'Transfer' && !$coloured) {
+ if ($journal->isTransfer() && !$coloured) {
$txt = $this->formatWithSymbol($symbol, $journal->amount_positive, false);
$cache->store($txt);
diff --git a/app/Support/Twig/Journal.php b/app/Support/Twig/Journal.php
index 62c07048de..628745d1f8 100644
--- a/app/Support/Twig/Journal.php
+++ b/app/Support/Twig/Journal.php
@@ -68,19 +68,17 @@ class Journal extends Twig_Extension
return $cache->get(); // @codeCoverageIgnore
}
- $type = $journal->transactionType->type;
-
- switch ($type) {
- case 'Withdrawal':
+ switch (true) {
+ case $journal->isWithdrawal():
$txt = '';
break;
- case 'Deposit':
+ case $journal->isDeposit():
$txt = '';
break;
- case 'Transfer':
+ case $journal->isTransfer():
$txt = '';
break;
- case 'Opening balance':
+ case $journal->isOpeningBalance():
$txt = '';
break;
default:
@@ -189,7 +187,7 @@ class Journal extends Twig_Extension
}
if ($tag->tagMode == 'advancePayment') {
- if ($journal->transactionType->type == 'Deposit') {
+ if ($journal->isDeposit()) {
$amount = app('amount')->formatJournal($journal, false);
$string = ' ' . $tag->tag . '';
@@ -201,7 +199,7 @@ class Journal extends Twig_Extension
* AdvancePayment with a withdrawal will show the amount with a link to
* the tag. The TransactionJournal should properly calculate the amount.
*/
- if ($journal->transactionType->type == 'Withdrawal') {
+ if ($journal->isWithdrawal()) {
$amount = app('amount')->formatJournal($journal);
$string = '' . $amount . '';
diff --git a/config/database.php b/config/database.php
index 6d6387980a..f1a98b129b 100644
--- a/config/database.php
+++ b/config/database.php
@@ -49,7 +49,7 @@ return [
'sqlite' => [
'driver' => 'sqlite',
- 'database' => __DIR__ . '/../storage/database/testing.db',
+ 'database' => storage_path('database/testing.db'),
'prefix' => '',
],
diff --git a/database/seeds/TransactionTypeSeeder.php b/database/seeds/TransactionTypeSeeder.php
index ecdff20b05..4f7a6e13d6 100644
--- a/database/seeds/TransactionTypeSeeder.php
+++ b/database/seeds/TransactionTypeSeeder.php
@@ -12,10 +12,10 @@ class TransactionTypeSeeder extends Seeder
DB::table('transaction_types')->delete();
- TransactionType::create(['type' => 'Withdrawal']);
- TransactionType::create(['type' => 'Deposit']);
- TransactionType::create(['type' => 'Transfer']);
- TransactionType::create(['type' => 'Opening balance']);
+ TransactionType::create(['type' => TransactionType::WITHDRAWAL]);
+ TransactionType::create(['type' => TransactionType::DEPOSIT]);
+ TransactionType::create(['type' => TransactionType::TRANSFER]);
+ TransactionType::create(['type' => TransactionType::OPENING_BALANCE]);
}
}
diff --git a/tests/TestCase.php b/tests/TestCase.php
index dc5d0dda48..c5a49310ed 100644
--- a/tests/TestCase.php
+++ b/tests/TestCase.php
@@ -1,9 +1,5 @@
app->instance($class, $mock);
-
- return $mock;
- }
-
-
}
diff --git a/tests/unit/ExampleTest.php b/tests/unit/ExampleTest.php
deleted file mode 100644
index 05b642ccaf..0000000000
--- a/tests/unit/ExampleTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-first();
+ $this->assertTrue($transactionType->isWithdrawal());
+ }
+
+ public function testIsDeposit()
+ {
+ $transactionType = TransactionType::whereType(TransactionType::DEPOSIT)->first();
+ $this->assertTrue($transactionType->isDeposit());
+ }
+
+ public function testIsTransfer()
+ {
+ $transactionType = TransactionType::whereType(TransactionType::TRANSFER)->first();
+ $this->assertTrue($transactionType->isTransfer());
+ }
+
+ public function testIsOpeningBalance()
+ {
+ $transactionType = TransactionType::whereType(TransactionType::OPENING_BALANCE)->first();
+ $this->assertTrue($transactionType->isOpeningBalance());
+ }
+}