@php $stabile = $this->getActiveStabile(); $contiRows = $this->getHubContiRows(); $contiOptions = $this->getContiImportabili(); $hdr = $this->getHeaderSaldoInfo(); $periodo = $this->periodoTotali; $periodoOptions = $this->periodoOptions; $periodoRateOptions = $this->periodoRateOptions; $periodoRate = $this->periodoRateTotali; $contoImport = $this->getSelectedContoImportInfo(); $snapshotCards = $this->getSaldoSnapshotCards(); $saldoArchivio = $this->getSaldoArchivioByYear(); $ricStats = $this->getRiconciliazioneStats(); $ricQueue = $this->getRiconciliazioneQueue(); $ricCurrent = $this->getRiconciliazioneCurrent(); $ricCandidates = $this->getRiconciliazioneCandidates(); $archiveSummary = $this->getArchivioOperativoSummary(); $gestioniRilevate = $this->getGestioniContabiliRilevate(); $ricBuckets = $this->getRiconciliazioneBucketRows(); $tipoEstrattoOptions = [ 'estratto_conto' => 'Estratto conto', 'saldo_banca' => 'Saldo banca', 'riconciliazione' => 'Riconciliazione', 'altro' => 'Altro', ]; @endphp @if(! $stabile)
Seleziona uno stabile per importare e verificare i movimenti banca.
@else
Stabile attivo
{{ $stabile->codice_operatore ?? $stabile->codice_stabile ?? '—' }} — {{ $stabile->denominazione ?? 'Stabile' }}
Hub operativo del conto corrente: conti, saldi ufficiali, movimenti importati e riconciliazione.
Conto attivo
@if($contoImport)
{{ $contoImport['label'] }}
@else
Nessun conto selezionato.
@endif
Importa estratto Registra saldo
Conti Saldi e estratti Movimenti Struttura e gestioni Riconciliazione @if($this->hubTab === 'conti') Conti dello stabile Vista generale equivalente a “Casse e banche”, ma dentro l'hub operativo del conto corrente.
@forelse($contiRows as $row)
$row['selected'], 'bg-white' => ! $row['selected'], ])>
{{ $row['label'] }}
@if($row['snapshot_data']) Ultimo saldo ufficiale: {{ $row['snapshot_data'] }} @if($row['snapshot_tipo']) · {{ $row['snapshot_tipo'] }} @endif @else Nessun saldo ufficiale registrato. @endif
@if($row['selected']) Attivo @endif
Saldo attuale
€ {{ number_format((float) ($row['saldo_attuale'] ?? 0), 2, ',', '.') }}
Movimenti importati
{{ $row['movimenti_count'] ?? 0 }}
Ultima data: {{ $row['ultima_movimentazione'] ?? '—' }}
Saldi / estratti Movimenti Riconciliazione
@empty
Nessun conto configurato per lo stabile attivo.
@endforelse
@elseif($this->hubTab === 'saldi')
Archivio saldi ufficiali ed estratti conto
Vista annuale del conto selezionato, separata dal mastrino dei movimenti.
@if($contoImport)
Conto: {{ $contoImport['label'] }}
@endif
Nuovo saldo / estratto
@forelse($saldoArchivio as $yearBlock)
Anno {{ $yearBlock['year'] }}
{{ count($yearBlock['rows']) }} estratti / saldi
@foreach($yearBlock['rows'] as $row) @if(($this->editingSaldoId ?? null) === $row['id']) @endif @endforeach
Data saldo Periodo Esito Tipo Saldo Documento Note Azioni
{{ $row['data'] }}
{{ $row['periodo_breve'] }}
{{ $row['periodo'] }}
@if(($row['quadratura_status'] ?? 'neutral') === 'ok')
OK
@elseif(($row['quadratura_status'] ?? 'neutral') === 'anchor')
Partenza
@elseif(($row['quadratura_status'] ?? 'neutral') === 'mismatch')
Verifica
@else
N/D
@endif
{{ $row['quadratura_label'] ?? '—' }}
@if(($row['quadratura_status'] ?? null) === 'mismatch' && array_key_exists('quadratura_delta', $row))
Scarto: € {{ number_format((float) ($row['quadratura_delta'] ?? 0), 2, ',', '.') }}
@endif
{{ $row['tipo'] }} € {{ number_format((float) $row['saldo'], 2, ',', '.') }} @if($row['documento_url'] && $row['documento_label']) @else @endif {{ $row['note'] !== '' ? $row['note'] : '—' }}
Apri movimenti Modifica @if(($this->confirmingDeleteSaldoId ?? null) === $row['id']) Conferma elimina Annulla @else Elimina @endif
Modifica saldo / estratto
Puoi correggere data saldo, periodo, tipo e note del record gia memorizzato.
Annulla Salva modifiche
@empty
Nessun saldo ufficiale registrato per il conto selezionato.
@endforelse
@elseif($this->hubTab === 'struttura') Struttura operativa banca / FE Separiamo la struttura documentale e le gestioni dal tab movimenti, così l’operatore vede subito il mastrino e gli import.
Struttura archivio banca
{{ $archiveSummary['banca_folder'] ?? 'banca_cc//' }}
Qui finiscono estratti, saldi, file importati e documenti conto in modo uniforme su tutti gli stabili.
Base stabile: {{ $archiveSummary['base_folder'] ?? '—' }}
Anno operativo: {{ $archiveSummary['reference_year'] ?? '—' }}
Gestioni contabili
{{ $archiveSummary['gestione_label'] ?? 'Gestione da associare' }}
Le gestioni storiche restano qui, fuori dal mastrino, così il tab movimenti resta leggibile anche con molte annualità.
@forelse($gestioniRilevate as $gestione)
{{ $gestione['folder'] }} {{ $gestione['stato'] !== '' ? $gestione['stato'] : 'attiva' }}
{{ $gestione['label'] }}
@empty
Nessuna gestione ordinaria/straordinaria rilevata.
@endforelse
Struttura FE pronta
{{ $archiveSummary['fatture_xml_folder'] ?? 'fatture_xml/' }}
XML originali per anno, indipendenti dal PDF.
{{ $archiveSummary['fatture_pdf_folder'] ?? 'fatture/' }}
PDF protocollati per gestione, pronti per ACL atomici su anno e tipo gestione.
Criteri di riconciliazione e quadratura
Questi bucket restano visibili come riferimento operativo, ma fuori dal tab movimenti.
@foreach($ricBuckets as $bucket)
{{ $bucket['title'] }}
{{ $bucket['detail'] }}
@endforeach
Regole operative di struttura
I movimenti banca restano sempre sul conto selezionato e vanno associati a una gestione.
Per questo stabile trattiamo solo ordinaria e straordinaria; il riscaldamento non entra nel flusso.
Le FE acqua possono confluire sulla voce ACQ quando il PDF e il pagamento banca danno un aggancio coerente.
@elseif($this->hubTab === 'riconciliazione') Riconciliazione guidata Pre-riconciliazione automatica con candidati. L’operatore verifica un movimento alla volta e usa il mastrino dove il match non è certo.
Totale movimenti
{{ $ricStats['totale'] ?? 0 }}
Senza prima nota
{{ $ricStats['senza_prima_nota'] ?? 0 }}
Già collegati
{{ $ricStats['collegati'] ?? 0 }}
Da confermare
{{ $ricStats['da_confermare'] ?? 0 }}
@if(! $contoImport)
Seleziona un conto per avviare la riconciliazione.
@elseif(! $ricCurrent)
Nessun movimento in coda. Il conto sembra già lavorato oppure i movimenti sono tutti collegati.
@else
Movimento in lavorazione
{{ ($this->riconciliazioneOffset ?? 0) + 1 }} di {{ count($ricQueue) }}
Precedente Successivo
{{ $ricCurrent['data'] }}
Stato: {{ $ricCurrent['stato'] }}
€ {{ number_format((float) $ricCurrent['importo'], 2, ',', '.') }}
{{ $ricCurrent['descrizione'] }}
Apri nel mastrino @if($ricCurrent['has_registrazione']) Ha già una prima nota @elseif(! empty($ricCurrent['match_label'])) {{ $ricCurrent['match_label'] }} @else Da collegare @endif
Candidati automatici
@if($ricCurrent['importo'] >= 0) Match su canoni affitto e incassi registrati per importo, data e testo della causale. @else Match su fatture fornitore contabili per importo netto, data e denominazione del fornitore. @endif
@forelse($ricCandidates as $candidate)
{{ $candidate['tipo'] }}
{{ $candidate['titolo'] }}
{{ $candidate['score'] }}%
{{ $candidate['dettaglio'] }}
Data: {{ $candidate['data'] }} Importo: € {{ number_format((float) $candidate['importo'], 2, ',', '.') }}
{{ $candidate['motivo'] }}
@if(($candidate['azione'] ?? null) === 'riconcilia_affitto')
Chiudi canone affitto
@elseif(($candidate['azione'] ?? null) === 'riconcilia_pagamento_fornitore')
Registra pagamento fornitore
@endif
@empty
Nessun candidato convincente. In questo caso l’operatore lavora dal mastrino e conferma manualmente il collegamento.
@endforelse
@endif
@elseif($this->hubTab === 'movimenti')
Import unico estratti
Seleziona il conto o la cassa corretta e importa il file nel formato relativo. Il collegamento al conto resta esplicito, senza inferenze dal file.
Per i file .qif puliamo i movimenti nei gruppi operativi e leggiamo CBILL, SIA, commissioni e fornitore favorito per proporre subito il collegamento con fatture e prima nota.
@if($contoImport)
Conto selezionato: {{ $contoImport['label'] }}
@endif
Nuovo movimento manuale Importa estratto
{{ $hdr['label'] }} @if($hdr['saldo'] !== null && $hdr['data']) · saldo al: {{ $hdr['data'] }} € {{ number_format((float) $hdr['saldo'], 2, ',', '.') }} @endif
Filtra per periodo/gestione dai filtri tabella.
@if($this->movimentiFocusFrom || $this->movimentiFocusTo)
Filtro rapido attivo sul periodo {{ $this->movimentiFocusFrom ?: '—' }}{{ $this->movimentiFocusTo ?: '—' }}
Rimuovi focus
@endif
Periodo
Totali periodo ({{ $periodo['label'] ?? '' }})
Movimenti: {{ $periodo['count'] ?? 0 }}
Entrate: € {{ number_format((float)($periodo['entrate'] ?? 0), 2, ',', '.') }}
Uscite: € {{ number_format((float)($periodo['uscite'] ?? 0), 2, ',', '.') }}
Periodo rate (senza anno)
Movimenti: {{ $periodoRate['count'] ?? 0 }}
Entrate: € {{ number_format((float)($periodoRate['entrate'] ?? 0), 2, ',', '.') }}
Uscite: € {{ number_format((float)($periodoRate['uscite'] ?? 0), 2, ',', '.') }}
Saldo periodo
€ {{ number_format((float)($periodo['saldo'] ?? 0), 2, ',', '.') }}
Snapshot ufficiali / estratti conto
I saldi ufficiali ancorano il ricalcolo del conto anche quando il conto non ha IBAN.
Registra saldo / estratto
@forelse($snapshotCards as $card)
{{ $card['tipo'] }}
{{ $card['data'] ?? '—' }}
@if(!empty($card['is_partenza_contabile']))
Partenza contabile
@endif
€ {{ number_format((float) ($card['saldo'] ?? 0), 2, ',', '.') }}
{{ $card['periodo'] }}
@if(!empty($card['documento_url']) && !empty($card['documento_label'])) @endif
@empty
Nessuno snapshot ufficiale registrato per il conto selezionato.
@endforelse
{{ $this->table }}
@endif @endif
@if($this->pdfViewerUrl)
{{ $this->pdfViewerTitle ?? 'Documento PDF' }}
Viewer PDF inline standard per saldi, estratti e documenti collegati.
@if($this->pdfViewerOpenUrl) Apri in nuova scheda @endif Chiudi
@include('filament.modals.pdf-viewer', ['url' => $this->pdfViewerUrl, 'openUrl' => $this->pdfViewerOpenUrl, 'title' => $this->pdfViewerTitle])
@endif