table('supplier_documents')->count()!==16)throw new LogicException('Valid document proof required'); $p=$preview();$enter('actor');$ok($confirm($p['data']['preview'])['status']===409,'new session context invalidates an uncommitted document preview'); $p=$preview();$profile=$s['root'].'/binding.json';$saved=file_get_contents($profile);$binding=json_decode($saved,true);$key=implode(':',array_values($f['scope'])).':'.$f['actor'];$binding['bindings'][$key]['supplier_ids'][]=999999;file_put_contents($profile,json_encode($binding));try{$ok($confirm($p['data']['preview'])['status']===409,'changed supplier-origin binding requires fresh file conference');}finally{file_put_contents($profile,$saved);} $requestCommand=function($role,$id,$action,$data)use($call){$base='/api/purchasing-requests';$r=$call($role,$id?$base.'/'.$id:$base);$p=$call($role,$base.'/'.$id.'/preview',['operation_key'=>(string)Str::uuid(),'revision'=>$id?$r['data']['revision']:$r['data']['new_revision'],'action'=>$action,'data'=>$data]);if($p['status']!==200)throw new RuntimeException('Integration source preview');$r=$call($role,$base.'/'.$id.'/confirm',['preview'=>$p['data']['preview']]);if($r['status']!==201)throw new RuntimeException('Integration source confirmation');return $r['data'];}; $source=$requestCommand('requester',0,'save',['cost_center_id'=>$n['centre'],'priority'=>'normal','needed_by'=>date('Y-m-d',strtotime('+30 days')),'justification'=>'Origem QA para conferir disponibilidade documental de fornecedor.','items'=>[['description'=>'Material documental QA','category'=>'Material','purchase_type'=>'consumable','quantity'=>'1.000','unit'=>'UN','unit_price'=>'1.00','tax_rate'=>'0']]])['request_id'];$requestCommand('requester',$source,'submit',[]);$requestCommand('approver',$source,'decide',['decision'=>'approved','comment'=>'Necessidade sintetica de conferencia aprovada distintamente.']); $base='/api/purchasing-sourcing/requests/'.$source;$catalogue=$base.'/suppliers';$r=$call('actor',$catalogue);$ok($r['status']===200&&!in_array($id,array_column($r['data']['data'],'id'),true),'supplier awaiting document review is excluded from proposal selector'); $quote=['supplier_id'=>$id,'reference'=>'QA-DOC-SOURCE','delivery_days'=>5,'valid_until'=>date('Y-m-d',strtotime('+30 days')),'payment_terms'=>'Condicoes QA','no_conflict'=>true,'items'=>[['requisition_item_id'=>$db->table('requisition_items')->where('requisition_id',$source)->value('id'),'unit_price'=>'1.00','discount_type'=>'none','discount_value'=>'0']]]; $quotePreview=function()use($call,$base,$quote){$r=$call('actor',$base);return $call('actor',$base.'/preview',['operation_key'=>(string)Str::uuid(),'revision'=>$r['data']['revision'],'action'=>'quote','data'=>$quote]);};$ok($quotePreview()['status']===422&&$db->table('quotations')->count()===0,'forged pending supplier id is refused by original quotation workflow'); $pendingUpload=$preview();$r=$call('issuer',$url);$review=$call('issuer',$url.'/preview',['operation_key'=>(string)Str::uuid(),'revision'=>$r['data']['revision'],'action'=>'review','data'=>['status'=>'active','comment'=>'Evidencia de ensaio revista distintamente sem certificar autenticidade real.','version'=>$r['data']['supplier']['version']]]);$r=$call('issuer',$url.'/confirm',['preview'=>$review['data']['preview']]);$ok($r['status']===201&&$db->table('suppliers')->where('id',$id)->value('status')==='active','distinct original review reactivates exact evidence version for sourcing');$ok($confirm($pendingUpload['data']['preview'])['status']===409&&$db->table('supplier_documents')->count()===16,'review between file preview and confirmation forces new file conference'); $r=$call('actor',$catalogue);$ok($r['status']===200&&in_array($id,array_column($r['data']['data'],'id'),true),'reviewed supplier reappears in same scoped proposal selector');$p=$quotePreview();$ok($p['status']===200&&$p['data']['impact']['total_minor']===100&&$db->table('quotations')->count()===0,'new evidence permits original quotation preview without automatic proposal'); $ok(file_get_contents($profile)===$saved&&$countFiles($s['root'].'/supplier-documents')===16&&$countFiles($s['root'].'/supplier-document-previews')===0,'context probes preserve binding files and all original attachments'); file_put_contents($out,json_encode(['passed'=>true,'checks'=>$checks,'source_request_setup_only'=>true,'source_request_reserved_minor'=>100,'document_workflow_creates_reservation'=>false,'documents'=>16,'new_orders'=>0,'new_quotes'=>0,'new_right_names'=>[],'visual_review'=>false,'deployment_capacity_validated'=>false],JSON_PRETTY_PRINT|JSON_THROW_ON_ERROR));echo count($checks)." document-to-sourcing integration checks passed.\n";