setPsr4('App\\',$s['app'].'/app');$map=[];foreach($loader->getClassMap() as $class=>$file)if(str_starts_with($class,'App\\')){$local=$s['app'].'/app/'.str_replace('\\','/',substr($class,4)).'.php';if(is_file($local))$map[$class]=$local;}$loader->addClassMap($map);}$app=require $s['app'].'/bootstrap/app.php';$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();$f=json_decode(file_get_contents($s['root'].'/fixture.json'),true,64,JSON_THROW_ON_ERROR); Illuminate\Support\Facades\Route::middleware('web')->get('/qa/enter/{role}',function(Illuminate\Http\Request $r,string $role)use($f,$s){abort_unless(in_array($role,['actor','validator','issuer',...(($s['invoices']??false)?['reviewer','auditor']:[]),...(($s['requests']??false)?['requester','approver']:[])],true),404);$user=App\Models\User::findOrFail($f[$role]);auth()->login($user);$r->session()->put('auth_version',$user->auth_version);$token=bin2hex(random_bytes(20));$scope=$f['scope'];if($r->query('foreign'))$scope['unit_id']=$f['foreign_unit'];$r->session()->put('company_context',$scope+['token'=>$token,'module_id'=>$r->query('module','purchasing')]);if($r->boolean('open')&&($s['stockComposition']??false)&&$r->query('module')==='stock')return redirect('/');if($r->boolean('open')&&($s['integrated']??false)&&!$r->has('geography')&&!$r->has('obligations'))return redirect('/purchasing/workspace');if($r->boolean('open')&&($s['geography']??false)&&in_array($r->query('geography'),['company','unit','client'],true))return redirect('/geography/'.$r->query('geography').'/'.($r->query('geography')==='company'?$f['company']:($r->query('geography')==='unit'?$f['unit']:$f['client'])));if($r->boolean('open')&&($s['obligations']??false)&&$r->boolean('obligations'))return redirect('/purchasing/obligations');if($r->boolean('open')&&($s['invoices']??false)&&in_array($role,['issuer','reviewer','auditor'],true))return redirect('/purchasing/invoices');if($r->boolean('open'))return redirect(($s['requests']??false)&&in_array($role,['requester','approver'],true)?'/purchasing/requests':(($s['suppliers']??false)&&$role!=='validator'?'/purchasing/suppliers':(($s['sourcing']??false)&&$role!=='validator'?'/purchasing/sourcing':(($s['orders']??false)&&$role!=='validator'?'/purchasing/orders':'/purchasing/receipts'))));return response()->json(['csrf'=>csrf_token(),'context'=>$token]);}); if(($s['singleInstallation']??false)===true){ App\Modules\Purchasing\BudgetAdapter::guard(); config(['purchasing_workspace.id'=>$s['tag'],'purchasing_workspace.single_installation'=>true,'purchasing_workspace.scope'=>$f['scope'],'purchasing_workspace.profiles'=>App\Modules\Purchasing\PurchasingEntry::profiles($f)]); Illuminate\Support\Facades\Route::middleware('web')->get('/compras',[App\Modules\Purchasing\PurchasingEntry::class,'screen']); Illuminate\Support\Facades\Route::middleware('web')->post('/compras/entrar',[App\Modules\Purchasing\PurchasingEntry::class,'enter']); } $app->handleRequest(Illuminate\Http\Request::capture());