Files
laravel-test/resources/views/customers/_form.blade.php
2026-03-30 19:15:13 +02:00

190 lines
8.1 KiB
PHP

{{--
resources/views/customers/_form.blade.php Partial del form cliente
Il prefisso underscore (_form) è una convenzione per indicare "partial view":
frammenti di HTML riutilizzati in più pagine tramite @include().
Questa tecnica evita di duplicare il form identico in create.blade.php e edit.blade.php.
La variabile $customer viene passata da edit.blade.php. In create.blade.php
non esiste, quindi usiamo old() come fallback per ripopolare dopo errore.
--}}
{{-- ─── Sezione 1: Informazioni principali ──────────────────────────────────── --}}
<div class="row g-3 mb-4">
<div class="col-12">
<h6 class="text-muted fw-semibold text-uppercase small letter-spacing-1 mb-3">
<i class="bi bi-person me-1"></i>Informazioni principali
</h6>
</div>
<div class="col-md-6">
<label class="form-label fw-medium">
Nome / Ragione Sociale <span class="text-danger">*</span>
</label>
{{--
is-invalid: classe Bootstrap che mostra il bordo rosso se c'è un errore.
$errors->has('name'): controlla se il campo ha errori di validazione.
old('name', $customer->name ?? ''): usa il valore OLD se c'è (dopo errore),
altrimenti il valore del Model (modifica), altrimenti stringa vuota (crea).
--}}
<input type="text" name="name"
class="form-control {{ $errors->has('name') ? 'is-invalid' : '' }}"
value="{{ old('name', $customer->name ?? '') }}"
placeholder="Es. Mario Rossi / Rossi S.r.l."
required>
{{-- Messaggio di errore specifico del campo --}}
@error('name')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-6">
<label class="form-label fw-medium">
Email <span class="text-danger">*</span>
</label>
<input type="email" name="email"
class="form-control {{ $errors->has('email') ? 'is-invalid' : '' }}"
value="{{ old('email', $customer->email ?? '') }}"
placeholder="mario@esempio.it"
required>
@error('email')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4">
<label class="form-label fw-medium">Telefono</label>
<input type="tel" name="phone"
class="form-control {{ $errors->has('phone') ? 'is-invalid' : '' }}"
value="{{ old('phone', $customer->phone ?? '') }}"
placeholder="+39 02 1234567">
@error('phone')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4">
<label class="form-label fw-medium">
Tipo <span class="text-danger">*</span>
</label>
<select name="type" class="form-select {{ $errors->has('type') ? 'is-invalid' : '' }}" required>
<option value=""> Seleziona </option>
<option value="privato" {{ old('type', $customer->type ?? '') === 'privato' ? 'selected' : '' }}>
Privato
</option>
<option value="azienda" {{ old('type', $customer->type ?? '') === 'azienda' ? 'selected' : '' }}>
Azienda
</option>
</select>
@error('type')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4">
<label class="form-label fw-medium">
Stato <span class="text-danger">*</span>
</label>
<select name="status" class="form-select {{ $errors->has('status') ? 'is-invalid' : '' }}" required>
<option value=""> Seleziona </option>
<option value="prospect" {{ old('status', $customer->status ?? 'prospect') === 'prospect' ? 'selected' : '' }}>
Prospect
</option>
<option value="attivo" {{ old('status', $customer->status ?? '') === 'attivo' ? 'selected' : '' }}>
Attivo
</option>
<option value="inattivo" {{ old('status', $customer->status ?? '') === 'inattivo' ? 'selected' : '' }}>
Inattivo
</option>
</select>
@error('status')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
{{-- ─── Sezione 2: Sede e dati fiscali ──────────────────────────────────────── --}}
<div class="row g-3 mb-4">
<div class="col-12">
<h6 class="text-muted fw-semibold text-uppercase small mb-3">
<i class="bi bi-building me-1"></i>Sede e dati fiscali
</h6>
</div>
<div class="col-md-4">
<label class="form-label fw-medium">Città</label>
<input type="text" name="city"
class="form-control {{ $errors->has('city') ? 'is-invalid' : '' }}"
value="{{ old('city', $customer->city ?? '') }}"
placeholder="Milano">
@error('city')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-8">
<label class="form-label fw-medium">Indirizzo</label>
<input type="text" name="address"
class="form-control {{ $errors->has('address') ? 'is-invalid' : '' }}"
value="{{ old('address', $customer->address ?? '') }}"
placeholder="Via Roma, 1 - 20100 Milano MI">
@error('address')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4">
<label class="form-label fw-medium">Partita IVA</label>
<input type="text" name="vat_number"
class="form-control {{ $errors->has('vat_number') ? 'is-invalid' : '' }}"
value="{{ old('vat_number', $customer->vat_number ?? '') }}"
placeholder="IT12345678901">
@error('vat_number')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4">
<label class="form-label fw-medium">Codice Fiscale</label>
<input type="text" name="fiscal_code"
class="form-control {{ $errors->has('fiscal_code') ? 'is-invalid' : '' }}"
value="{{ old('fiscal_code', $customer->fiscal_code ?? '') }}"
placeholder="RSSMRA80A01H501Z">
@error('fiscal_code')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-4">
<label class="form-label fw-medium">Valore Contratto ({{ $appSettings['currency_symbol'] }})</label>
<div class="input-group">
<span class="input-group-text">{{ $appSettings['currency_symbol'] }}</span>
<input type="number" name="contract_value" step="0.01" min="0"
class="form-control {{ $errors->has('contract_value') ? 'is-invalid' : '' }}"
value="{{ old('contract_value', $customer->contract_value ?? '0') }}"
placeholder="0.00">
</div>
@error('contract_value')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
{{-- ─── Sezione 3: Note ─────────────────────────────────────────────────────── --}}
@if($appSettings['allow_notes'] ?? true)
<div class="row g-3">
<div class="col-12">
<h6 class="text-muted fw-semibold text-uppercase small mb-3">
<i class="bi bi-sticky me-1"></i>Note
</h6>
<textarea name="notes" rows="4"
class="form-control {{ $errors->has('notes') ? 'is-invalid' : '' }}"
placeholder="Note interne, informazioni aggiuntive...">{{ old('notes', $customer->notes ?? '') }}</textarea>
@error('notes')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
@endif