@php $tabs = [ 'protocollo-comunicazioni' => 'Protocollo comunicazioni', 'archivio-digitale' => 'Archivio digitale', 'scansione-documenti' => 'Scansione documenti', 'etichette-generiche' => 'Etichette generiche', 'movimentazione-codici' => 'Movimentazione per codice', 'template-drive' => 'Template Drive', 'archivio-fisico' => 'Archivio fisico', 'permessi' => 'Permessi e cartelle', ]; $stats = $this->hubStats; $protocolloStats = $this->protocolloComunicazioniStats; @endphp
Hub Documenti

Archivio digitale e fisico nello stesso flusso

Questa pagina diventa la base unica per PDF, struttura Drive, contenitori fisici e regole di visibilita. Il modello resta coerente con il passaggio consegne dello stabile e con la futura gestione studio.

Codice mnemonico suggerito
{{ $this->mnemonicCodeHint ?? 'STB00000' }}
Formato guida per etichette, QR e archivio fisico.
Documenti
{{ $stats['documenti'] ?? 0 }}
Archivio PDF censito.
Archiviati
{{ $stats['archiviati'] ?? 0 }}
Documenti chiusi e consolidati.
In scadenza
{{ $stats['in_scadenza'] ?? 0 }}
Finestra dei prossimi 30 giorni.
Template Drive
{{ $stats['template_drive'] ?? 0 }}
Cartelle base replicabili per stabile.
@foreach($tabs as $tabKey => $tabLabel) @endforeach
@if($this->hubTab === 'protocollo-comunicazioni') Protocollo comunicazioni Prima tab operativa per l'amministratore: ultimi documenti protocollati, filtri rapidi e vista a box con anteprima PDF o lista compatta.
Protocollo visibile
{{ $protocolloStats['totale'] ?? 0 }}
Documenti non fattura nello stabile attivo.
Con PDF
{{ $protocolloStats['con_pdf'] ?? 0 }}
Apribili in anteprima o stampa.
Questo mese
{{ $protocolloStats['questo_mese'] ?? 0 }}
Nuovi inserimenti recenti.
Categorie
{{ $protocolloStats['categorie'] ?? 0 }}
Tipologie disponibili nei filtri.
@if($this->protocolloView === 'cards')
@forelse($this->protocolloComunicazioniRows as $row)
{{ $row['protocollo'] }} {{ $row['categoria'] }} {{ $row['data'] }}

{{ $row['titolo'] }}

{{ $row['descrizione'] !== '' ? $row['descrizione'] : 'Nessuna descrizione registrata.' }}

Cartella: {{ $row['cartella'] }}
@if($row['fornitore'] !== '')
Ente / referente: {{ $row['fornitore'] }}
@endif @if($row['archive_reference'] !== '')
Rif. archivio: {{ $row['archive_reference'] }}
@endif
Apri Scarica @if($row['has_pdf']) Stampa @endif
@empty
Nessun documento protocollato trovato con i filtri correnti.
@endforelse
@else
Protocollo
Documento
Categoria / cartella
Azioni
@forelse($this->protocolloComunicazioniRows as $row)
{{ $row['protocollo'] }}
{{ $row['data'] }}
{{ $row['titolo'] }}
{{ $row['descrizione'] !== '' ? $row['descrizione'] : 'Nessuna descrizione registrata.' }}
@if($row['archive_reference'] !== '')
{{ $row['archive_reference'] }}
@endif
{{ $row['categoria'] }}
{{ $row['cartella'] }}
Apri @if($row['has_pdf']) Stampa @endif
@empty
Nessun documento protocollato trovato con i filtri correnti.
@endforelse
@endif
@elseif($this->hubTab === 'archivio-digitale') Archivio digitale Navigazione a cartelle per lo stabile attivo: root stabile, cartella fatture_PDF, anno di arrivo. Le azioni restano operative ma visibili solo come icone.
Percorso corrente
@foreach($this->digitalArchiveBreadcrumbs as $crumb) @endforeach
Nomi file fatture ordinati per data e protocollo, cosi la ricerca e l'elenco restano leggibili anche senza aprire il PDF.
@forelse($this->digitalArchiveFolders as $folder) @empty
Nessuna sottocartella disponibile nel livello corrente.
@endforelse
Cartella attiva
{{ $this->digitalArchiveCurrentFolder?->nome ?? 'Nessuna cartella selezionata' }}
{{ $this->digitalArchiveCurrentFolderHint }}
Documenti nel livello
{{ $this->digitalArchiveCurrentFolderDocumentCount }}
Solo fatture PDF collegate alla cartella corrente.
Operatività
Archivio digitale e fisico allineati
Da qui puoi aprire, stampare, watermarkare e assegnare subito la collocazione cartacea.
{{ $this->table }}
@elseif($this->hubTab === 'scansione-documenti') Scansione documenti Acquisizione staging-ready per PDF generati da scanner Epson, cartelle di rete o caricamento manuale. Il salvataggio usa lo stesso motore documento, quindi protocollo, archivio e OCR restano allineati.
Nuova acquisizione scanner
Carica il PDF prodotto dallo scanner, assegna subito stabile, cartella e classe archivio, poi lascia al backend rinomina, protocollo e OCR.
OCR automatico
Caricamento PDF in corso...
Flusso pratico per staging
Lo scanner genera un PDF. Qui lo carichi una sola volta e il sistema lo rinomina secondo stabile, anno e protocollo.
I metadati di acquisizione restano nel documento per distinguere upload manuale, cartella Epson, email o mobile.
La pipeline OCR esistente parte subito dopo il salvataggio, senza creare un ramo tecnico separato.
La cartella archivio puo essere fissata subito oppure lasciata automatica in base a categoria e anno.
EPSON e browser
Per la prova staging non serve pilotare lo scanner dal browser. Il percorso operativo corretto resta: scansione su PDF dal dispositivo, poi acquisizione da questa tab con OCR e metadati gia coerenti col resto dell'archivio.
Effetti del salvataggio
Numero protocollo generato automaticamente in base a categoria e anno del documento.
Rinominazione ordinata del file nello storage locale del progetto.
Metadati archivio pronti per QR, collocazione fisica e ricerche OCR successive.
@elseif($this->hubTab === 'etichette-generiche') Etichette generiche per contenitori Tab dedicata alla stampa rapida di etichette per faldoni, scatole, raccoglitori e buste. Il QR resta obbligatorio e il codice generato diventa il riferimento stabile per annidamento e scansione.
Nuova etichetta generica
Crea il contenitore, stampa subito e poi usalo come nodo della catena QR: fattura, cartella, dock, scatola, magazzino, scaffale.
QR incluso
Standard operativo
Il codice univoco viene generato automaticamente e diventa il nodo da scansionare.
Il QR usa lo stesso schema pubblico gia host-agnostic del resto dell'archivio fisico.
Il link Amazon puo essere salvato come URL o come ASIN, con tag affiliato aggiunto dal super-admin.
Questa tab rende visibile la nuova etichetta senza doverla cercare dentro il registro generale.
Ultime etichette generiche
Stampa immediata 11354 / 99014
@forelse($this->genericLabelRows as $row)
{{ $row['codice_univoco'] }} {{ $row['tipo'] }}
{{ $row['titolo'] }}
@if($row['linea_secondaria'] !== '')
{{ $row['linea_secondaria'] }}
@endif
Percorso: {{ $row['percorso'] }}
@if($row['ubicazione'] !== '')
Ubicazione: {{ $row['ubicazione'] }}
@endif @if($row['amazon_url'] !== '') @endif
@empty
Nessuna etichetta generica creata ancora per lo stabile attivo.
@endforelse
@elseif($this->hubTab === 'movimentazione-codici') Movimentazione per codice Pagina autonoma per spostare contenitori e documenti tramite codice o scansione. Serve da base alla catena annidata e ai futuri flussi con scanner EPSON.
Sposta per codice
Scansiona o inserisci codice sorgente e codice destinazione. Il contenitore padre viene aggiornato senza dover aprire il registro generale.
Catena QR prevista
QR Fattura -> QR Cartella trasparente -> QR Dock -> QR Scatola -> QR Magazzino -> QR Scaffale. Questa tab separa il movimento dal censimento del contenuto.
Contenitori di primo livello
@forelse($this->physicalArchiveContainerTree as $item)
{{ $item['codice_univoco'] }}
{{ $item['titolo'] }}
{{ $item['tipo'] }} · {{ $item['children_count'] }} elementi interni
@empty
Nessun contenitore creato ancora per lo stabile attivo.
@endforelse
@elseif($this->hubTab === 'template-drive') Template cartelle Drive Questa struttura resta la base comune per archivio digitale, passaggio consegne e futura sincronizzazione Google. Ora puo essere gestita da database a livello super-admin, con fallback automatico alla config storica.
Origine struttura
Fonte attuale: {{ $this->driveTemplateSource === 'database' ? 'database' : 'config' }}
{{ count($this->driveTemplateFolders) }} cartelle logiche
@if($this->canManageDriveTemplates)
@else
La modifica del template e dei parametri Amazon e riservata al super-admin. Gli altri ruoli vedono comunque la struttura effettiva.
@endif
@foreach($this->driveTemplateFolders as $folder)
{{ $folder }}
@endforeach
@elseif($this->hubTab === 'archivio-fisico') Archivio fisico Registro operativo del cartaceo: inserimento manuale, contenitori annidati e collegamento al digitale. La stampa rapida delle etichette generiche e la movimentazione hanno ora una tab dedicata.
Elenco archivio condominiale
Inserimento manuale come ticket: data, voce, titolo, nota, contenitore iniziale e posizione finale.
DB operativo
Contenitori di primo livello
@forelse($this->physicalArchiveContainerTree as $item)
{{ $item['codice_univoco'] }}
{{ $item['titolo'] }}
{{ $item['tipo'] }} · {{ $item['children_count'] }} elementi interni
@empty
Nessun contenitore creato ancora per lo stabile attivo.
@endforelse
Standard etichette
Modelli attivi: 11354 e 99014.
Formato suggerito: {{ $this->mnemonicCodeHint ?? 'STB00000' }} · contenuto · anno · busta · fascicolo.
QR in stampa su etichetta e predisposizione NFC per scatole e fascicoli.
Formato data archivio: AAAA-MM-GG o YYYYMMDD per aggancio automatico ai file gia codificati.
Registro e ricerca
Titolo manuale, ricerca testuale, contenimento annidato
@forelse($this->physicalArchiveRows as $row)
{{ $row['codice_univoco'] }} {{ $row['tipo'] }} {{ $row['data_archiviazione'] }}
{{ $row['titolo'] }}
@if($row['voce'] !== '')
{{ $row['voce'] }}
@endif
Dentro: {{ $row['parent'] }}
Percorso: {{ $row['percorso'] }}
@if($row['ubicazione'] !== '')
Ubicazione: {{ $row['ubicazione'] }}
@endif @if($row['documento'])
Digitale collegato: {{ $row['documento'] }}
@endif
@empty
Nessuna voce archivio fisico trovata con i filtri correnti.
@endforelse
Uso operativo
Puoi registrare direttamente un pezzo di carta senza scansione, poi metterlo in una busta etichettata, spostare la busta in un faldone e il faldone in una scatola usando solo i codici stampati.
@else Permessi e visibilita Qui prepariamo la classificazione dei documenti per audience e le cartelle visibili solo a ruoli, gruppi o utenti selezionati.
@foreach($this->visibleFolderRows as $folder)
{{ $folder['nome'] }}
{{ $folder['stabile'] }}
{{ $folder['scope'] }}
{{ $folder['path'] }}
Documenti collegati: {{ $folder['documents_count'] }}
Ruoli: {{ $folder['roles'] !== [] ? implode(', ', $folder['roles']) : 'nessun filtro' }}
Gruppi: {{ $folder['groups'] !== [] ? implode(', ', $folder['groups']) : 'nessun filtro' }}
Utenti: {{ $folder['users'] !== [] ? implode(', ', $folder['users']) : 'nessun utente specifico' }}
@endforeach @if(empty($this->visibleFolderRows))
Nessuna cartella archivio configurata per lo stabile attivo. Usa “Nuova cartella archivio” per iniziare a separare visibilita e struttura.
@endif
@foreach($this->audienceGroups as $group)
{{ $group }}
Audience candidata per visibilita documentale, export e portali dedicati.
@endforeach
Le cartelle ristrette sono applicate sia nella lista documenti sia nei download diretti, cosi l'ID del file non bypassa i permessi dello stabile o della cartella.
@endif