true,'fiscal_qa.binding_sha256'=>hash_file('sha256',$s['root'].'/fiscal-binding.json')]); $selectFiscal=function($actor=13,$generation='iva-proof')use($app){Auth::forgetGuards();Auth::shouldUse('web');$user=App\Models\User::findOrFail($actor);Auth::guard('web')->setUser($user);$session=app('session')->driver();$session->start();$session->put('company_context',['tenant_id'=>1,'company_id'=>2,'unit_id'=>2,'module_id'=>'accounting','token'=>$generation.'-'.$actor]);$r=Illuminate\Http\Request::create('/api/fiscal-assessments');$r->setUserResolver(fn()=>$user);$r->setLaravelSession($session);$r->attributes->set('sgf_module','accounting');$app->instance('request',$r);app(CompanyContext::class)->selectFor($actor,1,2,2);return $actor;}; $w=app(FiscalAssessment::class);$b=$w->binding(); $input=function($kind='assessment',$action='prepare',$version=0,$extra=[])use($b){return ['kind'=>$kind,'action'=>$action,'version'=>$version,'reason'=>'Conferência individual QA de origem, versão e montantes.','data'=>$action==='prepare'?array_replace(['source_output_id'=>$b['source_output_id'],'period'=>$b['period'],'classification'=>'qa_output_only','evidence'=>'Origem congelada QA explicitamente seleccionada para este mapa.'],$extra):array_replace(['decision'=>'reviewed'],$extra)];}; $preview=function($actor,$in,$key=null)use($w,$selectFiscal){$selectFiscal($actor);return $w->preview($actor,$in,$key??(string)Str::uuid());}; $command=function($actor,$in)use($w,$preview,$selectFiscal){$p=$preview($actor,$in);$selectFiscal($actor);return [$w->confirm($actor,$p['preview']),$p];}; $reject=function($fn,$status,$name)use($ok){try{$fn();throw new RuntimeException('Expected refusal: '.$name);}catch(Symfony\Component\HttpKernel\Exception\HttpExceptionInterface $e){$ok($e->getStatusCode()===$status,$name);}catch(Illuminate\Validation\ValidationException){$ok($status===422,$name);}};