17 lines
3.2 KiB
PHP
17 lines
3.2 KiB
PHP
<?php
|
|
require __DIR__.'/sgf-ledger-proof-bootstrap.php';
|
|
config(['remunerations.enabled'=>true,'remunerations.schema_sha256'=>hash_file('sha256',$repo.'/database/sql/remunerations.sql')]);
|
|
set_exception_handler(function($e){echo json_encode(['passed'=>false,'type'=>get_class($e),'message'=>$e->getMessage(),'frames'=>array_map(fn($f)=>[basename($f['file']??''),$f['line']??0],array_slice($e->getTrace(),0,5))]).PHP_EOL;exit(1);});
|
|
config(['human_resources.enabled'=>true,'human_resources.profiles_sha256'=>App\Shared\Installation\HumanResourcesProfiles::fingerprint(App\Shared\Installation\HumanResourcesProfiles::policy())]);
|
|
$hrProfiles=App\Shared\Installation\HumanResourcesProfiles::registered();
|
|
$hrActor=function($alias)use($hrProfiles){$key=[13=>'hr_prepare',14=>'hr_review',17=>'hr_read'][$alias]??null;return$key?(int)collect($hrProfiles)->firstWhere('profile_key',$key)->user_id:$alias;};
|
|
$select=function($actor=13,$generation='rm-proof',$module='human_resources')use($app,$hrActor){$actor=$hrActor($actor);Illuminate\Support\Facades\Auth::forgetGuards();Illuminate\Support\Facades\Auth::shouldUse('web');$user=App\Models\User::findOrFail($actor);Illuminate\Support\Facades\Auth::guard('web')->setUser($user);$session=app('session')->driver();$session->start();$session->put('company_context',['tenant_id'=>1,'company_id'=>2,'unit_id'=>2,'module_id'=>$module,'token'=>$generation.'-'.$actor]);$r=Illuminate\Http\Request::create('/api/remunerations');$r->setUserResolver(fn()=>$user);$r->setLaravelSession($session);$r->attributes->set('sgf_module',$module);$app->instance('request',$r);app(App\Shared\Context\CompanyContext::class)->selectFor($actor,1,2,2);};
|
|
$rm=app(App\Modules\HumanResources\Remunerations::class);$uuid=fn()=>(string)Illuminate\Support\Str::uuid();
|
|
$input=fn($kind,$key,$version,$data,$action='prepare')=>['kind'=>$kind,'action'=>$action,'record_key'=>$key,'version'=>$version,'reason'=>'Decisão individual QA de remuneração artificial sem efeitos financeiros.','data'=>$data];
|
|
$preview=function($actor,$d,$key=null)use($select,$rm,$uuid,$hrActor){$select($actor);return$rm->preview($hrActor($actor),$d,$key??$uuid());};
|
|
$confirm=function($actor,$token,$gen='rm-proof')use($select,$rm,$hrActor){$select($actor,$gen);return$rm->confirm($hrActor($actor),$token);};
|
|
$command=function($actor,$d,$key=null)use($uuid,$preview,$confirm){$key??=$uuid();$p=$preview($actor,$d,$key);return[$confirm($actor,$p['preview']),$p,$key];};
|
|
$listing=function($kind='payroll',$extra=[],$actor=17)use($select,$rm,$hrActor){$select($actor);return$rm->listing($hrActor($actor),['kind'=>$kind]+$extra);};
|
|
$reject=function($fn,$status,$name)use($ok){try{$fn();throw new RuntimeException('Expected refusal: '.$name);}catch(Symfony\Component\HttpKernel\Exception\HttpExceptionInterface $e){$ok($e->getStatusCode()===$status,$name);}catch(Illuminate\Validation\ValidationException){$ok($status===422,$name);}};
|
|
$workerData=['operation'=>'establish','code'=>'QA-COLABORADOR-01','status'=>'active'];$rulesData=['operation'=>'establish','label'=>'Regras artificiais do exercício QA','valid_from'=>'2026-01-01','valid_to'=>'2026-12-31','worker_rate'=>'3','employer_rate'=>'4','retention_rate'=>'8','source'=>'Parâmetros artificiais de ensaio, sem validade legal de INSS ou IRPS.'];
|