This commit is contained in:
2026-11-02 08:08:05 +02:00
parent 13a6cb9922
commit 504b01b244
246 changed files with 24499 additions and 185 deletions
+7 -8
View File
@@ -4,6 +4,7 @@ namespace App\Models;
use App\Enums\PurchasingRole;
use App\Models\Concerns\BelongsToTenant;
use App\Models\Concerns\HasWorkContext;
use App\Services\ConflictGuard;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
@@ -11,6 +12,7 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Carbon;
use Tempo\Purchasing\Internal\InternalRequisitions;
/**
* @property int $id
@@ -31,6 +33,7 @@ use Illuminate\Support\Carbon;
class Requisition extends Model
{
use BelongsToTenant;
use HasWorkContext;
protected $guarded = ['id'];
@@ -81,18 +84,14 @@ class Requisition extends Model
public function canDecide(User $user): bool
{
if ($this->tenant_id !== $user->tenant_id || $this->status !== 'pending' || $this->requester_id === $user->id) {
if ($this->tenant_id !== $user->tenant_id) {
return false;
}
if ($this->steps->contains('approver_id', $user->id)) {
return false;
}
$next = InternalRequisitions::nextStep(['status' => $this->status, 'requester_id' => $this->requester_id, 'steps' => $this->steps->toArray()], $user->id);
$next = $this->steps->firstWhere('decision', 'pending');
return $next !== null && $user->hasFunctions([$next->role])
&& ($next->role !== 'department_head' || $this->department_id === $user->department_id)
return $next !== null && $user->hasFunctions([$next['role']])
&& ($next['role'] !== 'department_head' || $this->department_id === $user->department_id)
&& ! app(ConflictGuard::class)->participationBlocked($user, $this);
}
}