@php $selectedMovement = $selectedBankMovementSnapshot['record'] ?? null; $selectedAi = $selectedBankMovementSnapshot['ai_review'] ?? []; $selectedLedger = $selectedCiLedger ?? []; @endphp
HUB gestione incassi
Flusso operativo: coda movimenti banca, scelta del C/I, quadratura sulle rate e conferma finale della registrazione.
@if($workspaceTab === 'gestione')
Scheda operativa incassi
In coda vedi solo i movimenti banca da associare. La riga sparisce dalla pila quando la riconciliazione viene salvata.
Coda aperta: {{ count($bankIncassiQueue) }}
Movimenti banca da gestire
@if(empty($bankIncassiQueue))
Nessun movimento aperto per lo stabile attivo.
@else
@foreach($bankIncassiQueue as $movement) @endforeach
@endif
@if(empty($selectedMovement))
Seleziona un movimento dalla pila per aprire la lavorazione.
@else
Movimento #{{ $selectedBankMovementId }} · {{ $selectedMovement['importo_label'] ?? '—' }}
{{ $selectedMovement['data_pag_label'] ?? '—' }} @if(!empty($selectedMovement['nome_condomino'])) · {{ $selectedMovement['nome_condomino'] }} @endif @if(!empty($selectedMovement['sc_int'])) · {{ $selectedMovement['sc_int'] }} @endif
@if(!empty($selectedAi['id'])) @endif @if(!empty($selectedBankMovementSnapshot['bank_url'])) Vai alla banca @endif @if(!empty($selectedBankMovementSnapshot['estratto_url'])) Apri estratto conto @endif
{{ $selectedMovement['descrizione_aggintiva'] ?? 'Nessuna descrizione banca disponibile.' }}
Totali aperti del C/I
@foreach(($selectedLedger['summary']['by_bucket'] ?? []) as $item)
{{ $item['label'] }}
€ {{ number_format((float) ($item['total'] ?? 0), 2, ',', '.') }}
{{ (int) ($item['rows'] ?? 0) }} partite
@endforeach
@if(!empty($selectedLedger['summary']['by_gestione'] ?? []))
@foreach(($selectedLedger['summary']['by_gestione'] ?? []) as $row) @endforeach
Gestione Ordinarie Straordinarie Totale dovuto
{{ $row['gestione'] }} € {{ number_format((float) ($row['ordinary_total'] ?? 0), 2, ',', '.') }} € {{ number_format((float) ($row['extraordinary_total'] ?? 0), 2, ',', '.') }} € {{ number_format((float) ($row['general_total'] ?? 0), 2, ',', '.') }}
@endif
C/I selezionato e gestione di competenza
{{ $selectedCiIdentity['subject_label'] ?? ($selectedMovement['nome_condomino'] ?? 'C/I da confermare') }}
{{ $selectedCiIdentity['unit_label'] ?? ($selectedMovement['sc_int'] ?? 'Unità da confermare') }}
Gestione di competenza
@foreach($manualCompetenceOptions as $option) @endforeach
@if(!empty($debtorSearchResults))
@foreach($debtorSearchResults as $result) @endforeach
@endif
Legacy cond: {{ $selectedCiIdentity['legacy_cond_id'] ?? ($selectedLegacyCondId ?: ($selectedMovement['id_condomino'] ?? 'n/d')) }}
Soggetto ID: {{ $selectedCiIdentity['subject_id'] ?? ($selectedSubjectId ?: ($selectedBankMovementSnapshot['subject_id'] ?? 'n/d')) }}
Unità ID: {{ $selectedCiIdentity['unit_id'] ?? ($selectedUnitId ?: ($selectedBankMovementSnapshot['unit_id'] ?? 'n/d')) }}
Riferimenti banca del pagante
@php($payerReference = $selectedMovement['payer_reference'] ?? []) @if(empty($payerReference['holder_name']) && empty($payerReference['holder_iban']) && empty($payerReference['bank_label']))
Nessun riferimento aggiuntivo estratto dalla descrizione del bonifico.
@else
Pagante: {{ $payerReference['holder_name'] ?? 'n/d' }}
IBAN ordinante: {{ $payerReference['holder_iban'] ?? 'n/d' }}
Banca ordinante: {{ $payerReference['bank_label'] ?? 'n/d' }}
@if(!empty($payerReference['bic']))
BIC/SWIFT: {{ $payerReference['bic'] }}
@endif @if(!empty($payerReference['cro']))
CRO: {{ $payerReference['cro'] }}
@endif
@if(!empty($payerReference['matched_from_reference'])) Collegamento risolto anche da riferimento bancario già noto. @else Il riferimento verrà memorizzato sul soggetto quando chiudi questa riconciliazione. @endif
@endif
Esito mini AI / ponte
@if(empty($selectedAi))
Nessuna proposta mini AI ancora disponibile.
@else
Stato {{ $selectedAi['status'] ?? 'n/d' }} @if(!empty($selectedAi['suggested_action'])) · azione {{ $selectedAi['suggested_action'] }} @endif @if(!is_null($selectedAi['confidence'] ?? null)) · conf. {{ number_format((float) $selectedAi['confidence'], 2, ',', '.') }} @endif
@if(!empty($selectedAi['summary']))
Summary: {{ $selectedAi['summary'] }}
@endif @if(!empty($selectedAi['reason']))
Motivo: {{ $selectedAi['reason'] }}
@endif @if(!empty($selectedAi['allocations'] ?? []))
Allocazioni suggerite
@foreach($selectedAi['allocations'] as $allocation) @endforeach
Rata Descrizione Importo Gestione
#{{ $allocation['rate_id'] ?? '—' }} {{ $allocation['descrizione'] ?? '—' }} @if(!empty($allocation['ricevuta'])) · ric. {{ $allocation['ricevuta'] }} @endif € {{ $allocation['amount_label'] ?? number_format((float) ($allocation['amount'] ?? 0), 2, ',', '.') }} {{ ($allocation['ci'] ?? '—') }} {{ !empty($allocation['gestione']) ? '· ' . $allocation['gestione'] : '' }}
@elseif(($selectedAi['suggested_action'] ?? '') === 'link' && (int) ($selectedAi['candidate_rates_count'] ?? 0) > 0)
La mini AI ha proposto il collegamento ma non ha indicato le rate da chiudere. Invia di nuovo dopo aver selezionato la gestione corretta oppure imputa manualmente le rate dalla lista sotto.
@endif @endif
{{ $miniAiStatus['message'] ?? 'Questa registrazione va chiusa solo a quadratura esatta con l\'importo banca.' }}
Questa registrazione va chiusa solo a quadratura esatta con l'importo banca.
@if(!empty($selectedAi['allocations'] ?? []))
@endif
Rate già pagate
@if(empty($selectedLedger['paid']))
Nessun pagamento storico disponibile per il C/I selezionato.
@else
@foreach($selectedLedger['paid'] as $rate) @endforeach
Emissione Gestione Descrizione Pagato
{{ !empty($rate['data_emissione']) ? \Illuminate\Support\Carbon::parse($rate['data_emissione'])->format('d/m/Y') : '—' }} {{ $rate['gestione'] ?? '—' }} {{ $rate['descrizione'] ?? '—' }} € {{ number_format((float) ($rate['gia_pagato'] ?? 0), 2, ',', '.') }}
@endif
Rate ordinarie da pagare / da imputare
@if($manualCompetenceLabel)
Gestione mostrata: {{ $manualCompetenceLabel }}
@endif
@if(empty($selectedLedger['due_ordinary'] ?? []))
Nessuna partita ordinaria aperta disponibile per il C/I selezionato.
@else
@foreach(($selectedLedger['due_ordinary'] ?? []) as $rate) @endforeach
Emissione Gestione Descrizione Residuo Da imputare
{{ !empty($rate['data_emissione']) ? \Illuminate\Support\Carbon::parse($rate['data_emissione'])->format('d/m/Y') : '—' }} {{ $rate['gestione'] ?? '—' }} {{ $rate['display_description'] ?? ($rate['descrizione'] ?? '—') }} € {{ number_format((float) ($rate['residuo'] ?? 0), 2, ',', '.') }}
@endif
Spese straordinarie aperte
@if(!empty($selectedLedger['totals']['due_extraordinary']))
Residuo straordinarie: € {{ number_format((float) ($selectedLedger['totals']['due_extraordinary'] ?? 0), 2, ',', '.') }}
@endif
@if(empty($selectedLedger['due_extraordinary'] ?? []))
Nessuna partita straordinaria aperta rilevata per il C/I selezionato.
@else
Le straordinarie restano visibili separatamente fino alla loro chiusura effettiva.
@if(!empty($selectedLedger['summary']['extraordinary_by_work'] ?? []))
@foreach(($selectedLedger['summary']['extraordinary_by_work'] ?? []) as $item) @endforeach
Tipo straordinaria Gestione Partite Residuo
{{ $item['label'] }} {{ $item['gestione'] }} {{ (int) ($item['rows'] ?? 0) }} € {{ number_format((float) ($item['total'] ?? 0), 2, ',', '.') }}
@endif @if(!empty($selectedLedger['summary']['extraordinary_missing_works'] ?? []))
Straordinarie attese ma mancanti nel residuo dell'interno
@foreach(($selectedLedger['summary']['extraordinary_missing_works'] ?? []) as $missing)
{{ $missing['label'] }} @if(!empty($missing['numero_straordinaria'])) ({{ $missing['numero_straordinaria'] }}/{{ $missing['gestione'] }}) @endif · {{ $missing['message'] }}
@endforeach
@endif
@foreach(($selectedLedger['due_extraordinary'] ?? []) as $rate) @endforeach
Emissione Gestione Descrizione Residuo Da imputare
{{ !empty($rate['data_emissione']) ? \Illuminate\Support\Carbon::parse($rate['data_emissione'])->format('d/m/Y') : '—' }} {{ $rate['gestione'] ?? '—' }} {{ $rate['display_description'] ?? ($rate['descrizione'] ?? '—') }} € {{ number_format((float) ($rate['residuo'] ?? 0), 2, ',', '.') }}
@endif
Importo banca
€ {{ number_format($this->manualBankAmount, 2, ',', '.') }}
Totale imputato
€ {{ number_format($this->manualAllocationTotal, 2, ',', '.') }}
Differenza
€ {{ number_format($this->manualAllocationDifference, 2, ',', '.') }}
@endif
@elseif($workspaceTab === 'apprendimento')
Verifica movimenti mini AI
Sezione separata per la correzione e l'istruzione della mini AI.
@if(empty($this->miniAiReviewItems))
Nessuna risposta mini AI disponibile per lo stabile attivo.
@else
@foreach($this->miniAiReviewItems as $item)
Movimento #{{ $item['movimento_id'] ?: 'n/d' }} · {{ $item['nominativo'] }}
{{ $item['data'] ?: 'data n/d' }} · {{ $item['importo_label'] }}
Stato {{ $item['status'] }}
{{ $item['suggested_action'] }} @if(!is_null($item['confidence']))· conf. {{ number_format($item['confidence'], 2, ',', '.') }} @endif
@if($item['summary'] !== '')
Summary: {{ $item['summary'] }}
@endif @if($item['reason'] !== '')
Motivo: {{ $item['reason'] }}
@endif
@endforeach
@endif
Richieste AI
File: incoming/ai_requests.md
Risposte AI
Salvato in: incoming/ai_responses.md
@if($selectedAiRequestId)
Richiesta selezionata: #{{ $selectedAiRequestId }}.
@endif
@elseif($workspaceTab === 'hub')
HUB incassi da estratto conto
Fonte: {{ $legacyHubMeta['source_label'] ?? 'nessuna fonte disponibile' }} @if(!empty($legacyHubMeta['stabile_label'])) · {{ $legacyHubMeta['stabile_label'] }} @endif · righe: {{ $legacyHubMeta['records_count'] ?? 0 }}
@if(empty($legacyHubRows))
Nessun dato read-only disponibile.
@else
Payload cumulativo
@endif
@else
Storico Q/A (DB)
Ultimi 50 record dalla tabella ai_requests.
@forelse($this->aiRequestsDb as $row) @empty @endforelse
ID Contesto Stato Filtri Richiesta Risposta Data
{{ $row['id'] }} {{ $row['context'] }} {{ $row['status'] }} {{ json_encode($row['filters_json'], JSON_UNESCAPED_UNICODE) }} {{ $row['request_text'] }} {{ $row['response_text'] }} {{ $row['created_at'] }}
Nessun record.
Incassi
Elenco con azioni per dettaglio nominativo e feedback AI.
{{ $this->table }}
@endif