true,'replayed'=>true,'business_commands'=>0]).PHP_EOL;exit;} config(['sgf_single_installation.enabled'=>true,'sgf_single_installation.bindings_sha256'=>$pins['single-bindings.json'],'stock_operations.enabled'=>true,'stock_operations.profile_sha256'=>$pins['stock-operations-binding.json']]); $u=App\Models\User::findOrFail($f['validator']);Auth::guard('web')->setUser($u);$r=Illuminate\Http\Request::create('/api/stock-operations','GET');$session=app('session')->driver();$session->start();$session->put('company_context',$f['scope']+['module_id'=>'stock','token'=>'lot-input']);$r->setLaravelSession($session);$r->setUserResolver(fn()=>$u);$app->instance('request',$r);app(CompanyContext::class)->selectFor($u->id,1,2,2); $result=app(App\Modules\Purchasing\ReceiptRuntime::class)->run('stock.operations.confirm',function($actor)use($ledger,$tag){ $db=DB::connection();$clone=function($table,$id,$changes)use($db){$row=(array)$db->table($table)->where('id',$id)->first();unset($row['id']);return $db->table($table)->insertGetId(array_replace($row,$changes));}; $code='QA-FORN-'.$tag; $item=$db->table('stock_items')->where(['tenant_id'=>1,'code'=>$code])->value('id'); if($item){$receipt=$db->table('goods_receipts')->where(['tenant_id'=>1,'delivery_note'=>'QA-SUPPLIER-'.$tag])->first();if(!$receipt)throw new LogicException('Incomplete lot fixture: inspect before recovery');return ['stock_item'=>(int)$item,'warehouse'=>$ledger['warehouse_id'],'receipt'=>$receipt->id,'prepared_stock_fixture'=>true];} $item=$clone('stock_items',$ledger['stock_item_id'],['code'=>$code,'name'=>'Artigo QA devolução ao fornecedor']); $template=$db->table('purchase_orders')->where('tenant_id',1)->where('status','issued')->orderBy('id')->firstOrFail(); $req=$clone('requisitions',$template->requisition_id,['number'=>'REQ-QA-SUPPLIER-'.$tag,'justification'=>'Prepared stock fixture only; no new acquisition acceptance.']);$original=$db->table('purchase_order_items')->where('purchase_order_id',$template->id)->firstOrFail(); $changes=['description'=>'Artigo QA exclusivamente para política e devolução','quantity'=>'10.000','unit'=>'UN','unit_price_minor'=>2000,'subtotal_minor'=>20000,'tax_minor'=>0,'total_minor'=>20000]; $line=$clone('requisition_items',$original->requisition_item_id,$changes+['requisition_id'=>$req]);$awardTemplate=$db->table('purchase_awards')->where('id',$template->purchase_award_id)->firstOrFail();$quote=$clone('quotations',$awardTemplate->quotation_id,['requisition_id'=>$req,'reference'=>'QA-SUPPLIER-'.$tag]);$award=$clone('purchase_awards',$awardTemplate->id,['requisition_id'=>$req,'quotation_id'=>$quote,'justification'=>'Fixture de origem física explicitamente autorizada.']); $orderId=$clone('purchase_orders',$template->id,['requisition_id'=>$req,'purchase_award_id'=>$award,'number'=>'OC-QA-SUPPLIER-'.$tag,'issued_at'=>now(),'snapshot'=>json_encode(['development_only'=>true,'prepared_stock_fixture'=>true,'budget_checked'=>false,'company'=>['name'=>'Empresa QA'],'supplier'=>['name'=>'Fornecedor QA']])]);$orderLine=$clone('purchase_order_items',$original->id,$changes+['purchase_order_id'=>$orderId,'requisition_item_id'=>$line]); $order=Tempo\Purchasing\Embedded\Models\PurchaseOrder::findOrFail($orderId);$receipt=app(Tempo\Purchasing\Embedded\Services\ReceiptWorkflow::class)->confirm($actor,$order,['idempotency_key'=>(string)Str::uuid(),'delivery_note'=>'QA-SUPPLIER-'.$tag,'received_on'=>'2026-11-10','warehouse_id'=>$ledger['warehouse_id'],'items'=>[['purchase_order_item_id'=>$orderLine,'received_quantity'=>'10.000','accepted_quantity'=>'10.000','quality_status'=>'compliant','stock_item_id'=>$item,'notes'=>'Entrada física efectiva10UN para política e devolução ao fornecedor.']]]); return ['stock_item'=>$item,'warehouse'=>$ledger['warehouse_id'],'receipt'=>$receipt->id,'prepared_stock_fixture'=>true,'financial_obligation_created'=>false]; }); file_put_contents($file,json_encode($result,JSON_PRETTY_PRINT)); echo json_encode(['passed'=>true,'book'=>$book,'received_milli'=>10000,'stock_item'=>$result['stock_item']]).PHP_EOL;