Modulo Soggetti

Anagrafica unificata — Clienti, Fornitori, Agenti, Vettori, Pazienti, Beneficiari

v 2.2 Manuale Utente

Riferimenti normativi

Note operative e permessi configurabili

🗒️ Pannello Note: ogni scheda di soggetto (cliente, fornitore, paziente) ha un pannello "post-it" giallo floating ancorato all'entità corrente. Si apre minimizzato come fascia centrata sulla topbar (sulla barra blu del modale per i documenti); cliccando la fascia o la freccia expand_more si espande al centro del viewport (ridimensionabile via handle in basso a destra). La fascia minimizzata è trascinabile e la sua posizione viene memorizzata in localStorage per ciascun record (es. ogni documento ha la sua posizione independente). Per scrivere una nota: testo nel box giallino + bottone + Aggiungi (o Cmd/Ctrl + Invio). Modifica/elimina riservate all'autore o agli amministratori. Cestino note con ripristino disponibile dal toggle delete_outline nell'header del pannello espanso (solo ADMIN/SUPERADMIN). Tutti i CRUD (create/update/delete/restore) sono tracciati in audit_log (consultabile da Amministrazione Sistema → Audit Log).

🔒 Permessi configurabili: alcune azioni di questa scheda (creazione, modifica, cancellazione, esportazione, stampa) possono essere bloccate per il ruolo del tuo workspace. Quando un bottone è bloccato, appare con icona "lucchetto" e tooltip "Permesso disabilitato dal Super Amministratore". La configurazione si fa in Amministrazione di Sistema » Permessi per Ruolo (solo SUPERADMIN).

1Panoramica e logica del modulo

Il modulo Soggetti rappresenta l'anagrafica unificata di NOX Enterprise Suite. Ogni persona fisica o giuridica viene registrata una sola volta e puo ricoprire simultaneamente piu ruoli: Cliente, Fornitore, Agente, Vettore, Paziente, Beneficiario.

Questo approccio elimina la duplicazione dei dati e garantisce coerenza in tutti i flussi operativi: fatturazione, contabilita, logistica, CRM e gestione clinica.

Un medesimo soggetto puo essere contemporaneamente Cliente e Fornitore. I ruoli attivi determinano quali sezioni condizionali vengono visualizzate nella scheda.

Header con reverse nome

L'intestazione della scheda mostra il nome nel formato COGNOME Nome (reverse) per facilitare l'ordinamento alfabetico e la ricerca rapida. Per le persone giuridiche viene visualizzata la ragione sociale.

2Ruoli soggetto

Ogni soggetto puo avere uno o piu ruoli. L'attivazione di un ruolo abilita le sezioni condizionali corrispondenti.

RuoloDescrizioneSezioni abilitate
ClienteSoggetto destinatario di fatture di venditaDati Commerciali, Listino & Sconti, Opportunita CRM, Statistiche
FornitoreSoggetto emittente di fatture di acquistoDati Commerciali, Listino & Sconti
AgenteIntermediario commerciale con provvigioniConfigurazione Agente, Statistiche
VettoreTrasportatore per spedizioni e DDTConfigurazione Vettore
PazienteSoggetto che riceve prestazioni sanitarieDati Clinici
BeneficiarioDestinatario finale di una prestazione o pagamentoDati Commerciali
Attenzione: la rimozione di un ruolo non cancella i dati storici associati, ma nasconde le sezioni condizionali dalla scheda. I dati restano disponibili per consultazione e reportistica.
3Creazione di un soggetto

Per creare un nuovo soggetto, seguire la procedura:

  1. Accedere al menu Anagrafiche → Soggetti e premere il pulsante + Nuovo Soggetto.
  2. Selezionare il tipo: Persona Fisica o Persona Giuridica.
  3. Compilare i dati anagrafici obbligatori: cognome/nome (o ragione sociale), codice fiscale, indirizzo, comune, CAP, provincia.
  4. Se applicabile, inserire la Partita IVA e il Codice SDI / PEC per la fatturazione elettronica.
  5. Attivare uno o più ruoli tramite le checkbox nella sezione Ruoli.
  6. Compilare le sezioni condizionali che appaiono in base ai ruoli selezionati.
  7. Premere Salva per confermare la registrazione.
Studio Medico / Naturopatico: per il profilo attività “Studio Medico / Naturopatico”, il ruolo Paziente e il tipo Persona Fisica vengono pre-selezionati automaticamente alla creazione di un nuovo soggetto.

Formattazione automatica dei campi

CampoFormatoEsempio
NomeTitle Case (prima lettera maiuscola)mario → Mario
CognomeTitle CaseDE LUCA → De Luca
Codice FiscaleSempre MAIUSCOLOrssmrc80a01f205t → RSSMRC80A01F205T
EmailSempre minuscolo, validazione emailMario@Email.IT → mario@email.it
PECSempre minuscolo, validazione emailStudio@PEC.IT → studio@pec.it
Luogo di NascitaTitle CasePESCARA → Pescara
LocalitàTitle Casesan giovanni teatino → San Giovanni Teatino

La formattazione viene applicata automaticamente al salvataggio. I campi visualizzano il formato corretto anche durante la digitazione.

Codice Fiscale — Calcolo e inserimento manuale

  • Il sistema calcola automaticamente il codice fiscale quando sono compilati Nome, Cognome, Data di Nascita, Sesso e Luogo di Nascita.
  • Il pulsante refresh accanto al campo CF ricalcola il codice in qualsiasi momento.
  • Se si inserisce il CF manualmente, il ricalcolo automatico si blocca e l'icona cambia in lucchetto (arancione). Il CF manuale viene preservato.
  • Per sbloccare il ricalcolo automatico, premere il lucchetto.

Codice Fiscale e Partita IVA per società — Auto-fill

Per i tipi Persona Giuridica, Ditta Individuale, Professionista, Ente Pubblico, NOX riconosce due formati per il Codice Fiscale:

  • 16 caratteri alfanumerici (CF persona fisica/professionista, schema AAAAAA00A00A000A): validazione con carattere di controllo (CIN).
  • 11 cifre numeriche (CF società coincidente con Partita IVA): validazione con check digit Luhn modulo 10 (D.M. 23/12/1976).

Sotto il campo CF, una etichetta dinamica colorata mostra in tempo reale il tipo riconosciuto:

  • 👤 Persona fisica — verde, formato 16 caratteri valido.
  • 🏢 Società / Partita IVA — blu, formato 11 cifre valido.
  • In digitazione — giallo, mostra quanti caratteri/cifre mancano.
  • Formato non riconosciuto — rosso.

Auto-compilazione bidirezionale CF ↔ P.IVA: nella maggioranza dei casi (~80%) per le società il Codice Fiscale coincide con la Partita IVA (entrambi 11 cifre identiche). NOX semplifica la digitazione:

  • Inserendo la P.IVA per primo, se il campo CF è vuoto, il CF viene pre-compilato con lo stesso valore (debounce 250 ms).
  • Inserendo il CF a 11 cifre per primo, se il campo P.IVA è vuoto, la P.IVA viene pre-compilata con lo stesso valore.
  • L'auto-fill non sovrascrive mai un campo già valorizzato: l'utente può sempre digitare valori diversi.

Casi in cui CF e P.IVA sono diversi (ammessi ma rari):

  • Enti non commerciali con attività commerciale mista: associazioni, fondazioni, comitati con CF dell'ente e P.IVA distinta per la sola attività soggetta a IVA.
  • Società dopo cambio forma giuridica: il CF mantiene il numero originario mentre la P.IVA può essere riassegnata.

In questi casi, quando entrambi i campi sono compilati con valori differenti, NOX mostra un avviso giallo informativo «Attenzione: Codice Fiscale e Partita IVA risultano differenti — è il caso?». L'avviso non blocca il salvataggio, è solo un richiamo: se si tratta di un errore di battitura, l'utente può allineare i due valori; se invece la differenza è corretta, può ignorare l'avviso e salvare normalmente.

Tracciato XML SDI / FatturaPA: anche quando coincidono, NOX invia comunque entrambi i nodi separati nel tracciato (<CodiceFiscale> e <IdFiscaleIVA>) come previsto dalle specifiche tecniche del Sistema di Interscambio.

Autocomplete Luogo di Nascita e Località

  • Digitare almeno 2 caratteri per attivare la ricerca comuni.
  • Usare le frecce ↑↓ per navigare nella lista, Enter per selezionare, Esc per chiudere.
  • Alla selezione, il sistema compila automaticamente: provincia, CAP, regione e codice catastale (per il calcolo CF).
  • Dropdown robusto: la tendina filtrata dei comuni è ora in position:fixed e calcola dinamicamente la propria posizione tramite getBoundingClientRect() dell'input. Non può più essere «nascosta dentro il campo» o clippata da contenitori con overflow:hidden. Si riposiziona automaticamente anche quando l'utente scrolla la pagina o ridimensiona la finestra con il dropdown aperto.

Campi clinici (sezione Dati Clinici)

Per evidenziare i dati critici del paziente, i campi clinici hanno colori distintivi:

  • Allergie e Farmaci Assunti — label e testo in rosso grassetto per massima evidenza
  • Patologie — label e testo in verde grassetto

Campi obbligatori

CampoObbligatorioNote
Cognome / Ragione SocialeVisualizzato nell'header della scheda
NomeSì (persona fisica)
Codice FiscaleCalcolo automatico o inserimento manuale
Partita IVASe soggetto IVAControllo check-digit Luhn
IndirizzoRichiesto da Art. 21 DPR 633/72
Codice SDISe fatturazione elettronica7 caratteri alfanumerici
PECSe fatturazione elettronicaAlternativa al Codice SDI, sempre minuscolo
Il sistema esegue un controllo di duplicazione su codice fiscale e partita IVA. Se il soggetto esiste già, viene proposto il collegamento alla scheda esistente. L'autocomplete del browser è disabilitato su tutta la pagina per evitare suggerimenti indesiderati.
4Ricerca e modifica

La lista soggetti offre strumenti di ricerca avanzata:

  1. Utilizzare la barra di ricerca in alto per cercare per nome, ragione sociale, codice fiscale, partita IVA, cellulare, telefono, email, codice, località, categoria o tag.
  2. Applicare i filtri laterali per ruolo, stato (attivo/inattivo), comune o zona commerciale.
  3. Fare clic su una riga per aprire la scheda dettaglio del soggetto.
  4. Premere Modifica per abilitare la modifica dei campi. Le modifiche vengono tracciate nel log di audit.
  5. Premere Salva per confermare le modifiche.
La ricerca per numero di telefono/cellulare è tollerante ai formati: quando inserisci almeno 3 cifre, il sistema normalizza sia la query che i numeri memorizzati (rimuove spazi, trattini, prefissi +39). Esempio: cercando 3481234567 trovi anche i soggetti salvati come +39 348 123-4567.
La modifica di codice fiscale o partita IVA su soggetti con documenti fiscali emessi richiede autorizzazione di livello Amministratore, ai sensi della normativa sulla conservazione delle scritture contabili.

Barra azioni (footer scheda)

Il footer della scheda soggetto contiene i seguenti pulsanti:

PulsanteIconaAzioneVisibilità
SalvasaveSalva le modifiche al soggettoSempre
AnnullaundoScarta le modifiche e torna alla listaSempre
InformativaprintGenera e stampa l'informativa privacy in PDFSolo se salvato
DocumentidescriptionApre la lista Documenti filtrata per questo soggetto (fatture, DDT, ricette, preventivi, ecc.)Solo se salvato
CancelladeleteElimina il soggetto (con conferma)Solo se salvato
Il pulsante Documenti naviga a /documenti?soggettoId=ID mostrando tutti i documenti di qualsiasi tipo (fatture, DDT, ricette, preventivi, note di credito) associati al soggetto. I filtri anno e tipo nella lista documenti permettono di restringere ulteriormente la ricerca.
5Dati commerciali

La sezione Dati Commerciali appare quando il soggetto ha ruolo Cliente, Fornitore o Beneficiario. Contiene le condizioni economiche e di pagamento.

CampoDescrizione
Condizione di pagamentoTermini di pagamento predefiniti (es. 30 gg DFFM, RiBa 60 gg)
Banca d'appoggioIBAN e coordinate bancarie per bonifici e RiBa
Aliquota IVA predefinitaAliquota IVA applicata di default nei documenti
Fido concessoLimite di credito; il sistema blocca/segnala gli ordini che lo superano
Zona commercialeArea geografica per reportistica e assegnazione agenti
Categoria merceologicaClassificazione per analisi statistiche
6Configurazione agente

Visibile solo per soggetti con ruolo Agente. Definisce i parametri provvigionali e il portafoglio clienti.

CampoDescrizione
Tipo provvigionePercentuale sul fatturato, importo fisso per riga, o mista
% Provvigione basePercentuale provvigionale predefinita
MaturazioneAlla fatturazione, all'incasso o alla consegna
Zona di competenzaZone commerciali assegnate all'agente
Clienti assegnatiLista clienti nel portafoglio dell'agente
Ritenuta d'accontoAliquota ritenuta (tipicamente 23% sul 50% per agenti Enasarco)
Le provvigioni possono essere differenziate per categoria articolo o per singolo cliente tramite le tabelle provvigionali accessibili dalla scheda agente.
7Configurazione vettore

Visibile solo per soggetti con ruolo Vettore. Parametri per la gestione delle spedizioni e dei DDT.

CampoDescrizione
Codice vettoreIdentificativo univoco utilizzato nei DDT
Tipo trasportoMittente, destinatario, vettore, corriere espresso
TariffarioGriglia tariffaria per peso, volume o zona
Tracking URL patternTemplate URL per tracciamento spedizioni (es. https://track.corriere.it/{code})
Note spedizioneIstruzioni standard per il vettore
8Listino & Sconti

Disponibile per soggetti con ruolo Cliente o Fornitore. Permette di assegnare listini prezzi personalizzati e politiche di sconto.

  1. Nella scheda soggetto, aprire la tab Listino & Sconti.
  2. Selezionare il listino base da applicare al soggetto tra quelli configurati in anagrafica listini.
  3. Definire eventuali sconti incondizionati (percentuale fissa applicata a tutti gli articoli).
  4. Configurare sconti condizionati per categoria, famiglia articolo o singolo prodotto.
  5. Impostare eventuali prezzi netti personalizzati che sovrascrivono il listino base per specifici articoli.
  6. Salvare la configurazione. I prezzi verranno applicati automaticamente in fase di inserimento ordini e fatture.
La modifica di un listino base si riflette su tutti i soggetti a cui e assegnato. Per variazioni individuali, utilizzare i prezzi netti personalizzati.
9Opportunita CRM

Disponibile per soggetti con ruolo Cliente. Gestisce il ciclo di vita delle opportunita commerciali.

CampoDescrizione
Titolo opportunitaDescrizione sintetica dell'opportunita
Valore stimatoImporto previsto dell'opportunita in euro
Probabilita di chiusuraPercentuale stimata di successo
Fase pipelineContatto iniziale, Qualificazione, Proposta, Negoziazione, Chiuso (Vinto/Perso)
Data chiusura previstaScadenza stimata per la chiusura
Agente assegnatoAgente responsabile dell'opportunita
Note e attivitaStorico delle interazioni (chiamate, email, incontri)
Le opportunita alimentano la dashboard commerciale e il forecast di vendita. E possibile collegare piu opportunita allo stesso soggetto.
10Dati clinici

Visibile solo per soggetti con ruolo Paziente. Questa sezione contiene informazioni sanitarie protette dal GDPR e dal D.Lgs. 196/2003 (dati sensibili).

CampoDescrizione
Medico curanteRiferimento al medico di base
Patologie noteElenco delle patologie diagnosticate
AllergieAllergie a farmaci, alimenti o sostanze
Terapie in corsoFarmaci e posologia attuale
Gruppo sanguignoGruppo e fattore Rh
Storico prestazioniRegistro delle prestazioni sanitarie erogate
Consenso trattamento dati sanitariFlag e data di acquisizione del consenso esplicito
I dati clinici sono classificati come dati particolari (ex sensibili) ai sensi dell'art. 9 GDPR. L'accesso e riservato a utenti con profilo sanitario autorizzato. Il consenso esplicito del paziente e obbligatorio prima dell'inserimento.
11Statistiche commerciali

Per i soggetti con ruolo Cliente o Agente, la scheda presenta un pannello di statistiche commerciali calcolate in tempo reale:

IndicatoreDescrizione
Fatturato periodoTotale fatturato nel periodo selezionato
Fatturato anno precedenteConfronto con lo stesso periodo dell'anno precedente
Trend %Variazione percentuale anno su anno
DSO (Days Sales Outstanding)Giorni medi di incasso
Esposizione debitoriaTotale crediti aperti verso il soggetto
Top articoliArticoli piu acquistati per valore e quantita
Provvigioni maturate (agente)Totale provvigioni maturate nel periodo
Le statistiche possono essere esportate in formato Excel o PDF tramite il pulsante Esporta presente nel pannello.
12Sedi e contatti multipli

Ogni soggetto può avere più sedi (legale, operativa, depositi, punti vendita) e più contatti (referenti, uffici, reparti).

Sedi

  1. Nella scheda soggetto, aprire la tab Sedi.
  2. Premere + Nuova Sede e compilare: denominazione, indirizzo, CAP, città, provincia.
  3. Impostare il tipo sede: Legale, Operativa, Deposito, Punto vendita.
  4. Contrassegnare una sede come predefinita per fatturazione e/o predefinita per spedizione.
  5. La sede predefinita per fatturazione viene usata automaticamente nei documenti fiscali (Art. 21 DPR 633/72).
  6. La sede predefinita per spedizione viene usata come destinazione nei DDT.

Contatti

  1. Nella tab Contatti, premere + Nuovo Contatto.
  2. Compilare: nome, cognome, ruolo/qualifica, telefono, cellulare, email.
  3. Contrassegnare un contatto come referente principale per le comunicazioni.
Le sedi e i contatti sono accessibili anche in fase di creazione documento: il sistema propone automaticamente la sede/contatto predefinito ma consente di selezionarne uno diverso.
13Beneficiario / Tutore

Per i soggetti con ruolo Paziente o per minori/incapaci, è possibile associare un beneficiario o tutore legale che sarà l'intestatario dei documenti fiscali.

  1. Nella scheda soggetto (Paziente), attivare il flag Ha tutore/beneficiario.
  2. Compilare i dati del beneficiario: nome, cognome, data di nascita, luogo di nascita, codice fiscale.
  3. In alternativa, selezionare un soggetto esistente come tutore tramite la ricerca.
  4. Quando si crea un documento per questo paziente, il sistema propone automaticamente il tutore come intestatario della fattura.
CampoDescrizione
Nome beneficiarioNome del tutore/genitore/legale rappresentante
Cognome beneficiarioCognome del tutore
Data di nascitaData di nascita del tutore
Luogo di nascitaComune di nascita
Codice fiscaleCF del tutore (obbligatorio per fatturazione)
Per i minori, la fattura deve essere intestata al genitore/tutore ai sensi dell'art. 21 DPR 633/72. Il sistema gestisce automaticamente questa casistica quando il flag tutore è attivo.
14Integrazione con documenti

Il modulo Soggetti è strettamente integrato con il modulo Documenti. Quando si seleziona un soggetto in un documento, il sistema:

  1. Pre-compila i dati fiscali: denominazione, indirizzo, P.IVA, CF, codice SDI, PEC vengono inseriti automaticamente dalla scheda soggetto.
  2. Applica le condizioni commerciali: tipo pagamento, condizioni pagamento, listino prezzi, sconti vengono applicati automaticamente.
  3. Mostra la scheda cliente: sotto i dati del soggetto nel documento appare una barra con fatturato YTD, saldo dovuto, scadenze aperte, ultimi 5 documenti.
  4. Propone gli ultimi 10 clienti: quando si clicca sul campo soggetto senza digitare, appare un dropdown con i 10 clienti usati più di recente.
  5. Pre-compila l'agente: se il soggetto ha un agente di riferimento, viene assegnato automaticamente al documento con la provvigione predefinita.
  6. Gestisce il tutore: per pazienti con tutore, il sistema propone automaticamente l'intestatario corretto per la fattura.
  7. Applica la valuta: se il soggetto ha una valuta predefinita diversa da EUR, il documento viene convertito.
I dati del soggetto alimentano anche lo Scadenzario (scadenze per cliente), il CRM (opportunità per cliente) e la Dashboard (stat card fatturato/saldo).
15Import / Export soggetti

Il modulo Soggetti supporta l'importazione e l'esportazione massiva tramite il modulo Import / Export.

Esportazione

  1. Accedere a Impostazioni → Import / Export.
  2. Selezionare il modulo Anagrafica Soggetti.
  3. Premere Configura Campi per selezionare quali campi esportare, riordinarli e assegnare alias personalizzati.
  4. I campi disponibili vengono caricati direttamente dal database (80+ campi).
  5. Scegliere il formato (CSV o Excel) e il separatore.
  6. Premere Esporta. Il file viene scaricato con i campi selezionati.

Importazione

  1. Scaricare il Template vuoto con le intestazioni dei campi configurati.
  2. Compilare il file con i dati dei soggetti da importare.
  3. Caricare il file e premere Importa.
  4. Il sistema verifica i campi obbligatori (cognome/ragioneSociale), segnala duplicati e riporta il risultato (importati/errori).
Se si utilizzano alias personalizzati nelle intestazioni del file, il sistema li rimappa automaticamente ai nomi di campo del database. Salvare il profilo campi per riutilizzarlo nelle importazioni successive.
16Privacy e GDPR

Ogni scheda soggetto include una sezione dedicata alla gestione del consenso privacy ai sensi del Regolamento UE 2016/679 (GDPR) e del D.Lgs. 196/2003.

ConsensoDescrizioneBase giuridica
Trattamento dati personaliConsenso base per la gestione dei dati anagrafici e di contattoArt. 6.1.a GDPR
Comunicazioni commercialiConsenso per invio di newsletter, promozioni, offerteArt. 6.1.a GDPR
ProfilazioneConsenso per analisi delle abitudini di acquistoArt. 22 GDPR
Dati sanitariConsenso esplicito per il trattamento di dati particolari (sanitari)Art. 9.2.a GDPR
Cessione a terziConsenso per la comunicazione dei dati a soggetti terziArt. 6.1.a GDPR

Per ogni consenso il sistema registra:

  • Data di acquisizione — quando il consenso è stato raccolto
  • Canale — cartaceo, email, web, telefono, PEC
  • Flag attivo/revocato — stato corrente del consenso
  • Data di revoca — se il soggetto ha esercitato il diritto di revoca
La gestione centralizzata dei consensi è integrata con il modulo GDPR / Privacy Log (Documentale → GDPR) dove si possono consultare tutti i trattamenti, le richieste di diritti e gli eventuali data breach.
Il Garante per la protezione dei dati personali prevede sanzioni fino a 20 milioni di euro o il 4% del fatturato mondiale per violazioni del GDPR (art. 83 Reg. UE 2016/679). Assicurarsi che tutti i consensi siano acquisiti e documentati prima di procedere al trattamento.
17Novita Aprile 2026 (v2.1)

Aggiornamento funzionale del modulo Soggetti. Di seguito le novità introdotte.

Validazione formato e-mail su PEC e Email

I campi PEC ed Email della scheda soggetto ora validano il formato (pattern RFC 5322 semplificato). In caso di indirizzo malformato il campo viene evidenziato in rosso e il salvataggio chiede conferma.

Focus automatico su Telefono dopo selezione Localita

Dopo aver selezionato una Localita dal suggeritore (che compila automaticamente CAP e Provincia), il focus si sposta sul campo Telefono invece di tornare all'inizio del form. Flusso di digitazione più lineare.

Categorie predefinite

Sono disponibili nuove categorie soggetto preconfigurate:

  • Cliente
  • Fornitore
  • Paziente
  • Collaboratore
  • Dipendente
  • Professionista
  • Ente Pubblico
  • Associazione

Restano utilizzabili anche categorie personalizzate create dall'utente.

Fido Massimo in formato italiano

Il campo Fido Massimo utilizza ora il formato italiano con punto come separatore delle migliaia e virgola come decimale: 1.234,56. La digitazione accetta sia il punto che la virgola.

Navigazione CF con frecce

Quando il sistema propone di inserire un soggetto dopo la digitazione del codice fiscale, premendo la Freccia Giù dal campo CF si può navigare direttamente sui bottoni “Sì, inseriscilo” / “No, faccio io” senza usare il mouse.

Privacy auto-flag alla stampa Informativa

Alla stampa dell'Informativa Privacy dalla scheda soggetto, il campo flagInfoPrivacy viene impostato automaticamente a true. In questo modo il registro trattamenti riflette sempre lo stato reale della consegna dell'informativa.

Paginazione nel footer lista soggetti

La lista soggetti mostra in footer i controlli di paginazione con selettore righe per pagina (25 / 50 / 100 / 200).

Ordinamento per data modifica

La lista soggetti è ordinata di default per updatedAt decrescente: i soggetti modificati più di recente compaiono in cima.

18Novita Aprile 2026 (v2.2)

Aggiornamento strutturale del modulo Soggetti: validazione fiscale estesa, gestione dei soggetti esteri, tracciamento modifiche, statistiche automatiche, operazioni massive e cestino con soft-delete.

Validazione fiscale estesa e blocco duplicati

Al salvataggio il sistema verifica:

  • Codice Fiscale italiano: 16 caratteri alfanumerici con controllo del carattere di controllo (disp/pari) o 11 cifre con checksum P.IVA.
  • Partita IVA italiana: 11 cifre con algoritmo Luhn mod 10.
  • Duplicati: se esiste già un altro soggetto con lo stesso CF o P.IVA il salvataggio viene bloccato (errore 409) e il sistema indica l'id del soggetto già presente.

Gestione soggetti esteri

Per i soggetti non italiani il sistema non applica i controlli di formato/checksum italiani. L'attivazione del comportamento estero avviene in due modi:

  • Scegliendo il tipo 🌎 Soggetto Estero nella riga dei tipi in alto alla scheda.
  • Impostando il campo Paese con un codice diverso da IT (es. DE, FR, ES). Il campo è disponibile anche per i tipi Persona Fisica, Persona Giuridica, Professionista.

Quando il paese è estero, sotto i campi Codice Fiscale e Partita IVA viene mostrato il messaggio “🌎 Non verificabile per paese Estero” al posto degli errori di validazione italiani.

Audit log automatico delle modifiche

Ogni modifica alla scheda soggetto viene registrata nella tabella log_modifiche_soggetti, con valore precedente, valore nuovo, utente e data/ora. I campi tracciati sono 25, fra cui CF, P.IVA, ragione sociale, indirizzo, contatti, stato, flag privacy, agente di riferimento. La lista storica è accessibile via API GET /api/soggetti/:id/audit-log.

Statistiche automatiche del soggetto

I campi di riepilogo presenti sulla scheda soggetto sono ora aggiornati automaticamente ad ogni operazione sui documenti collegati (creazione, modifica, cambio stato, rinumerazione, duplicazione, cancellazione):

  • Fatturato anno corrente e anno precedente
  • Numero ordini complessivo
  • Data e importo dell'ultima fattura
  • Data ultimo ordine

È possibile forzare il ricalcolo globale con POST /api/soggetti/ricalcola-stats (utile dopo migrazioni o importazioni massive).

Timeline cronologica del soggetto

L'endpoint GET /api/soggetti/:id/timeline restituisce una vista aggregata degli eventi del soggetto: documenti emessi, attività CRM (appuntamenti, opportunità) e scadenze aperte, ordinate per data decrescente. Utile per ricostruire lo storico del rapporto commerciale o clinico.

Selezione multipla e azioni massive

Nella lista soggetti è disponibile una colonna di checkbox per la selezione multipla:

  • Checkbox nell'intestazione di colonna: seleziona/deseleziona tutti i soggetti della pagina visibile.
  • Checkbox per ogni riga: selezione singola; cliccare sul checkbox non apre la scheda del soggetto.
  • Quando almeno un soggetto è selezionato compare una barra azioni blu in fondo alla lista con le operazioni disponibili.

Azioni disponibili:

  • Attiva / Sospendi / Blocca: cambio massivo dello stato.
  • Categoria…: assegnazione in blocco di una categoria (vuoto per rimuoverla).
  • Privacy ON / OFF: imposta in blocco il flag informativa privacy.
  • Elimina: sposta i soggetti nel cestino (soft-delete, reversibile).

Cestino e soft-delete

L'eliminazione di un soggetto (singola o massiva) è ora una cancellazione logica: il soggetto scompare dalla lista ma resta nel database con le colonne cancellatoIl e cancellatoDa valorizzate. I documenti collegati non vengono toccati.

  • Pulsante 🗑 Cestino nel footer della lista: entra in modalità cestino e mostra solo i soggetti cancellati.
  • Per ogni riga del cestino sono disponibili due azioni:
    • ↺ Ripristina: annulla la cancellazione, il soggetto torna nella lista attiva.
    • ✗ Definitivo: eliminazione fisica irreversibile. Blocca se il soggetto ha documenti collegati. Disponibile solo per utenti ADMIN o SUPERADMIN.
  • In modalità cestino il clic sulla riga non apre la scheda di modifica (il soggetto è cancellato); vengono mostrati data e autore della cancellazione.

Controllo accessi granulare

L'accesso ai moduli è ora governato dalla configurazione menuConfig di ciascun utente. Un utente con ruolo USER può accedere ai moduli abilitati nel proprio profilo (Soggetti, Documenti, Catalogo, …), mentre operazioni distruttive o amministrative (cancellazione definitiva, parametri, gestione utenti, piano dei conti) restano riservate ai ruoli ADMIN e SUPERADMIN.

?Domande frequenti (FAQ)
Come posso assegnare piu ruoli allo stesso soggetto?
Nella scheda del soggetto, sezione Ruoli, e sufficiente attivare le checkbox corrispondenti ai ruoli desiderati. Le sezioni condizionali appariranno automaticamente. Non e necessario creare schede separate.
Cosa succede se elimino un ruolo da un soggetto?
Le sezioni condizionali vengono nascoste, ma i dati storici (documenti, provvigioni, spedizioni) restano nel database e sono consultabili dalla reportistica. La riattivazione del ruolo ripristina la visibilita delle sezioni.
Come gestisco un soggetto con piu indirizzi di spedizione?
Nella tab Indirizzi della scheda soggetto e possibile aggiungere piu sedi (sede legale, sede operativa, depositi). Ogni indirizzo puo essere contrassegnato come predefinito per fatturazione o per spedizione.
Il sistema verifica automaticamente la partita IVA?
Si, il sistema esegue la validazione formale del check-digit. Per le partite IVA comunitarie e disponibile il controllo VIES tramite il pulsante Verifica VIES nella sezione dati fiscali.
Come posso gestire il consenso GDPR del soggetto?
Nella sezione Privacy della scheda soggetto sono presenti i flag per i diversi tipi di consenso (trattamento dati, marketing, profilazione, dati sanitari). Ogni consenso registra data e modalita di acquisizione. E possibile generare l'informativa privacy in PDF.
Posso importare soggetti da un file esterno?
Si, tramite la funzione Importa (pulsante in alto a destra nella lista soggetti) e possibile caricare un file CSV o Excel. Il sistema propone la mappatura dei campi e segnala eventuali duplicati prima dell'importazione definitiva.
Come funziona il reverse nome nell'header?
Per le persone fisiche, l'header della scheda visualizza il nome nel formato COGNOME Nome (es. ROSSI Mario) per uniformita con gli elenchi e facilitare la ricerca alfabetica. Il formato di visualizzazione nei documenti fiscali resta invece Nome Cognome.
Ho eliminato un soggetto per errore. Posso recuperarlo?
Si. L'eliminazione dalla lista o dall'azione massiva è un soft-delete: il soggetto finisce nel cestino. Dalla lista soggetti premere il pulsante “🗑 Cestino” in footer, individuare il soggetto e premere “↺ Ripristina”. Il soggetto torna attivo con tutti i dati originali e i collegamenti ai documenti intatti.
Come registro un cliente o paziente straniero?
Impostare il campo Paese con il codice ISO a 2 lettere del paese (es. DE, FR, ES). Il sistema disattiva automaticamente il controllo di validità italiana su Codice Fiscale e Partita IVA e mostra il messaggio “Non verificabile per paese Estero” al posto degli errori. In alternativa, per persone o aziende chiaramente estere, selezionare il tipo “🌎 Soggetto Estero”.
Cosa succede se elimino definitivamente dal cestino?
L'operazione “✗ Definitivo” rimuove fisicamente il soggetto dal database ed è irreversibile. Il sistema la blocca se il soggetto ha documenti collegati: in tal caso bisogna prima eliminare o riassegnare i documenti. La funzione è disponibile solo agli utenti con ruolo ADMIN o SUPERADMIN.
I campi “fatturato anno corrente” e “numero ordini” sono aggiornati in tempo reale?
Si. Ad ogni creazione, modifica, cambio stato o eliminazione di un documento collegato al soggetto, il sistema aggiorna automaticamente i campi denormalizzati sulla scheda: fatturato anno corrente, anno precedente, numero ordini, data e importo dell'ultima fattura. Non è più necessario lanciare un ricalcolo manuale; resta comunque disponibile l'endpoint di ricalcolo globale per migrazioni o importazioni massive.
Come posso cambiare lo stato di 50 soggetti in un colpo solo?
Nella lista soggetti spuntare le caselle dei soggetti da aggiornare (o usare il checkbox in testata per selezionare tutti i visibili). Comparirà una barra blu in fondo alla pagina con le azioni massive: Attiva, Sospendi, Blocca, Categoria…, Privacy ON/OFF, Elimina. L'azione scelta viene applicata a tutti i soggetti selezionati in una sola operazione.
Certificazione v 2.2 — Presidi di compliance
🔑 Visibilità condizionata (certificazione v 2.2) — Questo modulo è accessibile solo se:
Pacchetto BASE attivo sul workspace (configurabile da SUPERADMIN in /admin/pacchetti)
Profilo attività compatibile: Tutti i profili
Permesso utente abilitato in Modifica Utente → Moduli
I tre livelli si applicano in intersezione. Dettagli completi in Gerarchia Pacchetti+Profilo+Utente.

A partire dalla versione 2.2, il modulo Soggetti adotta lo standard di certificazione NOX con i seguenti presidi:

Cestino e soft-delete

Gli elementi cancellati non vengono rimossi fisicamente ma spostati in un cestino interno (campi cancellatoIl / cancellatoDa). Dalla toolbar il pulsante Cestino alterna tra vista attivi e vista cestino. Dal cestino è possibile:

  • Ripristinare l'elemento (riportarlo nella lista attiva) — operazione riservata ad amministratori.
  • Eliminare definitivamente con motivazione obbligatoria — azione irreversibile, riservata ad amministratori, tracciata nell'audit log.

Azioni massive (bulk)

È possibile selezionare più elementi con le checkbox della prima colonna. Appare una barra inferiore con le azioni disponibili: Attiva, Disattiva, Soft-delete. Validazione CF/P.IVA lato server. La risposta indica N operazioni riuscite / M fallite; i dettagli delle fallite compaiono nella console browser (F12).

Storico modifiche (audit log)

L'icona history nelle azioni di riga apre un modal con la storia completa delle modifiche: data, campo, valore precedente, valore nuovo, operatore, eventuale motivazione. I record di audit non sono modificabili né eliminabili via UI. Conservazione: indefinita (art. 2220 c.c. — 10 anni minimo).

Mascheramento dati sensibili (GDPR art. 32)

Se i campi modificati contengono dati sensibili (IBAN, Codice Fiscale, Partita IVA, password/token), l'audit log salva il valore mascherato anziché in chiaro:

CampoEsempio originaleNel log
IBANIT60X0542811101000000123456IT60****3456
Codice Fiscale (PF)RSSMRA80A01H501ZRSSMRA****501Z
Partita IVA12345678901123****901
Password / token(qualsiasi)***REDACTED***

Timeline aggregata

Per ciascun elemento è disponibile una vista Timeline che aggrega in ordine cronologico audit, eventi del ciclo di vita ed eventuali entità collegate (es. documenti, movimenti, storni).

RBAC uniforme

Tutte le azioni distruttive o massive (soft-delete, ripristino, eliminazione definitiva, bulk, storno) richiedono il ruolo ADMIN o superiore. Gli operatori possono continuare a creare / modificare / consultare secondo le proprie abilitazioni.

Il DOCX di certificazione formale per questo modulo è disponibile: certificazione-soggetti.docx (cartella manuali).

Split payment PA — isPA + codiceIpa (v 2.2, aprile 2026)

In linea con il pacchetto FATTURAZIONE v 2.2 (feature #4) ogni soggetto dispone di due nuovi campi:

  • isPA (boolean) — marca il soggetto come Pubblica Amministrazione
  • codiceIpa (VARCHAR 20) — codice univoco Ufficio IPA (Indice PA), formato tipico UFXXXX

Quando si emette una fattura verso un soggetto con isPA=true, l'esigibilità IVA deve essere impostata a S (scissione dei pagamenti, art. 17-ter DPR 633/72): l'IVA non viene più incassata dal fornitore ma versata direttamente dalla PA all'Erario.

Endpoint dedicati:

  • PATCH /api/fatturazione/soggetto/:id/is-pa body {isPA:true, codiceIpa:"UFABCD"}
  • GET /api/fatturazione/soggetti-pa — elenco enti PA attivi (escludi cestino)

Aliquota provvigione default (v 2.2, aprile 2026)

Nuovo campo aliquotaProvvigioneDefault (NUMERIC 5,2) sul soggetto agente. Viene usata dal calcolo automatico delle provvigioni (feature #10) quando non è specificata un'aliquota esplicita al momento della creazione della provvigione.

Professionista: rivalsa INPS + cassa previdenziale default (v 2.2 wave 7)

Per i soggetti professionisti il sistema ora conserva la configurazione previdenziale di riferimento, applicata automaticamente a tutte le fatture emesse verso/da quel soggetto:

  • tipoProfessionista (VARCHAR 20) — valori: INPS_GS (Gestione Separata), CNPADC (Dottori Commercialisti), ENPAP (Psicologi), ENPAM (Medici), ENPAV (Veterinari), EPAP (pluricategoriale attuari/chimici/agronomi/geologi)
  • aliquotaRivalsaInpsDefault (NUMERIC 5,2) — % rivalsa INPS addebitata in fattura (max 4% per gest. separata art. 1 c.212 L. 662/1996)
  • cassaPrevidenzaDefault (VARCHAR 20) — codice categoria cassa (TC01..TC22, FK logica a categorie_cassa_previdenza)

Quando si emette una fattura verso un soggetto professionista, questi campi forniscono i valori preimpostati al modulo documento. L'operatore può sempre fare override in fattura. Il calcolo di rivalsa, cassa e relativo impatto su base IVA è documentato in dettaglio nel manuale di Contabilità (§ Cassa previdenziale TC01..TC22).

La rivalsa INPS e la cassa previdenziale hanno trattamento fiscale diverso: la cassa previdenziale (TC01-TC20) concorre alla base IVA, mentre la rivalsa INPS 4% (TC21) e la ENASARCO (TC07) non vi concorrono. Il sistema applica la regola automaticamente in base alla categoria scelta.

📊 Aggiornamenti

Pulsante "Ricette" nel footer scheda Paziente

Aprendo la scheda di un soggetto con flag Paziente attivo, nel footer compare un nuovo pulsante verde "Ricette" (icona medical_services) accanto a "Informativa" e "Documenti". Click → apre la lista documenti già filtrata per quel paziente e tipologia RIC. Il pulsante non compare se la spunta "Paziente" non è attiva o se il soggetto non è ancora stato salvato.

Ricerca soggetti più veloce (server-side)

Il filtro di ricerca nella lista soggetti adesso lavora direttamente sul database invece che sulla cache locale del browser. Risultato: ricerca istantanea anche con anagrafiche di migliaia di nominativi, nessuna attesa percepibile alla prima apertura. Il backend supporta:

I filtri restano salvati in localStorage come prima.

Badge minorenne 🧒

Nella tabella anagrafica, i soggetti con data di nascita valorizzata e età inferiore a 18 anni mostrano una piccola icona 🧒 prima del nome, con tooltip "Minorenne — N anni". Il calcolo dell'età compensa correttamente chi non ha ancora compiuto gli anni nell'anno corrente. L'icona non appare per ditte/enti (no data di nascita) né per maggiorenni.

!Condizioni di Pagamento (campo unico)

Sulla scheda soggetto c'è un unico campo per il pagamento: «Condizioni di Pagamento». La singola Condizione include già al suo interno:

  • Modalità SDI (codici MP01-MP23) — come si pagano i soldi (contanti, bonifico, RIBA, POS, ecc.)
  • Tempistica (codici TP01-TP03) — quando e in quante volte (pagamento completo, a rate 30/60/90 gg, anticipo)
  • Flag operativi — richiede IBAN, richiede riferimento, è pagamento immediato (bollo), è addebito diretto, applica sconto pagamento anticipato, ecc.
💡 Storicamente la scheda soggetto aveva due campi separati (Metodo + Condizioni) ma erano ridondanti perché ogni Condizione include già il suo Metodo SDI. Dal 5 maggio 2026 il campo Metodo è stato rimosso dalla UI per evitare incoerenze (potevi configurare es. Metodo=Contanti + Condizioni=RIBA 30gg che non ha senso). Il campo DB tipoPagamentoId resta per back-compat ma non è più modificabile dall'utente.

Configurare le Condizioni di Pagamento

Per definire o modificare le Condizioni vai in Tabelle > Condizioni Pagamento (sidebar Amministrazione). Per ogni Condizione configurabile:

  • Codice (es. TP01-30GG) e descrizione breve/completa
  • Modalità pagamento SDI: dropdown con MP01-MP23, viene scritta nel XML FatturaPA
  • Flag operativi: richiede IBAN, richiede riferimento, pagamento immediato (bollo), addebito diretto, sconto pagamento anticipato
  • Parametri: numero rate, giorni scadenza, fine mese sì/no, ecc. (JSON)

Esempi di Condizioni tipiche

CodiceDescrizioneMP inclusoTipico uso
RIMRimessa Diretta (pagamento completo, alla consegna)MP01 ContantiNegozio retail, bar/tabaccheria
BONBonifico bancario al saldoMP05 BonificoB2B classico, una sola scadenza
BON-30Bonifico 30 gg fine meseMP05 BonificoB2B con dilazione mensile
RIBA-30/60/90RIBA 30/60/90 gg fine meseMP12 RIBAB2B con dilazione 3 rate
SDDAddebito diretto SEPA (RID)MP19 SDDAbbonamenti, utenze, canoni mensili
POSPOS / Bancomat al saldoMP08 POSStudio medico, salone, retail con POS

Cosa appare nella scheda soggetto

Una sola dropdown «Condizioni di Pagamento» con label arricchita: per ogni voce vedi codice — descrizione — modalità SDI (es. «RIBA-30/60/90 — RIBA 30/60/90 gg — MP12 RIBA»). Sotto la dropdown un'etichetta blu mostra la modalità SDI associata alla condizione scelta. Se la Condizione non ha una modalità configurata appare un avviso giallo per ricordarti di completarla in Tabelle > Condizioni Pagamento.