environment('budget-testing'))return []; $c=app(CompanyContext::class);$scope=$c->identifiers();if(!$c->unitId())return []; $definitions=[ ['requests','requests','Requisições','Preparar, submeter e obter aprovação distinta.'], ['suppliers','suppliers','Fornecedores','Conferir cadastro e revisão antes das propostas.'], ['sourcing','sourcing','Propostas e adjudicação','Comparar propostas e fundamentar a escolha; aprovação distinta.'], ['orders','orders','Ordens','Emitir a partir da adjudicação aprovada.'], ['enabled','receipts','Recepções','Conferir quantidades e qualidade da ordem emitida.'], ['invoices','invoices','Facturas','Registar e validar o documento recebido.'], ['obligations','obligations','Obrigações','Preparar fotografia e reconhecer por pessoa distinta.'], ];$links=[];$permissions=app(Permissions::class); foreach($definitions as[$flag,$path,$label,$description]){ $flag=$flag==='enabled'?$flag:$flag.'_enabled';$right='purchasing_'.$path.'.view'; if(config('receipt_qa.'.$flag)===true&&$permissions->has($c->userId(),$scope['tenant_id'],$scope['company_id'],$right,$c->unitId()))$links[]=['url'=>'/purchasing/'.$path,'label'=>$label,'description'=>$description,'right'=>$right]; } if(config('receipt_qa.dossiers_enabled')===true&&array_filter($links,fn($link)=>$link['right']==='purchasing_requests.view'))$links[]=['url'=>'/purchasing/dossiers','label'=>'Dossiês e evidência','description'=>'Consultar as etapas e o histórico autorizado da mesma requisição.','right'=>'purchasing_requests.view']; return $links; } public function screen(Request $r,ReceiptRuntime $runtime) { abort_unless(config('receipt_qa.enabled')===true,404);$links=$this->links();abort_unless($links,403); $runtime->run($links[0]['right'],fn()=>null); return response()->view('purchasing-workspace',['links'=>$links]); } }