fbpx

Refilling

In un magazzino gestito con ubicazioni dinamiche il codice viene ubicato dove c’è lo spazio disponibile pertanto uno stesso codice potrebbe essere allocato in più punti del magazzino, se sono parecchi i codici con più ubicazioni questo può rallentare le operazioni di prelievo del materiale, un po’ come avviene con un disco di un computer che pertanto periodicamente va deframmentato. Come misurare il grado di frammentazione del magazzino? Lo possiamo misurare attraverso l’indice di Gini che misura il grado di concentrazione in una distribuzione di frequenza. La tabella da cui partire è la seguente:
CODICE, N UBI
A questo punto attraverso tre query in cascata andiamo ad accodare in una tabella dove registriamo lo storico del grado di frammentazione del magazzino:

SELECT [UBICAZIONI].CODICE, [UBICAZIONI].[N UBI], [Totale ubicazioni].TOTUBI, [N UBI]/[TOTUBI] AS FRE, [FRE]^2 AS FREQ
FROM [UBI LOGIS], [Totale ubicazioni]
ORDER BY [UBI LOGIS].[N UBI] DESC;
SELECT SUM(Frequenze.FREQ) AS SOMMA, COUNT(Frequenze.CODICE) AS N
FROM Frequenze;
INSERT INTO [Frammentazione magazzino] ( DATA, FRAMMENTAZIONE )
SELECT DATE() AS DATA, 1-((1-[SOMMA])/(([N]-1)/[N])) AS FRAMMENTAZIONE
FROM [Somma frequenze];

Graficamente possiamo rappresentare la frammentazione del magazzino contando per ogni frequenza di ubicazione quanti codici ci sono.

frammentazione magazzino Una volta individuato che il magazzino è eccessivamente frammentato procediamo all’operazione di refilling, ovvero andiamo a posizionare in una ubicazione i codici che sono in più di tre ubicazioni, per fare questo è necessario elaborare una tabella che indichi per ogni codici le ubicazioni in cui si trova. Per fare questo partiamo da una tabella GIACENZA così formata:
CODICE, UBI, QT ed eseguiamo il seguente codice

Function uge()
Dim db As DAO.Database
Dim tabella As DAO.Recordset
Dim c1 As DAO.Field
Dim c2 As DAO.Field
Dim c3 As DAO.Field
Dim c4 As DAO.Field
Dim CODE(50000)
Dim AREA(50000)
Dim QT(50000)
Dim TE(50000)
Dim CA(50000)
Set db = CurrentDb
C = 1
Set tabella = db.OpenRecordset("GIACENZE", dbOpenDynaset)
Do Until tabella.EOF
    CODE(C) = tabella.Fields("CODICE")
    AREA(C) = Replace(tabella.Fields("UBI"), " ", "")
    QT(C) = tabella.Fields("QT")
    C = C + 1
    tabella.MoveNext
Loop
tabella.Close
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE [UBICAZIONI.* FROM [UBICAZIONI];"
Set tabella = db.OpenRecordset("UBICAZIONI", dbOpenDynaset)
Set c1 = tabella.Fields("CODICE")
Set c2 = tabella.Fields("UBICAZIONE")
Set c3 = tabella.Fields("QT")
Set c4 = tabella.Fields("N UBI")
For X = 1 To C
    If CODE(X) <> CODE(X - 1) Then
        TE(X) = AREA(X)
        CA(X) = QT(X)
        N = 1
    Else
        TE(X) = TE(X - 1) + "; " + AREA(X)
        CA(X) = CA(X - 1) + QT(X)
        N = N + 1
    End If
    If CODE(X) <> CODE(X + 1) Then
        tabella.AddNew
        c1 = CODE(X)
        c2 = TE(X)
        c3 = CA(X)
        c4 = N
        tabella.Update
    End If
Next X
tabella.Close
db.Close
End Function

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Articoli collegati

Allocazione della merce con odoo

Ubicare la merce in magazzino è un requisito fondamentale per la corretta gestione delle attività di prelievo. Esistono diverse metodologie per gestire l’ubicazione della merce

leggi

Mappa di magazzino con odoo

In Odoo, una posizione può essere definita come un luogo specifico all’interno del nostro magazzino o un magazzino esterno che non possediamo. Inoltre può essere

leggi

Ricerca dell’ubicazione ottima

Una scelta corretta ed oculata dell’ubicazione dove posizionare e prelevare la merce determina una buona gestione del magazzino con conseguente risparmio di tempo e risorse.

leggi

— il nuovo servizio per i piccoli commercianti —

Bottega Digitale

[]