190 lines
8.1 KiB
PHP
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
|