- Create Discount model, migration, and Filament resource with relation to Client - Add PDF export functionality for transmittals using DomPDF - Include discount type selection in sales transactions - Fix account filtering logic in expense resource - Update export job to generate PDF instead of Excel
87 lines
2.0 KiB
PHP
87 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Observers\ClientObserver;
|
|
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
|
|
|
|
#[ObservedBy([ClientObserver::class])]
|
|
class Client extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $guarded = [];
|
|
|
|
protected $appends = ['vatable'];
|
|
|
|
public function getFullNameAttribute()
|
|
{
|
|
return $this->lname.', '.$this->fname.' '.$this->mname;
|
|
}
|
|
|
|
public function getVatableAttribute(): bool
|
|
{
|
|
return $this->type->type == 'Vatable';
|
|
}
|
|
|
|
/**
|
|
* Get all the branches for the Client
|
|
*/
|
|
public function branches(): HasMany
|
|
{
|
|
return $this->hasMany(Branch::class);
|
|
}
|
|
|
|
/**
|
|
* Get the type associated with the Client
|
|
*/
|
|
public function type(): BelongsTo
|
|
{
|
|
return $this->belongsTo(ClientType::class);
|
|
}
|
|
|
|
public function accounts(): HasMany
|
|
{
|
|
return $this->hasMany(Account::class);
|
|
}
|
|
|
|
/**
|
|
* The users that belong to the Client
|
|
*/
|
|
public function users(): BelongsToMany
|
|
{
|
|
return $this->belongsToMany(User::class);
|
|
}
|
|
|
|
public function transmittals(): HasMany
|
|
{
|
|
return $this->hasMany(Transmittal::class);
|
|
}
|
|
|
|
public function sales(): HasManyThrough
|
|
{
|
|
return $this->hasManyThrough(Sale::class, Branch::class);
|
|
}
|
|
|
|
public function expenses(): HasManyThrough
|
|
{
|
|
return $this->hasManyThrough(Expense::class, Branch::class);
|
|
}
|
|
|
|
public function journals(): HasManyThrough
|
|
{
|
|
return $this->hasManyThrough(Journal::class, Branch::class);
|
|
}
|
|
|
|
public function discounts(): HasMany
|
|
{
|
|
return $this->hasMany(Discount::class);
|
|
}
|
|
}
|