16 lines
2.6 KiB
PHP
16 lines
2.6 KiB
PHP
<?php
|
|
$book='8085';require __DIR__.'/sgf-stock-final-proof-bootstrap.php';$host->beginTransaction();$native->beginTransaction();
|
|
try{
|
|
$data=['stock_item_id'=>$policy['transfer_item_id'],'source_warehouse_id'=>$policy['source_warehouse_id'],'destination_warehouse_id'=>$policy['destination_warehouse_id'],'transfer_key'=>(string)Illuminate\Support\Str::uuid(),'quantity'=>'0.100'];$key=(string)Illuminate\Support\Str::uuid();[$sent,$preview]=$command('warehouse','dispatch',$data,$key);
|
|
$again=$invoke('warehouse','confirm',['preview'=>$preview['preview']]);$ok($again['replayed']&&$again['movement_id']===$sent['movement_id'],'current confirmation recovers despite new key-reuse rejection guard');
|
|
$reject(fn()=>$command('warehouse','dispatch',array_replace($data,['transfer_key'=>(string)Illuminate\Support\Str::uuid(),'quantity'=>'0.200']),$key),409,'same operation key with changed transfer refuses409 without another movement');
|
|
[$returned]=$command('warehouse','return',$data);$ok($returned['impact']['physical_after_milli']===500&&$returned['impact']['in_transit_after_milli']===0,'explicit physical return receives an unreceived parcel back at source');
|
|
$m=$native->table('stock_movements')->where('id',$returned['movement_id'])->first();$evidence=(new Tempo\Finance\GeneralLedger\StockTransitEvidence($native,$f['scope']))->movement($m);$ok($evidence['ownership_change_minor']===0&&!$evidence['journal_required'],'returned internal parcel preserves property without an expense journal');
|
|
$native->beginTransaction();try{
|
|
$profile=$native->table('organization_profiles')->where('name','SGF-STOCK-FINAL-QA-'.$tag.'-6')->firstOrFail();$native->table('organization_memberships')->where('profile_id',$profile->id)->delete();$state=$invoke('workshop_verify','index');$lot=$state['basis']['lot_context']['lots'][0];
|
|
$reject(fn()=>$command('warehouse','identify',['record_key'=>$lot['record_key'],'version'=>$lot['version'],'data'=>['code'=>'QA-SEM-DIREITO','expires_on'=>'2027-12-31','no_expiry'=>false]]),403,'revoked native lot permission is refused even while host right remains');
|
|
}finally{$native->rollBack();}
|
|
$ok($native->table('gl_journals')->count()===18,'recovery and returned parcel do not append any journal');
|
|
}finally{while($native->transactionLevel()>0)$native->rollBack();while($host->transactionLevel()>0)$host->rollBack();}
|
|
file_put_contents($work.'/stock-final-recovery-result.json',json_encode(['passed'=>true,'checks'=>$checks,'all_test_changes_rolled_back'=>true],JSON_PRETTY_PRINT));echo json_encode(['passed'=>true,'checks'=>count($checks),'proof'=>$work.'/stock-final-recovery-result.json']).PHP_EOL;
|