Files
SGF/scripts/ledger-cost-http-entry.php
T
2026-11-04 09:37:20 +02:00

11 lines
2.8 KiB
PHP

<?php
use App\Shared\Context\CompanyContext;
use Illuminate\Support\Facades\DB;
auth()->forgetGuards();app(CompanyContext::class)->clear();
$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/cost-demo',function()use($s,$g){return response()->view(config('industrial_ledger.correction_enabled')===true?'accounting.industrial-correction-demo-entry':(config('industrial_ledger.synthetic_enabled')===true?'accounting.industrial-ledger-demo-entry':(config('general_ledger.composition_enabled')===true?'accounting.ledger-composition-demo-entry':(config('cost_ledger.correction_enabled')===true?'accounting.cost-correction-demo-entry':'accounting.cost-demo-entry'))),['tag'=>$s['tag'],'order'=>$g['order_id']])->header('Cache-Control','no-store');});
Illuminate\Support\Facades\Route::middleware('web')->get('/qa/cost-enter/{role}',function(Illuminate\Http\Request $r,string $role)use($g){abort_unless(isset($g['actors'][$role]),404);$module=$r->query('module','accounting');abort_unless(in_array($module,config('general_ledger.composition_enabled')===true?['accounting','finance','workshop','commercial']:['accounting','finance','workshop'],true),422);$u=App\Models\User::findOrFail($g['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',$g['scope']+['token'=>$token,'module_id'=>$module]);$r->session()->put('cost_demo',true);if(config('general_ledger.composition_enabled')===true&&$r->query('open')==='workspace')return redirect('/general-ledger/workspace');if($r->query('open')==='cost')return redirect('/general-ledger/costs?order_id='.$g['order_id']);return response()->json(['csrf'=>csrf_token(),'context'=>$token,'order_id'=>$g['order_id']])->header('Cache-Control','no-store');});
$sql=[];$mode=null;DB::listen(function($e)use(&$sql,&$mode){$sql[]=$e->sql;if($mode===null&&str_contains($e->sql,'"gl_journals"')){$pdo=$e->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_COST_QA_PROOF']??'')==='read')file_put_contents($s['root'].'/cost-http-read.json',json_encode(['transaction'=>$mode,'writer_locks'=>count(array_filter($sql,fn($q)=>str_contains(strtolower($q),'for update')))],JSON_PRETTY_PRINT|JSON_THROW_ON_ERROR));exit;