8
0
2024-01-24 16:42:38 +01:00

97 lines
3.6 KiB
Plaintext

' UpdateArticleRow(RowNumber: Integer)
' ----------------------------------------------------------------------------
' Trägt die gescannte Menge eines Artikel in das Grid ein
' - Ändert die Farbe, abhängig von Gesamtmenge und Gescannte Menge
' - Überprüft, ob der Artikel in der Gescannten Menge auf Lager liegt
'
' Returns: UpdateArticleRow : Boolean
' ----------------------------------------------------------------------------
' Copyright (c) 2021 by Digital Data GmbH
'
' Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
' Tel.: 0641/202360 • E-Mail: info-flow(at)digitaldata.works
' ----------------------------------------------------------------------------
' Creation Date / Author: 01.09.2021 / JJ
' Version Date / Editor: 25.03.2021 / MP
' Version Number: 4.0.0.0
' Aktualisiert den Wert COLUMN_MACRO_ARTICLE_SCAN_FLAG für den aktuellen
' MacroIndex
Sub UpdateMacroArticleRow(MacroArticleLineNumber)
For MacroArrayIndex = 0 To UBound(MACRO_ARTICLE_LIST): Do
If MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_LINE_NUMBER, MacroArrayIndex) = MacroArticleLineNumber Then
MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_SCAN_FLAG, MacroArrayIndex) = True
Exit For
End If
Loop While False: Next
End Sub
Function UpdateArticleRow(RowNumber)
Set mywin = CWLStart.CurrentModule.Windows.Item(WINDOW_ID)
Set Grid = mywin.Controls.Item(GRID_ID).Grid
Set amountBox = mywin.Controls.Item(AMOUNT_INPUT)
' Bereits gescannte, Gesamt und Anzahl zu Scannen auslesen
ArticleNumber = Grid.GetCellValue(RowNumber, COLUMN_ARTICLENUMBER)
Total = Cint(Grid.GetCellValue(RowNumber, COLUMN_TOTAL))
Scanned = Cint(Grid.GetCellValue(RowNumber, COLUMN_SCANNED))
ScannedAmount = Cint(amountBox.Contents)
MacroFlag = Cint(Grid.GetCellValue(RowNumber, COLUMN_MACRO_FLAG))
MacroArticleLineNumber = Cint(Grid.GetCellValue(RowNumber, COLUMN_MACRO_LINE_NUMBER))
' Standard Rückgabewert setzen
UpdateArticleRow = True
' Aktuellen Lagerstand abfragen
StockedAmount = GetWinLineStockedAmount(ArticleNumber, False)
' Neue bereits gescannte berechnen
NewScanned = Scanned + ScannedAmount
If DEBUG_ON = True Then
AddDebugLine "Total " & Total
AddDebugLine "Scanned: " & Scanned
AddDebugLine "NewScanned: " & NewScanned
AddDebugLine "StockedAmount: " & StockedAmount
ShowDebugBox "UpdateArticleRow"
End If
' Zeilenfarbe anpassen:
' GRÜN: Komplett gescannt
' GELB: Teilweise gescannt
If NewScanned > StockedAmount Then
Message = ""
Message = Message & "Der Artikel ist nur in der Menge " & StockedAmount & " vorhanden." & vbNewline
Message = Message & "Der Scan wird abgebrochen!"
Msgbox Message, vbExclamation, DEFAULT_TITLE
Elseif NewScanned = Total Then
If MacroFlag = 2 Then
Grid.SetLineColor RowNumber, COLOR_PACKAGE_GREEN
UpdateMacroArticleRow(MacroArticleLineNumber)
ReduceSubMacroCounterInDuplList ArticleNumber, MacroArticleLineNumber
Else
Grid.SetLineColor RowNumber, COLOR_GREEN
End If
Grid.SetCellValue RowNumber, COLUMN_SCANNED, NewScanned
ReduceCounterInDuplList ArticleNumber, MacroFlag
Elseif NewScanned < Total Then
If MacroFlag = 2 Then
Grid.SetLineColor RowNumber, COLOR_PACKAGE_YELLOW
UpdateMacroArticleRow(MacroArticleLineNumber)
Else
Grid.SetLineColor RowNumber, COLOR_YELLOW
End If
Grid.SetCellValue RowNumber, COLUMN_SCANNED, NewScanned
Else
Message = ""
Message = Message & "Die eingegebene Menge überschreitet die Gesamtanzahl oder" & vbNewline
Message = Message & "der Artikel wurde bereits vollständig gescannt!"
Msgbox Message, vbExclamation, DEFAULT_TITLE
UpdateArticleRow = False
End If
End Function