Inserimento di un carico:
' 8) Controllare che non ci siano già carichi con stesso mittente, stesso terzista destinatario, stesso numero di bolla e stesso articolo (dello stesso anno altrimenti stesso numero di bolla e stesso articolo sarebbe possibile!!)
' 9) Controllare che non ci siano già carichi con stesso mittente, stesso terzista destinatario, stesso numero di bolla ma data diversa (dello stesso anno altrimenti stesso numero di bolla sarebbe possibile!!)
' 10) Controllare che non ci siano già carichi dello stesso articolo sul magazzino in date successive (sfalserebbe lo scarico a partire dal carico più vecchio)
|
' 8) ------------------------------------------------------------------------------------
If MessaggioErrore = "" And GS_TipoScarico.Value = 1 Then
' Riempi il recordset con i sottocomponenti presenti in distinta base relativi al codice scelto
Set rsSDB = CurrentDb.OpenRecordset("SELECT ID, CODARTICOLO, CODCOMPONENTE, QT FROM DistintaBase WHERE CODARTICOLO = '" & GS_CodiceArticolo.Value & "'", dbOpenDynaset)
'Se in distinta base esiste l'articolo scelto procedi altrimenti segnala che l'articolo non ha distinta base
If rsSDB.RecordCount <> 0 Then
rsSDB.MoveFirst
' Per ogni riga finchè non si arriva alla fine del recordset (ossia per ogni componente della distinta)
Do Until rsSDB.EOF
' Crea una array di valori da scaricare
ReDim Preserve Componenti(i) 'aggiunge un elemento alla matrice
ReDim Preserve ScaricoQtComp(i) 'aggiunge un elemento alla matrice
ReDim Preserve QtDaScaricare(i) 'aggiunge un elemento alla matrice
ReDim Preserve SommaQtArticolo(i) 'aggiunge un elemento alla matrice
Componenti(i) = rsSDB("CODCOMPONENTE")
' 8.1) ------------------------------------------------------------------------------------
' Se il codice del sottocomponente è nullo o vuoto segnala che la distinta base non è corretta
If (IsNull(Componenti(i)) Or (Componenti(i) = "")) Then
DIBAError = "SI"
End If
' Se la quantità del sottocomponente è nulla o vuota ponila a 0 altrimenti ponila al valore presente in distinta
If (IsNull(rsSDB("QT")) Or (rsSDB("QT") = "")) Then
ScaricoQtComp(i) = 0
Else
ScaricoQtComp(i) = rsSDB("QT")
End If
' Calcola la quantità da scaricare moltiplicando la quantità in bolla e la quantità di sottocomponente necessario per ogni unità
QtDaScaricare(i) = GS_Quantità * ScaricoQtComp(i)
' 8.2) ------------------------------------------------------------------------------------
' Verifica che non siano presenti altri scarichi dello stesso articolo sullo stesso magazzino con data successiva a quella scelta altrimenti potrebbe causare giacenze negative
Set rsSCQ = CurrentDb.OpenRecordset("SELECT CODMAGAZZINO, ARTICOLO FROM Movimenti WHERE ARTICOLO = '" & Componenti(i) & "' AND DATA > #" & Format(GS_Data.Value, "mm/dd/yyyy") & "# AND CODMAGAZZINO = '" & GS_CodMag.Value & "' AND TIPO = 'SCARICO'", dbOpenDynaset)
' Nel caso in cui siano presenti segnala l'errore
If rsSCQ.RecordCount <> 0 Then
MessaggioErrore = MessaggioErrore & "Su magazzino " & GS_CodMag.Value & " ci sono scarichi di " & Componenti(i) & " in date successive al " & GS_Data.Value & vbCrLf
Else
' 8.3) ------------------------------------------------------------------------------------
' Calcola le giacenze presenti raggruppate per codice magazzino e articolo con data inferiore a quella inserita
Set rsSCQ = CurrentDb.OpenRecordset("SELECT CODMAGAZZINO, ARTICOLO, SUM(MOVIMENTO) as SOMMA FROM Movimenti WHERE (DATA <= #" & Format(GS_Data.Value, "mm/dd/yyyy") & "#) GROUP BY CODMAGAZZINO, ARTICOLO HAVING (ARTICOLO = '" & Componenti(i) & "' AND CODMAGAZZINO = '" & GS_CodMag.Value & "')", dbOpenDynaset)
' Se esistono giacenze del codice nel magazzino
If rsSCQ.RecordCount <> 0 Then
SommaQtArticolo(i) = rsSCQ("SOMMA")
' Verifica che la quantità da scaricare non sia maggiore della quantità presente in magazzino altrimenti segnala l'errore
If QtDaScaricare(i) > SommaQtArticolo(i) Then
MessaggioErrore = MessaggioErrore & "Su magazzino " & GS_CodMag.Value & " ci sono " & SommaQtArticolo(i) & " " & Componenti(i) & " non è possibile scaricarne " & QtDaScaricare(i) & vbCrLf
End If
Else
' Se il codice da scaricare non è presente nel magazzino segnala l'errore
MessaggioErrore = MessaggioErrore & "Su magazzino " & GS_CodMag.Value & " non c'è alcuna giacenza di " & Componenti(i) & vbCrLf
End If
End If
' Procedi con il record successivo della distinta base
i = i + 1
rsSDB.MoveNext
Loop
Else
MessaggioErrore = "Si è scelto di scaricare tramite distinta base; ma il codice scelto non ha sottocomponenti!"
End If |