Files
SGF/scripts/sgf-install-stock-inactive.php
2026-11-11 09:00:17 +02:00

10 lines
2.2 KiB
PHP

<?php
$book='8085';require __DIR__.'/sgf-single-bootstrap.php';
$proof=$run['root'].'/private/receipt-composition-b4093c6f6707/single-integration/20261110-181533-d853d6ad/stock-inactive-result.json';$result=json_decode(file_get_contents($proof),true);if(($result['passed']??false)!==true||count($result['checks']??[])!==23)throw new LogicException('Require valid directed regression');
$build=$run['root'].'/private/single-stock-inactive-build-20261110';if(!is_file($build.'/manifest.json'))throw new LogicException('Require private build');
$files=['app/Modules/Inventory/StockInactiveReport.php','app/Modules/Inventory/CompositionStockRead.php','app/Modules/Identity/Services/IdentityWorkflow.php'];foreach($files as$file)(new Symfony\Component\Process\Process([PHP_BINARY,'-l',$repo.'/'.$file]))->mustRun();
$baseline=[];foreach(['stock_movements','stock_items','warehouses','gl_journals']as$table)$baseline[$table]=hash('sha256',$native->table($table)->orderBy('id')->get()->toJson());
$hashes=[];$copy=function($source,$file)use($s,$work,&$hashes){$target=$s['app'].'/'.$file;$backup=$work.'/before/'.$file;if(is_file($target)){if(!is_dir(dirname($backup)))mkdir(dirname($backup),0700,true);copy($target,$backup);}if(!is_dir(dirname($target)))mkdir(dirname($target),0700,true);copy($source,$target);$hashes[$file]=hash_file('sha256',$target);};
foreach($files as$file)$copy($repo.'/'.$file,$file);$c=require $s['app'].'/config/receipt_qa.php';$c['stock_inactive_enabled']=true;$config=$work.'/receipt_qa.php';file_put_contents($config,"<?php\nreturn ".var_export($c,true).";\n");$copy($config,'config/receipt_qa.php');foreach(glob($build.'/assets/*')as$file)$copy($file,'public/build/assets/'.basename($file));$copy($build.'/manifest.json','public/build/manifest.json');
file_put_contents($work.'/stock-inactive-installation.json',json_encode(['passed'=>true,'hashes'=>$hashes,'native_baseline'=>$baseline,'new_rights'=>0,'business_commands'=>0,'new_demo'=>false,'cache_cleared'=>false],JSON_PRETTY_PRINT));file_put_contents($s['root'].'/stock-inactive-installation-pointer.json',json_encode(['proof'=>$work.'/stock-inactive-installation.json']));echo json_encode(['passed'=>true,'proof'=>$work.'/stock-inactive-installation.json']).PHP_EOL;