Modulo Listini & Sconti
Gestione listini prezzi, scaglioni volume, politiche di sconto e assegnazione a soggetti
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
- 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) |
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.
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 |
- Aprire la pagina Listini e premere il pulsante Assegnazioni in alto a destra: si apre il pannello con tre blocchi.
- 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…).
- Per assegnare un listino a un canale, nel blocco Per Canale selezionare il listino accanto al canale (Retail, Web/E-commerce, Ingrosso, Agente).
- Per impostare il listino predefinito, usare il blocco Listino Predefinito: è quello applicato quando nessuna regola più specifica corrisponde. Ogni scelta è salvata immediatamente.
- 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.
- 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.
- 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 €).
- ✨ 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%
- 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.
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).
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.
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.
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.
• 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.