['view','prepare'],'reader'=>['view','validate']] as $who=>$rights)foreach($rights as $r)IdentityFixture::grant($f[$who]->id,$f['tenant'],$f['company'],'industrial_costs.'.$r,$f['unit']); $c=app(IndustrialCosts::class);$key=fn()=>(string)Str::uuid();$select=fn($who)=>app(CompanyContext::class)->selectFor($f[$who]->id,$f['tenant'],$f['company'],$f['unit']);$select('manager'); $lot=$c->open($f['manager']->id,['reference'=>'LOT-TEST-'.Str::uuid(),'product_reference'=>'PROD-TEST-'.Str::uuid(),'product_name'=>'Produto industrial sintético','centre'=>'Centro Fabrico A — ensaio','period_start'=>'2026-10-01','period_end'=>'2026-10-31','currency'=>'MZN'],$key())['id'];$refs=[]; $add=function($kind,$data)use(&$refs,$c,$f,$lot,$select,$key){$select('manager');$id=$c->input($lot,$f['manager']->id,['kind'=>$kind,'source_ref'=>'IND-TEST-'.strtoupper($kind).'-'.Str::uuid(),'version'=>1,'previous_id'=>null,'data'=>$data,'evidence'=>'Origem/pressuposto industrial exclusivamente sintético.'],$key())['id'];$select('reader');$c->decide($lot,$f['reader']->id,['type'=>'input','id'=>$id,'version'=>1,'decision'=>'approved','reason'=>'Validação de dados sintéticos de custo, não verificação técnica real.'],$key());$refs[$kind]=['id'=>$id,'version'=>1];return $id;}; foreach(['material'=>['20','KG'],'labour'=>['300','MIN'],'pool'=>['600','MZN'],'machine'=>['5','HM'],'production'=>['10','UN']] as $kind=>[$quantity,$unit])$add($kind,['quantity'=>$quantity,'unit'=>$unit,'event_date'=>'2026-10-27']+($kind==='production'?['completed'=>true]:[])); foreach(['material'=>['50','KG'],'labour'=>['100','H']] as $kind=>[$amount,$unit])$add($kind.'_rate',['source_id'=>$refs[$kind]['id'],'source_version'=>1,'amount'=>$amount,'currency'=>'MZN','unit'=>$unit]); $criterionData=['pool_id'=>$refs['pool']['id'],'pool_version'=>1,'machine_id'=>$refs['machine']['id'],'machine_version'=>1,'capacity'=>'10','driver_unit'=>'HM','hypothesis'=>'synthetic_only']; if($criterion)$add('criterion',$criterionData);$select('manager');return $f+compact('lot','refs','criterionData'); } }