Files
SGF/scripts/sgf-payable-due-list-proof.php
T
2026-11-11 09:00:17 +02:00

7 lines
2.7 KiB
PHP

<?php
require __DIR__.'/sgf-payable-due-proof-bootstrap.php';
$positionCall=function(array $query=[])use($app,$f){Illuminate\Support\Facades\Auth::forgetGuards();Illuminate\Support\Facades\Auth::shouldUse('web');$user=App\Models\User::findOrFail(17);Illuminate\Support\Facades\Auth::guard('web')->setUser($user);$r=Illuminate\Http\Request::create('/api/finance/payable-positions','GET',$query);$r->attributes->set('sgf_module','finance');$r->setUserResolver(fn()=>$user);$session=app('session')->driver();$session->start();$session->put('company_context',$f['scope']+['module_id'=>'finance','token'=>'due-list-proof']);$r->setLaravelSession($session);$app->instance('request',$r);app(App\Shared\Context\CompanyContext::class)->selectFor(17,1,2,2);return app(App\Modules\Purchasing\PayablePositionReadController::class)->index($r,app(App\Modules\Purchasing\ComposedFinance::class))->getData(true);};
$id=(int)$native->table('pd_due_versions')->orderByDesc('id')->value('obligation_id');$approved=$native->table('pd_due_versions')->where(['obligation_id'=>$id,'state'=>'approved'])->orderByDesc('version')->first();$list=$positionCall();$row=collect($list['positions'])->firstWhere('obligation_id',$id);$ok($row&&$row['reviewed_terms']['version']===$approved->version&&$row['reviewed_terms']['due_on']===json_decode($approved->data,true)['due_on'],'current page carries exact approved terms');$ok($row['due_on']===null&&$row['days_overdue']===null,'original due and lag unchanged');$native->beginTransaction();try{$copy=(array)$approved;unset($copy['id']);$copy['version']++;$copy['previous_id']=$approved->id;$copy['state']='prepared';$copy['action']='prepare';$copy['data']=json_encode(['due_on'=>'2027-01-01','evidence'=>'Fixture SQL de intenção ainda não revista.']);$native->table('pd_due_versions')->insert($copy);$later=collect($positionCall()['positions'])->firstWhere('obligation_id',$id);$ok($later['reviewed_terms']===$row['reviewed_terms'],'pending successor does not replace reviewed terms');}finally{$native->rollBack();}
$empty=$positionCall(['page'=>100000]);$ok($empty['positions']===[],'empty page no terms universe loaded');config(['payable_due.enabled'=>false]);$off=$positionCall();$ok(collect($off['positions'])->every(fn($r)=>$r['reviewed_terms']===null),'disabled feature cannot expose sidecar terms');config(['payable_due.enabled'=>true,'payable_due.schema_sha256'=>str_repeat('0',64)]);$rejectCatalogue(fn()=>$positionCall(),503,'changed sidecar pin refuses silent financial projection');
file_put_contents($work.'/payable-due-list.json',json_encode(['passed'=>true,'checks'=>$checks,'fixtures_rolled_back'=>true,'new_financial_effects'=>0],JSON_PRETTY_PRINT));echo json_encode(['passed'=>true,'checks'=>count($checks),'proof'=>$work.'/payable-due-list.json']).PHP_EOL;