Files
SGF/app/Modules/Purchasing/RequisitionAccess.php
2026-11-04 09:37:20 +02:00

13 lines
1.1 KiB
PHP

<?php
namespace App\Modules\Purchasing;
use Tempo\Purchasing\Embedded\Models\Requisition;
use App\Shared\Context\CompanyContext;
/** One native record/book; admission is an explicit binding or an audited host origin. */
final class RequisitionAccess
{
public static function scope():string{$c=app(CompanyContext::class);return hash('sha256',json_encode($c->identifiers()+['unit_id'=>$c->unitId()],JSON_THROW_ON_ERROR));}
public static function ids(array $binding){return Requisition::query()->select('requisitions.id')->where(function($q)use($binding){$q->whereIn('requisitions.id',$binding['requisition_ids']??[]);if(config('receipt_qa.requests_enabled')===true)$q->orWhereExists(fn($a)=>$a->selectRaw('1')->from('audit_logs as ra')->whereColumn('ra.tenant_id','requisitions.tenant_id')->whereColumn('ra.requisition_id','requisitions.id')->where('ra.action','sgf.request.command')->where('ra.after->request_scope',self::scope()));});}
public static function allowed(int $id,array $binding):bool{return self::ids($binding)->where('requisitions.id',$id)->exists();}
}