Files
SGF/scripts/sgf-multiline-invoice-setup.php
T
2026-11-11 15:04:01 +02:00

4 lines
1.9 KiB
PHP

<?php
$book=$argv[1]??'regression';require __DIR__.'/sgf-single-bootstrap.php';$p=json_decode(file_get_contents($repo.'/docs/integration/sgf-multi-line-invoice-proposal.json'),true);if(($p['approved']??false)!==true||$p['authorization']['decision']!=='Autorizar a facturação multilinha QA proposta'||$p['new_grants']!==0||$p['new_accounts']!==0)throw new LogicException('Exact approval required');if($book==='8085'&&!is_file($s['root'].'/multiline-invoice-backup-pointer.json'))throw new LogicException('Backup required');$sql=file_get_contents($repo.'/database/sql/multiline_invoices.sql');$sha=hash('sha256',$sql);$host->transaction(function()use($host,$sql,$sha,$tag){if(!$host->getSchemaBuilder()->hasTable('mi_meta')){$host->unprepared($sql);$host->table('mi_meta')->insert(['policy'=>App\Modules\Services\MultiLineInvoiceCalculation::POLICY,'composition'=>$tag,'source_hash'=>$sha]);}else{$m=$host->table('mi_meta')->first();if(!$m||$m->composition!==$tag||$m->source_hash!==$sha)throw new LogicException('Preserve different schema');}});$draftSql=file_get_contents($repo.'/database/sql/multiline_invoice_drafts.sql');$draftSha=hash('sha256',$draftSql);$host->transaction(function()use($host,$draftSql,$draftSha,$tag){if(!$host->getSchemaBuilder()->hasTable('mi_draft_meta')){$host->unprepared($draftSql);$host->table('mi_draft_meta')->insert(['policy'=>App\Modules\Services\MultiLineInvoiceCalculation::POLICY,'composition'=>$tag,'source_hash'=>$draftSha]);}else{$m=$host->table('mi_draft_meta')->first();if(!$m||$m->composition!==$tag||$m->source_hash!==$draftSha)throw new LogicException('Preserve different draft composition');}});
file_put_contents($work.'/multiline-invoice-setup.json',json_encode(['passed'=>true,'book'=>$book,'schema_sha256'=>$sha,'new_grants'=>0,'new_accounts'=>0,'new_demo'=>false],JSON_PRETTY_PRINT));echo json_encode(['passed'=>true,'proof'=>$work.'/multiline-invoice-setup.json']).PHP_EOL;