Modulo Listini & Sconti

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

v 2.2 Manuale Utente

Funzioni della procedura

Elenco completo di cosa fa il modulo Listini & Prezzi.

Listini e prezzi

  • Listini multipli con codice, valuta, priorità, validità e arrotondamento
  • Voci di listino con prezzo, unità di misura, IVA e prezzo IVA inclusa
  • Unità di misura multiple (collo, pallet) con fattore e prezzo PRO
  • Scaglioni di quantità (sconti a volume per fascia)
  • Modifica massiva prezzi: variazione %, arrotonda, arrotondamento psicologico (,99), imposta prezzo
  • Duplica listino con variazione percentuale

Assegnazione e risoluzione

  • Assegnazione per cliente, categoria, canale o predefinito
  • Motore di risoluzione prezzo per specificità e priorità
  • Date di validità per assegnazioni temporanee (promozioni)
  • Simulatore “Verifica prezzo”: quale prezzo si applica e perché
  • Ricerca incrementale di articoli e clienti

Funzioni professionali

  • Prezzo a ricarico (cost-plus) dal costo d'acquisto PRO
  • Listini d'acquisto fornitore multi-fornitore PRO
  • Condizioni per cliente (contratti quadro) PRO
  • Controllo marginalità con deroghe tracciate PRO
  • Multi-valuta con tassi di cambio (aggiornamento BCE) PRO
  • Prezzo per magazzino (prezzo base + prezzi per deposito) PRO
  • Categorie e canali del soggetto parametrizzabili PRO

Analisi e pricing

  • Controllo margini nei documenti: “perché questo prezzo” + blocco sotto soglia PRO
  • Workflow deroghe con coda di approvazione + sconto max per utente PRO
  • Analisi di marginalità per cliente, prodotto e periodo PRO
  • Vendite sotto soglia di margine in evidenza PRO
  • Prezzo suggerito da obiettivo di margine e storico PRO
  • Allerta erosione del margine PRO

Costi e margini

  • Colonna Margine in tempo reale sul costo effettivo
  • Allarme sotto-costo e sotto-margine minimo
  • Costo effettivo: fornitore preferito → migliore → catalogo
  • Import costi d'acquisto da listino fornitore (CSV)

Campagne e sconti

  • Campagne promozionali a tempo con rientro automatico
  • Regole di sconto: condizioni, valori, target
  • Promozioni a soglia sul totale (spesa ≥ X → sconto) PRO
  • Prendi N paga M (3x2, 3+1) su articolo o categoria PRO
  • Bundle multi-prodotto (A+B insieme → sconto) PRO
  • Combinazione sconti (cumulativi, esclusivi, a cascata)
  • Sconto catena anagrafica (es. 10+5+3)

Import/Export e governo

  • Import/Export prezzi in CSV (Excel) con anteprima differenze
  • Stampa listino in PDF per il cliente (senza costi né margini)
  • Integrazione documenti con storicizzazione del prezzo
  • Audit log delle variazioni e timeline del listino
  • Cestino con ripristino e operazioni massive
  • Permessi RBAC per la modifica dei listini

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.

Bozza e pubblicazione

Ogni listino ha uno stato di ciclo di vita: Bozza o Pubblicato. Un listino in Bozza si può preparare con comodo — aggiungere voci, correggere prezzi, definire scaglioni — senza che influisca sui prezzi: il motore di risoluzione lo ignora completamente finché non viene pubblicato. È lo strumento giusto per costruire, ad esempio, il “listino del prossimo anno” e attivarlo solo quando è pronto.

  • In fase di creazione si può spuntare “Salva come bozza”; per impostazione predefinita un nuovo listino nasce già pubblicato.
  • Nella lista, le bozze hanno un badge ✏️ Bozza e una riga tratteggiata; i filtri Pubblicati / Bozze permettono di isolarle.
  • Il pulsante 🚀 Pubblica rende il listino attivo nel motore prezzi; ✏️ lo riporta in bozza (sospendendolo). Ogni cambio di stato è tracciato nell'audit log.

Versioni e ripristino

Dalla gestione voci, il pulsante 🕐 Versioni apre lo storico del listino. Una versione è una fotografia completa dei prezzi (voci e scaglioni) in un dato momento; serve a tre cose:

  • Storico — con 📸 Salva versione attuale (etichetta facoltativa) congeli lo stato corrente prima di un intervento importante.
  • Prezzo in vigore a una data — indicando una data, il sistema mostra la versione salvata più recente entro quel giorno: così sai com'era il listino in passato, anche se nel frattempo i prezzi sono cambiati.
  • Ripristino (rollback) — il pulsante ↺ Ripristina riporta i prezzi a quelli di una versione precedente. Prima di sovrascrivere, il sistema salva automaticamente una versione di sicurezza dello stato attuale, così l'operazione è sempre reversibile.

Il sistema crea da sé una versione automatica prima delle operazioni più incisive — ricalcolo dai costi, import prezzi da CSV e operazioni massive sulle voci — in modo che ci sia sempre un punto di ritorno.

Aggiornamenti programmati

Il pulsante ⏰ Programmati permette di pianificare una variazione dei prezzi a una data futura, che il sistema applica da solo quel giorno. È la risposta al classico “dal 1° gennaio aumenta tutto del 3%”: non serve ricordarsi di farlo a mano.

  • Si sceglie la data, l'operazione (Variazione %, es. +3 o −5, oppure Arrotonda a uno step) ed eventualmente un'etichetta.
  • Ogni notte un controllo automatico applica gli aggiornamenti scaduti; prima di modificare i prezzi salva una versione di sicurezza del listino, quindi l'operazione è sempre reversibile.
  • Gli aggiornamenti in attesa si possono annullare; un amministratore può anche eseguirli subito con il pulsante «Ora». Lo stato (In attesa / Eseguito / Annullato) e l'esito restano visibili nell'elenco.
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. Aprire la pagina Listini e premere il pulsante Assegnazioni in alto a destra: si apre il pannello con tre blocchi.
  2. Per assegnare un listino a una categoria, nel blocco Per Categoria selezionare il listino accanto alla categoria desiderata (le categorie sono quelle usate nelle anagrafiche: Cliente, Fornitore, Grossista…).
  3. Per assegnare un listino a un canale, nel blocco Per Canale selezionare il listino accanto al canale (Retail, Web/E-commerce, Ingrosso, Agente).
  4. Per impostare il listino predefinito, usare il blocco Listino Predefinito: è quello applicato quando nessuna regola più specifica corrisponde. Ogni scelta è salvata immediatamente.
  5. Accanto a categorie e canali si possono impostare le date di validità (dal/al): l'assegnazione diventa temporanea — ideale per le promozioni — e si attiva/spegne da sola. Date vuote = sempre valida.
  6. Il pulsante Verifica prezzo simula la risoluzione: scelto cliente, articolo, quantità e data, mostra quale listino vince e perché (personale → categoria → canale → predefinito), con scaglione e IVA applicati.
  7. 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.
12Audit, 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 €).
    • ✨ Psicologico (prezzi civetta): porta i prezzi alla terminazione scelta — ,99 · ,95 · ,90 · ,50 · ,00 — scegliendo il valore più vicino al prezzo di partenza (es. 12,34 → 11,99; 250,00 → 249,99). Utile dopo un ricalcolo dai costi per rendere i prezzi commercialmente più efficaci.
    • = Imposta prezzo: imposta lo stesso prezzo su tutte le voci selezionate.
    • 🗑 Elimina: rimuove le voci selezionate.
  • + Aggiungi voce: la voce di catalogo si cerca con un campo a ricerca progressiva (digitando codice o descrizione, anche parole spezzate e in qualsiasi ordine, la lista si filtra mentre si scrive); poi si imposta prezzo/UM/aliquota IVA (override).

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

Colonna Margine e allarme sotto-costo

Nella tabella voci la colonna Margine mostra la percentuale di ricarico calcolata sul costo d'acquisto dell'articolo (campo del catalogo). Se il prezzo è IVA inclusa il costo viene scorporato prima del calcolo. Quando il prezzo di listino scende sotto il costo, la cella diventa rossa con l'icona ⚠ e il dettaglio nel tooltip. Se il costo non è censito in catalogo la colonna mostra “—”. Il margine compare anche nel simulatore Verifica prezzo.

Import / Export prezzi in CSV (Excel)

Nella barra della gestione voci:

  • ⬇ Esporta CSV: scarica le voci del listino (Codice, Descrizione, Prezzo, U.M., IVA, Attiva) in un file apribile direttamente con Excel italiano (separatore “;”, virgola decimale, accenti corretti).
  • ⬆ Importa CSV: ricarica un file — sia quello riesportato sia un semplice elenco codice;prezzo. Il sistema riconosce da solo separatore, intestazione e numeri (es. 1.234,56). Prima di modificare qualsiasi prezzo mostra l'anteprima delle differenze: quante voci da aggiornare (con la variazione ▲/▼), invariate, non presenti in catalogo, righe con errori. Le voci di catalogo non ancora nel listino vengono aggiunte solo se si spunta l'apposita casella; il comando non crea mai voci di catalogo nuove. Ogni modifica finisce nell'audit log.
  • 🖨 Stampa PDF: genera il listino prezzi in PDF, pronto da inviare al cliente o all'agente. È un documento commerciale: riporta solo i prezzi di vendita, mai costi né margini. In testata compaiono i dati dell'azienda (presi dai Parametri); la tabella elenca Codice, Descrizione, U.M., eventuale Deposito (se ci sono prezzi per magazzino), Prezzo, IVA% e Prezzo IVA inclusa, con gli scaglioni di quantità riportati sotto la riga. Di default vengono stampate solo le voci in vigore alla data odierna.
  • 🧾 PDF cliente (listino personalizzato): scelto un cliente, il PDF mostra per ogni articolo il prezzo che quel cliente ottiene davvero, calcolato dal motore prezzi — eventuale contratto, poi il listino a lui assegnato (per soggetto, categoria o canale) e gli scaglioni, già applicati. Una colonna “Prezzo da” indica l'origine di ciascun prezzo. Dove il cliente non ha un prezzo dedicato, viene mostrato il prezzo base del listino stampato.

Costi d'acquisto (listino fornitore)

Il pulsante € Costi d'acquisto in alto nella pagina Listini gestisce i costi d'acquisto del catalogo (quelli che alimentano i margini). Si esporta il CSV dei costi, lo si aggiorna dal listino del fornitore e lo si reimporta con la stessa anteprima differenze dell'import prezzi. Il match funziona per codice interno oppure per codice fornitore (se coincidono, prevale il codice interno). L'aggiornamento è tracciato nell'audit log del catalogo e i margini si ricalcolano di conseguenza.

Campagne promozionali a tempo

Dalla lista Listini, nella colonna Azioni, il pulsante 🎯 crea una campagna promozionale a partire dal listino. Si sceglie la variazione % (es. −10), il periodo dal/al (obbligatorio: una promo è per definizione a tempo) e i destinatari (tutti / una categoria / un canale). Il sistema genera un listino derivato PROMO-… con voci e scaglioni già scontati, priorità superiore al listino base e assegnazione limitata al periodo: nel periodo vince la promo, alla scadenza tornano da soli i prezzi normali, senza dover disattivare nulla.

Valuta del listino

La valuta scelta sul listino (EUR, USD, GBP, CHF) è ora operativa: il simulatore Verifica prezzo e la gestione voci mostrano i prezzi con il simbolo corretto. Sui listini in valuta diversa dall'euro il margine viene volutamente nascosto, perché il costo d'acquisto è espresso in euro e un confronto senza tasso di cambio sarebbe fuorviante.

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.
13Funzioni professionali (parità gestionali)

Prezzo a ricarico (cost-plus)

Invece di digitare i prezzi, il listino può calcolarli dal costo d'acquisto: prezzo = costo effettivo × (1 + ricarico%). Sul form del listino c'è il campo Ricarico % su costo (vuoto = prezzi manuali). Nella gestione voci il pulsante ⚙ Ricalcola da costi apre l'anteprima: per ogni voce mostra costo, fonte del costo, prezzo attuale e nuovo prezzo; il ricarico si può correggere riga per riga (la correzione resta come override della voce) prima di applicare. Quando cambiano i costi fornitore, si ripreme il pulsante e il listino si riallinea. Le voci senza costo non vengono toccate.

Listini d'acquisto fornitore

Il pulsante € Costi d'acquisto gestisce, per ogni articolo, più offerte di fornitori: prezzo, sconto %, codice articolo del fornitore, validità e flag ⭐ preferito. Il costo effettivo usato da margini e ricalcolo è quello del fornitore preferito; in mancanza, il netto più basso tra le offerte valide; in mancanza di offerte, il costo generico di catalogo. La fonte del costo è sempre indicata.

Condizioni per cliente (contratti quadro)

Il pulsante 🤝 Condizioni cliente registra i prezzi concordati con un singolo cliente: prezzo netto oppure sconto %, su un articolo, con periodo di validità, quantità minima e riferimento contratto. Nel motore prezzi vincono su tutto, anche sul listino personale: il prezzo netto è quello finale, lo sconto % si applica al prezzo di listino risolto. Essendo il motore lo stesso usato dai documenti, i contratti si applicano automaticamente in fattura/preventivo/ordine.

Controllo marginalità

Nel modale Costi d'acquisto si impostano le regole di margine valide per tutto l'ambiente: margine minimo %, blocco vendite sotto costo e sconto massimo %. Ogni modifica prezzi che le viola (modifica singola, bulk, import, ricalcolo, campagne, condizioni cliente) viene bloccata con l'elenco dettagliato delle violazioni. Un amministratore può forzare con deroga, che viene registrata nei log del server. Nella tabella voci il margine diventa arancione se sotto il minimo, rosso se sotto costo.

Multi-valuta con tassi di cambio

Nel modale Costi d'acquisto la sezione 💱 Tassi di cambio imposta quante unità di valuta valgono 1 € (USD, GBP, CHF), a mano oppure col pulsante ↻ Aggiorna da BCE (tassi ufficiali del giorno). Così il margine si calcola correttamente anche sui listini in valuta estera: il costo d'acquisto (in €) viene convertito nella valuta del listino. Senza tasso impostato, sui listini in quella valuta il margine resta prudentemente nascosto.

Prezzo per magazzino

Lo stesso articolo, nello stesso listino, può avere un prezzo diverso per deposito. Nella gestione voci del listino, il campo Magazzino permette di aggiungere accanto al prezzo Base (valido per tutti i magazzini) uno o più prezzi specifici per magazzino. La colonna Magazzino mostra “Base” o il deposito. Quando si emette un documento, il motore usa il prezzo del magazzino del documento se presente, altrimenti quello base; nel simulatore “Verifica prezzo” si può scegliere il magazzino e vedere quale prezzo viene applicato.

Storicizzazione del prezzo nei documenti

Quando un prezzo risolto entra in un documento (preventivo, ordine, DDT, fattura) viene copiato e bloccato sulla riga: riaprendo il documento il prezzo resta quello del momento dell'emissione, anche se il listino è stato modificato in seguito. Il ricalcolo dai listini avviene solo su richiesta esplicita (pulsante di ricalcolo o conferma al cambio del cliente).

14Categorie e canali del soggetto

Le categorie e i canali di vendita delle anagrafiche sono un elenco gestito e ampliabile, condiviso tra le anagrafiche e i listini.

Dal pannello Assegnazioni dei Listini, il pulsante ⚙ Gestisci categorie e canali apre l'elenco dove si può:

  • Aggiungere una nuova categoria o un nuovo canale;
  • Rinominare (il codice interno resta invariato: le anagrafiche già classificate non si toccano), attivare/disattivare ed eliminare;
  • impostare la spunta “Usa nel listino”.

La spunta Usa nel listino decide se la voce compare tra le assegnazioni del listino (motore prezzi). Nel form del soggetto compaiono invece tutte le categorie/canali attivi: un cliente può appartenere a una categoria anche se quella categoria non serve per i listini. Se un soggetto ha un valore storico non più in elenco, resta comunque selezionabile in modifica e non va perso.

15Controllo margini nei documenti, analisi e pricing

Tutta l'intelligenza dei listini (contratti, listini, scaglioni, costi, regole di margine) arriva dove si vende: nel documento, e diventa analisi e supporto alle decisioni.

“Perché questo prezzo” sulla riga del documento

Quando una riga prende il prezzo dal motore, accanto al prezzo compare una piccola icona che indica da dove arriva — contratto cliente (🤝), listino personale (👤), categoria (👥), canale (🏪), predefinito (⭐) o catalogo (📦) — con il margine % e il dettaglio nel tooltip (scaglione, contratto). L'icona diventa ⚠ arancione se la riga è sotto il margine minimo aziendale, rossa se sotto costo.

Blocco sotto soglia al salvataggio

Se una o più righe violano le regole di margine, al salvataggio compare l'elenco delle righe fuori soglia. Un amministratore può confermare con deroga (registrata); un venditore normale non può derogare da solo (vedi Workflow deroghe qui sotto). Nei totali del documento è presente il riepilogo margine (margine € e %, con il conteggio delle righe sotto soglia).

Workflow autorizzazione deroghe

Il controllo margini è ora vincolante anche per i venditori: solo gli amministratori possono forzare un'operazione sotto soglia. Chi non è amministratore, quando viene bloccato, può richiedere l'autorizzazione: la richiesta finisce in una coda. Dal pulsante ⚖ Deroghe nella pagina Listini (con un badge che conta le richieste in attesa) l'amministratore approva o rifiuta con una nota. Un'autorizzazione approvata è monouso: appena il venditore ripete l'operazione bloccata, viene consumata. Vale per tutte le scritture prezzi (voci listino, bulk, import, ricalcolo, campagne, condizioni) e per il salvataggio dei documenti sotto margine.

Sconto massimo per utente

Oltre allo sconto massimo aziendale (globale), un amministratore può impostare un limite personale per singolo venditore, più stringente del globale, dalla sezione Sconto massimo per utente nelle Regole di margine. Chi supera il proprio limite viene bloccato e deve chiedere l'autorizzazione.

Costo storicizzato sulla riga

Alla registrazione di un documento, il costo d'acquisto effettivo del momento viene salvato sulla riga: l'analisi di marginalità resta così corretta anche se i costi fornitore cambiano in seguito. Per i documenti salvati prima di questa funzione l'analisi ripiega sul costo corrente.

Analisi di marginalità

Il pulsante 📈 Analisi marginalità nella pagina Listini apre il cruscotto della redditività delle vendite in un periodo: indicatori di ricavo, costo, margine € e %, e tre viste — per cliente, per prodotto e vendite sotto soglia di margine (ordinate dalla peggiore). Il costo usato è quello d'acquisto effettivo corrente (il costo al momento della vendita non è storicizzato), quindi il margine è una stima allineata ai costi di oggi.

Prezzo suggerito (pricing)

Nel simulatore Verifica prezzo, il pulsante ✨ Suggerisci prezzo propone, per un articolo (ed eventualmente un cliente), il prezzo per l'obiettivo di margine calcolato dal costo effettivo, confrontandolo con lo storico del venduto (prezzo medio, minimo, massimo, ultimo e margine medio). Segnala l'erosione del margine quando in media si è venduto sotto il prezzo obiettivo, e il suggerito non scende mai sotto la media storica. L'obiettivo di margine è regolabile.

16Promozioni a soglia sul totale

Le promozioni a soglia applicano uno sconto al totale del documento quando la spesa raggiunge un importo (es. spesa ≥ 500 € → 5%). Sono diverse dalle regole di sconto, che agiscono sulla singola riga: qui conta l'imponibile dell'intero documento.

Si gestiscono da Sconti → 🎁 Promozioni a soglia:

  • Ogni promozione ha una soglia di spesa, un tipo (percentuale o importo fisso) e un valore; opzionalmente un canale e un periodo di validità.
  • Si possono creare più scaglioni (es. 500→5%, 1000→10%): viene applicato lo scaglione più alto raggiunto.
  • Il simulatore integrato mostra, dato un totale, quale promozione scatta e quanto manca alla successiva.

Nel documento, quando l'imponibile raggiunge una soglia compare un banner “🎁 Promozione: spesa ≥ X → sconto Y” con il pulsante Applica sconto, che imposta lo sconto globale del documento. Sotto soglia, un suggerimento indica quanto manca alla prossima promozione.

Prendi N paga M (3x2 / 3+1)

Da Sconti → 🛒 3x2 / Prendi-Paga si definiscono promozioni “ogni N pezzi ne paghi M” su un articolo o un'intera categoria (opzionalmente per canale e periodo). Esempio: 3×2 (N=3, M=2) → 1 pezzo gratis ogni 3. Nel documento, quando la quantità della riga raggiunge il multiplo, viene applicato automaticamente lo sconto equivalente e la riga mostra il badge “🛒 N×M”; aumentando la quantità lo sconto si ricalcola da solo.

Bundle multi-prodotto (A+B → sconto)

Da Sconti → 📦 Bundle si crea un insieme di due o più articoli con uno sconto (percentuale o importo fisso). Quando tutti i componenti sono presenti nel documento (con la quantità minima indicata), compare un banner “📦 Bundle Nome: A + B → sconto Y” con il pulsante Applica, che applica lo sconto alle righe dei componenti. L'importo fisso viene convertito nella percentuale equivalente sul totale dei componenti. Opzionale per canale e periodo.

Unità di misura multiple (collo, pallet)

Un articolo può avere più unità di misura oltre a quella base. Nel Catalogo, in modifica dell'articolo, la sezione Unità di misura alternative permette di aggiungere UM (es. CT Cartone, PL Pallet) con un fattore (quante UM base valgono 1 di questa) e un prezzo opzionale (se assente = prezzo base × fattore). Nella riga del documento, se l'articolo ha UM alternative compare un piccolo selettore accanto all'unità: scegliendo un'UM (collo, pallet…) il prezzo si adegua automaticamente; tornando alla base si ripristina.

?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).