# Magazzini e Listini Avanzati
# Premessa
Lo scopo del presente documento è di descrivere le procedure e le modalità di utilizzo operativo del componente aggiuntivo **“Magazzini & Listini Avanzati”**.
#### **Introduzione**
Il componente aggiuntivo Magazzini & Listini Avanzati permette di estendere le funzionalità standard di vtenext CRM grazie all’integrazione della gestione dei Magazzini e delle logiche avanzate sui listini di vendita.
Il modulo **Magazzini** consente di integrare in vtenext CRM funzionalità molto simili ad un software ERP.
Tramite l’implementazione di nuovi moduli sul ciclo passivo e il potenziamento dei moduli del ciclo attivo esistente ora è possibile:
- Definire più magazzini
- Definire documenti di carico / scarico
- Definire documenti di trasferimento merce
- Definire documenti di rettifica di magazzino
- Definire documenti che non movimentano il magazzino
Il modulo magazzino consente pertanto la gestione attiva e passiva delle merci e dei prodotti scambiati con i clienti o con i fornitori.
Degli esempi di applicazione possono essere:
- imprese che si occupano di servizi di connettività (erogazione del servizio di connettività + dispositivi quali modem, router, ecc)
- imprese di distribuzione (acquisto di prodotti e rivendita su altri mercati)
- imprese di manutenzione (per gestione dei magazzini ricambi, dei magazzini ambulanti/furgoni e dei depositi)
Il modulo **Listini Avanzati** permette una gestione avanzata dei listini di vendita attraverso:
- Il modulo “Sconti e Maggiorazioni” che prevede la gestione di 7 sconti / maggiorazioni ed è associabile a Aziende e Prodotti tramite delle classi (rispettivamente “Classe Anagrafica” e “Classe Prodotto”).
- L’ampliamento dei moduli standard Aziende, Prodotti, Listini e Preventivi.
#### **Schema dei Moduli**
Di seguito si riporta uno schema che riepiloga i moduli coinvolti:
[](https://usermanual.vtenext.com/uploads/images/gallery/2019-10-Oct/Ciclo-attivo.png)
**Moduli Standard**
| **Moduli Extra Compresi** |
**Prodotti** | **Magazzini** |
**Preventivi** | **DDT Passivo** |
**Ordini di Vendita** | **Fattura Passiva** |
**Ordini di Acquisto** | **Documenti Interni** |
**DDT** | **Sconti e Maggiorazioni** |
**Fatture** | |
**Listini** | |
# Gestione “Magazzini”
Come anticipato, il componente aggiuntivo permette di estendere le funzionalità standard di vtenext CRM relativamente alla gestione dei magazzini. La configurazione del componente è molto semplice e prevede di partire dalla creazione di un magazzino.
**Creazione di un Magazzino**
- Le informazioni da inserire per la creazione sono:
- Il nome del Magazzino
La tipologia del Magazzino che può essere:
- Deposito
- Furgone
- Altro

Figura 1 - Anagrafica Magazzino Sede
Dopo aver creato il Magazzino, si procede alla configurazione nella sezione delle Impostazioni:
**Impostazioni > Sezione “Altre Impostazioni” > Impostazioni Magazzino**
Qui sarà possibile creare i valori di default in conformità a varie combinazioni possibili e i relativi tipi di documento che verranno utilizzati per la movimentazione.
**Visualizzazione dello storico movimenti di magazzino**
Per visualizzare lo storico dei movimenti relativi al magazzino creato, è possibile selezionare la voce **“Storico Movimenti”** presente nel menù delle Relazioni.
**Verrà così riportato l’elenco delle movimentazioni del Magazzino in oggetto.**

Figura 2 – Storico Movimenti
**Documento interno**
Con i magazzini viene introdotto il nuovo modulo **“Documento interno”** che ha la particolarità di non avere relazionato un’Azienda. Tale entità ha lo scopo di poter creare un documento che movimenti il magazzino (es. carico, scarico, rettifica) o i magazzini (es. trasferimento merci) indipendentemente da un cliente o fornitore.
**DDT passivo e Fattura passiva**
Questi due moduli permettono di creare rispettivamente un **“Documento di trasporto”** e una **“Fattura di acquisto”** da Fornitore. I Listini qui non vengono applicati in automatico e non è presente il campo Listino nelle due entità; c’è ugualmente la possibilità di selezionare il prezzo di listino manualmente dalla riga. La movimentazione di magazzino invece segue le logiche standard del modulo Magazzini basandosi sulle impostazioni del Tipo documento.
**Quantità di Magazzino**
Nel modulo Magazzini è presente la relatedlist “Prodotti” che mostra per prodotto Giacenza, Ordinato, Impegnato e Disponibilità.

Figura 3 - Prodotti
Analogamente alla precedente è presente nel modulo Prodotti una relatedlist **“Magazzino”** che visualizza per magazzino le quattro quantità specifiche.

Figura 4 - Magazzino
**Configurazione logiche di gestione Magazzino**
I Magazzini prevedono una pre-configurazione standard di base (necessaria la verifica). Come anticipato, seguendo il percorso Impostazioni > Sezione “Altre Impostazioni” > Impostazioni Magazzino sarà possibile procedere alla configurazione.
Nell’esempio sono stati configurati i Magazzini “Sede” e “Sede Staccata”. Per ciascuno sarà ora necessario impostare per Modulo, Tipo Documento e Stato:
- i valori di default che verranno compilati al momento della creazione del documento
l’azione da svolgere sul magazzino al momento del salvataggio
[](https://usermanual.vtenext.com/uploads/images/gallery/2022-09/screenshot-20211221-122903-2.png)
Per impostare un **valore di default** è sufficiente scegliere:
- il modulo
- il tipo documento
- il magazzino di riferimento che sarà utilizzato come default
- una serie per la numerazione dei documenti
- lo stato di default
Ovviamente questi valori saranno poi derogabili nel documento.
Conclusa la definizione dei valori di default, dovranno essere create le **azioni** che verranno eseguite al salvataggio del documento in base al modulo, allo stato e al tipo documento appena definito.
È possibile impostare:
se si tratta di:
- *carico*
- *scarico*
- *nulla*
su che magazzino effettuare i movimenti,
su che tipo di quantità:
- *giacenza*
- *ordinato*
- *impegnato*
È inoltre possibile definire più azioni per modulo, stato e tipo documento. I campi “Tipo Documento” e “Stato” sono campi gestiti con l’Editor di Picklist Standard.

Figura 6 - Tipo Documento e Stato
Per quanto riguarda lo **“Stato”**, occorre porre particolare attenzione, ad alcuni valori. Il valore di default presume particolari funzionalità:
**“Canceled”:**
- Se un documento è in questo stato vengono cancellati i movimenti per quel documento e storna le quantità a magazzino. **Note tecniche:** in caso si volesse modificare tale valore il file da modificare è il seguente ./modules/ SDK/src/WarehouseFiles/utils/WarehouseUtils.php
**“Provisional”:**
- Solo se un documento è in stato Provisional è possibile modificarlo o cancellarlo. **Note tecniche:** in caso si volesse modificare tale valore il file da modificare è il seguente ./modules/SDK/src/ WarehouseFiles/StatusInventoryPermissions.php
- In creazione se non è presente alcuno stato documento nelle impostazioni di magazzino per quel tipo documento di default imposta Provisional. **Note tecniche:** in caso si volesse modificare tale valore il file da modificare è il seguente ./modules/SDK/src/ WarehouseFiles/ViewStatus.php
**Procedura di Ricalcolo Saldi Magazzino**
È stata implementata una procedura per il ricalcolo saldi di magazzino e relativi movimenti. Ciò permette di ricostruire le quantità (giacenza, ordinato, impegnato e disponibilità) per prodotto e magazzino basandosi sulle righe dei documenti. La procedura, seguendo la logica delle causali documento configurate nelle “Impostazioni Magazzino”, ricostruirà eventuali movimenti mancanti ed eliminerà quelli superflui.
Il ricalcolo viene incontro, alla basilare esigenza di:
- modifica del comportamento di una causale;
- oppure all’esigenza dell’utente di ricalcolare ex-novo gli aggreganti di magazzino in base alle righe documento presenti nel sistema.
Per avviare la procedura, selezionare l’opzione. **“Ricalcolo Saldi Magazzino”** dal menù “Altro” presente nell’anagrafica del Magazzino interessato.

Il ricalcolo dei saldi, essendo potenzialmente una procedura onerosa in termini di tempo di elaborazione (dipendente dal numero di righe documenti da processare), viene eseguito in backgroud, ovvero in modalità asincrona rispetto al funzionamento del CRM. Apparirà quindi un messaggio di avvio della procedura, al quale non seguirà nessun messaggio di conclusione procedura. Le operazioni verranno tuttavia tracciate in un apposito file di log sul server.
Per evitare il sormontarsi di esecuzioni contemporanee, è stato implementato un sistema di blocco ricalcolo nel caso in cui a parità di magazzino, vi sia già un processo di ricalcolo saldi in esecuzione. Si possono eseguire contemporaneamente più ricalcoli su magazzini diversi (non più di uno sullo stesso).
**Note tecniche:** **è necessario modificare la variabile $array\_permission\_status nel file modules/Warehouse/Warehouse.php andando a specificare ogni valore per ogni modulo.**
# Gestione “Listini Avanzati”
Come anticipato, il componente aggiuntivo permette di estendere le funzionalità standard di vtenext CRM relativamente alla gestione delle logiche di definizione dei listini di vendita e coinvolge i seguenti moduli:
- Prodotti
- Aziende
- Listini
- Sconti / Maggiorazioni
- Preventivi
- Ordini di Vendita
- Fatture
Di seguito verranno dettagliate le funzionalità e configurazioni necessarie per ciascuno dei moduli elencati.
**Prodotti**
A seguito dell’installazione del componente aggiuntivo, all’interno della scheda Prodotto sarà automaticamente disponibile il campo “Classe Prodotto”. Tale campo dovrà essere valorizzato con l’opzione corrispondente tramite picklist1. Nell’esempio di seguito riportato il campo è stato valorizzato con “Core”.

Figura 8 - Anagrafica Prodotto - Classe Prodotto
**Aziende**
A seguito dell’installazione del componente aggiuntivo, all’interno della scheda Azienda sarà automaticamente disponibile il campo “Classe Anagrafica”. Tale campo dovrà essere valorizzato con l’opzione corrispondente tramite picklist1. Nell’esempio di seguito riportato il campo è stato valorizzato con “Standard”.

Figura 9 - Anagrafica Azienda - Classe Anagrafica
Al fine di definire un Listino di default per l’Azienda in oggetto è possibile associare inoltre un Listino tramite il campo di collegamento “Listino”. Quest’ultimo sarà utilizzato automaticamente nei moduli Preventivi, Ordini di Vendita e Fatture.
Nell’esempio di seguito riportato il campo è stato valorizzato con “Listino 2018”.

Figura 10 - Anagrafica Azienda - Listino
**Listini**
La funzione di un Listino è quella di raccogliere un insieme di prodotti / servizi il cui prezzo varia rispetto a quello unitario, definito nella scheda prodotto / servizio. Le logiche definite per i Servizi sono le medesime descritte per i Prodotti.
Come descritto precedentemente, la relazione con l’Azienda avviene direttamente dalla scheda dell’Azienda (lo stesso Listino può essere assegnato a più Aziende, ma un’Azienda può avere un solo Listino).
Aggiungendo prodotti al Listino, è possibile impostare un arco temporale di validità di un prezzo per uno specifico periodo. In tal modo si potrà disporre di prezzi diversi a seconda degli intervalli di tempo (ad esempio sarà possibile definire prezzi più alti nel periodo Natalizio rispetto al prezzo di vendita standard nel corso dell’anno).
Dalla maschera di aggiunta dei Prodotti sarà quindi necessario selezionare i Prodotti che si desidera aggiungere nel Listino. Per tali Prodotti sarà possibile inserire:
- La data di inizio validità del prezzo definito per il Prodotto nel campo “Data Inizio Validità”
- La data di fine validità del prezzo definito per il Prodotto nel campo “Data Fine Validità”
- Il prezzo di listino per il Prodotto nel campo “Listino”
Se precedentemente definito, sarà inoltre sempre possibile visualizzare il prezzo assegnato al Prodotto nella relativa scheda nel campo “Prezzo Unitario”.

Figura 11 - Aggiunta Prodotti al Listino
**Sconti / Maggiorazioni**
A seguito dell’installazione del componente aggiuntivo, verrà automaticamente aggiunto il modulo “Sconti/Maggiorazioni”.
All’interno della scheda Sconti/Maggiorazioni saranno disponibili i camp “Classe Prodotto” e “Classe Anagrafica” che riportano i medesimi valori presenti nei rispettivi campi sul modulo Prodotti e Aziende.
Pertanto la combinazione dei valori assegnati a tali campi definisce gli sconti o maggiorazioni che saranno applicati automaticamente su Preventivi, Ordini di Vendita e Fatture.
Gli sconti e le maggiorazioni da applicare potranno essere definiti negli appositi campi “Sconto / Magg x”.
**Attenzione!** Gli sconti devono essere riportati con il segno positivo (+) mentre le maggiorazioni con il segno negativo (-).
Indicando più sconti nei diversi campi (o più maggiorazioni) il calcolo degli sconti successivi al primo vengono considerati sull’importo al netto dello sconto.
Di seguito si riporta un esempio:
- Prezzo di partenza: 100€
- Sconto / Magg 1: 50%
- Sconto / Magg 2: 20%
Prezzo finale: 40€

Figura 12 - Sconti e Maggiorazioni
**Preventivi, Fatture, Ordini di Vendita e Acquisto**
Alla creazione di un Preventivo, un Ordine di Vendita/Acquisto o una Fattura, sulla base dell’Azienda (cliente o fornitore) relazionata, verrà automaticamente riportato nell’apposito campo “Listino” anche il Listino di appartenenza (ovvero il listino riportato nel campo “Listino” dell’Azienda). I prezzi dei Prodotti inseriti nelle relative righe saranno quindi aggiornati secondo tale Listino.
Nella voce sconto del prodotto, appaiono automaticamente gli sconti e le maggiorazioni impostate per la classe dell’azienda (campo “Classe Anagrafica”) e del prodotto (campo “Classe Prodotto”) su cui si sta lavorando (se tutte le relazioni precedenti sono state rispettate).
Se per caso si dovessero erroneamente creare più schede Sconto/Magg. relazionate alle stesse classi azienda e prodotto, il sistema tiene conto della prima creata.

Figura 13 - Blocco Prodotti Ordine di Vendita
**Altre configurazioni Sconti**
Sono stati messi a disposizione due ulteriori livelli di scontistica di seguito descritti.
**Scontistica 1 -** **Scontistica (fino a 3 sconti in cascata) legata alla combinazione cliente - classe prodotto articolo**
Nella vista di dettaglio di un’azienda, è stato predisposto un pulsante “Aggiungi scontistica Azienda” rappresentato dal simbolo percentuale (selezionabile in modalità visualizzazione di un’Azienda) che alla pressione apre il seguente popup:

Figura 14 - Aggiungi Scontistica Azienda
Con il pulsante **“Aggiungi riga”** è possibile specificare più di una combinazione.
Qualora nel popup ci fossero più combinazioni per una stessa classe prodotto, verrà salvata solamente l’ultima combinazione specificata.
Tale popup permette di:
- Visualizzare gli sconti disponibili per l’anagrafica in oggetto.
- Aggiungere / togliere / modificare gli sconti per l’anagrafica in oggetto gestendo fino ad un massimo di 3 sconti.
**Al salvataggio:**
- Verranno modificati eventuali sconti già esistenti e aggiornati nel popup.
- Verranno rimossi gli sconti sovrascritti e non più presenti nel popup.
- Nel caso in cui lo sconto venga rimosso tramite il pulsante, la cancellazione dello sconto avviene all’istante senza attendere il salvataggio.
- Verranno creati gli sconti precedentemente non esistenti con “codice sconto” valorizzato nel seguente modo: “Numero Azienda”\_”classe prodotto”.
È infine possibile uscire dal popup senza apportare modifiche selezionando “Annulla” dalla finestra che viene aperta alla pressione del pulsante X.
**Scontistica 2** **- Scontistica (fino a 3 sconti in cascata) legata alla combinazione preventivo - classe prodotto articolo**
Quanto descritto precedentemente per l’anagrafica di un’Azienda, è stato replicato anche per i Preventivi con alcune particolarità:
- Il pulsante “Aggiungi Scontistica Preventivo” è disponibile in creazione e in modifica di un Preventivo.
- In fase di creazione di un Preventivo:
1. Gli sconti verranno salvati definitivamente solamente se verrà salvato anche il Preventivo. Alla riapertura del popup, dopo un precedente salvataggio degli sconti, resteranno comunque visibili per tutto il periodo di creazione.
2. Al salvataggio verranno creati gli sconti precedentemente salvati con “codice sconto” valorizzato nel seguente modo: “Numero Preventivo”\_”classe prodotto”.
- In fase di modifica di un Preventivo saranno disponibili tutte le funzionalità viste precedentemente per l’anagrafica. Il salvataggio del popup segue le stesse regole definite per l’azienda.
**Recupero degli sconti/maggiorazioni in sede di Preventivo**
Dal punto di vista del recupero degli sconti per ogni riga di Preventivo, il sistema applica il seguente meccanismo:
1. Controllo della presenza di scontistiche per la combinazione preventivo – “Classe Prodotto” dell’articolo inserito.
2. Controllo della presenza di scontistiche per la combinazione cliente – “Classe Prodotto” dell’articolo inserito.
3. Controllo della presenza di scontistiche per la “Classe Anagrafica” – “Classe Prodotto” dell’articolo inserito, dove la classe anagrafica si riferisce all’azienda abbinata al preventivo.
Il processo eseguito è il seguente:
- Se lo step 1 produce risultati, il sistema utilizza tali scontistiche, altrimenti passa allo step 2;
- Se lo step 2 produce risultati, il sistema utilizza tali scontistiche; altrimenti passa allo step 3;
- Se lo step 3 produce risultati, il sistema utilizza tali scontistiche; altrimenti non verrà applicato nessuno sconto.
**Attualizzazione prezzi e sconti su Preventivi**
È disponibile la funzionalità che permette di aggiornare i prezzi e gli sconti presenti in un Preventivo già esistente per dare la possibilità di attualizzarli con i nuovi prezzi.
Questa funzionalità è identificata dal pulsante **“Ricalcola Prezzi e Sconti”** presente all’interno della scheda Preventivo. Il pulsante è disponibile solamente per il modulo preventivi e in sede di creazione / modifica del Preventivo.

Figura 15 - Ricalcola prezzi
Una volta premuto il pulsante e confermato il messaggio in popup, per ogni riga del blocco prodotti:
- Vengono recuperati eventuali sconti/maggiorazioni definiti per la “Classe Prodotto” dell’articolo;
- SE la riga presenta una scontistica diretta, viene aggiornato solamente il prezzo di listino e lasciate invariate le scontistiche definite;
- SE la riga non presenta scontistica, viene eventualmente aggiunta la scontistica se presente qualche sconto/maggiorazione per quella classe prodotto.
- SE la riga presenta già una scontistica percentuale, vengono eventualmente aggiornate le percentuali di scontistica.
- SE per la riga non sono disponibili scontistiche derivanti dal modulo sconti/maggiorazioni, e se la riga presenta sconti percentuali, la scontistica viene impostata con “nessuno sconto”.