Regista aceitacao funcional do primeiro incremento PGC-NIRF e preserva as dependencias documentais e tecnicas existentes. A validacao do calculo fiscal continua separada e pendente. Sem credenciais, bases operacionais ou publicacao.
30 lines
2.9 KiB
PHP
30 lines
2.9 KiB
PHP
<?php
|
|
namespace App\Modules\Services\Http;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Modules\Services\CatalogueAccounting;
|
|
use Illuminate\Http\Request;
|
|
|
|
final class CatalogueAccountingController extends Controller
|
|
{
|
|
private function response(array $data) { return response()->json($data)->header('Cache-Control','no-store, private'); }
|
|
private function only(Request $r,array $keys): void { abort_if(array_diff(array_keys($r->all()),$keys)!==[],422,'Campo protegido ou fora do âmbito.'); }
|
|
public function index(Request $r,CatalogueAccounting $c) { return $this->response($c->listing($r->user()->id)); }
|
|
public function propose(Request $r,CatalogueAccounting $c) {
|
|
$this->only($r,['kind','data','valid_from','valid_until','reason','previous_id','replaces_id']);
|
|
$data=$r->validate(['kind'=>'required|in:plan,account,category,service_link,service_override','data'=>'required|array','valid_from'=>'required|date_format:Y-m-d','valid_until'=>'nullable|date_format:Y-m-d|after_or_equal:valid_from','reason'=>'required|string|max:2000','previous_id'=>'nullable|integer|min:1','replaces_id'=>'nullable|integer|min:1']);
|
|
return $this->response($c->propose($r->user()->id,$data,(string)$r->header('Idempotency-Key')));
|
|
}
|
|
public function submit(Request $r,int $id,CatalogueAccounting $c) { $this->only($r,[]); return $this->response($c->submit($id,$r->user()->id,(string)$r->header('Idempotency-Key'))); }
|
|
public function decide(Request $r,int $id,CatalogueAccounting $c) {
|
|
$this->only($r,['decision','reason']); return $this->response($c->decide($id,$r->user()->id,$r->validate(['decision'=>'required|in:approved,refused','reason'=>'required|string|max:2000']),(string)$r->header('Idempotency-Key')));
|
|
}
|
|
public function resolve(Request $r,int $service,CatalogueAccounting $c) { $this->only($r,['reference_date']); $r->validate(['reference_date'=>'nullable|date_format:Y-m-d']); return $this->response($c->resolve($service,$r->query('reference_date'),$r->user()->id)); }
|
|
public function capture(Request $r,CatalogueAccounting $c) {
|
|
$this->only($r,['area','record_id','record_version','service_id','reference_date','resolution_revision']);
|
|
$data=$r->validate(['area'=>'required|in:service_drafts,billing_drafts','record_id'=>'required|integer|min:1','record_version'=>'required|integer|min:1','service_id'=>'required|integer|min:1','reference_date'=>'required|date_format:Y-m-d','resolution_revision'=>'required|string|regex:/^[a-f0-9]{64}$/D']);
|
|
foreach(['record_id','record_version','service_id'] as $field)$data[$field]=(int)$data[$field];
|
|
return $this->response($c->capture($r->user()->id,$data,(string)$r->header('Idempotency-Key')));
|
|
}
|
|
public function history(Request $r,string $area,int $record,CatalogueAccounting $c) { abort_unless(in_array($area,['service_drafts','billing_drafts'],true),404); return $this->response(['records'=>$c->history($r->user()->id,$area,$record)]); }
|
|
}
|