Files
SGF/scripts/sgf-accounting-report-boundaries.php
2026-11-11 09:00:17 +02:00

6 lines
2.1 KiB
PHP

<?php
use App\Shared\Context\CompanyContext;use App\Modules\Accounting\{ComposedLedger,ComposedLedgerController};use Illuminate\Support\Facades\Auth;
require __DIR__.'/sgf-ledger-proof-bootstrap.php';$user=App\Models\User::findOrFail($profiles['read_only']['user_id']);Auth::guard('web')->setUser($user);$session=app('session')->driver();$session->start();$session->put('company_context',$f['scope']+['module_id'=>'accounting','token'=>'report-boundaries']);$r=Illuminate\Http\Request::create('/api/general-ledger/account-ledger','GET');$r->attributes->set('sgf_module','accounting');$r->setLaravelSession($session);$r->setUserResolver(fn()=>$user);$app->instance('request',$r);app(CompanyContext::class)->selectFor($user->id,1,2,2);$controller=app(ComposedLedgerController::class);$base=['from_on'=>'2026-11-10','to_on'=>'2026-11-10'];
foreach([[$base+['account_id'=>2147483647],403,'foreign or missing account denied instead of500'],[$base,422,'explicit account required instead of500'],[$base+['account_id'=>0],422,'invalid identifier rejected'],[$base+['company_id'=>3],422,'scope override rejected']]as[$query,$expected,$name]){Auth::forgetGuards();Auth::shouldUse('web');Auth::guard('web')->setUser($user);$r->setUserResolver(fn()=>$user);$r->query->replace($query);$actual=null;try{$controller->report($r,'account-ledger',app(ComposedLedger::class));}catch(Symfony\Component\HttpKernel\Exception\HttpExceptionInterface$e){$actual=$e->getStatusCode();}catch(Illuminate\Validation\ValidationException){$actual=422;}$ok($actual===$expected,$name);}
Auth::forgetGuards();Auth::shouldUse('web');Auth::guard('web')->setUser($user);$r->setUserResolver(fn()=>$user);$r->query->replace($base);$response=$controller->report($r,'trial-balance',app(ComposedLedger::class));$ok($response->getStatusCode()===200&&$response->getData(true)['kind']==='trial_balance','valid read unaffected');file_put_contents($work.'/accounting-report-boundaries.json',json_encode(['passed'=>true,'checks'=>$checks,'business_commands'=>0,'new_rights'=>0],JSON_PRETTY_PRINT));echo json_encode(['passed'=>true,'checks'=>count($checks),'proof'=>$work.'/accounting-report-boundaries.json']).PHP_EOL;