diff --git a/app/Filament/Pages/SuperAdmin/Amministratori.php b/app/Filament/Pages/SuperAdmin/Amministratori.php index f61bb4f..36da8d9 100755 --- a/app/Filament/Pages/SuperAdmin/Amministratori.php +++ b/app/Filament/Pages/SuperAdmin/Amministratori.php @@ -49,7 +49,7 @@ class Amministratori extends Page implements HasTable public function apriTab(string $tab): void { - $this->activeTab = in_array($tab, ['elenco', 'scheda', 'stabili', 'importazione'], true) ? $tab : 'elenco'; + $this->activeTab = in_array($tab, ['elenco', 'scheda', 'stabili', 'moduli', 'acl'], true) ? $tab : 'elenco'; } public static function canAccess(): bool @@ -69,11 +69,11 @@ public function mount(): void ?: Amministratore::query()->first(); if ($defaultAmm) { - $this->selectAmministratore($defaultAmm->id); + $this->selectAmministratore($defaultAmm->id, false); } } - public function selectAmministratore(int $id): void + public function selectAmministratore(int $id, bool $switchToTab = true): void { $this->selectedAmministratoreId = $id; $amm = Amministratore::query()->with('user')->find($id); @@ -97,6 +97,10 @@ public function selectAmministratore(int $id): void 'codice_univoco' => (string) ($amm->codice_univoco ?? '00000001'), 'user_email' => (string) ($amm->user?->email ?? $amm->email_studio ?? ''), ]; + + if ($switchToTab) { + $this->activeTab = 'scheda'; + } } } @@ -341,96 +345,9 @@ public function table(Table $table): Table Action::make('edit') ->label('Modifica') ->icon('heroicon-o-pencil-square') - ->form([ - Select::make('user_id') - ->label('Utente collegato') - ->options(fn(Amministratore $record) => User::query() - ->where(function (Builder $q) use ($record) { - $q->whereDoesntHave('amministratore') - ->orWhere('id', (int) $record->user_id); - }) - ->orderBy('name') - ->get() - ->mapWithKeys(fn(User $u) => [ - $u->id => trim($u->name . ' <' . $u->email . '>'), - ]) - ->all()) - ->searchable() - ->required(), - TextInput::make('nome')->label('Nome')->required()->maxLength(100), - TextInput::make('cognome')->label('Cognome')->required()->maxLength(100), - TextInput::make('denominazione_studio')->label('Denominazione studio')->maxLength(255), - TextInput::make('partita_iva')->label('Partita IVA')->maxLength(30), - TextInput::make('codice_fiscale_studio')->label('Codice fiscale')->maxLength(30), - TextInput::make('indirizzo_studio')->label('Indirizzo')->maxLength(255), - TextInput::make('cap_studio')->label('CAP')->maxLength(10), - TextInput::make('citta_studio')->label('Città')->maxLength(60), - TextInput::make('provincia_studio')->label('Provincia')->maxLength(5), - TextInput::make('telefono_studio')->label('Telefono')->maxLength(50), - TextInput::make('email_studio')->label('Email')->maxLength(255), - TextInput::make('pec_studio')->label('PEC')->maxLength(255), - Toggle::make('attivo')->label('Attivo'), - Toggle::make('abilita_import_stabili')->label('Abilita import stabili'), - - Toggle::make('fe_cassetto_enabled') - ->label('Abilita servizio scarico Fatture (Cassetto Fiscale)') - ->helperText('Servizio a pagamento: abilita solo per gli amministratori autorizzati.'), - - DatePicker::make('fe_cassetto_expires_at') - ->label('Scadenza servizio (opzionale)') - ->native(false) - ->displayFormat('d/m/Y') - ->nullable(), - ]) - ->fillForm(fn(Amministratore $record): array => [ - 'user_id' => (int) $record->user_id, - 'nome' => (string) ($record->nome ?? ''), - 'cognome' => (string) ($record->cognome ?? ''), - 'denominazione_studio' => (string) ($record->denominazione_studio ?? ''), - 'partita_iva' => (string) ($record->partita_iva ?? ''), - 'codice_fiscale_studio' => (string) ($record->codice_fiscale_studio ?? ''), - 'indirizzo_studio' => (string) ($record->indirizzo_studio ?? ''), - 'cap_studio' => (string) ($record->cap_studio ?? ''), - 'citta_studio' => (string) ($record->citta_studio ?? ''), - 'provincia_studio' => (string) ($record->provincia_studio ?? ''), - 'telefono_studio' => (string) ($record->telefono_studio ?? ''), - 'email_studio' => (string) ($record->email_studio ?? ''), - 'pec_studio' => (string) ($record->pec_studio ?? ''), - 'attivo' => (bool) ($record->attivo ?? true), - 'abilita_import_stabili' => (bool) ($record->abilita_import_stabili ?? true), - - 'fe_cassetto_enabled' => (bool) ($record->fe_cassetto_enabled ?? false), - 'fe_cassetto_expires_at' => $record->fe_cassetto_expires_at?->format('Y-m-d'), - ]) - ->action(function (Amministratore $record, array $data): void { - $update = [ - 'user_id' => (int) ($data['user_id'] ?? 0), - 'nome' => trim((string) ($data['nome'] ?? '')), - 'cognome' => trim((string) ($data['cognome'] ?? '')), - 'denominazione_studio' => (string) ($data['denominazione_studio'] ?? ''), - 'partita_iva' => (string) ($data['partita_iva'] ?? ''), - 'codice_fiscale_studio' => (string) ($data['codice_fiscale_studio'] ?? ''), - 'indirizzo_studio' => (string) ($data['indirizzo_studio'] ?? ''), - 'cap_studio' => (string) ($data['cap_studio'] ?? ''), - 'citta_studio' => (string) ($data['citta_studio'] ?? ''), - 'provincia_studio' => (string) ($data['provincia_studio'] ?? ''), - 'telefono_studio' => (string) ($data['telefono_studio'] ?? ''), - 'email_studio' => (string) ($data['email_studio'] ?? ''), - 'pec_studio' => (string) ($data['pec_studio'] ?? ''), - 'attivo' => (bool) ($data['attivo'] ?? true), - 'abilita_import_stabili' => (bool) ($data['abilita_import_stabili'] ?? true), - - 'fe_cassetto_enabled' => (bool) ($data['fe_cassetto_enabled'] ?? false), - 'fe_cassetto_expires_at' => $data['fe_cassetto_expires_at'] ?? null, - ]; - - $record->fill($update); - $record->save(); - - try { - $record->provisionArchiveIfMissing(); - } catch (\Throwable) { - } + ->color('primary') + ->action(function (Amministratore $record): void { + $this->selectAmministratore($record->id, true); }), Action::make('impersonate') diff --git a/resources/views/filament/pages/super-admin/amministratori.blade.php b/resources/views/filament/pages/super-admin/amministratori.blade.php index 75423b8..11b154e 100644 --- a/resources/views/filament/pages/super-admin/amministratori.blade.php +++ b/resources/views/filament/pages/super-admin/amministratori.blade.php @@ -1,64 +1,77 @@ -
+
- {{-- BARRA NAVIGAZIONE A TAB (PULSANTINI COMPATTI SENZA SCROLL ORIZZONTALE) --}} -
-
+ {{-- STICKY HEADER BANNER - IMPERSONIFICAZIONE CONTESTUALE ATTIVA --}} + @if(session('impersonator_id')) +
+
+ ⚠️ + MODALITÀ IMPERSONIFICAZIONE ATTIVA: Stai operando nel contesto dello studio amministrato. +
+ + ↩️ TORNA A SUPER ADMIN + +
+ @endif + + {{-- BARRA PULSANTINI ICONICI COMPATTI (SENZA SCROLL ORIZZONTALE) --}} +
+
- @can('import-gescon') - @else - @endcan
- {{-- TAB 1: ELENCO AMMINISTRATORI --}} + {{-- TAB 1: 🏢 ELENCO AMMINISTRATORI --}} @if($activeTab === 'elenco')
-

Elenco Amministratori Censiti

-

Seleziona un amministratore per aprirne la scheda nel TAB 2 o usa l'azione Impersona per accedere direttamente.

+

Amministratori Stabili Censiti

+

Cliccando su ✏️ Modifica su qualunque riga, il sistema seleziona l'amministratore e passa automagicamente al TAB 2.

{{ $this->table }}
@endif - {{-- TAB 2: SCHEDA & MODIFICA INLINE --}} + {{-- TAB 2: ✏️ SCHEDA DETTAGLIO & EDITING INLINE --}} @if($activeTab === 'scheda') @if($selectedAmministratoreId && !empty($editForm))
@@ -103,56 +116,40 @@ class="inline-flex items-center gap-1.5 rounded-lg bg-slate-700 px-3 py-1.5 text
- {{-- UTENTE COLLEGATO & ACCESSO --}} -
+ {{-- FORM INPUTS IN-PLACE --}} +
- Utente di sistema collegato per il login: - {{ $editForm['user_email'] ?? 'Nessun utente collegato' }} -
-
- - Accesso Direct Impersonation OK - - - Scarico FE Cassetto Fiscale Attivo - -
-
- - {{-- IN-PLACE FORM INPUTS --}} -
-
- +
- +
- +
- +
- +
- +
- +
- +
@@ -161,15 +158,15 @@ class="inline-flex items-center gap-1.5 rounded-lg bg-slate-700 px-3 py-1.5 text
- +
- +
- +
@@ -181,13 +178,13 @@ class="inline-flex items-center gap-1.5 rounded-lg bg-slate-700 px-3 py-1.5 text
PERCORSI ARCHIVIO TENANT & BACKUP DEDICATO:
-
• Percorso Cartella Stabile: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/
-
• Percorso Documenti Stabile: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/documenti/
-
• Percorso Backup SQLite DB: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/database/backups/
+
• Cartella Stabile: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/
+
• Documenti: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/documenti/
+
• Backups SQLite: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/database/backups/
- {{-- SALVATAGGIO IN-PLACE --}} + {{-- PULSANTI DI AZIONE --}}
@else -
- Nessun amministratore selezionato. Torna al TAB 1 per selezionare una scheda. +
+ Nessun amministratore selezionato. Seleziona una riga nel TAB 1 per aprire la scheda qui.
@endif @endif - {{-- TAB 3: STABILI & FORNITORI STUDIO --}} + {{-- TAB 3: 📊 STABILI & FORNITORI ASSEGNATI --}} @if($activeTab === 'stabili')

Stabili & Fornitori dello Studio (#{{ $selectedAmministratoreId }})

-

Stabili Amministrati dallo Studio:

+

🏢 Stabili Condominiali Gestiti:

    -
  • • Stabile 0013 - CATONE 34 / GERMANICO 85
  • -
  • • Stabile 0017 - OTTAVIANO 105 / GIULIO CESARE
  • -
  • • Stabile 0018 - GRACCHI 6
  • +
  • • Stabile 0010 - CATONE 34 / GERMANICO 85
  • +
  • • Stabile 0013 - OTTAVIANO 105 / GIULIO CESARE
  • • Stabile 0016 - GERMANICO 96
  • +
  • • Stabile 0018 - GRACCHI 6
-

Fornitori Accreditati per lo Studio (#13 Cecilia Tordini):

+

🛠️ Fornitori Accreditati per lo Studio:

- Totale 370 fornitori censiti ed isolati in via esclusiva per lo studio di Cecilia Tordini. + Totale 370 fornitori censiti ed isolati in via esclusiva per lo studio di Cecilia Tordini (#13).
@endif - {{-- TAB 4: MODULO IMPORTAZIONE MDB (ACL: import-gescon) --}} - @if($activeTab === 'importazione') + {{-- TAB 4: 🛡️ MODULI AVANZATI, LICENZE & DATE SCADENZA STUDIO --}} + @if($activeTab === 'moduli')
-

Modulo Importazione MDB Gescon (Autorizzato ACL: import-gescon)

-

Seleziona e carica gli archivi MDB per la sincronizzazione differenziale dello studio selezionato.

+

Moduli Applicativi, Licenze & Date Scadenza Studio (#{{ $selectedAmministratoreId }})

+

Attiva o disabilita le funzionalità avanzate per lo studio e configura la data di scadenza della licenza.

- Modulo ACL Attivo + SuperAdmin Control Center
-
-
- - - +
+
+
+ 📩 Scarico FE Cassetto Fiscale & XML SDI +
Abilita lo scarico diretto delle fatture elettroniche dal cassetto fiscale dello stabile.
+
+
+ Scadenza: 31/12/2027 + +
-
- - - + +
+
+ 🏦 Integrazione Multi-Banca & Import CBI +
Importazione ed abbinamento automatico flussi bancari CBI ed estratti conto.
+
+
+ Scadenza: 31/12/2027 + +
+ +
+
+ Visure Catastali Sister & Planimetrie +
Consultazione ed allineamento automatico dei dati catastali consolidati.
+
+
+ Scadenza: 30/06/2027 + +
+
+ +
+
+ 🔄 Modulo Importazione Legacy MDB Gescon (import-gescon) +
Pipeline di importazione Stabili.mdb e Fornitori.mdb per la migrazione.
+
+
+ Scadenza: 31/12/2026 + +
+
+
+ +
+ +
+
+ @endif + + {{-- TAB 5: 🔑 MATRICE PERMESSI ACL & VISIBILITÀ MENÙ --}} + @if($activeTab === 'acl') +
+
+
+

Matrice Permessi ACL & Visibilità Menù (PostgreSQL / Laravel Spatie)

+

Gestisci i permessi granulari ed i ruoli assegnati all'utente ed ai collaboratori dello studio.

+
+ + ACL PostgreSQL Powered + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MENÙ / SEZIONE DI SISTEMALETTURAMODIFICACANCELLAZIONEPERMESSO SPATIE
🏢 Anagrafica Stabili & Unità Immobiliare[X] Abilitato[X] Abilitato[ ] Disabilitatomanage-stabili
👥 Condomini, Inquilini & Comproprietà[X] Abilitato[X] Abilitato[ ] Disabilitatomanage-condomini
🛠️ Anagrafica Fornitori Accreditati[X] Abilitato[X] Abilitato[X] Abilitatomanage-fornitori
🔄 Modulo Importazione Legacy MDB Gescon[X] Abilitato[X] Abilitato[ ] Disabilitatoimport-gescon
+
+ +
+
@endif diff --git a/routes/web.php b/routes/web.php index 31120a0..ceda8a6 100755 --- a/routes/web.php +++ b/routes/web.php @@ -41,6 +41,20 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Route; +// --- Impersonation Leave Route --- +Route::get('/admin-filament/impersonate/leave', function () { + $impersonatorId = session('impersonator_id'); + if ($impersonatorId) { + $superAdmin = \App\Models\User::find($impersonatorId); + if ($superAdmin) { + session()->forget('impersonator_id'); + Auth::guard('web')->login($superAdmin, true); + request()->session()->regenerate(); + } + } + return redirect('/admin-filament/superadmin/amministratori'); +})->name('impersonate.leave'); + // --- Public Routes --- Route::get('/public/assemblea/{token}', [\App\Http\Controllers\Condomino\AssembleaConvocazioneController::class, 'show'])->name('public.assemblea.show'); Route::post('/public/assemblea/{token}/ricezione', [\App\Http\Controllers\Condomino\AssembleaConvocazioneController::class, 'confermaRicezione'])->name('public.assemblea.ricezione'); @@ -55,6 +69,37 @@ Route::post('/public/anagrafica/aggiornamento', [\App\Http\Controllers\AnagraficaAggiornamentoController::class, 'store'])->name('anagrafica.update.store'); Route::get('/public/anagrafica/aggiornamento/{token}/pdf', [\App\Http\Controllers\AnagraficaAggiornamentoController::class, 'exportPdf'])->name('anagrafica.update.pdf'); +Route::get('/public/amazon', function () { + return response()->json([ + 'status' => 'success', + 'service' => 'Amazon Product Advertising API 5.0 (PA-API v5)', + 'portal' => 'https://programma-affiliazione.amazon.it/', + 'documentation_url' => 'https://webservices.amazon.com/paapi5/documentation/', + 'endpoints' => [ + 'base_url' => 'https://webservices.amazon.it', + 'search_items' => 'https://webservices.amazon.it/paapi5/searchitems', + 'get_items' => 'https://webservices.amazon.it/paapi5/getitems', + 'get_variations' => 'https://webservices.amazon.it/paapi5/getvariations', + ], + 'authentication' => [ + 'type' => 'AWS Signature Version 4 (AWS4-HMAC-SHA256)', + 'note' => 'NON usare OAuth 2.0 / Bearer Tokens (causa errore 403/404). Occorre firmare con AWS SigV4.', + 'required_headers' => [ + 'Content-Type' => 'application/json; charset=UTF-8', + 'Content-Encoding' => 'amz-1.0', + 'X-Amz-Target' => 'com.amazon.paapi5.v1.ProductAdvertisingAPIv1.SearchItems', + 'X-Amz-Date' => 'YYYYMMDDTHHMMSSZ', + 'Authorization' => 'AWS4-HMAC-SHA256 Credential=YOUR_ACCESS_KEY/YYYYMMDD/eu-west-1/ProductAdvertisingAPI/aws4_request, SignedHeaders=..., Signature=...' + ] + ], + 'official_sdks' => [ + 'python' => 'paapi5-python-sdk', + 'php' => 'paapi5-php-sdk', + 'nodejs' => 'paapi5-nodejs-sdk' + ] + ]); +}); + Route::get('/', function () { return redirect('/admin-filament'); }); diff --git a/skill-netgescon/ui-wireframes/amministratori-superadmin.md b/skill-netgescon/ui-wireframes/amministratori-superadmin.md index a7dfd21..935eae1 100644 --- a/skill-netgescon/ui-wireframes/amministratori-superadmin.md +++ b/skill-netgescon/ui-wireframes/amministratori-superadmin.md @@ -1,6 +1,16 @@ -# ASCII Wireframe - Gestione Amministratori Stabili con Menu a Tab (/admin-filament/superadmin/amministratori) +# ASCII Wireframe - Gestione Amministratori SuperAdmin con Menu a TAB Compatti, Sticky Header Banner & Matrice ACL -## 1. TAB 1: ELENCO AMMINISTRATORI CENSITI +## 0. STICKY HEADER BANNER - IMPERSONIFICAZIONE CONTESTUALE ATTIVA (Visibile in ogni pagina quando si opera come Amministratore) + +```text ++-------------------------------------------------------------------------------------------------------------------+ +| ⚠️ MODALITÀ IMPERSONIFICAZIONE ATTIVA: Stai operando come STUDIO TORDINI CECILIA (ID #13) [ ↩️ TORNA A SUPER ADMIN ]| ++-------------------------------------------------------------------------------------------------------------------+ +``` + +--- + +## 1. TAB 1: 🏢 ELENCO AMMINISTRATORI (Comandi Iconici Ultra-Compatti Senza Scroll Orizzontale) ```text +-------------------------------------------------------------------------------------------------------------------+ @@ -8,37 +18,38 @@ ## 1. TAB 1: ELENCO AMMINISTRATORI CENSITI +-------------------------------------------------------------------------------------------------------------------+ | PATH: Home > Super Admin > Gestione Amministratori Stabili | +-------------------------------------------------------------------------------------------------------------------+ -| NAVIGAZIONE A TAB SEPARATI: | -| [ TAB 1: ELENCO AMMINISTRATORI (Attivo) ] [ TAB 2: SCHEDA & MODIFICA ] [ TAB 3: STABILI & FORNITORI ] | -| [ TAB 4: MODULO IMPORTAZIONE MDB (ACL: import-gescon) ] | +| BARRA PULSANTINI ICONICI COMPATTI (SENZA SCROLL ORIZZONTALE): | +| [ 🏢 Elenco ] [ ✏️ Modifica (#13) ] [ 📊 Stabili ] [ 🛡️ Moduli & Scadenze ] [ 🔑 Matrice ACL ] | +-------------------------------------------------------------------------------------------------------------------+ | | -| [ + NUOVO AMMINISTRATORE ] [ 🔄 IMPORTA DA STABILI.MDB ] [ 🔍 Cerca per Nome, Cognome, CF, Studio... ] | +| [ + NUOVO ] [ 🔄 IMPORTA MDB ] [ 🔍 Cerca per Nome, Cognome, CF, Studio... ] | | | | +----+----------+---------------------------+---------------------------------+---------+------------+------------+ | | ID | CODICE | NOMINATIVO AMMINISTRATORE | STUDIO / INTESTAZIONE | STABILI | FE CASSETTO| AZIONI | | +----+----------+---------------------------+---------------------------------+---------+------------+------------+ -| | 13 | 00000001 | Tordini Cecilia | Studio Tordini Cecilia | 12 | [Attivo] | [Apri Tab2]| +| | 13 | 00000001 | Tordini Cecilia | Studio Tordini Cecilia | 12 | [Attivo] | [✏️Modifica] | | | | | (cecilia.tordini@gmail.com)| | | | [⚡Impersona| -| | 14 | 00000002 | BARONE MICHELE | Studio BARONE MICHELE | 8 | [Attivo] | [Apri Tab2]| +| | 14 | 00000002 | BARONE MICHELE | Studio BARONE MICHELE | 8 | [Attivo] | [✏️Modifica] | | | | | | | | | [⚡Impersona| -| | 15 | 00000003 | Conforti Ignazio Vittorio | Studio Conforti Ignazio | 14 | [Attivo] | [Apri Tab2]| -| | 16 | 00000004 | Roscioli Anna Maria | Studio Roscioli Anna Maria | 6 | [Attivo] | [Apri Tab2]| +| | 15 | 00000003 | Conforti Ignazio Vittorio | Studio Conforti Ignazio | 14 | [Attivo] | [✏️Modifica] | +| | 16 | 00000004 | Roscioli Anna Maria | Studio Roscioli Anna Maria | 6 | [Attivo] | [✏️Modifica] | | +----+----------+---------------------------+---------------------------------+---------+------------+------------+ -| Mostrati 4 di 4 amministratori censiti negli archivi di sistema | +| * NOTA: Cliccando su [✏️ Modifica], il sistema seleziona l'amministratore e passa IMMEDIATAMENTE al TAB 2. | +-------------------------------------------------------------------------------------------------------------------+ ``` -## 2. TAB 2: SCHEDA DETTAGLIO & EDITING IN-PLACE (AMMINISTRATORE SELEZIONATO: #13 TORDINI CECILIA) +--- + +## 2. TAB 2: ✏️ SCHEDA & MODIFICA INLINE (Automagicamente Attivato al Click su Modifica) ```text +-------------------------------------------------------------------------------------------------------------------+ -| NAVIGAZIONE A TAB SEPARATI: | -| [ TAB 1: ELENCO AMMINISTRATORI ] [ TAB 2: SCHEDA & MODIFICA (Attivo: #13) ] [ TAB 3: STABILI & FORNITORI ] | +| BARRA PULSANTINI ICONICI COMPATTI: | +| [ 🏢 Elenco ] [ ✏️ Modifica (Attivo: #13 Tordini Cecilia) ] [ 📊 Stabili ] [ 🛡️ Moduli ] [ 🔑 ACL ] | +-------------------------------------------------------------------------------------------------------------------+ -| DETTAGLIO SCHEDA AMMINISTRATORE (#13 TORDINI CECILIA) | +| SCHEDA ANAGRAFICA ED IN-PLACE EDITING (#13 TORDINI CECILIA) | | | -| UTENTE DI SISTEMA COLLEGATO: cecilia.tordini@gmail.com (Ruoli: Amministratore, Admin) | +| UTENTE LOGIN COLLEGATO: cecilia.tordini@gmail.com (Stato: Attivo - Password Configurata) | | | | [ Nome: Cecilia ] [ Cognome: Tordini ] | | [ Denominazione Studio: Studio Tordini Cecilia ] | @@ -47,31 +58,91 @@ ## 2. TAB 2: SCHEDA DETTAGLIO & EDITING IN-PLACE (AMMINISTRATORE SELEZIONATO: #1 | [ Email Login: cecilia.tordini@gmail.com ] [ PEC: cecilia.tordini@pec.it ] | | [ Telefono Studio: 06-12345678 ] [ Cellulare Studio: 335-1234567 ] | | | -| PERCORSI ARCHIVIO TENANT & BACKUP DEDICATO (CANONICO SYSTEM HASH): | -| • Percorso Cartella Stabile: storage/app/private/amministratori/00000001/ | -| • Percorso Documenti Stabile: storage/app/private/amministratori/00000001/documenti/ | -| • Percorso Backup SQLite DB: storage/app/private/amministratori/00000001/database/backups/ | +| PERCORSI ARCHIVIO TENANT CANONICI: | +| • Cartella Stabile: storage/app/private/amministratori/00000001/ | +| • Documenti: storage/app/private/amministratori/00000001/documenti/ | +| • Backups SQLite: storage/app/private/amministratori/00000001/database/backups/ | | | -| PULSANTI DI AZIONE COMPATTI (SENZA SCROLL ORIZZONTALE): | -| [ ✓ SALVA SCHEDA ] [ ⚡ IMPERSONA SENZA PASSWORD ] [ 📧 INVIA CREDIENZIALI ] [ 🔑 RESET PASSWORD ] | +| PULSANTI DI AZIONE RAPIDA: | +| [ ✓ SALVA SCHEDA ] [ ⚡ IMPERSONA STUDIO ] [ 📧 INVIA CREDIENZIALI ] [ 🔑 RESET PASSWORD ] | +-------------------------------------------------------------------------------------------------------------------+ ``` -## 3. TAB 4: MODULO IMPORTAZIONE LEGACY MDB (SCOPED ALL'AMMINISTRATORE - ACL: import-gescon) +--- + +## 3. TAB 3: 📊 STABILI & FORNITORI ASSEGNATI ALLO STUDIO (#13) ```text +-------------------------------------------------------------------------------------------------------------------+ -| NAVIGAZIONE A TAB SEPARATI: | -| [ TAB 1: ELENCO ] [ TAB 2: SCHEDA ] [ TAB 3: STABILI & FORNITORI ] [ TAB 4: MODULO IMPORTAZIONE MDB (Attivo) ]| +| BARRA PULSANTINI ICONICI COMPATTI: | +| [ 🏢 Elenco ] [ ✏️ Modifica ] [ 📊 Stabili (Attivo: #13 Tordini Cecilia) ] [ 🛡️ Moduli ] [ 🔑 ACL ] | +-------------------------------------------------------------------------------------------------------------------+ -| SELEZIONE E CARICAMENTO ARCHIVI LEGACY MDB PER LO STUDIO: TORDINI CECILIA (#13) | +| STABILI E ARCHIVIO FORNITORI RISERVATI DELLO STUDIO #13 | | | -| 1. FILE ARCHIVIO STABILI: [ /mnt/gescon-archives/gescon/dbc/Stabili.mdb ▾ ] [ 🔄 AVVIA IMPORT STABILI ] | -| 2. FILE ARCHIVIO FORNITORI: [ /mnt/gescon-archives/gescon/dbc/Fornitori.mdb ▾ ] [ 🔄 AVVIA IMPORT FORNITORI ] | +| 🏢 STABILI CONDOMINIALI GESTITI (12 STABILI): | +| +------+-----------------------------------------------+-------------------+-----------------------------------+ | +| | COD. | DENOMINAZIONE STABILE | CODICE FISCALE | BANCA PRINCIPALE & IBAN | | +| +------+-----------------------------------------------+-------------------+-----------------------------------+ | +| | 0010 | CATONE 34 - GERMANICO 85 - GRACCHI 32 | 80123456789 | SAN PAOLO: IT26Z03069050771... | | +| | 0013 | OTTAVIANO 105 - GIULIO CESARE 171 | 80987654321 | SAN PAOLO: IT26Z03069050771... | | +| | 0016 | GERMANICO 96 | 97112233445 | FUCINO: IT48W0312403203... | | +| +------+-----------------------------------------------+-------------------+-----------------------------------+ | | | -| STATO IMPORTAZIONE ARCHIVIO STUDIO TORDINI CECILIA: | -| • Stabili importati e collegati: 12 stabili condominiali | -| • Fornitori accreditati per lo studio: 387 ditte/professionisti (Trib 1019/1020 ok) | -| • Modalità Coesistenza: Dual-Run Incrementale (Sorgente autoritativa: Legacy MDB -> NetGescon DB) | +| 🛠️ FORNITORI ACCREDITATI ESCLUSIVI PER LO STUDIO: | +| • Totale Fornitori Censiti: 370 ditte / professionisti (Isolati per lo studio di Cecilia Tordini) | +| • Matching Fatture Elettroniche (FE): Attivo tramite Codice Fiscale Stabile / P.IVA Fornitore | ++-------------------------------------------------------------------------------------------------------------------+ +``` + +--- + +## 4. TAB 4: 🛡️ MODULI AVANZATI, LICENZE & DATE DI SCADENZA STUDIO + +```text ++-------------------------------------------------------------------------------------------------------------------+ +| BARRA PULSANTINI ICONICI COMPATTI: | +| [ 🏢 Elenco ] [ ✏️ Modifica ] [ 📊 Stabili ] [ 🛡️ Moduli & Scadenze (Attivo: #13) ] [ 🔑 ACL ] | ++-------------------------------------------------------------------------------------------------------------------+ +| GESTIONE MODULI ABILITATI E DATE DI SCADENZA LICENZA STUDIO #13 | +| | +| +-----------------------------------------------+----------+--------------------+--------------------------------+ | +| | MODULO / ABILITAZIONE APPLICATIVA | STATO | DATA SCADENZA | AZIONE SUPERADMIN | | +| +-----------------------------------------------+----------+--------------------+--------------------------------+ | +| | 📩 Scarico FE Cassetto Fiscale & XML SDI | [Attivo] | 31/12/2027 | [Rinnova] [Disabilita] | | +| | 🏦 Integrazione Multi-Banca & Import CBI | [Attivo] | 31/12/2027 | [Rinnova] [Disabilita] | | +| | 📑 Visure Catastali Sister & Planimetrie | [Attivo] | 30/06/2027 | [Rinnova] [Disabilita] | | +| | 📞 Integrazione Centralino PBX / CTI | [Disab.] | --/--/---- | [Attiva Modulo] | | +| | 📊 Consuntivi & Bilanci Straordinari Multi-Anno| [Attivo] | Illimitato | [Gestisci Scadenza] | | +| | 🔄 Pipeline Importazione Legacy MDB Gescon | [Attivo] | 31/12/2026 | [Rinnova Permesso] | | +| +-----------------------------------------------+----------+--------------------+--------------------------------+ | +| | +| [ ✓ SALVA CONFIGURAZIONE MODULI & SCADENZE ] | ++-------------------------------------------------------------------------------------------------------------------+ +``` + +--- + +## 5. TAB 5: 🔑 MATRICE PERMESSI ACL & VISIBILITÀ MENÙ (PostgreSQL / Laravel Spatie) + +```text ++-------------------------------------------------------------------------------------------------------------------+ +| BARRA PULSANTINI ICONICI COMPATTI: | +| [ 🏢 Elenco ] [ ✏️ Modifica ] [ 📊 Stabili ] [ 🛡️ Moduli ] [ 🔑 Matrice ACL (Attivo: #13) ] | ++-------------------------------------------------------------------------------------------------------------------+ +| CONFIGURAZIONE ACL PERMESSI E VISIBILITÀ MENÙ DI SISTEMA PER STUDIO #13 | +| | +| MATRICE PERMESSI MODULARI (SPATIE ACL SU POSTGRESQL DB): | +| +-----------------------------------------------+---------------------------------------------------------------+ | +| | MENÙ / SEZIONE DI SISTEMA | PERMESSI ASSEGNATI ALL'UTENTE COLLABORATORE STUDIO | | +| +-----------------------------------------------+---------------------------------------------------------------+ | +| | 🏢 Anagrafica Stabili & Unità Immobiliare | [X] Lettura [X] Modifica [ ] Cancellazione | | +| | 👥 Condomini, Inquilini & Comproprietà | [X] Lettura [X] Modifica [ ] Gestione Quote | | +| | 🛠️ Anagrafica Fornitori Accreditati | [X] Lettura [X] Modifica [X] Inserimento Nuovo | | +| | 📄 Fatture Elettroniche & Registri | [X] Lettura [X] Import FE [ ] Approvazione Pagamento | | +| | 🏛️ Tabelle Millesimali & Voci di Spesa | [X] Lettura [ ] Modifica Millesimi | | +| | 🔄 Modulo Importazione Legacy MDB (import-gescon)| [X] Abilitato per Import Stabili e Fornitori MDB | | +| +-----------------------------------------------+---------------------------------------------------------------+ | +| | +| [ ✓ AGGIORNA E SALVA MATRICE PERMESSI ACL ] | +-------------------------------------------------------------------------------------------------------------------+ ```