true,'stock_operations.profile_sha256'=>$pins['stock-operations-binding.json'],'stock_operations.final_enabled'=>true,'stock_operations.final_sha256'=>$pins['stock-final-binding.json']]); $policy=json_decode(file_get_contents($s['root'].'/stock-final-binding.json'),true); set_exception_handler(function($e){echo json_encode(['passed'=>false,'exception'=>get_class($e),'message'=>$e->getMessage(),'status'=>$e instanceof Symfony\Component\HttpKernel\Exception\HttpExceptionInterface?$e->getStatusCode():null,'frames'=>array_map(fn($f)=>[basename($f['file']??''),$f['line']??0,$f['function']??''],array_slice($e->getTrace(),0,12))]).PHP_EOL;exit(1);}); $invoke=function($role,$method,$data=[])use($app,$f,$profiles){ Auth::forgetGuards();Auth::shouldUse('web');$user=App\Models\User::findOrFail($role==='warehouse'?$f['validator']:$profiles[$role]['user_id']);Auth::guard('web')->setUser($user);$r=Illuminate\Http\Request::create('/api/stock-final/'.$method,$method==='index'?'GET':'POST',$data);$r->attributes->set('sgf_module','stock');$session=app('session')->driver();$session->start();$session->put('company_context',$f['scope']+['module_id'=>'stock','token'=>'final-'.$role]);$r->setLaravelSession($session);$r->setUserResolver(fn()=>$user);$app->instance('request',$r);app(CompanyContext::class)->selectFor($user->id,1,2,2);return app(App\Modules\Inventory\StockFinalController::class)->$method($r,app(App\Modules\Purchasing\ReceiptRuntime::class))->getData(true); }; $command=function($role,$action,$data,$key=null)use($invoke){$state=$invoke($role,'index');$preview=$invoke($role,'preview',['action'=>$action,'data'=>$data,'operation_key'=>$key??(string)Str::uuid(),'revision'=>$state['revision'],'reason'=>'Conferência sintética individual com evidência e impacto.']);return [$invoke($role,'confirm',['preview'=>$preview['preview']]),$preview];}; $reject=function(Closure $fn,int $status,string $label)use($ok){$bad=false;try{$fn();}catch(Symfony\Component\HttpKernel\Exception\HttpExceptionInterface $e){$bad=$e->getStatusCode()===$status;}catch(Illuminate\Validation\ValidationException){$bad=$status===422;}$ok($bad,$label);};