vernova/PettyCash.php
2026-07-26 19:58:27 +03:30

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;
}
}