+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 1 su 1

Discussione: Calcolo del valore di magazzino e dell'inventario

  1. #1
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526

    Calcolo del valore di magazzino e dell'inventario

    CALCOLO DEL VALORE DI MAGAZZINO E DELL'INVENTARIO CON VB.NET

    Molte volte mi è capitato di leggere in questo forum messaggi di utenti che volevano stabilire la quantità e il valore delle loro merci.
    Nella maggior parte dei casi ho notato che la soluzione adottata era quella di moltiplicare il numero di prodotti per il valore.
    Non che questa pratica sia sbagliata, ma non è il metodo migliore per ottenere una stima precisa, nè quello per ottenere un valore fiscale corretto.
    I metodi più usati per stabilire il valore della merce rimasta hanno i nomi di FIFO (first in first out) e LIFO (last in first out).
    Anche se i nomi sono abbastanza chiarificatori, preciso che il primo metodo ritiene che, nel caso di marce che entra ripetutamente nel magazzino, il primo elemento entrato sia anche il primo ad uscire.
    Il secondo sistema stabilisce l'opposto. L'ultimo elemento entrato è il primo a uscire.

    Un esempio pratico:
    Ipotiziamo che io abbia un negozio di abbigliamento. Compro 10 Pantaloni a 10 euro ciascuno, ne vendo 3, ne acquisto altri 5 e ne vendo 6. Faccio scorta con altri 5 pantaloni e ne cedo 4 prima di comprarne 20.
    Vendo 14 pantaloni, ne compro altri 5 e ne vendo 8. A questo punto devo fare l'inventario e valutare le giacenze.

    I dati certi sono che:
    Ho speso: 10x10, 5x15, 5x20, 20x25 e 5x30 = 925 euro.
    Ho ricavato dalla vendita: 3x20, 6x30, 4x40, 14x50 e 8x60 = 1580 euro.
    Per quanto riguarda il magazzino ho un capitale che mi frutterà 35x60 = 2100 euro ed è il valore di vendita.
    Questo è vero, ed è anche giusto.
    Ma il vero problema è un altro...
    Quanto ho pagato la merce che mi è rimasta?
    Questo valore deve essere messo in una voce della dichiarazione dei redditi, e ci devo pagare le tasse...
    Quindi il problema è ricavare il valore fiscale del materiale in giacenza.

    Siccome i pantaloni sono tutti uguali, non posso sapere se prima ho venduto quelli nuovi oppure quelli vecchi. Saranno state vendute a caso. Magari cercando di esaurire quelli che si possono deteriorare prima.
    Da un punto di vista pratico per il calcolo posso formulare due ipotesi.
    1) Che io abbia sempre venduto i pantaloni più vecchi che mi rimanevano (cosa abbastanza logica).
    2) Che io abbia sempre venduto i più nuovi, rimanendo in negozio sempre quelli più vecchi, che sono rimasti sotto nella pila dei pantoloni in vendita.
    Il primo sistema è il FIFO, il secondo LIFO.
    Se cercate esempi su internet alle voci FIFO e LIFO troverete molto materiale.
    Se usate VB6 noterete che vengono utilizzate matrici nelle quali vengono spostati valori.
    Gli utenti di VB.NET hanno a disposizione due classi a disposizione: Stack e Queue.
    Non utilizzeremo nessuno dei due metodi, ma gestiremo manualmente ogni operazione.
    Questo per ottenere il seguente vantaggio: Operando direttamente sui record della tabella, possiamo avere come ulteriori inormazioni, oltre alle quantità e al valore, anche dati relativi ai documenti, come quantità di fatture, cadenza degli acquisti, e tempi di giacenza dei singoli pezzi.
    Informazioni che ci possono aiutare nelle strategie di acquisto future.

    Ho preparato questa piccola applicazione per illustrare un modo di ricavare, in un'unica operazione, sia i valori di inventario che quelli economici.
    Si può sapere quanto materiale è rimasto in giacenza e il suo valore DI ACQUISTO.
    Notare bene che questo esempio non tiene conto di un altro valore: la svalutazione del bene con il tempo.
    Se vendessi computer, e mi ritrovassi in magazzino un processore, esso non varrà sempre la stessa cifra, ma avrà un decadimento di valore con l'aumentare del tempo.
    Anche di questo dovrebbe essere tenuto conto per avere una stima più accurata...
    Tengo inoltre a precisare un ultima cosa: le normative vigenti prevedono unicamente il metodo FIFO come sistema per valutare le giacenze.
    Ho inserito anche l'altro metodo per puro scopo didattico.

    Descrizione del metodo di lavoro.
    Per affettuare il calcolo ho usato un procedimeto analogo in entrambi i casi:
    Ho simulato l'evoluzione temporale di entrata/uscita dei capi dal negozio, riproducendola fedelmente, il periodo analizzato copre l'intero arco dell'anno.
    Vediamo come si evolve nel tempo il valore delle scorte con i due sistemi.

    FIFO
    Compro 10 pantaloni a 10 euro ciascuno e ne vendo 3 (in questo caso non è importante a quanto vengono rivenduti).
    Rimangono 7 pantaloni a 10 euro (totale 7 pantaloni, 70 euro).
    Acquisto 5 pantaloni a 15 euro e ne vendo 6.
    Rimangono 1 pantalone a 10 euro e 5 a 15 (totale 6 pantaloni, 85 euro).
    Acquisto 5 pantaloni a 20 euro e ne vendo 4.
    Rimangono 2 pantaloni a 15 euro e 5 a 20 (totale 7 pantaloni, 110 euro).
    Acquisto 20 pantaloni a 25 euro e ne rivendo 14.
    Rimangono 13 pantaloni a 25 euro (totale 13 pantaloni, 325 euro).
    Acquisto 5 pantaloni a 30 euro e ne rivendo 8.
    Rimangono 5 pantaloni a 25 euro e 5 a 30 (totale 10 pantaloni, 275 euro).
    Alla fine della gestione l'inventario è di 10 pantaloni per una spesa di 275 euro.

    LIFO
    Compro 10 pantaloni a 10 euro ciascuno e ne vendo 3 (la prima operazione è uguale per entrambi i sistemi).
    Rimangono 7 pantaloni a 10 euro (totale 7 pantaloni, 70 euro).
    Acquisto 5 pantaloni a 15 euro e ne vendo 6.
    rimangono 6 pantaloni a 10 euro (totale 6 pantaloni, 60 euro).
    Acquisto 5 pantaloni a 20 euro e ne vendo 4.
    Rimangono 6 pantaloni a 10 euro e 1 a 20 (totale 7 pantaloni, 80 euro).
    Acquisto 20 pantaloni a 25 euro e ne rivendo 14.
    Rimangono 6 pantaloni a 10 euro, 1 a 20 e 6 a 25 (totale 13 pantaloni, 230 euro).
    Acquisto 5 pantaloni a 30 euro e ne rivendo 8.
    Rimangono 6 pantaloni a 10 euro, 1 a 20 e 3 a 25 (totale 10 pantaloni, 155 euro).
    Quindi alla fine della gestione l'inventario è sempre di 10 pantaloni, ma per una spesa di 155 euro.

    Questi sono i valori che devono risultare dall'analisi dei movimenti contabili.

    Vediamo adesso come è stato operato dal punto di vista del codice.
    Per ottenere quanto prefisso ho operato in questo modo:
    In una sub creata ad hoc, dopo avere caricato i dataset vendite e acquisti, ho inserito i loro valori in una tabella vuota (Magazzino).
    Il motivo di questa scelta è dettato dal fatto di avere usato un metodo distruttivo di dati per effettuare il calcolo (alla fine del procedimento rimangono solo poche righe nel database, che indicano quantità e valore fiscale).
    Questo sistema permette ad ogni avvio del programma di ricreare un dataset di lavoro con tutti i dati necessari allo svolgimento dell'esempio.
    Per effettuare il calcolo esistevano modalità tecniche diverse.

    Per il metodo FIFO, il calcolo del valore è stato effettuato utilizzando il valore ricavato accedendo alle singole celle del dataset.
    Le righe che progressivamente venivano eliminate non lo erano fisicamente, ma solo logicamente, veniva cambiato il loro stato a "deleted".
    Questa procedura ha comportato l'ulteriore problema di saltare da un record valido all'altro, in modo di evitare di posizionarsi (e leggere i dati) su righe precedentemente cancellate.
    La ripetizione del ciclo di calcolo è stata effettuata tramite un GOTO e una targhetta.
    Il salvataggio dei dati è stato effettuato tramite una transazione (che permette, nel caso di errori, di annullare le modifiche), e tutte le modifiche effettuate vengono apportate insieme.

    Per il metodo LIFO il procedimento è stato differente.
    Questo non perchè il diverso tipo di calcolo imponesse di operare in modo diverso, ma data la natura didatica di questo lavoro, è sembrato preferibile illustrare un modo diverso per operare, ma per dare modo al lettore di utilizzare l'approccio tecnico che ritiene più opportuno di agire.
    Si è fatto ricorso alla BindingSource e i record, man mano che venivano cancellati dal dataset, venivano anche eliminati fisicamente dalla tabella del database.
    Questa seconda metodologia ha consentito di creare un codice "più snello" e facilmente comprensibile.
    Il ciclo effettuato tramite il GOTO è stato sostituito con un più performante Do/Loop che fa ricorso a una variabile booleana per stabilire se essere effettuato nuovamente.
    Infine viene proposto un modo diverso di salvare i dati: Ogni riga non necessaria nel calcolo viene eliminata immediatamente.
    Il tutto, al fine di controllare l'esito del lavoro, viene messo in un blocco per la gestione degli errori che avverte che l'operazione ha avuto buon esito.

    Ulteriori commenti relativi al calcolo sono stati inseriti a margine del codice.
    Cercano di spiegare, passo per passo, tutte le operazioni che sono state effettuate per ottenere, come risultato, gli stessi valori economici riportati nell'esempio qui sopra.
    Questo esempio effettua il calcolo su una singola voce delle scorte disponibili. Per ottenere il valore globale delle giacenze è sufficiente effetuare un ciclo per ogni voce di articolo diversa che compare nelle tabelle Acquisti/Vendite.
    Per fare ciò si possono inserire, con un ciclo, in un array tutte le voci diverse, e ripetere, per ogni voce della matrice, il ciclo descritto in questo esempio.
    File allegati File allegati
    Se ascolto conosco, se vedo capisco, se faccio imparo.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi