Gestire il magazzino con Microsoft Access

Impariamo a costruire un programma per gestire il nostro magazzino con Microsoft Access

La maggior parte dei programmi di gestione del magazzino hanno fin dalle origini un problema: non esiste, e non può esistere, una sola procedura per l'automazione del magazzino.

E' forse questo il limite dei pacchetti applicativi che si trovano in commercio. Si tratta di solito di procedure realizzate per un particolare tipo di attività merceologica e che poi, solerti venditori cercano di vendere ad altri clienti che svolgono tutt'altra attività. "E' sufficiente qualche piccola personalizzazione" è la frase tipica.

Quello che ci proponiamo di fare con questo tutorial è di darvi quindi degli spunti e delle tecniche su come utilizzare Microsoft Access per inquadrare a livello di metodo il problema del Magazzino e non di proporre una soluzione definitiva.

Grosso modo i magazzini funzionano tutti sulla base di questa logica:

1. si ordina un prodotto ad un fornitore
2. il fornitore consegna ed i prodotti vengono caricati nel magazzino
3. si vende e si va sotto scorta
4. si procede ad un nuovo ordine.

La nostra convinzione è che l'aspetto importante nella gestione di un magazzino sia quello della progettazione del contenuto degli archivi.

Infatti abbiamo motivo di ritenere che quando questa importantissima operazione sia stata fatta bene, le fasi successive, e cioè la definizione del modo nel quale si andrà ad interagire con i dati, le maschere utilizzate, i report, le macro e le routine vba siano molto facilitate.

Il Flow chart

Si tratta, in pratica (figura 1 ), di disegnare un quadrato nel quale si scrive il codice del programma e quello che fa; dopo di che ci si disegnano intorno gli archivi; spiegarsi con un esempio è la cosa più ovvia quindi, partiamo dal programma di acquisizione e stampa dell'ordine fornitore (nel nostro caso utilizzeremo una maschera di access per l'acquisizione dei dati ed un report per la stampa)

Vediamo quello che ci dice questo diagramma:

* Il programma l'acquisizione degli ordini fatti ai fornitori.
* Gli archivi gestiti dal programma sono: gli ordini, il magazzino, i fornitori, e le tabelle
* Il programma produce una stampa.
* Gli archivi ordini, magazzino e fornitori vengono sia letti che scritti dal programma (freccia bidirezionale).
* L'archivio tabelle viene solo letto (freccia unidirezionale)

Come abbiamo detto tutto questo sembra così ovvio e banale da sembrare inutile.

In realtà lo scopo di questo diagramma non è quello di aiutarvi a scrivere il programma, ma quello di farvi avere, quando comincerete ad averne qualcuno, una idea chiara della vostra procedura.

Stessa cosa per la fase di Emissione della bolla o del documento di trasporto: la procedura è similare alla prima soltanto che al posto dei fornitori ci sono i clienti e al posto degli ordini ci sono le bolle (figura 2 ).

Mettendo insieme tutti i diagrammi potrete rendervi conto di tutte le relazioni che esistono tra archivi e programmi.

Vi renderete conto dell'importanza di questi diagrammi quando avrete deciso (speriamo il più tardi possibile) di modificare la struttura di un archivio o la logica elaborativa di un programma.



ll database Gestione Magazzino 2013.accdb

Vediamo in dettaglio ora un esempio applicativo con un database di access 2010, il database Gestione Magazzino 2013.accdb. Supponiamo che l'azienda in questione sia una azienda commerciale e non di produzione. Quindi gli stessi prodotti o articoli sono sia acquistati che venduti.

Il database e la procedura sono stati semplificati al massimo per ragioni di ordine didattico. Tutto ruota attorno a 2 archivi centrali: quello dei prodotti e quello dell'inventario. I prodotti sono pompe idrauliche, di diverse dimensioni e tipologie.

I nominativi dei clienti e dei fornitori sono assolutamente nomi di fantasia. Le pompe invece provengono da un caso realmente esistito.

Ecco la finestra delle relazioni di questo database, la quale ci da una panoramica dei principali archivi e di come sono relazionati tra loro, vedi figura 3.

Oltre agli archivi visualizzati qui sopra, il database comprende le seguenti tabelle:

* Impostazioni
* AliquoteIVA
* MetodiValutazione
* MovimentiMagazzino
* UnitaDiMisura

A sinistra il ciclo di carico o di acquisto, a destra quello di scarico o di vendita. La struttura della tabella inventario è costruita in modo tale da permettere la valorizzazione delle giacenze di magazzino, vedi campo Quantità, per ciascun prodotto e ad intervalli temporali differenti, vedi campo DataInventario, tipicamente al 31 dicembre di ciascun anno.

Particolare rilevanza ai fini di una corretta gestione del magazzino è la scelta del Metodo di Valutazione: LIFO, FIFO o Costo Medio Ponderato sono quelli più comuni e sono anche quelli previsti da questa applicazione. Il Metodo di valutazione, che nella pratica non può essere modificato da un esercizio all'altro se non in casi eccezionali, è memorizzato nella tabella Impostazioni.

L'applicazione consente in ogni caso di modificarlo e di ricalcolare di nuovo tutti i valori per consentire qualsiasi simulazione.

A fine anno oppure ogni qual volta l'utente vuole eseguire l'inventario, viene inoltre determinato il valore delle Rimanenze finali in Euro. Questo valore viene salvato insieme alle quantità o giacenze finali, sempre nella tabella Inventario.

Il calcolo, per ciascun prodotto, viene ottenuto in questo modo: valore delle Rimanenze Iniziali (che corrisponde a quello delle Rimanenze Finali dell'anno precedente) + Totale Movimenti di carico di periodo (prelevati dalla tabella RigheFattureAcquisto e salvati anche nella tabella MovimentiMagazzino) - Totale Movimenti di scarico di periodo (prelevati dalla tabella RigheFattureVendita e salvati anche nella tabella MovimentiMagazzino) = Quantià disponibile a fine periodo.

I prodotti possono essere associati ad unità di misura differenti, ma nel nostro caso, si tratta sempre di Pezzi.

L' applicazione prevede anche un pannello di controllo. Ecco come si presenta la maschera PannelloControllo, vedi figura 4.

La casellina di controllo Aggiorna movimenti di magazzino, se abilitata, consente tramite il clic sul pulsante Esegui a lato, che diviene abilitato, di eseguire l'aggiornamento della tabella MovimentiMagazzino a partire dai dati presenti nelle tabelle RigheFattureAcquisto e RigheFattureVendita per qualsiasi data e per tutti i prodotti.

Questa è la struttura dei campi della tabella MovimentiMagazzino. La riportiamo poiché non compare nella finestra Relazioni.
IdMovimento
Numerico
Chiave primaria - numero progressivo ad autoincremento

DataMovimento
Data/ora
DataFattura da tabella FattureAcquisto o da tabella FattureVendita

IdProdotto
Numerico
IdProdotto da tabella Podotti

PrezzoCarico
Numerico
Prezzo di acquisto proveniente da record RigheFattureAcquisto

QuantitaCarico
Numerico
Quantità proveniente da record RigheFattureAcquisto

QuantitaScarico
Numerico
Quantità proveniente da record RigheFattureVendita

SaldoProgressivo
Numerico
Differenza QuantitaCarico - QuantitaScarico + SaldoProgressivo record precedente

CostoUnitario
Valuta
Viene calcolato in base al metodo selezionato: LIFO, FIFO o Costo Medio Ponderato

ValoreCarico
Valuta
QuantitaCarico x PrezzoCarico (valore in Euro)

ValoreScarico
Valuta
QuantitaScarico x CostoUnitario (valore in Euro)

ValoreProgressivo
Valuta
Valore Progressivo (Valore Progressivo Precedente + ValoreCarico - ValoreScarico) Euro


Al centro della maschera PannelloControllo c'è una casella combinata dalla quale è possibile selezionare qualsiasi prodotto e aprire la scheda Movimenti Magazzino di quel prodotto.

Proviamo a titolo di esempio a selezionare il prodotto o articolo POMPA GP 0.2. Se facciamo clic sul pulsante Apri a lato viene mostrata la scheda, visibile in figura 5.

Lasciamo per il momento da parte le colonne relative ai valori di carico, scarico e valore progressivo. Concentriamoci soltanto sulle quantità, per ora.

Poiché il metodo di valutazione selezionato è il Costo Medio Ponderato, il CostoUnitario relativo allo scarico di 2 unità come da fattura di vendita del 9/11/2012 è stato determinato facendo la media ponderata dei prezzi di carico di tutti i movimenti precedenti e dividendola per il totale delle unità acquistate e caricate a magazzino:

(€ 55.00 x 1) + (€ 67.00 x 2) = € 189 : 3 = € 63.00

Questo è il CostoUnitario attribuito al movimento di scarico di 2 unità del 9/11/2012, cioè delle 2 pompe vendute ad un cliente in quella data.

Sull' evento OnLoad (SuCaricamento) del form, il cui recordset da tabella MovimentiMagazzino è già filtrato per il singolo prodotto, c'è una routine che inizializza un vettore o array a più dimensioni contenente il Prezzo di carico, le quantità caricate, quelle scaricate e il progressivo che viene ricalcolato ogni volta.

Il vettore viene quindi passato ad una Subroutine in Visual Basic for Applicatio (VBA) diversa a seconda se è al momento impostato il LIFO, il FIFO o il Costo Medio Ponderato.

La routine in sostanza va a ragionare esattamente come farebbe un cervello umano, quindi niente di straordinario. Nel caso del Costo Medio Ponderato è più facile comprenderne il funzionamento, nei casi del LIFO e del FIFO è un pochino più complesso perchè vengono impiegati 2 cicli nidificati di cui 1 procede a ritroso.

Facciamo ora una simulazione. Cambiamo il Metodo di valutazione da Costo Medio Ponderato a FIFO (First In First Out o Primo Entrato Primo Uscito) agendo sull'apposito pulsante Cambia in pannello di controllo. La tabella impostazioni ora conterrà come MetodoValutazione il valore FIFO.

Non importa neppure rieseguire l'aggiornamento dei Movimenti di Magazzino, perchè i dati sono gli stessi, quello che cambia è soltanto la colonna CostoUnitario.

Ecco come si presenta la stessa maschera di cui sopra, cioè la scheda Movimenti di Magazzino per la stessa pompa, la POMPA GP 0.2 quando selezioniamo il Metodo di Valutazione FIFO, figura 6.

Il costo unitario delle 2 unità scaricate il 9/11/2012 è stato ricalcolato ed è pari adesso a € 61.00. Il procedimento può essere descritto in questo modo:

Poichè il metodo FIFO presuppone che siano prima le unità più vecchie (o meno recenti) ad essere scaricate o vendute, delle 2 unità scaricate il 9/11 solo una sarà valorizzata a € 55, mentre la seconda verrà valorizzata con il prezzo di acquisto del secondo record di carico, cioè € 67.

Infatti (€ 55.00 x 1) + (€ 67.00 x 1) : 2 = € 61.00

Omettiamo naturalmente di mostrare il metodo LIFO perchè nell'esempio, verrà attribuito ovviamente il valore di € 67.00 essendoci capienza nell'ultimo lotto d'acquisto, quello del 21//6/2012.

Occupiamoci ora dell'inventario. Naturalmente ora che disponiamo del costo unitario per tutti i movimenti scarico magazzino è facile calcolare anche i campi ValoreCarico, ValoreScarico e ValoreProgressivo per ciascun record della tabella MovimentiMagazzino.

Il ValoreProgressivo in Euro dell'ultimo record di ciascuna scheda prodotto viene riportato nella tabella Inventario per ogni prodotto e in riferimento all'intervallo date selezionato, ad esempio 1/1/2012 - 31/12/2012. Questo costituirà il valore delle Rimanenze Finali alla data di fine periodo, nell'esempio al 31/12/2012.

Qundo l'utente fa clic da Pannello di Controllo sul pulsante Inventario, la prima cosa che viene richiesta è una data, se non si immette alcuna data non viene mostrato nulla.

Se la data è uguale all'ultima data di inventario, per esempio 31/12/2012, allora viene mostrato l' inventario al 31/12/2012, come da figura seguente, figura 7.

La maschera Inventario è in modalità Maschere continue e non Foglio Dati. In questo modo è possibile mostrare anche il campo precalcolato Totale Rimanenze nel Piè di Pagina Maschera.

La formula in esso contenuta è Somma([ValoreRimanenze]) la quale non fa altre che sommare il campo ValoreRimanenze di ciascun record di tabella Inventario per la data selezionata, nell'esempio: 31/12/2012.

Durante l'anno successivo, ogni volta che si vuole elaborare un inventario di magazzino, il valore della giacenza iniziale sarà uguale a quello finale dell'anno precedente e non sarà più necessario rielaborare tutti i movimenti fin dall'inizio.

Le maschere Fatture di Acquisto e Fatture di Vendita consentono di inserire i rispettivi documenti in base alla data di protocollo o di emissione. I dettagli relativi all' IVA vengono qui omessi per ragioni didattiche. Si tratta di 2 maschere con sottomaschera.

Nella parte superiore si possono editare i valori dei campi della Fattura di acquisto o di vendita, mentre nelle colonne della Sottomaschera si possono editare o naturalmente aggiungere i valori dei campo delle tabelle RigheFattureAcquisto e RigheFattureVendita.

Nella figura seguente viene mostrata la maschera FattureAcquisto in modalità Visualizzazione Maschera, figura 8.

Infine da Pannello di Controllo l'utente può aprire anche le maschere anagrafica Clienti e Fornitori. Si tratta di 2 semplici maschere costruite con l'auto-composizione di Access 2010.

Abbiamo soltanto aggiunto 2 pulsanti nel piè di pagina maschera. Uno per visualizzare la stessa maschera in modalità Foglio Dati per avere la panoramica di tutti i records presenti e l' altro pulsante per chiudere la maschera stessa.




Tutorials su Microsoft Access


Home page MC2 E-Learning



Dr.Maurizio Cucchiara

Amministratore unico
MC2 E-Learning S.a r.l.
Formazione per il Web
autore del corso:
"Corso Base di Microsoft Access"
disponibile on line su questo sito
http://www.mc2.it/html/access.html

Condividi sui social network:

Social buttons



Iscriviti al nostro
nuovissimo
canale Youtube!


Iscrivi al nostro canale Youtube



Potrai restare aggiornato
sui nostri più recenti
video-tutorial su:
Microsoft Access ed Excel
e molto altro...



Cerca sul web con Google:




Guarda il video-tutorial
sul nostro canale Youtube:


Gestione Magazzino con Access

NOVITA'!

'VIDEO TUTORIAL
DOWNLOAD AREA'

(Fai clic sull'immagine
qui sotto per vedere
una anteprima della
pagina di accesso)



L'accesso è riservato agli iscritti ai corsi on line www.mc2.it

Acquista anche uno solo
dei nostri corsi
per avere immediatamente
accesso alla
'Videotutorial Download Area': è facile, basta un clic:

http://www.mc2.it



Iscriviti alla newsletter: E' GRATIS! (?)

 Nome: (?)

 (?)

e-mail: (?)

 (?)

Newsletter:

formato preferito:

Microsoft Access (?)

Impariamo Excel e il VBA(?)

Internet "da zero"! (?)

Html (?)

Consiglio

(?) = Aiuto

Leggi qui la Informativa completa sulla privacy.