Modulo Listini & Sconti
Gestione listini prezzi, scaglioni volume, politiche di sconto e assegnazione a soggetti
Riferimenti normativi
- Artt. 1341-1342 Codice Civile — Condizioni generali di contratto: disciplinano l'efficacia delle condizioni generali predisposte da uno dei contraenti, incluse le clausole relative a prezzi, sconti e listini. Le condizioni di vendita applicate tramite listino devono essere conosciute o conoscibili dal cliente al momento della conclusione del contratto. Le clausole vessatorie (limitazioni di responsabilita, penali, decadenze) devono essere specificamente approvate per iscritto.
- Art. 2 D.Lgs. 114/1998 — Disciplina del commercio (prezzi al pubblico): stabilisce le definizioni e i principi relativi all'attivita commerciale, inclusa l'indicazione dei prezzi al pubblico. I listini devono riportare i prezzi in modo chiaro, visibile e inequivocabile, comprensivi di IVA quando destinati al consumatore finale. Le variazioni di prezzo e le promozioni devono rispettare le regole di trasparenza previste dalla normativa.
- Art. 15 DPR 633/72 — Sconti, abbuoni e ribassi in fattura: disciplina il trattamento IVA degli sconti e degli abbuoni. Gli sconti incondizionati (applicati direttamente in fattura) riducono la base imponibile IVA. Gli sconti condizionati (subordinati a eventi futuri, come il raggiungimento di volumi o il pagamento anticipato) non riducono la base imponibile al momento dell'emissione e richiedono l'emissione di nota di credito al verificarsi della condizione.
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.
Per creare, modificare o eliminare un listino prezzi:
- Accedere al menu Vendite → Listini & Sconti → Listini e premere + Nuovo Listino.
- Compilare i campi di testata del listino (v. tabella sotto).
- Inserire le voci di listino con prezzi, aliquote IVA e scaglioni (v. sezione 3).
- Premere Salva per confermare. Il listino sara disponibile per l'assegnazione ai soggetti.
- Per modificare, aprire il listino dalla lista e premere Modifica. Per eliminare, premere Elimina (solo se non assegnato a nessun soggetto).
| Campo | Obbligatorio | Descrizione |
|---|---|---|
| Codice listino | Si | Identificativo univoco alfanumerico (es. LST-001, PROMO-2026) |
| Nome listino | Si | Descrizione leggibile (es. “Listino Base”, “Listino Ingrosso”) |
| Valuta | Si | Valuta di riferimento (EUR predefinita). Supporto multi-valuta |
| Priorita | Si | Valore numerico: priorita piu alta prevale in caso di conflitto (1 = massima) |
| Data inizio validita | Si | Data dalla quale il listino e attivo |
| Data fine validita | No | Data di scadenza. Se vuoto, il listino resta valido a tempo indeterminato |
| Stato | Si | Attivo / Sospeso / Scaduto (calcolato automaticamente dalle date) |
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 voce | Descrizione |
|---|---|
| Articolo | Riferimento all'articolo di catalogo (codice + descrizione) |
| Prezzo unitario | Prezzo base per l'unita di misura principale |
| Aliquota IVA | Aliquota IVA applicabile (es. 22%, 10%, 4%, esente) |
| Unita di misura | UM 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 QTA | A QTA | Prezzo unitario | Esempio |
|---|---|---|---|
| 1 | 9 | 10,00 € | Prezzo base |
| 10 | 49 | 9,00 € | Sconto 10% per quantita medie |
| 50 | 99 | 8,00 € | Sconto 20% per quantita elevate |
| 100 | ∞ | 7,00 € | Prezzo ingrosso |
I listini vengono assegnati secondo una gerarchia di priorita. Il sistema risolve il prezzo partendo dal livello piu specifico:
| Livello | Priorita | Descrizione |
|---|---|---|
| Soggetto | 1 (massima) | Listino assegnato direttamente al singolo soggetto dalla sua scheda anagrafica |
| Categoria commerciale | 2 | Listino associato alla categoria commerciale del soggetto (es. Grossista, Dettagliante, GDO) |
| Canale di vendita | 3 | Listino associato al canale (es. E-commerce, Negozio, Agente) |
| Predefinito (default) | 4 (minima) | Listino di base applicato quando nessun listino specifico e configurato |
- Per assegnare un listino a una categoria, accedere a Impostazioni → Categorie Commerciali, selezionare la categoria e impostare il campo Listino.
- Per assegnare un listino a un canale, accedere a Impostazioni → Canali di Vendita e configurare il listino per ciascun canale.
- Per impostare il listino predefinito, accedere a Impostazioni → Listini & Sconti → Configurazione e selezionare il listino default.
- Per l'assegnazione diretta al soggetto, v. sezione 9.
Le regole di sconto consentono di definire politiche commerciali flessibili che si applicano in aggiunta ai listini.
- Accedere a Vendite → Listini & Sconti → Sconti e premere + Nuova Regola Sconto.
- Assegnare un codice e una descrizione alla regola.
- Definire le condizioni di applicabilita (v. sezione 6).
- Specificare il valore dello sconto e il target dei beneficiari (v. sezione 7).
- Configurare il tipo di combinazione con altre regole (v. sezione 8).
- Impostare le date di validita e lo stato (Attivo / Sospeso).
- Premere Salva. La regola sara applicata automaticamente nei documenti che soddisfano le condizioni.
Ogni regola sconto puo avere una o piu condizioni che devono essere soddisfatte (in AND logico) per l'applicazione dello sconto:
| Tipo condizione | Codice | Descrizione | Esempio |
|---|---|---|---|
| Quantita minima | QTA_MIN | La quantita ordinata deve essere uguale o superiore al valore specificato | QTA_MIN = 50 pezzi |
| Importo minimo | IMPORTO_MIN | L'importo totale della riga o del documento deve superare la soglia | IMPORTO_MIN = 500,00 € |
| Tipo voce | TIPO_VOCE | Lo sconto si applica solo a specifiche categorie o famiglie di articoli | TIPO_VOCE = “Elettronica” |
| Intervallo date | DATA | Lo sconto e valido solo in un determinato periodo temporale | DATA = 01/03/2026 – 31/03/2026 |
| Canale di vendita | CANALE | Lo sconto si applica solo a ordini provenienti da un canale specifico | CANALE = “E-commerce” |
| Pagamento anticipato | PAG_ANTICIPATO | Lo sconto si applica se il pagamento avviene entro un termine ridotto | PAG_ANTICIPATO = entro 10 gg |
| Prima fornitura | PRIMA_FORN | Lo sconto si applica solo al primo ordine del soggetto | PRIMA_FORN = true |
Tipi di valore sconto
| Tipo valore | Codice | Descrizione | Esempio |
|---|---|---|---|
| Percentuale | PERCENTUALE | Riduzione percentuale sul prezzo di listino | -15% sul prezzo unitario |
| Importo fisso | IMPORTO_FISSO | Riduzione di un importo fisso per unita o per riga | -2,00 € per pezzo |
| Prezzo netto | PREZZO_NETTO | Sostituzione del prezzo di listino con un prezzo fisso concordato | Prezzo netto = 8,50 € |
| Omaggio | OMAGGIO | Fornitura gratuita di unita aggiuntive (es. 3+1, 10+2) | Ogni 10 pezzi, 1 omaggio |
Target beneficiari
| Target | Codice | Descrizione |
|---|---|---|
| Tutti i soggetti | TUTTI | La regola si applica a qualsiasi soggetto (promozione universale) |
| Soggetto specifico | SOGGETTO | La regola si applica solo ai soggetti esplicitamente indicati |
| Categoria commerciale | CATEGORIA | La regola si applica a tutti i soggetti appartenenti alla categoria specificata |
| Gruppo soggetti | GRUPPO | La regola si applica a un gruppo personalizzato di soggetti |
Quando piu regole di sconto sono applicabili contemporaneamente, il sistema utilizza il tipo di combinazione definito per ciascuna regola:
| Tipo | Codice | Comportamento | Esempio |
|---|---|---|---|
| Cumulabile | CUMULABILE | Lo sconto si somma agli altri sconti applicabili. Tutti gli sconti cumulabili vengono applicati in sequenza | Sconto 10% (listino) + 5% (promo) = prezzo con entrambi gli sconti |
| Esclusivo | ESCLUSIVO | Se applicabile, questo sconto esclude tutti gli altri. Se piu sconti esclusivi sono applicabili, prevale quello con valore maggiore per il cliente | Sconto Black Friday 30% esclude ogni altro sconto |
| A cascata | CASCATA | Gli sconti vengono applicati in sequenza sul prezzo risultante dallo sconto precedente (sconto su sconto) | Prezzo 100 € → -10% = 90 € → -5% = 85,50 € |
Dalla scheda anagrafica di un soggetto con ruolo Cliente o Fornitore, la tab Listino & Sconti consente di configurare le politiche di prezzo specifiche.
- Aprire la scheda del soggetto e selezionare la tab Listino & Sconti.
- Nel campo Listino assegnato, selezionare il listino da applicare al soggetto. Questo sovrascrive la gerarchia categoria/canale/default.
- Nella sezione Sconti incondizionati, definire eventuali percentuali fisse applicate a tutti gli articoli del soggetto.
- Nella sezione Sconti condizionati, associare le regole sconto specifiche per il soggetto.
- Nella sezione Prezzi netti personalizzati, inserire eventuali prezzi fissi per singoli articoli che sovrascrivono il listino.
- Premere Salva per confermare la configurazione.
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:
- Identificazione del listino: il sistema cerca il listino applicabile seguendo la gerarchia Soggetto → Categoria → Canale → Default.
- Ricerca della voce: nel listino identificato, cerca la voce corrispondente all'articolo inserito.
- Selezione scaglione: in base alla quantita inserita, seleziona il prezzo unitario dello scaglione appropriato.
- Applicazione sconti: valuta tutte le regole sconto applicabili (per condizioni, target e combinazione) e calcola il prezzo finale.
- 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.
I listini possono essere esportati tramite Impostazioni → Import / Export → Listini Prezzi.
- Selezionare il modulo Listini Prezzi.
- L'export genera un file con le colonne: nome listino, codice prodotto, prezzo, data inizio, data fine, attivo.
- Premere Configura Campi per selezionare/riordinare i campi e assegnare alias personalizzati.
- L'export è disponibile in formato CSV o Excel.
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%
- Nella lista, spunta il checkbox accanto a “LST-2025”.
- Premi Duplica con variazione % nella barra azioni.
- Inserisci
3come percentuale e-2026come suffisso. - Il sistema crea un nuovo listino “LST-2025-2026” con tutti i prezzi aumentati del 3% e arrotondati al centesimo.
- Il nuovo listino ha il riferimento
listinoPadreIdal listino originale evariazionePerc = 3per audit futuro.
• 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:
| Campo | Esempio originale | Nel log |
|---|---|---|
| IBAN | IT60X0542811101000000123456 | IT60****3456 |
| Codice Fiscale (PF) | RSSMRA80A01H501Z | RSSMRA****501Z |
| Partita IVA | 12345678901 | 123****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.