mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-12-22 11:11:25 +00:00
Code cleanup.
This commit is contained in:
@@ -3,6 +3,9 @@ use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\SoftDeletingTrait;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class Account
|
||||
*/
|
||||
class Account extends Eloquent
|
||||
{
|
||||
use SoftDeletingTrait, ValidatingTrait;
|
||||
@@ -12,20 +15,17 @@ class Account extends Eloquent
|
||||
* @var array
|
||||
*/
|
||||
public static $rules
|
||||
= [
|
||||
= [
|
||||
'name' => ['required', 'between:1,100'],
|
||||
'user_id' => 'required|exists:users,id',
|
||||
'account_type_id' => 'required|exists:account_types,id',
|
||||
'active' => 'required|boolean'
|
||||
|
||||
];
|
||||
protected $dates = ['deleted_at', 'created_at', 'updated_at'];
|
||||
/**
|
||||
* Fillable fields.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
// @codingStandardsIgnoreStart
|
||||
protected $dates = ['deleted_at', 'created_at', 'updated_at'];
|
||||
protected $fillable = ['name', 'user_id', 'account_type_id', 'active'];
|
||||
// @codingStandardsIgnoreEnd
|
||||
|
||||
/**
|
||||
* Account type.
|
||||
@@ -96,6 +96,12 @@ class Account extends Eloquent
|
||||
return $this->hasMany('Transaction');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $fieldName
|
||||
* @param $fieldValue
|
||||
*
|
||||
* @return AccountMeta
|
||||
*/
|
||||
public function updateMeta($fieldName, $fieldValue)
|
||||
{
|
||||
$meta = $this->accountMeta()->get();
|
||||
@@ -117,6 +123,9 @@ class Account extends Eloquent
|
||||
return $meta;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function accountMeta()
|
||||
{
|
||||
return $this->hasMany('AccountMeta');
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<?php
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class AccountMeta
|
||||
*/
|
||||
class AccountMeta extends Eloquent
|
||||
{
|
||||
use ValidatingTrait;
|
||||
@@ -16,8 +19,10 @@ class AccountMeta extends Eloquent
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
// @codingStandardsIgnoreStart
|
||||
protected $fillable = ['account_id', 'name', 'date'];
|
||||
protected $table = 'account_meta';
|
||||
// @codingStandardsIgnoreEnd
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
use Illuminate\Database\Eloquent\Model as Eloquent;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class AccountType
|
||||
*/
|
||||
class AccountType extends Eloquent
|
||||
{
|
||||
use ValidatingTrait;
|
||||
|
||||
@@ -1,20 +1,26 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Class Budget
|
||||
*/
|
||||
class Budget extends Component
|
||||
{
|
||||
protected $isSubclass = true;
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
|
||||
*/
|
||||
public function limitrepetitions()
|
||||
{
|
||||
return $this->hasManyThrough('LimitRepetition', 'Limit', 'component_id');
|
||||
return $this->hasManyThrough('LimitRepetition', 'BudgetLimit', 'component_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function limits()
|
||||
public function budgetlimits()
|
||||
{
|
||||
return $this->hasMany('Limit', 'component_id');
|
||||
return $this->hasMany('BudgetLimit', 'component_id');
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,10 @@ use Carbon\Carbon;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
class Limit extends Eloquent
|
||||
/**
|
||||
* Class Limit
|
||||
*/
|
||||
class BudgetLimit extends Eloquent
|
||||
{
|
||||
|
||||
use ValidatingTrait;
|
||||
@@ -61,8 +64,6 @@ class Limit extends Eloquent
|
||||
}
|
||||
$end->subDay();
|
||||
$count = $this->limitrepetitions()->where('startdate', $start->format('Y-m-d'))->where('enddate', $end->format('Y-m-d'))->count();
|
||||
\Log::debug('All: ' . $this->limitrepetitions()->count() . ' (#' . $this->id . ')');
|
||||
\Log::debug('Found ' . $count . ' limit-reps for limit #' . $this->id . ' with start ' . $start->format('Y-m-d') . ' and end ' . $end->format('Y-m-d'));
|
||||
|
||||
if ($count == 0) {
|
||||
|
||||
@@ -70,7 +71,7 @@ class Limit extends Eloquent
|
||||
$repetition->startdate = $start;
|
||||
$repetition->enddate = $end;
|
||||
$repetition->amount = $this->amount;
|
||||
$repetition->limit()->associate($this);
|
||||
$repetition->budgetLimit()->associate($this);
|
||||
|
||||
try {
|
||||
$repetition->save();
|
||||
@@ -1,8 +1,14 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Class Category
|
||||
*/
|
||||
class Category extends Component
|
||||
{
|
||||
|
||||
// @codingStandardsIgnoreStart
|
||||
protected $isSubclass = true;
|
||||
// @codingStandardsIgnoreEnd
|
||||
|
||||
|
||||
}
|
||||
@@ -4,6 +4,9 @@ use FireflyIII\Shared\SingleTableInheritanceEntity;
|
||||
use Illuminate\Database\Eloquent\SoftDeletingTrait;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class Component
|
||||
*/
|
||||
class Component extends SingleTableInheritanceEntity
|
||||
{
|
||||
|
||||
@@ -13,10 +16,12 @@ class Component extends SingleTableInheritanceEntity
|
||||
'name' => 'required|between:1,100|alphabasic',
|
||||
'class' => 'required',
|
||||
];
|
||||
// @codingStandardsIgnoreStart
|
||||
protected $dates = ['deleted_at', 'created_at', 'updated_at'];
|
||||
protected $fillable = ['name', 'user_id'];
|
||||
protected $subclassField = 'class';
|
||||
protected $table = 'components';
|
||||
// @codingStandardsIgnoreEnd
|
||||
use SoftDeletingTrait, ValidatingTrait;
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,17 +3,28 @@
|
||||
use FireflyIII\Exception\FireflyException;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class LimitRepetition
|
||||
*/
|
||||
class LimitRepetition extends Eloquent
|
||||
{
|
||||
use ValidatingTrait;
|
||||
public static $rules
|
||||
= [
|
||||
'limit_id' => 'required|exists:limits,id',
|
||||
'startdate' => 'required|date',
|
||||
'enddate' => 'required|date',
|
||||
'amount' => 'numeric|required|min:0.01',
|
||||
'budgetlimit_id' => 'required|exists:budgetlimits,id',
|
||||
'startdate' => 'required|date',
|
||||
'enddate' => 'required|date',
|
||||
'amount' => 'numeric|required|min:0.01',
|
||||
];
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function budgetLimit()
|
||||
{
|
||||
return $this->belongsTo('BudgetLimit');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
@@ -22,14 +33,6 @@ class LimitRepetition extends Eloquent
|
||||
return ['created_at', 'updated_at', 'startdate', 'enddate'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function limit()
|
||||
{
|
||||
return $this->belongsTo('Limit');
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO see if this scope is still used.
|
||||
*
|
||||
@@ -51,8 +54,8 @@ class LimitRepetition extends Eloquent
|
||||
$sum = \DB::table('transactions')->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')->leftJoin(
|
||||
'component_transaction_journal', 'component_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id'
|
||||
)->leftJoin('components', 'components.id', '=', 'component_transaction_journal.component_id')->leftJoin(
|
||||
'limits', 'limits.component_id', '=', 'components.id'
|
||||
)->leftJoin('limit_repetitions', 'limit_repetitions.limit_id', '=', 'limits.id')->where(
|
||||
'budgetlimits', 'budgetlimits.component_id', '=', 'components.id'
|
||||
)->leftJoin('limit_repetitions', 'limit_repetitions.limit_id', '=', 'budgetlimits.id')->where(
|
||||
'transaction_journals.date', '>=', $this->startdate->format('Y-m-d')
|
||||
)->where('transaction_journals.date', '<=', $this->enddate->format('Y-m-d'))->where('transactions.amount', '>', 0)->where(
|
||||
'limit_repetitions.id', '=', $this->id
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
use Carbon\Carbon;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class Piggybank
|
||||
*/
|
||||
class Piggybank extends Eloquent
|
||||
{
|
||||
use ValidatingTrait;
|
||||
@@ -155,6 +158,9 @@ class Piggybank extends Eloquent
|
||||
return $this->hasMany('PiggybankEvent');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
|
||||
*/
|
||||
public function reminders()
|
||||
{
|
||||
return $this->morphMany('Reminder', 'remindersable');
|
||||
@@ -197,6 +203,9 @@ class Piggybank extends Eloquent
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function transactions()
|
||||
{
|
||||
return $this->hasMany('Transaction');
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<?php
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class PiggybankEvent
|
||||
*/
|
||||
class PiggybankEvent extends Eloquent
|
||||
{
|
||||
|
||||
|
||||
@@ -3,6 +3,9 @@ use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class PiggybankRepetition
|
||||
*/
|
||||
class PiggybankRepetition extends Eloquent
|
||||
{
|
||||
use ValidatingTrait;
|
||||
@@ -46,11 +49,19 @@ class PiggybankRepetition extends Eloquent
|
||||
return $this->belongsTo('Piggybank');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param Carbon $date
|
||||
*/
|
||||
public function scopeStarts(Builder $query, Carbon $date)
|
||||
{
|
||||
$query->where('startdate', $date->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param Carbon $date
|
||||
*/
|
||||
public function scopeTargets(Builder $query, Carbon $date)
|
||||
{
|
||||
$query->where('targetdate', $date->format('Y-m-d'));
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<?php
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class Preference
|
||||
*/
|
||||
class Preference extends Eloquent
|
||||
{
|
||||
use ValidatingTrait;
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
use Carbon\Carbon;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class RecurringTransaction
|
||||
*/
|
||||
class RecurringTransaction extends Eloquent
|
||||
{
|
||||
|
||||
@@ -18,8 +21,9 @@ class RecurringTransaction extends Eloquent
|
||||
'automatch' => 'required|between:0,1',
|
||||
'repeat_freq' => 'required|in:daily,weekly,monthly,quarterly,half-year,yearly',
|
||||
'skip' => 'required|between:0,31',];
|
||||
|
||||
// @codingStandardsIgnoreStart
|
||||
protected $fillable = ['user_id', 'name', 'match', 'amount_min', 'amount_max', 'date', 'repeat_freq', 'skip', 'active', 'automatch'];
|
||||
// @codingStandardsIgnoreEnd
|
||||
|
||||
/**
|
||||
* @return array
|
||||
|
||||
@@ -3,12 +3,22 @@
|
||||
use Carbon\Carbon;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class Reminder
|
||||
*/
|
||||
class Reminder extends Eloquent
|
||||
{
|
||||
use ValidatingTrait;
|
||||
|
||||
// @codingStandardsIgnoreStart
|
||||
protected $table = 'reminders';
|
||||
// @codingStandardsIgnoreEnd
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getDataAttribute($value)
|
||||
{
|
||||
return json_decode($value);
|
||||
@@ -32,6 +42,13 @@ class Reminder extends Eloquent
|
||||
return $this->morphTo();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function scopeDateIs($query, Carbon $start, Carbon $end)
|
||||
{
|
||||
return $query->where('startdate', $start->format('Y-m-d'))->where('enddate', $end->format('Y-m-d'));
|
||||
|
||||
@@ -5,6 +5,9 @@ use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\SoftDeletingTrait;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class Transaction
|
||||
*/
|
||||
class Transaction extends Eloquent
|
||||
{
|
||||
use SoftDeletingTrait, ValidatingTrait;
|
||||
@@ -56,11 +59,19 @@ class Transaction extends Eloquent
|
||||
return $this->belongsTo('Piggybank');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param Account $account
|
||||
*/
|
||||
public function scopeAccountIs(Builder $query, Account $account)
|
||||
{
|
||||
$query->where('transactions.account_id', $account->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param Carbon $date
|
||||
*/
|
||||
public function scopeAfter(Builder $query, Carbon $date)
|
||||
{
|
||||
if (is_null($this->joinedJournals)) {
|
||||
@@ -72,6 +83,10 @@ class Transaction extends Eloquent
|
||||
$query->where('transaction_journals.date', '>=', $date->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param Carbon $date
|
||||
*/
|
||||
public function scopeBefore(Builder $query, Carbon $date)
|
||||
{
|
||||
if (is_null($this->joinedJournals)) {
|
||||
@@ -83,16 +98,28 @@ class Transaction extends Eloquent
|
||||
$query->where('transaction_journals.date', '<=', $date->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param $amount
|
||||
*/
|
||||
public function scopeLessThan(Builder $query, $amount)
|
||||
{
|
||||
$query->where('amount', '<', $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param $amount
|
||||
*/
|
||||
public function scopeMoreThan(Builder $query, $amount)
|
||||
{
|
||||
$query->where('amount', '>', $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param array $types
|
||||
*/
|
||||
public function scopeTransactionTypes(Builder $query, array $types)
|
||||
{
|
||||
if (is_null($this->joinedJournals)) {
|
||||
|
||||
@@ -3,6 +3,9 @@ use Illuminate\Database\Eloquent\Model as Eloquent;
|
||||
use Illuminate\Database\Eloquent\SoftDeletingTrait;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class TransactionCurrency
|
||||
*/
|
||||
class TransactionCurrency extends Eloquent
|
||||
{
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
use Illuminate\Database\Eloquent\SoftDeletingTrait;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class TransactionGroup
|
||||
*/
|
||||
class TransactionGroup extends Eloquent
|
||||
{
|
||||
use SoftDeletingTrait, ValidatingTrait;
|
||||
|
||||
@@ -5,6 +5,9 @@ use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\SoftDeletingTrait;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class TransactionJournal
|
||||
*/
|
||||
class TransactionJournal extends Eloquent
|
||||
{
|
||||
use SoftDeletingTrait, ValidatingTrait;
|
||||
@@ -47,6 +50,8 @@ class TransactionJournal extends Eloquent
|
||||
/**
|
||||
* TODO remove this method in favour of something in the FireflyIII libraries.
|
||||
*
|
||||
* @param Account $account
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getAmount(\Account $account = null)
|
||||
@@ -123,11 +128,18 @@ class TransactionJournal extends Eloquent
|
||||
return $query->where('date', '<=', $date->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
*/
|
||||
public function scopeDefaultSorting(Builder $query)
|
||||
{
|
||||
$query->orderBy('date', 'DESC')->orderBy('transaction_journals.id', 'DESC');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param $amount
|
||||
*/
|
||||
public function scopeLessThan(Builder $query, $amount)
|
||||
{
|
||||
if (is_null($this->joinedTransactions)) {
|
||||
@@ -140,6 +152,10 @@ class TransactionJournal extends Eloquent
|
||||
$query->where('transactions.amount', '<=', $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param $amount
|
||||
*/
|
||||
public function scopeMoreThan(Builder $query, $amount)
|
||||
{
|
||||
if (is_null($this->joinedTransactions)) {
|
||||
@@ -163,6 +179,10 @@ class TransactionJournal extends Eloquent
|
||||
return $query->where('date', '=', $date->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Builder $query
|
||||
* @param array $types
|
||||
*/
|
||||
public function scopeTransactionTypes(Builder $query, array $types)
|
||||
{
|
||||
if (is_null($this->joinedTransactionTypes)) {
|
||||
@@ -207,6 +227,9 @@ class TransactionJournal extends Eloquent
|
||||
return $this->belongsTo('TransactionType');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||
*/
|
||||
public function transactiongroups()
|
||||
{
|
||||
return $this->belongsToMany('TransactionGroup');
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Class TransactionRelation
|
||||
*/
|
||||
class TransactionRelation extends Eloquent
|
||||
{
|
||||
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
use Illuminate\Database\Eloquent\SoftDeletingTrait;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class TransactionType
|
||||
*/
|
||||
class TransactionType extends Eloquent
|
||||
{
|
||||
use SoftDeletingTrait, ValidatingTrait;
|
||||
|
||||
@@ -6,6 +6,9 @@ use Illuminate\Auth\UserInterface;
|
||||
use Illuminate\Auth\UserTrait;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
* Class User
|
||||
*/
|
||||
class User extends Eloquent implements UserInterface, RemindableInterface
|
||||
{
|
||||
|
||||
@@ -13,24 +16,16 @@ class User extends Eloquent implements UserInterface, RemindableInterface
|
||||
|
||||
|
||||
public static $rules
|
||||
= [
|
||||
= [
|
||||
'email' => 'required|email|unique:users,email',
|
||||
'password' => 'required|between:60,60',
|
||||
'reset' => 'between:32,32',
|
||||
];
|
||||
protected $fillable = ['email'];
|
||||
/**
|
||||
* The attributes excluded from the model's JSON form.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $hidden = ['remember_token'];
|
||||
/**
|
||||
* The database table used by the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'users';
|
||||
// @codingStandardsIgnoreStart
|
||||
protected $fillable = ['email'];
|
||||
protected $hidden = ['remember_token'];
|
||||
protected $table = 'users';
|
||||
// @codingStandardsIgnoreEnd
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
@@ -64,6 +59,9 @@ class User extends Eloquent implements UserInterface, RemindableInterface
|
||||
return $this->hasMany('Component');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
|
||||
*/
|
||||
public function piggybanks()
|
||||
{
|
||||
return $this->hasManyThrough('Piggybank', 'Account');
|
||||
@@ -109,6 +107,9 @@ class User extends Eloquent implements UserInterface, RemindableInterface
|
||||
return $this->hasMany('TransactionJournal');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
|
||||
*/
|
||||
public function transactions()
|
||||
{
|
||||
return $this->hasManyThrough('TransactionJournal', 'Transaction');
|
||||
|
||||
Reference in New Issue
Block a user