belongsTo('App\Models\ExpenseCategory')->withTrashed(); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function account() { return $this->belongsTo('App\Models\Account'); } /** * @return mixed */ public function user() { return $this->belongsTo('App\Models\User')->withTrashed(); } /** * @return mixed */ public function vendor() { return $this->belongsTo('App\Models\Vendor')->withTrashed(); } /** * @return mixed */ public function client() { return $this->belongsTo('App\Models\Client')->withTrashed(); } /** * @return mixed */ public function invoice() { return $this->belongsTo('App\Models\Invoice')->withTrashed(); } /** * @return mixed */ public function documents() { return $this->hasMany('App\Models\Document')->orderBy('id'); } /** * @return mixed */ public function getName() { if($this->expense_number) return $this->expense_number; return $this->public_id; } /** * @return mixed */ public function getDisplayName() { return $this->getName(); } /** * @return string */ public function getRoute() { return "/expenses/{$this->public_id}"; } /** * @return mixed */ public function getEntityType() { return ENTITY_EXPENSE; } /** * @return bool */ public function isExchanged() { return $this->invoice_currency_id != $this->expense_currency_id; } /** * @return float */ public function convertedAmount() { return round($this->amount * $this->exchange_rate, 2); } /** * @return array */ public function toArray() { $array = parent::toArray(); if(empty($this->visible) || in_array('converted_amount', $this->visible))$array['converted_amount'] = $this->convertedAmount(); return $array; } /** * @param $query * @param null $bankdId * @return mixed */ public function scopeBankId($query, $bankdId = null) { if ($bankdId) { $query->whereBankId($bankId); } return $query; } } Expense::creating(function ($expense) { $expense->setNullValues(); }); Expense::created(function ($expense) { event(new ExpenseWasCreated($expense)); }); Expense::updating(function ($expense) { $expense->setNullValues(); }); Expense::updated(function ($expense) { event(new ExpenseWasUpdated($expense)); }); Expense::deleting(function ($expense) { $expense->setNullValues(); }); Expense::deleted(function ($expense) { event(new ExpenseWasDeleted($expense)); });