87 lines
1.9 KiB
PHP
87 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
|
|
class PettyCash extends Model
|
|
{
|
|
use HasFactory, SoftDeletes;
|
|
|
|
protected $fillable = [
|
|
'tenant_id',
|
|
'project_id',
|
|
'currency_id',
|
|
'title',
|
|
'description',
|
|
'amount',
|
|
'original_amount',
|
|
'amount_usd',
|
|
'remaining',
|
|
'request_date',
|
|
'receipt_path',
|
|
'requested_by',
|
|
'approved_by',
|
|
'approval_date',
|
|
'approved_at',
|
|
'status',
|
|
];
|
|
|
|
protected $casts = [
|
|
'amount' => 'decimal:2',
|
|
'original_amount' => 'decimal:2',
|
|
'amount_usd' => 'decimal:2',
|
|
'remaining' => 'decimal:2',
|
|
'request_date' => 'date',
|
|
'approval_date' => 'datetime',
|
|
'approved_at' => 'datetime',
|
|
];
|
|
|
|
public function tenant()
|
|
{
|
|
return $this->belongsTo(Tenant::class);
|
|
}
|
|
|
|
public function project()
|
|
{
|
|
return $this->belongsTo(Project::class);
|
|
}
|
|
|
|
public function currency()
|
|
{
|
|
return $this->belongsTo(Currency::class);
|
|
}
|
|
|
|
public function requestedBy()
|
|
{
|
|
return $this->belongsTo(User::class, 'requested_by');
|
|
}
|
|
|
|
public function approvedBy()
|
|
{
|
|
return $this->belongsTo(User::class, 'approved_by');
|
|
}
|
|
|
|
public function expenses()
|
|
{
|
|
return $this->hasMany(Expense::class);
|
|
}
|
|
|
|
public function scopeByStatus($query, $status)
|
|
{
|
|
return $query->where('status', $status);
|
|
}
|
|
|
|
public function getStatusLabelAttribute()
|
|
{
|
|
return [
|
|
'pending' => __('pettyCash.pending'),
|
|
'approved' => __('pettyCash.approved'),
|
|
'rejected' => __('pettyCash.rejected'),
|
|
'settled' => __('pettyCash.settled'),
|
|
][$this->status] ?? $this->status;
|
|
}
|
|
}
|