Questo sito è una demo a scopo dimostrativo: contenuti, dati aziendali e servizi non sono reali.
sitoanorma.it
Menu

Fonte unica dei dati aziendali

Perché i dati societari (P.IVA, REA, sede, email) vanno tenuti in un unico punto del codice e iniettati ovunque servano, invece di essere riscritti a mano in ogni pagina.

Prima ancora di sapere quali dati esporre, conviene decidere come tenerli nel codice. È una scelta di architettura banale che previene un’intera categoria di errori.

Il problema

I dati societari compaiono in più punti dello stesso sito: footer di ogni pagina, note legali, pagina contatti, informativa privacy, eventualmente i documenti d’ordine di un e-commerce.

Se sono scritti a mano in ognuno di questi punti, prima o poi divergono. Il caso tipico: l’azienda cambia sede, qualcuno aggiorna il footer e le note legali, ma la vecchia sede resta nella privacy policy. Il sito ora dichiara due sedi legali diverse, ed è un dato pubblicato in ottemperanza a un obbligo di legge.

Lo stesso vale per un cambio di ragione sociale, di PEC, di capitale sociale dopo un aumento, o per il passaggio a socio unico.

La regola

Un dato legale esiste in un solo punto del codice. Ovunque serva, viene iniettato da lì.

// config/azienda.ts: l'unico posto dove questi valori sono scritti
export const AZIENDA = {
  forma: "srl",
  ragioneSociale: "Acme S.r.l.",
  partitaIva: "01234567890",
  sedeLegale: "Via Roma 1, 20121 Milano (MI)",
  rea: "MI-1234567",
  capitaleSociale: "€ 10.000 i.v.",
  email: "info@acme.it",
  pec: "acme@pec.it",
};

E nei template, sempre per riferimento:

<p>P. IVA {AZIENDA.partitaIva}</p>

Se la partita IVA cambia, si aggiorna una riga e il sito resta coerente ovunque.

Dove tenere la fonte

Dipende da chi deve poterla modificare:

FonteQuando ha senso
File di configurazione nel repoSito gestito da sviluppatori, dati che cambiano di rado
CMS / databaseIl cliente deve poterli modificare da solo
Variabili d’ambienteStesso codice, dati diversi per ambiente o per cliente

Per la maggior parte dei siti vetrina il file di configurazione è la scelta più semplice e più robusta: sta nel version control, si vede chi l’ha cambiato e quando.

Renderlo difficile da sbagliare

Se il linguaggio lo permette, conviene tipizzare la struttura: i campi obbligatori diventano obbligatori davvero, e quelli che dipendono dalla forma giuridica restano opzionali in modo esplicito.

interface DatiAzienda {
  forma: "ditta-individuale" | "snc" | "sas" | "srl" | "srls" | "spa" | /* … */;
  ragioneSociale: string;
  partitaIva: string;
  sedeLegale: string;
  email: string;
  /** Solo società di capitali */
  capitaleSociale?: string;
  /** Solo se diverso dalla P.IVA */
  codiceFiscale?: string;
  rea?: string;
}

Così un dato dimenticato è un errore di compilazione, non una scoperta durante un controllo.

Una nota sulla verificabilità

Tenere i dati in un unico punto rende anche possibile testarli. Un test che verifica che il footer renderizzato contenga la partita IVA è banale da scrivere e protegge da regressioni:

test("il footer espone la partita IVA su ogni pagina", async () => {
  const html = await render("/");
  expect(html).toContain(AZIENDA.partitaIva);
});

È il tipo di controllo che vale la pena automatizzare, perché l’obbligo (P.IVA in homepage, art. 35 DPR 633/1972) è puntuale e la sua violazione è silenziosa: nessuno se ne accorge finché non arriva una contestazione.

Aggiornato il · Redatto con l'ausilio di strumenti AI e revisionato dalla redazione (come lavoriamo) · Versione Markdown