Nel caso l’azienda gestisca il conto lavoro può verificarsi il caso che vi siano dei codici mancanti che impediscano di completare la lavorazione, questa situazione si genera dopo il primo invio di materiale presso il terzista nel caso in cui il materiale necessario per l’ordine non sia stato tutto inviato.
Per individuare i codici mancanti bisogna individuare gli ordini iniziati e successivamente individuare i codici che non sono stati spediti. Consideriamo la tabella con gli ordini di lavorazione: ORDINE, DEP, CODICE PADRE, CODICE FIGLIO, QT ORD, QT SPE.
Query situazione ordini
SELECT [ORDINI CL].ORDINE, SUM(IIf([QT SPE]>0,1,0)) AS INVIATO, COUNT([ORDINI CL].[CODICE FGLIO]) AS CODICI FROM [ORDINI CL] GROUP BY [ORDINI CL].ORDINE; |
SELECT [ORDINI CL].ORDINE, Sum(IIf([QT SPE]>0,1,0)) AS INVIATO, Count([ORDINI CL].[CODICE FGLIO]) AS CODICI FROM [ORDINI CL] GROUP BY [ORDINI CL].ORDINE;
Query ordini iniziati
SELECT [Situazione ordini].ORDINE, [IVIATI]/[CODICI] AS [% codici inviati] FROM [Situazione ordini] WHERE ((([IVIATI]/[CODICI])>0)); |
SELECT [Situazione ordini].ORDINE, [IVIATI]/[CODICI] AS [% codici inviati] FROM [Situazione ordini] WHERE ((([IVIATI]/[CODICI])>0));
A questo punto individuiamo i mancanti
SELECT [ORDINI CL].ORDINE, [ORDINI CL].DEP, [ORDINI CL].[CODICE FGLIO], [ORDINI CL].[QT ORD], [ORDINI CL].[QT SPE], [ORDINI CL]![QT ORD]-[ORDINI CL]![QT ORD] AS [QT MAN] FROM [Ordini iniziati] INNER JOIN [ORDINI CL] ON [Ordini iniziati].ORDINE = [ORDINI CL].ORDINE WHERE ((([ORDINI CL]![QT ORD]-[ORDINI CL]![QT ORD])>0)); |
SELECT [ORDINI CL].ORDINE, [ORDINI CL].DEP, [ORDINI CL].[CODICE FGLIO], [ORDINI CL].[QT ORD], [ORDINI CL].[QT SPE], [ORDINI CL]![QT ORD]-[ORDINI CL]![QT ORD] AS [QT MAN] FROM [Ordini iniziati] INNER JOIN [ORDINI CL] ON [Ordini iniziati].ORDINE = [ORDINI CL].ORDINE WHERE ((([ORDINI CL]![QT ORD]-[ORDINI CL]![QT ORD])>0));
Ora passiamo ad analizzare i mancanti
SELECT Mancanti.[CODICE FGLIO], SUM(Mancanti.[QT ORD]) AS QO, SUM(Mancanti.[QT MAN]) AS QM, COUNT(Mancanti.DEP) AS ND FROM Mancanti GROUP BY Mancanti.[CODICE FGLIO]; |
SELECT Mancanti.[CODICE FGLIO], Sum(Mancanti.[QT ORD]) AS QO, Sum(Mancanti.[QT MAN]) AS QM, Count(Mancanti.DEP) AS ND FROM Mancanti GROUP BY Mancanti.[CODICE FGLIO];
A questo punto dividiamo la QT MANCANTE per la QT ORDINATA ed avremo un tabella con i codici mancanti ordinati per percentuale di QT MANCANTE e numero di depositi su cui manca a questo punto confrontiamo la giacenza interna con la qt mancante e nel caso non sia sufficiente a coprire tutto invieremo il materiale a quei depositi che hanno la percentuale più bassa, mentre se abbiamo giacenza zero solleciteremo ordini di acquisto per quei codici che hanno percentuale di mancanza più alta.