++ fix grafica e compilazione s-13
This commit is contained in:
@@ -249,9 +249,9 @@ class Registro extends Component
|
||||
private function impaginaS13(\Illuminate\Support\Collection $righe): \Illuminate\Support\Collection
|
||||
{
|
||||
$vuota = [
|
||||
'numero' => '',
|
||||
'rientro_precedente' => '',
|
||||
'assegnazioni' => $this->completaCelleS13([]),
|
||||
'numero' => '',
|
||||
'riporto' => ['nome' => '', 'data' => ''],
|
||||
'assegnazioni' => $this->completaCelleS13([]),
|
||||
];
|
||||
|
||||
$pagine = $righe->isEmpty()
|
||||
@@ -292,9 +292,10 @@ class Registro extends Component
|
||||
|
||||
return $assegnazioni
|
||||
->map(function ($gruppo, $territorioId) use ($rientriPrecedenti) {
|
||||
// Se un territorio è girato più di quattro volte nell'anno il
|
||||
// modulo non ha spazio per tutte: si stampano le ultime
|
||||
// quattro, mantenendo l'ordine cronologico da sinistra.
|
||||
$gruppo = $gruppo->values();
|
||||
|
||||
// I quattro gruppi "Assegnato a" ospitano le ultime quattro
|
||||
// assegnazioni, in ordine cronologico da sinistra.
|
||||
$ultime = $gruppo->slice(-self::S13_ASSEGNAZIONI_PER_RIGA)->values();
|
||||
|
||||
$celle = $ultime->map(fn (Assegnazione $a) => [
|
||||
@@ -303,18 +304,55 @@ class Registro extends Component
|
||||
'restituito_il' => $a->returned_at?->format('d/m/Y') ?? '',
|
||||
])->all();
|
||||
|
||||
$rientro = $rientriPrecedenti->get($territorioId);
|
||||
|
||||
return [
|
||||
'numero' => $gruppo->first()->territorio?->numero ?? '',
|
||||
'rientro_precedente' => $rientro ? \Carbon\Carbon::parse($rientro)->format('d/m/Y') : '',
|
||||
'assegnazioni' => $this->completaCelleS13($celle),
|
||||
'numero' => $gruppo->first()->territorio?->numero ?? '',
|
||||
'riporto' => $this->riportoS13($gruppo, $rientriPrecedenti->get($territorioId)),
|
||||
'assegnazioni' => $this->completaCelleS13($celle),
|
||||
];
|
||||
})
|
||||
->sort(fn (array $a, array $b) => strnatcasecmp((string) $a['numero'], (string) $b['numero']))
|
||||
->values();
|
||||
}
|
||||
|
||||
/**
|
||||
* Contenuto della colonna "Restituito l'ultima volta il", che funziona da
|
||||
* quinta casella della riga.
|
||||
*
|
||||
* Quando le assegnazioni dell'anno superano le quattro che i gruppi
|
||||
* "Assegnato a" possono ospitare, la colonna accoglie quella
|
||||
* immediatamente precedente alle quattro mostrate — nome e data di
|
||||
* rientro — così la riga copre cinque passaggi invece di quattro. In quel
|
||||
* caso il riporto dell'anno precedente non ha più senso: la continuità
|
||||
* con il passato ce l'ha già l'assegnazione in colonna.
|
||||
*
|
||||
* Con quattro o meno assegnazioni nell'anno la colonna torna al suo uso
|
||||
* da modulo: l'ultima data di rientro dell'anno di servizio precedente,
|
||||
* senza nome.
|
||||
*
|
||||
* @param \Illuminate\Support\Collection<int, Assegnazione> $gruppo
|
||||
* @return array{nome: string, data: string}
|
||||
*/
|
||||
private function riportoS13(\Illuminate\Support\Collection $gruppo, ?string $rientroAnnoPrecedente): array
|
||||
{
|
||||
$eccedenti = $gruppo->count() - self::S13_ASSEGNAZIONI_PER_RIGA;
|
||||
|
||||
if ($eccedenti > 0) {
|
||||
$precedente = $gruppo->get($eccedenti - 1);
|
||||
|
||||
return [
|
||||
'nome' => $precedente->proclamatore?->nome_completo ?? '',
|
||||
'data' => $precedente->returned_at?->format('d/m/Y') ?? '',
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
'nome' => '',
|
||||
'data' => $rientroAnnoPrecedente
|
||||
? \Carbon\Carbon::parse($rientroAnnoPrecedente)->format('d/m/Y')
|
||||
: '',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Ultima data di rientro di ogni territorio *precedente* all'inizio
|
||||
* dell'anno di servizio: è il dato che la colonna "Restituito l'ultima
|
||||
|
||||
Reference in New Issue
Block a user