INTRODUZIONE
La Direttiva Omnibus nasce nell’ambito dell’iniziativa UE “New Deal for Consumers”, con l’obiettivo di adeguare il relativo impianto normativo all’evoluzione digitale dei mercati online garantendo così una maggiore tutela al consumatore
Lo scopo principale della Direttiva è quello di colmare deficit informativi che possano, in qualche modo, influenzare la capacità decisionale del consumatore e dunque evitare che vengano realizzate pratiche commerciali scorrette. Si impone, dunque, ai fornitori di negozi online l’adempimento di specifici obblighi di informazione al fine di evitare condotte sleali.
Tra le novità introdotte si annovera la questione relativa agli sconti online attraverso la quale la Direttiva Omnibus mira a prevenire annunci di scontistiche false o gonfiate. Per tale ragione, il legislatore europeo ha statuito che ogni annuncio di riduzione del prezzo deve indicare, accanto al prezzo scontato, anche il prezzo precedentemente applicato dal professionista al prodotto. Vale a dire che bisogna rendere edotto il consumatore circa il prezzo applicato negli ultimi 30 giorni al prodotto stesso, oltre il prezzo scontato. Tale regola, però, subisce delle eccezioni in relazione ai prodotti in scadenza, prodotti agricoli e in riferimento ad eventuali offerte personalizzate, ovverosia applicate direttamente al singolo consumatore.
Invece, nel caso in cui il prodotto sia stato collocato sul mercato da meno di trenta giorni, spetterà agli Stati Membri, al momento del recepimento della Direttiva, stabilire un periodo, anche inferiore a 30 gg, per applicare lo sconto. A tal proposito, l’art. 17 bis, introdotto all’interno del Codice del Consumo, al comma 4, recita “Per i prodotti che sono stati immessi sul mercato da meno di trenta giorni, il professionista è tenuto ad indicare il periodo di tempo a cui il prezzo precedente fa riferimento. Fanno eccezione i “prezzi di lancio”, caratterizzati da successivi annunci di incremento di prezzo, non soggetti alla disciplina del presente articolo”.
Il mancato rispetto delle regole suddette costituisce una “pratica commerciale scorretta”, di conseguenza, il fornitore del negozio online potrà esser sanzionato, sulla base di alcuni fattori dettati dalla legge (gravità del comportamento, eventuali precedenti violazioni, comportamento riparatore della azienda).
CONFIGURAZIONE
È necessario avere il modulo Direttiva Omnibus attivo.
È inoltre necessario contattare il servizio tecnico 2Bit per la configurazione delle etichette a matrice (rotolo etichette adesive) o i frontalini per esportare e stampare il nuovo dato, ovvero il prezzo più basso negli ultimi 30 gg.
L’applicazione che registra lo storico dei prezzi è Due_Omnibus.exe, viene eseguita:
- all’accesso al backoffice
- all’accesso al punto cassa di DUE RETAIL
- all’accesso in Easypos o Speedy
Resta in esecuzione finché non viene spento il pc.
Il tool, appena avviato, attende per un tempo randomico da 1 a 60 secondi, poi fa il controllo e salvataggio dei prezzi se in quel giorno nessun’altra postazione ha già effettuato questa procedura. La procedura elabora i prezzi utilizzando la connessione al db principale (no punto cassa).
Se qualche altra postazione ha già avviato l’elaborazione, il tool esce dalla procedura e sta in attesa.
È possibile accedere alle impostazioni del modulo in impostazioni listini:

Il tool, alle ore 23 del giorno, effettua automaticamente il calcolo dei prezzi di quel giorno. Il tool non si spegne mai, se non con la chiusura del PC.
Dalla versione 23.494 o superiori è possibile anche indicare l’ora in cui si vuole avviare questo controllo (default 23):

Questo richiede una attenzione particolare nella configurazione dell’impianto del cliente, poichè:
- Se tutti i pc del locale sono spenti, in quel giorno non verrà registrato il prezzo nello storico usato per la direttiva omnibus , perdendolo di fatto per quel giorno;
- Se il pc del locale è acceso da giorni, ma viene spento prima delle 23.00, in quel giorno non verrà registrato il prezzo di vendita nello storico prezzi, perdendo di fatto quel prezzo per quel giorno;
- Se una promozione è valida entro una fascia oraria, e finisce prima delle 23.00, essa non verrà registrata nello storico prezzi usati per la direttiva omnibus.
È attiva di default una modalità di compattazione dei dati che elimina record con lo stesso prezzo per più giorni, mantenendo l’ultimo valido.
Es:
- 01.01 € 4,00
- 02.01 € 7,00
- 03.01 € 7,00
- 04.01 € 6,00
- 05.01 € 6,00
- 06.01 € 5,00
- 07.01 € 5,00
- 08.01 € 5,00
- 09.01 € 5,00
- 10.01 € 5,00
dopo la compattazione:
- 01.01 € 4,00
- 03.01 € 7,00
- 05.01 € 6,00
- 10.01 € 5,00
significa che 7 euro è stato un prezzo valido dal 02.01 al 03.01.
Omnibus_PreparaArticoliConPrezzoBaseEData
La procedura prepara i prezzi base degli articoli per una data specifica e li registra in tabArticoliOmnibus.
Cosa fa
- Pulizia dati
Elimina eventuali prezzi Omnibus già memorizzati per l’ultima data di esecuzione.
- Selezione del listino da usare
Determina il listino al pubblico secondo questa priorità:
- listino predefinito di sistema;
- listino del cliente predefinito (se esiste una regola dedicata);
- listino ufficiale del negozio (fallback).
- Calcolo dei prezzi base
Per ogni articolo attivo:
- recupera il prezzo dal listino selezionato o, in mancanza, dal listino padre;
- applica fino a quattro sconti in cascata;
- calcola il prezzo netto (arrotondato).
- Inserimento dei risultati
Popola tabArticoliOmnibus con:
- id articolo, prezzo netto ivato, data, data creazione, origine “Listino base”, tipo applicazione 1.
Omnibus_ApplicaPromoPerData
La procedura applica, per una data specifica, le promozioni agli articoli già presenti in tabArticoliOmnibus, aggiornandone prezzo, origine e tipo applicazione.
Cosa fa
1. Legge l’impostazione “Best Offer”
- Se attiva (AttivaBestOffer = 1), applica la promo solo se genera un prezzo migliore (più basso).
2. Applica promozioni a prezzo imposto (Tipo = 1)
Aggiorna gli articoli per cui esiste una promo con:
- un prezzo fisso (Valore = importo).
- Verifica:
- validità per data, ora, giorno della settimana;
- articolo corrispondente;
- eventuale regola Best Offer.
Aggiornamenti effettuati:
- PrezzoNettoIvatoAlPubblico = valore promo
- TipoApplicazione = 2
- OriginePrezzo = descrizione della promo + tracciamento del prezzo precedente
- IdPromo = id della promo applicata
3. Applica promozioni a sconto percentuale (Tipo = 2)
Per gli articoli non ancora toccati da altre promo (“origine non contiene PROMO”):
- calcola il nuovo prezzo: Prezzo * (1 – Percentuale/100)
- verifica le stesse condizioni delle promo a prezzo imposto (data, ora, giorno, Best Offer).
- aggiorna prezzo, origine e IdPromo.
Omnibus_ApplicaRegolePrezziVendita
Questa procedura applica agli articoli le regole di prezzo di vendita (sconti/ricarichi) per un cliente e una data specifica, aggiornando i prezzi in tabArticoliOmnibus dopo le fasi di listino e promozioni.
È il terzo step del processo Omnibus:
- Prezzo base
- Promozioni
- Regole di vendita (questa SP)
1. Lettura impostazioni e contesto
La SP carica tutte le impostazioni rilevanti:
- Best Offer e Best Offer sulle promo
- Se usare anche il listino come regola (UsaListinoComeRegola)
- Id listino negozio / listino cliente
- Id attività, categoria attività del cliente
- Varianti abilitate/disabilitate
- Giorno della settimana
- Listino base da confrontare
2. Caricamento delle regole di prezzo vendita
Copia in una tabella temporanea (#tabRegolePrezziVenditaTemp) tutte le regole da tabRegolePrezziVendita che potrebbero applicarsi.
Questo velocizza le ricerche successive.
3. Per ogni articolo che ha possibili regole (cursor)
Per ogni articolo presente in Omnibus_Articoli_ConRegole:
- Richiama il motore regole “GestoreRegole_GetRegoleFromGestore”
Il motore determina:
- la regola migliore applicabile
- il listino da usare
- gli sconti 1-4
- eventuale imponibile/importo fisso
- Se il motore non restituisce un importo → chiama PrezziVendita_GetPrezziConRegoleApplicate come fallback.
- Applica sempre gli sconti 1-4 al valore ottenuto:
Importo = Importo * (1-S1/100) * (1-S2/100) * …
- Salva l’importo risultante nella temp table #ArticoliOmnibusToUpdate.
4. Applicazione dei risultati su tabArticoliOmnibus
La logica varia in base alle impostazioni:
Caso A – Best Offer attivo anche sulle promo
Le regole possono sovrascrivere anche i prezzi promozionati, ma solo se:
- il prezzo da regola è più vantaggioso (inferiore)
- la regola esiste (IdRegola > 0)
Due comportamenti:
- Se “UsaListinoComeRegola = 1”
Aggiorna solo i prezzi se più vantaggiosi (listino o promo).
- Se “UsaListinoComeRegola = 0”
- sovrascrive tutti i prezzi derivati dal listino (TipoApplicazione = 1)
- poi valuta le promo e le sovrascrive solo se il risultato regole è migliore.
Caso B – Best Offer disattivo oppure non valido sulle promo
Aggiorna solo le righe non promozionate, quindi:
- solo TipoApplicazione ≠ 2
- solo se la regola produce un prezzo diverso
Ogni aggiornamento valorizza:
- PrezzoNettoIvatoAlPubblico
- OriginePrezzo (tracciando il prezzo precedente)
- TipoApplicazione = 3 (regole vendita)
- IdRegolaPrezziVendita
UTILIZZO
Il prezzo più basso degli ultimi 30 gg viene estrapolato se:
- stampo le etichette in modalità PROMO:

- in stampa frontalini da una promo

- Applico una promo (anche futura) tramite l’ultima integrazione effettuata in stampa etichette:

La griglia etichette verrà caricata col prezzo più basso dall’inizio della promo

Ed il dato sarà disponibile per ETQ e Frontalini.
Come viene calcolato il prezzo più basso (03.12.25)
La funzione restituisce il prezzo al pubblico più basso di un articolo, utile per la normativa Omnibus.
Determina il prezzo più basso praticato nei 30 giorni precedenti una certa data (@dataCheck), escludendo:
-
il giorno corrente,
-
l’eventuale promozione attualmente attiva (
@IdPromoAttuale).
Logica
-
Intervallo di ricerca:
Cerca i prezzi dell’articolo nei 30 giorni precedenti la data indicata. -
Esclusione promo attuale:
Cambi di prezzo provenienti dalla stessa promo vengono ignorate. -
Determinazione del prezzo più basso:
Se esistono valori nell’intervallo → ritorna il minimo prezzo. -
Fallback (prezzi più vecchi):
Se non ci sono prezzi negli ultimi 30 giorni, recupera il primo prezzo valido andando a ritroso nel tempo, sempre escludendo la promo attuale. -
Nessun prezzo trovato:
Ritorna 0.
Output
-
DECIMAL(20,5) → prezzo più basso trovato.
-
0 se non esistono prezzi validi nel periodo analizzato.
La “dataCheck” assume valori diversi in base ai contesti:
- Da stampa etichette: prende come data = data odierna
- Da stampa etichette in modalità “promo future”: prende come data = data indagine
- Da gestione sconti ricarichi: prende come data = data inizio validità regola (se assente, data odierna)
- Da stampa frontalini di una promo: prende come data = data inizio promo
STAMPA ETICHETTE (ETQ)
L’elaborazione delle etichette da stampare recupera in quel momento il prezzo dei prodotti, lo salva nella tabella etichette, e lo mostra in griglia.
Usare il tag “$PREZZOPIUBASSODAINIZIOPROMO$” per la stampa su ETQ.
STAMPA FRONTALINI (2RPT)
L’uso dei report in crystal 2rpt permette di accedere velocemente ai dati del db.
Campo: tabGridEtichette.ImportoPiuBassoDaInizioPromo