Browse Source

fatture in cloud

Roberto Santini 3 weeks ago
parent
commit
8d104bc3c1

+ 21
- 10
app/Services/FatturaReportTicketPdfService.php View File

@@ -14,7 +14,7 @@ use Illuminate\Support\Facades\Storage;
14 14
 class FatturaReportTicketPdfService
15 15
 {
16 16
     /**
17
-     * @return array<int, array{titolo: string, data: string, minuti: int, uscita: ?float}>
17
+     * @return array<int, array{titolo: string, data: string, minuti_ticket: int, minuti_fatturati: int, uscita: ?float}>
18 18
      */
19 19
     public function righe(Fattura $fattura): array
20 20
     {
@@ -33,13 +33,24 @@ class FatturaReportTicketPdfService
33 33
             if (! is_array($riga)) {
34 34
                 continue;
35 35
             }
36
-            $minuti = array_key_exists('minuti', $riga)
37
-                ? (int) $riga['minuti']
36
+            if (array_key_exists('minuti_fatturati', $riga)) {
37
+                $minutiFatturati = (int) $riga['minuti_fatturati'];
38
+            } elseif (array_key_exists('minuti', $riga)) {
39
+                $minutiFatturati = (int) $riga['minuti'];
40
+            } else {
41
+                $minutiFatturati = (int) round(((float) ($riga['ore'] ?? 0)) * 60);
42
+            }
43
+            $minutiTicket = array_key_exists('minuti_ticket', $riga)
44
+                ? (int) $riga['minuti_ticket']
38 45
                 : (int) round(((float) ($riga['ore'] ?? 0)) * 60);
46
+            if (! array_key_exists('minuti_ticket', $riga) && $minutiTicket === 0) {
47
+                $minutiTicket = $minutiFatturati;
48
+            }
39 49
             $righe[] = [
40 50
                 'titolo' => (string) ($riga['titolo'] ?? 'Ticket'),
41 51
                 'data' => (string) ($riga['data'] ?? ''),
42
-                'minuti' => $minuti,
52
+                'minuti_ticket' => $minutiTicket,
53
+                'minuti_fatturati' => $minutiFatturati,
43 54
                 'uscita' => $riga['uscita'] ?? null,
44 55
             ];
45 56
         }
@@ -48,9 +59,7 @@ class FatturaReportTicketPdfService
48 59
     }
49 60
 
50 61
     /**
51
-     * Ore del PDF = minuti messi in fattura, non tutto il tempo segnato sul ticket.
52
-     *
53
-     * @return array<int, array{titolo: string, data: string, minuti: int, uscita: ?float}>
62
+     * @return array<int, array{titolo: string, data: string, minuti_ticket: int, minuti_fatturati: int, uscita: ?float}>
54 63
      */
55 64
     protected function righeDaFattura(Fattura $fattura): array
56 65
     {
@@ -91,15 +100,17 @@ class FatturaReportTicketPdfService
91 100
             $quando = $annotazione->tempo_data
92 101
                 ? Carbon::parse($annotazione->tempo_data)
93 102
                 : Carbon::parse($annotazione->created_at);
94
-            $minutiRiga = (int) ($minuti[$id] ?? 0);
103
+            $minutiFattura = (int) ($minuti[$id] ?? 0);
104
+            $minutiTicket = (int) $annotazione->tempo_minuti;
95 105
             $uscita = $uscite[$id] ?? null;
96
-            if ($minutiRiga <= 0 && ! $uscita) {
106
+            if ($minutiTicket <= 0 && $minutiFattura <= 0 && ! $uscita) {
97 107
                 continue;
98 108
             }
99 109
             $righe[] = [
100 110
                 'titolo' => $annotazione->segnalazione?->titolo ?: 'Ticket',
101 111
                 'data' => $quando->format('Y-m-d H:i'),
102
-                'minuti' => $minutiRiga,
112
+                'minuti_ticket' => $minutiTicket,
113
+                'minuti_fatturati' => $minutiFattura,
103 114
                 'uscita' => $uscita,
104 115
             ];
105 116
         }

+ 6
- 4
app/Services/FatturazioneGeneraService.php View File

@@ -1234,7 +1234,7 @@ class FatturazioneGeneraService
1234 1234
 
1235 1235
     /**
1236 1236
      * @param  array<int, array<string, mixed>>  $voci
1237
-     * @return array<int, array{titolo: string, data: string, minuti: int, uscita: ?float}>
1237
+     * @return array<int, array{titolo: string, data: string, minuti_ticket: int, minuti_fatturati: int, uscita: ?float}>
1238 1238
      */
1239 1239
     protected function dettaglioTicket(array $voci): array
1240 1240
     {
@@ -1274,15 +1274,17 @@ class FatturazioneGeneraService
1274 1274
             $quando = $annotazione->tempo_data
1275 1275
                 ? Carbon::parse($annotazione->tempo_data)
1276 1276
                 : Carbon::parse($annotazione->created_at);
1277
-            $minuti = (int) ($minutiFatturati[$id] ?? 0);
1277
+            $minutiFattura = (int) ($minutiFatturati[$id] ?? 0);
1278
+            $minutiTicket = (int) $annotazione->tempo_minuti;
1278 1279
             $uscita = $uscite[$id] ?? null;
1279
-            if ($minuti <= 0 && ! $uscita) {
1280
+            if ($minutiTicket <= 0 && $minutiFattura <= 0 && ! $uscita) {
1280 1281
                 continue;
1281 1282
             }
1282 1283
             $righe[] = [
1283 1284
                 'titolo' => $annotazione->segnalazione?->titolo ?: 'Ticket',
1284 1285
                 'data' => $quando->format('Y-m-d H:i'),
1285
-                'minuti' => $minuti,
1286
+                'minuti_ticket' => $minutiTicket,
1287
+                'minuti_fatturati' => $minutiFattura,
1286 1288
                 'uscita' => $uscita,
1287 1289
             ];
1288 1290
         }

+ 10
- 6
resources/views/fatturazione/report-ticket.blade.php View File

@@ -29,7 +29,8 @@
29 29
       <tr>
30 30
         <th>Segnalazione</th>
31 31
         <th>Data</th>
32
-        <th class="text-end">Ore</th>
32
+        <th class="text-end">Ore ticket</th>
33
+        <th class="text-end">Ore fatturate</th>
33 34
         <th class="text-end">Costo d'uscita</th>
34 35
       </tr>
35 36
     </thead>
@@ -38,23 +39,26 @@
38 39
       <tr>
39 40
         <td>{{ $riga['titolo'] }}</td>
40 41
         <td>{{ \Carbon\Carbon::parse($riga['data'])->format('d/m/Y') }}</td>
41
-        <td class="text-end">{{ ($riga['minuti'] ?? 0) > 0 ? \App\Models\Config::formatTempo((int) $riga['minuti']) : '—' }}</td>
42
+        <td class="text-end">{{ ($riga['minuti_ticket'] ?? 0) > 0 ? \App\Models\Config::formatTempo((int) $riga['minuti_ticket']) : '—' }}</td>
43
+        <td class="text-end">{{ ($riga['minuti_fatturati'] ?? 0) > 0 ? \App\Models\Config::formatTempo((int) $riga['minuti_fatturati']) : '—' }}</td>
42 44
         <td class="text-end">{{ !empty($riga['uscita']) ? \App\Models\Config::formatCosto($riga['uscita']) : '—' }}</td>
43 45
       </tr>
44 46
       @empty
45 47
       <tr>
46
-        <td colspan="4" class="muted">Nessun ticket collegato.</td>
48
+        <td colspan="5" class="muted">Nessun ticket collegato.</td>
47 49
       </tr>
48 50
       @endforelse
49 51
     </tbody>
50 52
     @if(count($righe))
51 53
     @php
52
-      $minutiTotali = (int) collect($righe)->sum(fn ($r) => (int) ($r['minuti'] ?? 0));
54
+      $minutiTicket = (int) collect($righe)->sum(fn ($r) => (int) ($r['minuti_ticket'] ?? 0));
55
+      $minutiFatturati = (int) collect($righe)->sum(fn ($r) => (int) ($r['minuti_fatturati'] ?? 0));
53 56
     @endphp
54 57
     <tfoot>
55 58
       <tr>
56
-        <td colspan="2"><strong>Totale ore</strong></td>
57
-        <td class="text-end"><strong>{{ \App\Models\Config::formatTempo($minutiTotali) }}</strong></td>
59
+        <td colspan="2"><strong>Totale</strong></td>
60
+        <td class="text-end"><strong>{{ $minutiTicket > 0 ? \App\Models\Config::formatTempo($minutiTicket) : '—' }}</strong></td>
61
+        <td class="text-end"><strong>{{ $minutiFatturati > 0 ? \App\Models\Config::formatTempo($minutiFatturati) : '—' }}</strong></td>
58 62
         <td></td>
59 63
       </tr>
60 64
     </tfoot>

Loading…
Cancel
Save