Accept isolated invoice issuance and reproducible PDF delivery

This commit is contained in:
2026-10-27 08:56:13 +02:00
parent 9f480045fa
commit 4276aca5c2
25 changed files with 1072 additions and 1 deletions
@@ -0,0 +1,22 @@
<?php
namespace App\Modules\Services\Http;
use App\Http\Controllers\Controller;
use App\Modules\Services\ServiceInvoicing;
use Illuminate\Http\Request;
final class ServiceInvoiceController extends Controller
{
private function response(array $data) { return response()->json($data)->header('Cache-Control','no-store, private'); }
public function index(Request $r,ServiceInvoicing $s) { return $this->response($s->listing($r->user()->id)); }
public function propose(Request $r,ServiceInvoicing $s) { return $this->response($s->propose($r->user()->id,$r->all())); }
public function decide(Request $r,int $id,ServiceInvoicing $s) { return $this->response($s->decide($id,$r->user()->id,$r->all())); }
public function review(Request $r,int $id,ServiceInvoicing $s) {
abort_if(array_diff(array_keys($r->all()),['series_id','rule_id'])!==[],422);
$d=$r->validate(['series_id'=>'required|integer|min:1','rule_id'=>'required|integer|min:1']);
return $this->response($s->review($id,(int)$d['series_id'],(int)$d['rule_id'],$r->user()->id));
}
public function issue(Request $r,int $id,ServiceInvoicing $s) { return $this->response($s->issue($id,$r->user()->id,$r->all(),(string)$r->header('Idempotency-Key'))); }
public function show(Request $r,int $id,ServiceInvoicing $s) { return $this->response($s->show($id,$r->user()->id)); }
public function pdf(Request $r,int $id,ServiceInvoicing $s) { return response($s->pdf($id,$r->user()->id))->header('Content-Type','application/pdf')->header('Content-Disposition','attachment; filename="test-invoice-'.$id.'.pdf"')->header('Cache-Control','no-store, private')->header('X-Content-Type-Options','nosniff'); }
public function correction(Request $r,int $id,ServiceInvoicing $s) { return $this->response($s->requestCorrection($id,$r->user()->id,$r->all())); }
}