Una volta emesso l’ordine al fornitore potrebbe rendersi necessario sollecitare la consegna di codici che risultano essere scaduti o che siano divenuti urgenti per la produzione. Il punto di partenza è la tabella con gli ordini ancora inevasi che va incrociata con la tabella degli impegni per individuare le urgenze.
Per determinare le urgenze consideriamo la seguente tabella:
CODICE, DATA IMPEGNO,QT, GIACENZA, IMP CUM
L’impegno cumulato lo calcoliamo via codice in questo modo:
Function GIAC() Dim DB As DAO.Database Dim tabella As DAO.Recordset Dim campo As DAO.Field Dim code(900000) DBEngine.SetOption dbMaxLocksPerFile, 9000000 'campi da modificare CODICE = "CODICE" TABCL = "Impegni" GIACE = "IMP CUM" MOVI = "QT" 'procedura calcolo giacenza Set DB = CurrentDb Set tabella = DB.OpenRecordset(TABCL, dbOpenDynaset) Set campo = tabella.Fields(GIACE) Do Until tabella.EOF c = c + 1 code(c) = tabella.Fields(CODICE) m = tabella.Fields(MOVI) If code(c) <> code(c - 1) Then GIAC = m Else GIAC = GIAC + m tabella.Edit campo = GIAC tabella.Update tabella.MoveNext Loop tabella.Close DB.Close End Function |
Function GIAC() Dim DB As DAO.Database Dim tabella As DAO.Recordset Dim campo As DAO.Field Dim code(900000) DBEngine.SetOption dbMaxLocksPerFile, 9000000 'campi da modificare CODICE = "CODICE" TABCL = "Impegni" GIACE = "IMP CUM" MOVI = "QT" 'procedura calcolo giacenza Set DB = CurrentDb Set tabella = DB.OpenRecordset(TABCL, dbOpenDynaset) Set campo = tabella.Fields(GIACE) Do Until tabella.EOF c = c + 1 code(c) = tabella.Fields(CODICE) m = tabella.Fields(MOVI) If code(c) <> code(c - 1) Then GIAC = m Else GIAC = GIAC + m tabella.Edit campo = GIAC tabella.Update tabella.MoveNext Loop tabella.Close DB.Close End Function
A questo punto incrociamo questa tabella con le giacenze per determinare la disponibilità:
SELECT [impegni].CODICE, [IMP CUM].DATA, [impegni].[IMP CUM], Giacenze.GIAC, [GIAC]-[IC] AS DISP, IIf([DISP]<0,"N","P") AS TD FROM [impegni] INNER JOIN Giacenze ON [impegni].CODICE = Giacenze.CODICE; |
SELECT [impegni].CODICE, [IMP CUM].DATA, [impegni].[IMP CUM], Giacenze.GIAC, [GIAC]-[IC] AS DISP, IIf([DISP]<0,"N","P") AS TD FROM [impegni] INNER JOIN Giacenze ON [impegni].CODICE = Giacenze.CODICE;
Ora possiamo calcolare la data in cui si verifica la rottura di stock
SELECT [Disponibilità nel tempo].CODICE, MIN([Disponibilità nel tempo].DATA) AS DN FROM [Disponibilità nel tempo] WHERE ((([Disponibilità nel tempo].TD)="N")) GROUP BY [Disponibilità nel tempo].CODICE; |
SELECT [Disponibilità nel tempo].CODICE, Min([Disponibilità nel tempo].DATA) AS DN FROM [Disponibilità nel tempo] WHERE ((([Disponibilità nel tempo].TD)="N")) GROUP BY [Disponibilità nel tempo].CODICE;
A questo punto definiremo come codici da sollecitare quelli che risultano essere scaduti ed hanno una data di rottura di stock minore o uguale ad una settimana dalla data odierna.
2 commenti su “Sollecito fornitori”
sito molto interessante
Ciao e grazie, volevo chiederti quale sezione del sito ritieni più interessante ?
Gian Paolo