Roberto Santini 10 uur geleden
bovenliggende
commit
a548684d09

+ 4
- 2
app/Http/Controllers/ConfigController.php Bestand weergeven

@@ -99,7 +99,9 @@ class ConfigController extends Controller implements HasMiddleware
99 99
         }
100 100
 
101 101
         if ($config->type === 'aliquote') {
102
-          Config::impostaAliquotaDefault((int) $request->input('fic_aliquota_default', 0));
102
+          if ($request->has('fic_aliquota_default')) {
103
+            Config::impostaAliquotaDefault((int) $request->input('fic_aliquota_default'));
104
+          }
103 105
           continue;
104 106
         }
105 107
 
@@ -123,7 +125,7 @@ class ConfigController extends Controller implements HasMiddleware
123 125
     try {
124 126
       $catalogo = Config::salvaAliquoteDaFic(
125 127
         $fic->vatTypes(),
126
-        (int) $request->input('fic_aliquota_default', 0)
128
+        $request->has('fic_aliquota_default') ? (int) $request->input('fic_aliquota_default') : null
127 129
       );
128 130
     } catch (RuntimeException $e) {
129 131
       return redirect()->route('admin.config.index')

+ 2
- 1
app/Http/Controllers/FatturazioneController.php Bestand weergeven

@@ -147,7 +147,8 @@ class FatturazioneController extends Controller implements HasMiddleware
147 147
       'righe.*.nota' => 'nullable|string',
148 148
     ]);
149 149
 
150
-    $aliquota = Config::aliquotaFic((int) ($validated['fic_vat_id'] ?? 0));
150
+    $vatId = $validated['fic_vat_id'] ?? null;
151
+    $aliquota = $vatId === null ? null : Config::aliquotaFic((int) $vatId);
151 152
     if (! $aliquota) {
152 153
       $messaggio = Config::aliquoteFic()['items']
153 154
         ? 'Scegli un\'aliquota IVA tra quelle salvate da Fatture in Cloud.'

+ 17
- 11
app/Models/Config.php Bestand weergeven

@@ -284,24 +284,29 @@ class Config extends \App\Models\AbstractModels\AbstractConfig
284 284
       $items[] = self::normalizzaAliquota($item);
285 285
     }
286 286
 
287
-    $defaultId = isset($json['default_id']) ? (int) $json['default_id'] : 0;
288 287
     $ids = array_column($items, 'id');
289
-    if (! in_array($defaultId, $ids, true)) {
290
-      $defaultId = 0;
288
+    $defaultId = null;
289
+    if (array_key_exists('default_id', $json) && $json['default_id'] !== null && $json['default_id'] !== '') {
290
+      $candidate = (int) $json['default_id'];
291
+      if (in_array($candidate, $ids, true)) {
292
+        $defaultId = $candidate;
293
+      }
291 294
     }
292 295
 
293 296
     return [
294
-      'default_id' => $defaultId ?: null,
297
+      'default_id' => $defaultId,
295 298
       'items' => $items,
296 299
     ];
297 300
   }
298 301
 
299 302
   /**
303
+   * L'id 0 è un'aliquota vera su Fatture in Cloud (di solito il 22%).
304
+   *
300 305
    * @return array<string, mixed>|null
301 306
    */
302 307
   public static function aliquotaFic(?int $id): ?array
303 308
   {
304
-    if (! $id) {
309
+    if ($id === null) {
305 310
       return null;
306 311
     }
307 312
     foreach (self::aliquoteFic()['items'] as $item) {
@@ -361,7 +366,7 @@ class Config extends \App\Models\AbstractModels\AbstractConfig
361 366
    * @param  array<int, array<string, mixed>>  $types
362 367
    * @return array{default_id: ?int, items: array<int, array<string, mixed>>}
363 368
    */
364
-  public static function salvaAliquoteDaFic(array $types, int $requestedDefault = 0): array
369
+  public static function salvaAliquoteDaFic(array $types, ?int $requestedDefault = null): array
365 370
   {
366 371
     $previous = self::aliquoteFic();
367 372
     $items = [];
@@ -373,11 +378,12 @@ class Config extends \App\Models\AbstractModels\AbstractConfig
373 378
     }
374 379
 
375 380
     $ids = array_column($items, 'id');
376
-    $defaultId = in_array($requestedDefault, $ids, true) ? $requestedDefault : 0;
377
-    if (! $defaultId && in_array((int) ($previous['default_id'] ?? 0), $ids, true)) {
381
+    $defaultId = null;
382
+    if ($requestedDefault !== null && in_array($requestedDefault, $ids, true)) {
383
+      $defaultId = $requestedDefault;
384
+    } elseif ($previous['default_id'] !== null && in_array((int) $previous['default_id'], $ids, true)) {
378 385
       $defaultId = (int) $previous['default_id'];
379
-    }
380
-    if (! $defaultId && $items) {
386
+    } elseif ($items) {
381 387
       $defaultId = (int) $items[0]['id'];
382 388
       foreach ($items as $item) {
383 389
         $natura = (string) ($item['ei_type'] ?? '');
@@ -389,7 +395,7 @@ class Config extends \App\Models\AbstractModels\AbstractConfig
389 395
     }
390 396
 
391 397
     $payload = [
392
-      'default_id' => $defaultId ?: null,
398
+      'default_id' => $defaultId,
393 399
       'items' => $items,
394 400
     ];
395 401
 

+ 4
- 1
app/Models/Fattura.php Bestand weergeven

@@ -95,8 +95,11 @@ class Fattura extends \App\Models\AbstractModels\AbstractFattura
95 95
     public function ficVatId(): ?int
96 96
     {
97 97
         $id = data_get($this->meta, 'fic_vat_id');
98
+        if ($id === null || $id === '' || ! is_numeric($id)) {
99
+            return null;
100
+        }
98 101
 
99
-        return $id ? (int) $id : null;
102
+        return (int) $id;
100 103
     }
101 104
 
102 105
     public function aliquotaLabel(): string

+ 1
- 1
resources/views/config/index.blade.php Bestand weergeven

@@ -217,7 +217,7 @@ if (is_string($activeGroup)) {
217 217
                     @forelse($catalogoIva['items'] as $aliquota)
218 218
                     <tr>
219 219
                       <td>
220
-                        <input class="form-check-input" type="radio" name="fic_aliquota_default" value="{{ $aliquota['id'] }}" @checked((int) ($catalogoIva['default_id'] ?? 0) === (int) $aliquota['id']) {{ $disabled }}>
220
+                        <input class="form-check-input" type="radio" name="fic_aliquota_default" value="{{ $aliquota['id'] }}" @checked($catalogoIva['default_id'] !== null && (int) $catalogoIva['default_id'] === (int) $aliquota['id']) {{ $disabled }}>
221 221
                       </td>
222 222
                       <td>{{ $aliquota['description'] !== '' ? $aliquota['description'] : Config::labelAliquota($aliquota) }}</td>
223 223
                       <td>{{ rtrim(rtrim(number_format((float) $aliquota['value'], 2, ',', ''), '0'), ',') }}</td>

+ 7
- 5
resources/views/fatturazione/show.blade.php Bestand weergeven

@@ -21,10 +21,12 @@
21 21
     return rtrim(rtrim(number_format((float) $value, 2, '.', ''), '0'), '.');
22 22
   };
23 23
   $catalogoIva = \App\Models\Config::aliquoteFic();
24
-  $vatSelezionato = (int) old('fic_vat_id', 0);
25
-  if (! $vatSelezionato) {
24
+  $vatOld = old('fic_vat_id');
25
+  if ($vatOld !== null && $vatOld !== '') {
26
+    $vatSelezionato = (int) $vatOld;
27
+  } else {
26 28
     $salvata = \App\Models\Config::aliquotaPerFattura($fattura);
27
-    $vatSelezionato = (int) ($salvata['id'] ?? 0);
29
+    $vatSelezionato = $salvata ? (int) $salvata['id'] : null;
28 30
   }
29 31
 @endphp
30 32
 
@@ -213,8 +215,8 @@
213 215
           <select name="fic_vat_id" id="fic_vat_id" class="form-select @error('fic_vat_id') is-invalid @enderror">
214 216
             <option value="">— Seleziona —</option>
215 217
             @foreach($catalogoIva['items'] as $aliquota)
216
-            <option value="{{ $aliquota['id'] }}" data-percentuale="{{ $aliquota['value'] }}" @selected($vatSelezionato === (int) $aliquota['id'])>
217
-              {{ \App\Models\Config::labelAliquota($aliquota) }}@if((int) ($catalogoIva['default_id'] ?? 0) === (int) $aliquota['id']) — predefinita @endif
218
+            <option value="{{ $aliquota['id'] }}" data-percentuale="{{ $aliquota['value'] }}" @selected($vatSelezionato !== null && $vatSelezionato === (int) $aliquota['id'])>
219
+              {{ \App\Models\Config::labelAliquota($aliquota) }}@if($catalogoIva['default_id'] !== null && (int) $catalogoIva['default_id'] === (int) $aliquota['id']) — predefinita @endif
218 220
             </option>
219 221
             @endforeach
220 222
           </select>

Laden…
Annuleren
Opslaan