Modulo Listini & Sconti

Gestione listini prezzi, scaglioni volume, politiche di sconto e assegnazione a soggetti

v 2.2 Manuale Utente

Riferimenti normativi

1Panoramica e logica del modulo

Il modulo Listini & Sconti consente di definire e gestire le politiche di prezzo dell'azienda. Ogni listino rappresenta un insieme di prezzi per gli articoli in catalogo, con la possibilita di differenziare i prezzi per scaglioni di quantita (volume tiers).

I listini vengono assegnati ai soggetti secondo una gerarchia di priorita: Soggetto specifico → Categoria commerciale → Canale di vendita → Listino predefinito. Il sistema risolve automaticamente il prezzo applicabile in fase di inserimento documenti.

Le regole di sconto si sovrappongono ai listini e permettono di definire condizioni (quantita minime, importi, date, tipologie), valori (percentuale, importo fisso, prezzo netto, omaggio) e target (tutti i soggetti, singolo soggetto, categoria, gruppo). Le regole possono essere combinate secondo logiche cumulative, esclusive o a cascata.

La separazione tra listino e sconti consente di mantenere un listino base stabile e gestire le variazioni commerciali esclusivamente tramite regole di sconto, semplificando la manutenzione dei prezzi.
2Gestione listini (CRUD)

Per creare, modificare o eliminare un listino prezzi:

  1. Accedere al menu Vendite → Listini & Sconti → Listini e premere + Nuovo Listino.
  2. Compilare i campi di testata del listino (v. tabella sotto).
  3. Inserire le voci di listino con prezzi, aliquote IVA e scaglioni (v. sezione 3).
  4. Premere Salva per confermare. Il listino sara disponibile per l'assegnazione ai soggetti.
  5. Per modificare, aprire il listino dalla lista e premere Modifica. Per eliminare, premere Elimina (solo se non assegnato a nessun soggetto).
CampoObbligatorioDescrizione
Codice listinoSiIdentificativo univoco alfanumerico (es. LST-001, PROMO-2026)
Nome listinoSiDescrizione leggibile (es. “Listino Base”, “Listino Ingrosso”)
ValutaSiValuta di riferimento (EUR predefinita). Supporto multi-valuta
PrioritaSiValore numerico: priorita piu alta prevale in caso di conflitto (1 = massima)
Data inizio validitaSiData dalla quale il listino e attivo
Data fine validitaNoData di scadenza. Se vuoto, il listino resta valido a tempo indeterminato
StatoSiAttivo / Sospeso / Scaduto (calcolato automaticamente dalle date)
La modifica dei prezzi di un listino attivo si riflette immediatamente su tutti i nuovi documenti. I documenti gia emessi mantengono i prezzi originali. Per variazioni stagionali, creare un nuovo listino con date di validita specifiche.
3Voci di listino e scaglioni

Ogni listino contiene una o piu voci, ciascuna associata a un articolo del catalogo. Per ogni voce e possibile definire scaglioni di quantita con prezzi differenziati.

Campo voceDescrizione
ArticoloRiferimento all'articolo di catalogo (codice + descrizione)
Prezzo unitarioPrezzo base per l'unita di misura principale
Aliquota IVAAliquota IVA applicabile (es. 22%, 10%, 4%, esente)
Unita di misuraUM di riferimento per il prezzo (PZ, KG, LT, MT, ecc.)

Scaglioni di quantita (volume tiers)

Per ogni voce di listino e possibile definire prezzi differenziati per fasce di quantita:

Da QTAA QTAPrezzo unitarioEsempio
1910,00 €Prezzo base
10499,00 €Sconto 10% per quantita medie
50998,00 €Sconto 20% per quantita elevate
1007,00 €Prezzo ingrosso
Gli scaglioni si applicano automaticamente in base alla quantita inserita nella riga del documento. Il sistema seleziona lo scaglione corrispondente e calcola il prezzo unitario appropriato.
4Assegnazione listini

I listini vengono assegnati secondo una gerarchia di priorita. Il sistema risolve il prezzo partendo dal livello piu specifico:

LivelloPrioritaDescrizione
Soggetto1 (massima)Listino assegnato direttamente al singolo soggetto dalla sua scheda anagrafica
Categoria commerciale2Listino associato alla categoria commerciale del soggetto (es. Grossista, Dettagliante, GDO)
Canale di vendita3Listino associato al canale (es. E-commerce, Negozio, Agente)
Predefinito (default)4 (minima)Listino di base applicato quando nessun listino specifico e configurato
  1. Per assegnare un listino a una categoria, accedere a Impostazioni → Categorie Commerciali, selezionare la categoria e impostare il campo Listino.
  2. Per assegnare un listino a un canale, accedere a Impostazioni → Canali di Vendita e configurare il listino per ciascun canale.
  3. Per impostare il listino predefinito, accedere a Impostazioni → Listini & Sconti → Configurazione e selezionare il listino default.
  4. Per l'assegnazione diretta al soggetto, v. sezione 9.
Se un soggetto ha un listino specifico assegnato, questo prevale sempre su categoria, canale e predefinito. Verificare le assegnazioni in caso di prezzi inattesi nei documenti.
5Gestione sconti (CRUD)

Le regole di sconto consentono di definire politiche commerciali flessibili che si applicano in aggiunta ai listini.

  1. Accedere a Vendite → Listini & Sconti → Sconti e premere + Nuova Regola Sconto.
  2. Assegnare un codice e una descrizione alla regola.
  3. Definire le condizioni di applicabilita (v. sezione 6).
  4. Specificare il valore dello sconto e il target dei beneficiari (v. sezione 7).
  5. Configurare il tipo di combinazione con altre regole (v. sezione 8).
  6. Impostare le date di validita e lo stato (Attivo / Sospeso).
  7. Premere Salva. La regola sara applicata automaticamente nei documenti che soddisfano le condizioni.
E possibile duplicare una regola sconto esistente tramite il pulsante Duplica per creare varianti con condizioni simili.
6Regole sconto: condizioni di applicabilita

Ogni regola sconto puo avere una o piu condizioni che devono essere soddisfatte (in AND logico) per l'applicazione dello sconto:

Tipo condizioneCodiceDescrizioneEsempio
Quantita minimaQTA_MINLa quantita ordinata deve essere uguale o superiore al valore specificatoQTA_MIN = 50 pezzi
Importo minimoIMPORTO_MINL'importo totale della riga o del documento deve superare la sogliaIMPORTO_MIN = 500,00 €
Tipo voceTIPO_VOCELo sconto si applica solo a specifiche categorie o famiglie di articoliTIPO_VOCE = “Elettronica”
Intervallo dateDATALo sconto e valido solo in un determinato periodo temporaleDATA = 01/03/2026 – 31/03/2026
Canale di venditaCANALELo sconto si applica solo a ordini provenienti da un canale specificoCANALE = “E-commerce”
Pagamento anticipatoPAG_ANTICIPATOLo sconto si applica se il pagamento avviene entro un termine ridottoPAG_ANTICIPATO = entro 10 gg
Prima fornituraPRIMA_FORNLo sconto si applica solo al primo ordine del soggettoPRIMA_FORN = true
Ai sensi dell'art. 15 DPR 633/72, gli sconti subordinati a condizioni future (es. PAG_ANTICIPATO, QTA_MIN su periodo cumulativo) sono sconti condizionati e non riducono la base imponibile al momento dell'emissione della fattura. Il sistema gestisce automaticamente l'emissione della nota di credito al verificarsi della condizione.
7Regole sconto: valori e target

Tipi di valore sconto

Tipo valoreCodiceDescrizioneEsempio
PercentualePERCENTUALERiduzione percentuale sul prezzo di listino-15% sul prezzo unitario
Importo fissoIMPORTO_FISSORiduzione di un importo fisso per unita o per riga-2,00 € per pezzo
Prezzo nettoPREZZO_NETTOSostituzione del prezzo di listino con un prezzo fisso concordatoPrezzo netto = 8,50 €
OmaggioOMAGGIOFornitura gratuita di unita aggiuntive (es. 3+1, 10+2)Ogni 10 pezzi, 1 omaggio

Target beneficiari

TargetCodiceDescrizione
Tutti i soggettiTUTTILa regola si applica a qualsiasi soggetto (promozione universale)
Soggetto specificoSOGGETTOLa regola si applica solo ai soggetti esplicitamente indicati
Categoria commercialeCATEGORIALa regola si applica a tutti i soggetti appartenenti alla categoria specificata
Gruppo soggettiGRUPPOLa regola si applica a un gruppo personalizzato di soggetti
E possibile combinare piu target nella stessa regola. Ad esempio, uno sconto puo essere riservato sia a una categoria commerciale sia a soggetti specifici non appartenenti a quella categoria.
8Combinazione sconti

Quando piu regole di sconto sono applicabili contemporaneamente, il sistema utilizza il tipo di combinazione definito per ciascuna regola:

TipoCodiceComportamentoEsempio
CumulabileCUMULABILELo sconto si somma agli altri sconti applicabili. Tutti gli sconti cumulabili vengono applicati in sequenzaSconto 10% (listino) + 5% (promo) = prezzo con entrambi gli sconti
EsclusivoESCLUSIVOSe applicabile, questo sconto esclude tutti gli altri. Se piu sconti esclusivi sono applicabili, prevale quello con valore maggiore per il clienteSconto Black Friday 30% esclude ogni altro sconto
A cascataCASCATAGli sconti vengono applicati in sequenza sul prezzo risultante dallo sconto precedente (sconto su sconto)Prezzo 100 € → -10% = 90 € → -5% = 85,50 €
Prestare attenzione alla configurazione degli sconti a cascata: l'ordine di applicazione incide sul risultato finale. Il sistema applica gli sconti a cascata in ordine di priorita (campo Priorita della regola).
9Assegnazione dal soggetto

Dalla scheda anagrafica di un soggetto con ruolo Cliente o Fornitore, la tab Listino & Sconti consente di configurare le politiche di prezzo specifiche.

  1. Aprire la scheda del soggetto e selezionare la tab Listino & Sconti.
  2. Nel campo Listino assegnato, selezionare il listino da applicare al soggetto. Questo sovrascrive la gerarchia categoria/canale/default.
  3. Nella sezione Sconti incondizionati, definire eventuali percentuali fisse applicate a tutti gli articoli del soggetto.
  4. Nella sezione Sconti condizionati, associare le regole sconto specifiche per il soggetto.
  5. Nella sezione Prezzi netti personalizzati, inserire eventuali prezzi fissi per singoli articoli che sovrascrivono il listino.
  6. Premere Salva per confermare la configurazione.
Dalla tab Listino & Sconti del soggetto e possibile visualizzare un'anteprima dei prezzi effettivi (listino + sconti) per verificare la correttezza della configurazione prima dell'utilizzo nei documenti.
10Integrazione documenti

Il modulo Listini & Sconti si integra con tutti i documenti commerciali (ordini, DDT, fatture). La tab Listino & Sconti nel documento mostra le politiche applicate.

Risoluzione automatica del prezzo

Quando si inserisce un articolo in una riga documento, il sistema esegue automaticamente:

  1. Identificazione del listino: il sistema cerca il listino applicabile seguendo la gerarchia Soggetto → Categoria → Canale → Default.
  2. Ricerca della voce: nel listino identificato, cerca la voce corrispondente all'articolo inserito.
  3. Selezione scaglione: in base alla quantita inserita, seleziona il prezzo unitario dello scaglione appropriato.
  4. Applicazione sconti: valuta tutte le regole sconto applicabili (per condizioni, target e combinazione) e calcola il prezzo finale.
  5. Calcolo IVA: applica l'aliquota IVA della voce di listino o quella predefinita del soggetto.

Ricalcolo manuale

Il pulsante Ricalcola prezzi nella toolbar del documento permette di rieseguire la risoluzione dei prezzi su tutte le righe, utile dopo la modifica di un listino o l'aggiunta di nuove regole sconto. Il ricalcolo aggiorna i prezzi unitari e gli sconti mantenendo le quantita invariate.

Ricalcolo automatico al cambio cliente

Quando durante la compilazione di un documento si cambia il cliente, il sistema rileva se il listino associato al nuovo soggetto è diverso da quello precedente e, se ci sono già righe con prezzi impostati, chiede conferma prima di sovrascriverle. Strategia safe by default:

  • Nuovo documento senza righe → ricalcolo silenzioso (nulla da perdere)
  • Righe già compilate → dialog di conferma con nuovo listino, numero di righe coinvolte e avviso sulla sovrascrittura di eventuali sconti manuali
  • Documento già definitivo (EMESSO/CONFERMATO/INVIATO/PAGATO/ARCHIVIATO) → i prezzi non vengono mai modificati automaticamente (sono storicizzati, il contratto con il cliente è chiuso)

Questo evita di perdere trattative commerciali a causa di un cambio cliente involontario o di correzione di intestazione su un documento già inviato.

Il ricalcolo sovrascrive eventuali prezzi modificati manualmente nelle righe del documento. I prezzi forzati manualmente vengono contrassegnati con un indicatore visivo e possono essere protetti dal ricalcolo tramite il flag Prezzo bloccato.
Nella riga del documento, un'icona informativa accanto al prezzo mostra il dettaglio della risoluzione: listino di provenienza, scaglione applicato e sconti calcolati.
11Import / Export listini

I listini possono essere esportati tramite Impostazioni → Import / Export → Listini Prezzi.

  1. Selezionare il modulo Listini Prezzi.
  2. L'export genera un file con le colonne: nome listino, codice prodotto, prezzo, data inizio, data fine, attivo.
  3. Premere Configura Campi per selezionare/riordinare i campi e assegnare alias personalizzati.
  4. L'export è disponibile in formato CSV o Excel.
L'import dei listini non è ancora implementato. Per caricare listini massivi, utilizzare la creazione manuale o contattare il supporto tecnico.
12Novita Aprile 2026 (v2.1) — Audit, Cestino, Bulk, Duplica con variazione

Aggiornamento strutturale del modulo Listini con operazioni massive, tracciamento variazioni di prezzo e soft-delete. Particolarmente utile per il lavoro commerciale: aggiornamenti listino annuali, simulazioni di variazione %, audit dei prezzi nel tempo.

Soft-delete + Cestino

L'eliminazione di un listino e ora una cancellazione logica: il listino viene nascosto dalle liste correnti ma resta nel database. I documenti storici che lo referenziano continuano a funzionare. Dal footer della lista Listini si apre il pulsante 🗑 Cestino che mostra i listini cancellati con:

  • ↺ Ripristina: il listino torna attivo.
  • ✗ Definitivo: eliminazione fisica irreversibile. Blocca se il listino ha ancora assegnazioni collegate.

Audit log variazioni prezzo

Ogni modifica alla testata del listino (nome, valuta, arrotondamento, priorita, validita, default) viene registrata nella tabella log_modifiche_listini. Ogni variazione di prezzo su una voce viene registrata nella tabella log_modifiche_voci_listino con prezzo vecchio, prezzo nuovo, utente e timestamp. Risponde alla domanda piu frequente del commerciale: “chi ha cambiato questo prezzo, quando e perche?”

Endpoint: GET /api/listini/:id/audit-log (testata) e GET /api/listini/:id/voci/:voceId/audit-log (singola riga).

Timeline listino

L'endpoint GET /api/listini/:id/timeline restituisce una vista aggregata: audit modifiche testata + audit variazioni prezzo di tutte le voci + assegnazioni ai soggetti, ordinati per data decrescente.

Operazioni massive su listini (selezione multipla)

Nella lista Listini e ora disponibile una colonna checkbox. Con una o piu righe selezionate compare una barra blu in fondo con le azioni:

  • Attiva / Disattiva in massa.
  • Priorita: imposta la stessa priorita su N listini.
  • Duplica con variazione %: crea listini derivati applicando una variazione percentuale a tutte le voci, con arrotondamento basato sul listino padre. Esempio: selezioni il listino “BASE-2025” e crei “BASE-2026” con +3%.
  • 🗑 Cestino: soft-delete in blocco.

Gestione voci del listino (nuovo componente UI)

Dalla lista Listini, nella colonna Azioni, il pulsante 📋 apre il modal di gestione voci. Per ciascuna voce sono disponibili:

  • Modifica prezzo inline (clic sulla cella prezzo).
  • Rimozione dal listino.
  • Selezione multipla con azioni:
    • % Variazione: applica +/-N% a tutti i prezzi selezionati (con arrotondamento automatico al passo del listino).
    • ≈ Arrotonda: arrotonda i prezzi a un multiplo scelto (es. 0,05 €).
    • = Imposta prezzo: imposta lo stesso prezzo su tutte le voci selezionate.
    • 🗑 Elimina: rimuove le voci selezionate.
  • + Aggiungi voce: seleziona una voce dal catalogo e imposta prezzo/UM/aliquota IVA (override).

Tutte le operazioni sulle voci sono tracciate nell'audit log.

Esempio pratico: listino 2026 da listino 2025 con +3%

  1. Nella lista, spunta il checkbox accanto a “LST-2025”.
  2. Premi Duplica con variazione % nella barra azioni.
  3. Inserisci 3 come percentuale e -2026 come suffisso.
  4. Il sistema crea un nuovo listino “LST-2025-2026” con tutti i prezzi aumentati del 3% e arrotondati al centesimo.
  5. Il nuovo listino ha il riferimento listinoPadreId al listino originale e variazionePerc = 3 per audit futuro.
?Domande frequenti (FAQ)
Un soggetto ha un prezzo diverso da quello che mi aspetto. Come verifico quale listino viene applicato?
Nella riga del documento, fare clic sull'icona informativa accanto al prezzo: il sistema mostra il dettaglio della risoluzione (listino, scaglione, sconti). In alternativa, dalla tab Listino & Sconti del soggetto, utilizzare la funzione Anteprima Prezzi per verificare la configurazione completa.
Qual e la differenza tra sconto incondizionato e condizionato ai fini IVA?
Lo sconto incondizionato (applicato direttamente in fattura senza subordinazione a eventi futuri) riduce la base imponibile IVA ai sensi dell'art. 15 DPR 633/72. Lo sconto condizionato (es. legato al raggiungimento di volumi futuri o al pagamento anticipato) non riduce la base imponibile al momento dell'emissione e richiede una nota di credito successiva. Il sistema gestisce automaticamente questa distinzione.
Posso avere piu listini attivi contemporaneamente per lo stesso soggetto?
Al soggetto viene assegnato un solo listino. Tuttavia, se un articolo non e presente nel listino del soggetto, il sistema risale la gerarchia (categoria, canale, default) per trovare il prezzo. Per gestire prezzi speciali su singoli articoli senza creare un listino dedicato, utilizzare i Prezzi Netti Personalizzati nella tab Listino & Sconti del soggetto.
Come gestisco una promozione temporanea valida per tutti i clienti?
Creare una regola sconto con target TUTTI, impostare la condizione DATA con l'intervallo della promozione, scegliere il tipo di valore (PERCENTUALE, IMPORTO_FISSO, ecc.) e la combinazione desiderata (tipicamente ESCLUSIVO per promozioni aggressive o CUMULABILE per promozioni aggiuntive). La regola si attivera e disattivera automaticamente in base alle date configurate.
Cosa succede se elimino un listino assegnato a dei soggetti?
Il sistema non consente l'eliminazione di un listino assegnato a uno o piu soggetti. E necessario prima riassegnare i soggetti a un listino alternativo oppure impostare lo stato del listino su Sospeso, che ne impedisce l'utilizzo nei nuovi documenti senza eliminare lo storico.
Certificazione v 2.2 — Presidi di compliance
🔑 Visibilità condizionata (certificazione v 2.2) — Questo modulo è accessibile solo se:
Pacchetto FATTURAZIONE attivo sul workspace (configurabile da SUPERADMIN in /admin/pacchetti)
Profilo attività compatibile: Tutti i profili con tariffari (escl. studi pure-services come Naturopatico e Associazione)
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 Listini 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. Voci listino con audit trail separato. 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-listini.docx (cartella manuali).