forgetGuards();app(App\Shared\Context\CompanyContext::class)->clear(); // The QA forms use the explicit CSRF header. Keep validation, but do not replace // the shared localhost XSRF-TOKEN cookie belonging to another demonstration. $app->bind(Illuminate\Foundation\Http\Middleware\PreventRequestForgery::class,static fn($container)=>new class($container,$container->make(Illuminate\Contracts\Encryption\Encrypter::class)) extends Illuminate\Foundation\Http\Middleware\PreventRequestForgery { protected $addHttpCookie=false; }); $app->usePublicPath($c['storage'].'/public');app(Illuminate\Foundation\Vite::class)->useHotFile($c['storage'].'/no-hot'); Illuminate\Support\Facades\Route::middleware('web')->get('/qa/ledger-demo',function()use($s,$g){ if($g['cycle_enabled']??false){return response()->view('accounting.ledger-cycle-entry',['tag'=>$s['tag'],'obligation'=>$g['obligation_id']])->header('Cache-Control','no-store');} if($g['integrated_flow']??false){ return response()->view('accounting.payable-flow-entry',['tag'=>$s['tag'],'source'=>$g['local_source_id']])->header('Cache-Control','no-store'); } $tag=htmlspecialchars($s['tag'],ENT_QUOTES,'UTF-8');$id=(int)$g['obligation_id']; return response('Ensaio de lançamento SGF

Primeiro lançamento contabilístico — QA

Exclusivamente sintético. Obrigação #'.$id.', 60 MZN, duas contas artificiais e período QA-2026-10. Não altera a dívida financeira, stock ou orçamento.

Preparar / aplicar · Rever com outra identidade · Consultar

  1. Preparador captura a obrigação e fundamento.
  2. Revisor confere o impacto e aprova ou recusa a versão exacta.
  3. Preparador aplica uma vez e consulta o lançamento.

Data de ensaio 29/10/2026, regra QA-PAYABLE-JOURNAL. O histórico não é apagado para repetir a demonstração. Revisão visual e aceitação ainda por realizar.

')->header('Cache-Control','no-store'); }); Illuminate\Support\Facades\Route::middleware('web')->get('/qa/ledger-enter/{role}',function(Illuminate\Http\Request $r,string $role)use($f,$g){ abort_unless(in_array($role,['prepare','validate','read'],true),404);$module=$r->query('module','accounting');abort_unless(in_array($module,['accounting','purchasing'],true),422); $u=App\Models\User::findOrFail($f['actors'][$role]);auth()->login($u);$r->session()->regenerate();$token=bin2hex(random_bytes(24));$r->session()->put('auth_version',$u->auth_version);$r->session()->put('company_context',$f['scope']+['token'=>$token,'module_id'=>$module]); $r->session()->put('ledger_demo',true); if($r->query('open')==='cycle')return redirect('/general-ledger/cycle'); if($r->query('open')==='flow')return redirect('/general-ledger/flow?source='.$g['local_source_id']); if($r->query('open')==='ledger')return redirect('/general-ledger'); return response()->json(['csrf'=>csrf_token(),'context'=>$token,'obligation_id'=>$g['obligation_id']])->header('Cache-Control','no-store'); }); $sql=[];$mode=[]; require __DIR__.'/ledger-reports-observer.php'; DB::listen(function($event)use(&$sql,&$mode){$sql[]=$event->sql;if(!$mode&&str_contains($event->sql,'"gl_journals"')){$pdo=$event->connection->getPdo();$mode=['isolation'=>$pdo->query('SHOW transaction_isolation')->fetchColumn(),'read_only'=>$pdo->query('SHOW transaction_read_only')->fetchColumn()];}}); $app->handleRequest(Illuminate\Http\Request::capture()); if(($_SERVER['HTTP_X_LEDGER_QA_PROOF']??'')==='read')file_put_contents($s['root'].'/ledger-http-read-mode.json',json_encode(['transaction'=>$mode,'writer_lock_queries'=>count(array_filter($sql,fn($s)=>str_contains(strtolower($s),'for update')))],JSON_PRETTY_PRINT)); exit;