BelongsTo(Company::class, 'company_id')->withTrashed(); } /** * @return BelongsTo */ public function service(): BelongsTo { return $this->BelongsTo(ServiceType::class, 'service_id'); } /** * @return BelongsTo */ public function bank(): BelongsTo { return $this->BelongsTo(Bank::class, 'bank_id')->withTrashed(); } /** * @return BelongsTo */ public function fixedCurrency(): BelongsTo { return $this->BelongsTo(Currency::class, 'fix_currency_id'); } /** * @return BelongsTo */ public function convertibleCurrency(): BelongsTo { return $this->BelongsTo(Currency::class, 'convertible_currency_id'); } /** * @return BelongsTo */ public function conversionCurrency(): BelongsTo { return $this->BelongsTo(Currency::class, 'conversion_currency_id'); } /** * @return MorphMany */ public function documents(): MorphMany { return $this->MorphMany(Document::class, 'owner'); } /** * @return MorphMany */ public function transactions(): MorphMany { return $this->MorphMany(Transaction::class, 'owner'); } /** * @return hasManyDeep */ public function bills(): hasManyDeep { return $this->hasManyDeep(Transaction::class, [Transaction::class.' as alias'], [['owner_type', 'owner_id'], ['owner_type', 'owner_id']], [null, null]); } public function modelAttributes(): MorphMany { return $this->morphMany(ModelAttribute::class, 'owner'); } protected static function booted() { if (auth()->user()) { if (auth()->user()->type === RoleTypes::USER) { static::addGlobalScope(new CustomerBookingsScope); } } } }