9 lines
1.9 KiB
PHP
9 lines
1.9 KiB
PHP
<?php
|
|
use App\Modules\Finance\CashWorkspace;
|
|
require __DIR__.'/sgf-cash-proof-bootstrap.php';$host->beginTransaction();try{
|
|
$actor=$selectCash('read_only');$r=app(CashWorkspace::class)->listing($actor,['per_page'=>25,'from'=>'2026-11-10','to'=>'2026-11-10']);$ok($r['period']===['opening_minor'=>0,'receipts_minor'=>100000,'expenses_minor'=>0,'closing_minor'=>100000],'period summary reflects confirmed receipt only after concurrency proof');$ok($r['events']->perPage()===25&&$r['events']->total()===4,'SQL page25 retains four audit events');$r=app(CashWorkspace::class)->listing($actor,['per_page'=>100,'kind'=>'receipt']);$ok($r['events']->total()===2,'kind filter preserves preparation and distinct confirmation');$r=app(CashWorkspace::class)->listing($actor,['from'=>'2026-11-11']);$ok($r['period']['opening_minor']===100000&&$r['period']['closing_minor']===100000&&$r['events']->total()===0,'later interval carries opening without inventing movements');
|
|
$reject(fn()=>$cashPreview('finance_prepare','prepare','expense',['date'=>'2026-11-09','amount'=>'50.00','beneficiary'=>'Beneficiário QA','description'=>'Despesa não pode anteceder abertura.','evidence'=>'Comprovativo fictício com data incompatível.']),422,'backdated expense before opening refused');$reject(fn()=>$cashPreview('finance_review','close','count',[],1),409,'incomplete selected cash cycle cannot close before expense and count');
|
|
$actor=$selectCash('read_only');$old=App\Shared\Context\CompanyContext::class;$reject(fn()=>app($old)->selectFor($actor,1,1,1),403,'foreign company selection refused by existing membership');
|
|
}finally{while($host->transactionLevel()>0)$host->rollBack();}
|
|
file_put_contents($work.'/cash-read-boundaries.json',json_encode(['passed'=>true,'checks'=>$checks,'proof_changes_rolled_back'=>true,'browser_visual_review'=>false],JSON_PRETTY_PRINT));echo json_encode(['passed'=>true,'checks'=>count($checks),'proof'=>$work.'/cash-read-boundaries.json']).PHP_EOL;
|