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

478 lines
20 KiB
Plaintext

' LoadOrder(OrderNumber : String)
' ----------------------------------------------------------------------------
' Sucht Belegzeilen zur angegebenen Belegnummer
' - Filtert Artikel der konf. Artikelgruppe (EXCLUDED_ARTICLEGROUPS) aus
' - Lädt Ergebnisse in eine Tabelle auf dem Formular
' - Erzeugt N Zeilen für Seriennummer-Artikel der Menge N
'
' Returns: LoadOrder : 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.2020 / JJ
' Version Date / Editor: 22.03.2022 / MP
' Version Number: 4.0.0.0
Function GetSQL(OrderNumber)
Dim SQL : SQL = ""
SQL = SQL & " SELECT t2.*, t3.c037 c2137, t3.c079 c2179, t3." & ART_REGEX_FLDBEZ & " c21222"
SQL = SQL & " FROM t025 t (NOLOCK)"
SQL = SQL & " JOIN t026 t2 (NOLOCK) ON t.c021 = t2.c044 AND t.c022 = t2.c045"
SQL = SQL & " LEFT OUTER JOIN v021 t3 (NOLOCK) ON t2.c003 = t3.c002 AND t2.mesoyear = t3.mesoyear"
SQL = SQL & " WHERE t.c044 = '"& OrderNumber &"' AND t.c045 IS NULL"
SQL = SQL & " AND (t2.c099 = 0)"
'SQL = SQL & " AND (t2.c005 - t2.c016) > 0 AND (t2.c099 = 0)" --> wegen späten Ausprägungen brauchen wir alle Zeilen
' Nach Mandant und Wirtschaftsjahr filtern
OrderWhere = SQLQuery_OrderWhere
OrderWhere = Replace(OrderWhere, "mesocomp", "t2.mesocomp")
OrderWhere = Replace(OrderWhere, "mesoyear", "t2.mesoyear")
SQL = SQL & OrderWhere
' Nach Zeilennummer sortieren
SQL = SQL & " ORDER BY t2.c000"
GetSQL = SQL
End Function
Function GetMacroArticleCount(MacroName)
Dim CountResult : CountResult = 0
If Len(MacroName) > 0 Then
Set Conn = CWLStart.Connection
Dim SQL : SQL = ""
SQL = SQL & " SELECT count(*) c001"
SQL = SQL & " FROM t326 (NOLOCK) "
SQL = SQL & " WHERE c002 like '"& MacroName &"%'"
SQL = SQL & SQLQuery_BasicWhere
Set Result = Conn.Select(SQL)
CountResult = result.Value("c001")
End If
GetMacroArticleCount = CountResult
End Function
Function FillOrderArticleData(OrderNumber)
Set Conn = CWLStart.Connection
Err.Clear
SQL = GetSQL(OrderNumber)
Set Result = Conn.Select(SQL)
Set CountResult = Result
If DEBUG_ON = True Then
MsgBox "SQL:" & SQL, vbOkonly, DEBUG_TITLE
AddDebugLine "Searching For Order by OrderId (Mid Table).." & vbNewline & vbNewline
AddDebugLine "Result Columns: " & Result & vbNewline
AddDebugLine "Result Rows: " & Result.RowCount & vbNewline
AddDebugLine "SQL: " & SQL
ShowDebugBox "LoadOrder"
End If
If Result < 0 Then
If err <> 0 Then
Msgbox "Fehler bei Abfrage:" & vbNewline & err.description, vbExclamation, DEFAULT_TITLE & " - LoadOrder"
Exit Function
Else
Msgbox "Abfrage lieferte keine Ergebnisse.", vbExclamation, DEFAULT_TITLE & " - LoadOrder"
Exit Function
End If
End If
' Belegung globaler Variablen für späteren Gebrauch
ORDER_ACCOUNT_NUMBER = Result.Value("c044")
ORDER_RUNNING_NUMBER = Result.Value("c045")
' Makro-Gruppenwechsel
Dim macroSubArticleCounter : macroSubArticleCounter = 0
Dim macroFlagForSNArticles : macroFlagForSNArticles = 0
Dim macroName : macroName = ""
Dim macroLineNumber : macroLineNumber = 0
Dim macroMaxLineNumber : macroMaxLineNumber = 0 ' Größte Zeilennummer eines Macros
Dim IsLateShape : IsLateShape = 0
OrderArrayIndex = 0
MacroArrayIndex = 0
' Doppelte Do Schleife, um ein "Continue While" zu ermöglichen
Do: Do
macroFlagForSNArticles = 0
AddTwoDimArrayRow ORDER_ARTICLE_DATA
ORDER_ARTICLE_DATA(INDEX_LINE_NUMBER, OrderArrayIndex) = result.Value("c078")
ORDER_ARTICLE_DATA(INDEX_ARTICLE_NUMBER, OrderArrayIndex) = result.Value("c003")
ORDER_ARTICLE_DATA(INDEX_MAIN_ARTICLE_NUMBER, OrderArrayIndex) = result.Value("c011")
ORDER_ARTICLE_DATA(INDEX_ARTICLE_GROUP, OrderArrayIndex) = result.Value("c012")
ORDER_ARTICLE_DATA(INDEX_DATA_TYPE, OrderArrayIndex) = result.Value("c042")
ORDER_ARTICLE_DATA(INDEX_SALES_MACRO, OrderArrayIndex) = result.Value("c2137")
ORDER_ARTICLE_DATA(INDEX_ARTICLE_TYPE, OrderArrayIndex) = result.Value("c2179")
ORDER_ARTICLE_DATA(INDEX_DESCRIPTION, OrderArrayIndex) = result.Value("c004")
ORDER_ARTICLE_DATA(INDEX_AMOUNT_ORDERED, OrderArrayIndex) = result.Value("c005")
ORDER_ARTICLE_DATA(INDEX_AMOUNT_DELIVERED, OrderArrayIndex) = result.Value("c016")
ORDER_ARTICLE_DATA(INDEX_AMOUNT_REMAINING, OrderArrayIndex) = result.Value("c099")
ORDER_ARTICLE_DATA(INDEX_AMOUNT_SCANNED, OrderArrayIndex) = 0
ORDER_ARTICLE_DATA(INDEX_SERIAL_NUMBER, OrderArrayIndex) = ""
ORDER_ARTICLE_DATA(INDEX_CHARGE_FLAG, OrderArrayIndex) = result.Value("c055")
ORDER_ARTICLE_DATA(INDEX_IS_SERIAL_NUMBER, OrderArrayIndex) = 0
ORDER_ARTICLE_DATA(INDEX_ARTICLE_REGEX, OrderArrayIndex) = result.Value("c21222")
ORDER_ARTICLE_DATA(INDEX_IS_LATE_SHAPE, OrderArrayIndex) = 0
ORDER_ARTICLE_DATA(INDEX_IS_VISIBLE, OrderArrayIndex) = False
ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex) = 0
ORDER_ARTICLE_DATA(INDEX_MACRO_LINE_NUMBER, OrderArrayIndex) = 0
ORDER_ARTICLE_DATA(INDEX_PRICE_VK_EINZEL, OrderArrayIndex) = result.Value("c007")
ORDER_ARTICLE_DATA(INDEX_IS_OPEN, OrderArrayIndex) = False
' Alle Belegzeilen, die schon geliefert wurden, werden von der Restlichen Logik nicht berührt
If (ORDER_ARTICLE_DATA(INDEX_AMOUNT_ORDERED, OrderArrayIndex) - ORDER_ARTICLE_DATA(INDEX_AMOUNT_DELIVERED, OrderArrayIndex)) <= 0 Then
' Vorzeitiger Abbruch, trotzdem den Zähler erhöhen
OrderArrayIndex = OrderArrayIndex + 1
Exit Do
Else
ORDER_ARTICLE_DATA(INDEX_IS_OPEN, OrderArrayIndex) = True
End If
If (Len(ORDER_ARTICLE_DATA(INDEX_SALES_MACRO, OrderArrayIndex)) > 0) Then
' Hier haben wir den Makro-Hauptartikel gefunden
ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex) = 1
AddTwoDimArrayRow MACRO_ARTICLE_LIST
MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_LINE_NUMBER, MacroArrayIndex) = ORDER_ARTICLE_DATA(INDEX_LINE_NUMBER, OrderArrayIndex)
MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_NUMBER, MacroArrayIndex) = ORDER_ARTICLE_DATA(INDEX_ARTICLE_NUMBER, OrderArrayIndex)
MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_DESCRIPTION, MacroArrayIndex) = ORDER_ARTICLE_DATA(INDEX_DESCRIPTION, OrderArrayIndex)
MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_AMOUNT_REMAINING, MacroArrayIndex) = ORDER_ARTICLE_DATA(INDEX_AMOUNT_ORDERED, OrderArrayIndex) - ORDER_ARTICLE_DATA(INDEX_AMOUNT_DELIVERED, OrderArrayIndex)
MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_AMOUNT_COMPLETED, MacroArrayIndex) = 0
MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_COMPLETE, MacroArrayIndex) = True 'Wird umgesetzt, falls unvollständig
MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_GRID_LINE_INDEX, MacroArrayIndex) = 0
MACRO_ARTICLE_LIST(COLUMN_MACRO_ARTICLE_SCAN_FLAG, MacroArrayIndex) = False
MacroArrayIndex = MacroArrayIndex + 1
macroLineNumber = ORDER_ARTICLE_DATA(INDEX_LINE_NUMBER, OrderArrayIndex)
macroName = ORDER_ARTICLE_DATA(INDEX_SALES_MACRO, OrderArrayIndex)
macroSubArticleCounter = GetMacroArticleCount(ORDER_ARTICLE_DATA(INDEX_SALES_MACRO, OrderArrayIndex)) ' Problematisch bei Teillieferungen
macroMaxLineNumber = macroLineNumber + macroSubArticleCounter
End If
If (ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex) = 0 And _
macroSubArticleCounter > 0 And _
ORDER_ARTICLE_DATA(INDEX_LINE_NUMBER, OrderArrayIndex) <= macroMaxLineNumber) Then
' Dies muss ein Sub-Makro-Hauptartikel sein
ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex) = 2
' Makro Name für Sub-Makro-Artikel speichern
ORDER_ARTICLE_DATA(INDEX_SALES_MACRO, OrderArrayIndex) = macroName
' Makro Zeilennummer für Sub-Makro-Artikel speichern
ORDER_ARTICLE_DATA(INDEX_MACRO_LINE_NUMBER, OrderArrayIndex) = macroLineNumber
' Nachfolgende S/N Artikel bekommen das gleiche Flag
macroFlagForSNArticles = ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex)
macroSubArticleCounter = macroSubArticleCounter - 1
ElseIf (macroSubArticleCounter = 0 OR _
ORDER_ARTICLE_DATA(INDEX_LINE_NUMBER, OrderArrayIndex) > macroMaxLineNumber) Then
macroLineNumber = 0
macroMaxLineNumber = 0
End if
If CheckArticleGroupIsRelevant(ORDER_ARTICLE_DATA(INDEX_ARTICLE_GROUP, OrderArrayIndex)) = False Then
ORDER_ARTICLE_DATA(INDEX_AMOUNT_SCANNED, OrderArrayIndex) = ORDER_ARTICLE_DATA(INDEX_AMOUNT_ORDERED, OrderArrayIndex) - ORDER_ARTICLE_DATA(INDEX_AMOUNT_DELIVERED, OrderArrayIndex)
End If
' Alle Nicht-Artikel (z.B Texte) immer mit Menge 0
If ORDER_ARTICLE_DATA(INDEX_DATA_TYPE, OrderArrayIndex) <> 1 Then
ORDER_ARTICLE_DATA(INDEX_AMOUNT_SCANNED, OrderArrayIndex) = 0
ORDER_ARTICLE_DATA(INDEX_AMOUNT_ORDERED, OrderArrayIndex) = 0
End If
' Sichtbar Ja / Nein?
If (ORDER_ARTICLE_DATA(INDEX_DATA_TYPE, OrderArrayIndex) = 1 And _
ORDER_ARTICLE_DATA(INDEX_CHARGE_FLAG, OrderArrayIndex) <> 12 And _
CheckArticleGroupIsRelevant(ORDER_ARTICLE_DATA(INDEX_ARTICLE_GROUP, OrderArrayIndex)) = True) Then
ORDER_ARTICLE_DATA(INDEX_IS_VISIBLE, OrderArrayIndex) = True
End If
' Wenn Option Alle Artikel Sichtbar aktiv ist
If (OPTION_ALL_ARTICLES > 0 And _
ORDER_ARTICLE_DATA(INDEX_IS_VISIBLE, OrderArrayIndex) = False) Then
ORDER_ARTICLE_DATA(INDEX_IS_VISIBLE, OrderArrayIndex) = True
End If
If (ORDER_ARTICLE_DATA(INDEX_CHARGE_FLAG, OrderArrayIndex) = 2) Then
ORDER_ARTICLE_DATA(INDEX_IS_SERIAL_NUMBER, OrderArrayIndex) = 1
End If
If (Len(ORDER_ARTICLE_DATA(INDEX_ARTICLE_REGEX, OrderArrayIndex)) > 0) Then
ORDER_ARTICLE_DATA(INDEX_IS_LATE_SHAPE, OrderArrayIndex) = 1
IsLateShape = 1
Else
ORDER_ARTICLE_DATA(INDEX_IS_LATE_SHAPE, OrderArrayIndex) = 0
IsLateShape = 0
End If
If (Len(Result.Value("c067")) > 0) Then
' Belegung hier, weil Text-Artikel keine Belegnummer enthalten
ORDER_DOCUMENT_NUMBER = Result.Value("c067")
End If
' Duplikate scanbarer Artikel ermitteln
If (ORDER_ARTICLE_DATA(INDEX_DATA_TYPE, OrderArrayIndex) = 1 And _
ORDER_ARTICLE_DATA(INDEX_CHARGE_FLAG, OrderArrayIndex) <> 12 And _
CheckArticleGroupIsRelevant(ORDER_ARTICLE_DATA(INDEX_ARTICLE_GROUP, OrderArrayIndex)) = True And _
ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex) <> 1) Then
AddArticleNumberToDuplList ORDER_ARTICLE_DATA(INDEX_ARTICLE_NUMBER, OrderArrayIndex), _
ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex), _
ORDER_ARTICLE_DATA(INDEX_CHARGE_FLAG, OrderArrayIndex)
End If
Dim AmountOrdered, AmountDelivered, ChargeFlag
ChargeFlag = CInt(result.Value("c055"))
AmountOrdered = CInt(result.Value("c005"))
AmountDelivered = CInt(result.Value("c016"))
Amount = AmountOrdered - AmountDelivered
If ChargeFlag = 2 Then
'Dim PseudoArray()
' Pseudonummern reservieren, wenn der Artikel ein Spätauspräger ist
If IsLateShape = 1 Then
PseudoArray = AllocatePseudoSerialNumbers(OrderNumber, result.Value("c003"), Amount)
If Len(PseudoArray(0)) <= 0 Then
Msgbox "Auftrag kann nicht bearbeitet werden!", vbExclamation, DEFAULT_TITLE & " - LoadOrder"
Exit Function
End If
' Erste Zeile für SN Artikel mit erster Pseudo SN füllen
ORDER_ARTICLE_DATA(INDEX_PSEUDO_SN, OrderArrayIndex) = PseudoArray(0)
End If
' Amount wird um 1 reduziert, da für den Artikel bereits
' eine Zeile aus der Schleife oben existiert
For Index = 1 To Amount - 1
AddTwoDimArrayRow ORDER_ARTICLE_DATA
OrderArrayIndex = OrderArrayIndex + 1
ORDER_ARTICLE_DATA(INDEX_LINE_NUMBER, OrderArrayIndex) = result.Value("c078")
ORDER_ARTICLE_DATA(INDEX_ARTICLE_NUMBER, OrderArrayIndex) = result.Value("c003")
ORDER_ARTICLE_DATA(INDEX_MAIN_ARTICLE_NUMBER, OrderArrayIndex) = result.Value("c011")
ORDER_ARTICLE_DATA(INDEX_ARTICLE_GROUP, OrderArrayIndex) = result.Value("c012")
ORDER_ARTICLE_DATA(INDEX_DATA_TYPE, OrderArrayIndex) = result.Value("c042")
ORDER_ARTICLE_DATA(INDEX_SALES_MACRO, OrderArrayIndex) = macroName
ORDER_ARTICLE_DATA(INDEX_ARTICLE_TYPE, OrderArrayIndex) = result.Value("c2179")
ORDER_ARTICLE_DATA(INDEX_DESCRIPTION, OrderArrayIndex) = result.Value("c004")
ORDER_ARTICLE_DATA(INDEX_AMOUNT_ORDERED, OrderArrayIndex) = result.Value("c005")
ORDER_ARTICLE_DATA(INDEX_AMOUNT_DELIVERED, OrderArrayIndex) = result.Value("c016")
ORDER_ARTICLE_DATA(INDEX_AMOUNT_REMAINING, OrderArrayIndex) = result.Value("c099")
ORDER_ARTICLE_DATA(INDEX_AMOUNT_SCANNED, OrderArrayIndex) = 0
ORDER_ARTICLE_DATA(INDEX_SERIAL_NUMBER, OrderArrayIndex) = ""
ORDER_ARTICLE_DATA(INDEX_CHARGE_FLAG, OrderArrayIndex) = result.Value("c055")
ORDER_ARTICLE_DATA(INDEX_IS_SERIAL_NUMBER, OrderArrayIndex) = 1
ORDER_ARTICLE_DATA(INDEX_ARTICLE_REGEX, OrderArrayIndex) = result.Value("c21222")
ORDER_ARTICLE_DATA(INDEX_IS_LATE_SHAPE, OrderArrayIndex) = IsLateShape
ORDER_ARTICLE_DATA(INDEX_IS_VISIBLE, OrderArrayIndex) = True
ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex) = macroFlagForSNArticles
ORDER_ARTICLE_DATA(INDEX_MACRO_LINE_NUMBER, OrderArrayIndex) = macroLineNumber
ORDER_ARTICLE_DATA(INDEX_PRICE_VK_EINZEL, OrderArrayIndex) = result.Value("c007")
ORDER_ARTICLE_DATA(INDEX_IS_OPEN, OrderArrayIndex) = True
If IsLateShape = 1 Then
ORDER_ARTICLE_DATA(INDEX_PSEUDO_SN, OrderArrayIndex) = PseudoArray(Index)
End If
' Wir benötigen die korrekte Anzahl der Zeilen eines Artikels
AddArticleNumberToDuplList ORDER_ARTICLE_DATA(INDEX_ARTICLE_NUMBER, OrderArrayIndex), _
ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex), _
ORDER_ARTICLE_DATA(INDEX_CHARGE_FLAG, OrderArrayIndex)
Next
End If
OrderArrayIndex = OrderArrayIndex + 1
' Doppelte Do Schleife, um ein "Continue While" zu ermöglichen
Loop While False: Loop While Result.NextRecord = True
' Enthält die Anzahl der Macro-Hauptartikel
MACRO_ARTICLE_COUNTER = MacroArrayIndex
FillOrderArticleData = OrderArrayIndex
End Function
Function LoadOrder(OrderNumber)
Set mywin = CWLStart.CurrentModule.Windows.Item(WINDOW_ID)
Set Grid = mywin.Controls.Item(GRID_ID).Grid
ASK_FOR_DELNOTE = False
If (FillOrderArticleData(OrderNumber) <= 0) Then
LoadOrder = False
Exit Function
ElseIf (ExistVisibleRows() = False) Then
' Es gibt keine sichtbaren Zeilen, d.h. es gibt auch nix zu scannen.
' Da aber ein Lieferschein erzeugt werden kann, zeigen wir jetzt alles an,
' und fragen nach dem Laden ob der letzte LS direkt erstellt werden soll
ShowAllArticles()
ASK_FOR_DELNOTE = True
End If
Grid.InitUserGrid
Grid.Header
Grid.Clear(1002)
Grid.IsRedraw = False
' Zähler für Grid
' Wird immer hoch gezählt bei Grid.AddLine
GridLineCounter = 1
' Zähler für Datenstruktur
' Wird in JEDEM Durchlauf hochgezählt
OrderArrayIndex = 0
Do
' Speicher für benutzerdefinierte Felder im Grid
' (495,0) - Menge Gesamt
' (495,1) - Menge Gescannt
' (495,2) - Seriennummer
' (495,3) - Artikelnummer
' (495,4) - Bezeichnung
' (495,5) - Seriennummer Ja/Nein
' (495,6) - Spät Ausprägung Ja/Nein
' (495,7) - Interne Zeilennumemr
Dim AmountOrdered, AmountDelivered
AmountOrdered = Cint(ORDER_ARTICLE_DATA(INDEX_AMOUNT_ORDERED, OrderArrayIndex))
AmountDelivered = Cint(ORDER_ARTICLE_DATA(INDEX_AMOUNT_DELIVERED, OrderArrayIndex))
ProductGroup = Cint(ORDER_ARTICLE_DATA(INDEX_ARTICLE_GROUP, OrderArrayIndex))
Amount = AmountOrdered - AmountDelivered
SalesMacro = ORDER_ARTICLE_DATA(INDEX_SALES_MACRO, OrderArrayIndex)
ArticleType = ORDER_ARTICLE_DATA(INDEX_ARTICLE_TYPE, OrderArrayIndex)
ChargeFlag = Cint(ORDER_ARTICLE_DATA(INDEX_CHARGE_FLAG, OrderArrayIndex))
IsLateShape = Cint(ORDER_ARTICLE_DATA(INDEX_IS_LATE_SHAPE, OrderArrayIndex))
ArticleNumber = ORDER_ARTICLE_DATA(INDEX_ARTICLE_NUMBER, OrderArrayIndex)
Description = ORDER_ARTICLE_DATA(INDEX_DESCRIPTION, OrderArrayIndex)
IsVisible = ORDER_ARTICLE_DATA(INDEX_IS_VISIBLE, OrderArrayIndex)
LineNumber = CInt(ORDER_ARTICLE_DATA(INDEX_LINE_NUMBER, OrderArrayIndex))
IsSerialNumber = CInt(ORDER_ARTICLE_DATA(INDEX_IS_SERIAL_NUMBER, OrderArrayIndex))
MacroFlag = CInt(ORDER_ARTICLE_DATA(INDEX_MACRO_FLAG, OrderArrayIndex))
MacroLineNumber = CInt(ORDER_ARTICLE_DATA(INDEX_MACRO_LINE_NUMBER, OrderArrayIndex))
If (IsVisible = True) Then
If ChargeFlag = 2 Then
CWLCurrentWindow.ActiveWindow.Vars.Value(495,0) = 1
CWLCurrentWindow.ActiveWindow.Vars.Value(495,1) = 0
ResetableFlag = 1
If MacroFlag = 2 Then
LineColor = COLOR_PACKAGE_RED
AddMacroLineNumberTokensToDuplicateArticles ArticleNumber, MacroLineNumber
Else
LineColor = COLOR_RED
End If
' GridLine Index der Duplikate-Struktur hinzufügen
AddGridLineIndexToDuplicateArticles ArticleNumber, GridLineCounter
ElseIf (CheckArticleGroupIsRelevant(ORDER_ARTICLE_DATA(INDEX_ARTICLE_GROUP, OrderArrayIndex)) = False) OR AmountOrdered = 0 Then
CWLCurrentWindow.ActiveWindow.Vars.Value(495,0) = Amount
CWLCurrentWindow.ActiveWindow.Vars.Value(495,1) = Amount
ResetableFlag = 0
If MacroFlag = 2 Then
LineColor = COLOR_PACKAGE_GREEN
Else
LineColor = COLOR_GREEN
End If
ElseIf MacroFlag = 1 Then
CWLCurrentWindow.ActiveWindow.Vars.Value(495,0) = Amount
CWLCurrentWindow.ActiveWindow.Vars.Value(495,1) = 0
ResetableFlag = 0
LineColor = COLOR_BLUE
Else
CWLCurrentWindow.ActiveWindow.Vars.Value(495,0) = Amount
CWLCurrentWindow.ActiveWindow.Vars.Value(495,1) = 0
ResetableFlag = 1
If MacroFlag = 2 Then
LineColor = COLOR_PACKAGE_RED
AddMacroLineNumberTokensToDuplicateArticles ArticleNumber, MacroLineNumber
Else
LineColor = COLOR_RED
End If
' GridLine Index der Duplikate-Struktur hinzufügen
AddGridLineIndexToDuplicateArticles ArticleNumber, GridLineCounter
End If
CWLCurrentWindow.ActiveWindow.Vars.Value(495,2) = ""
CWLCurrentWindow.ActiveWindow.Vars.Value(495,3) = ArticleNumber
CWLCurrentWindow.ActiveWindow.Vars.Value(495,4) = Description
CWLCurrentWindow.ActiveWindow.Vars.Value(495,5) = IsSerialNumber
CWLCurrentWindow.ActiveWindow.Vars.Value(495,6) = IsLateShape
CWLCurrentWindow.ActiveWindow.Vars.Value(495,7) = LineNumber
CWLCurrentWindow.ActiveWindow.Vars.Value(495,8) = GridLineCounter
CWLCurrentWindow.ActiveWindow.Vars.Value(495,9) = ResetableFlag
CWLCurrentWindow.ActiveWindow.Vars.Value(495,10) = MacroFlag
CWLCurrentWindow.ActiveWindow.Vars.Value(495,11) = MacroLineNumber
' Neue Grid-Zeile schreiben
Grid.AddLine
' Zeilenfarbe mit ROT vorbelegen
Grid.SetLineColor GridLineCounter, LineColor
GridLineCounter = GridLineCounter + 1
End If
OrderArrayIndex = OrderArrayIndex + 1
Loop While OrderArrayIndex < (UBound(ORDER_ARTICLE_DATA, 2) + 1)
LoadOrder = True
Grid.IsRedraw = True
End Function
' Schaltet alle nicht sichtbaren Felder auf sichtbar um
Sub ShowAllArticles
For OrderArrayIndex = 0 to UBound(ORDER_ARTICLE_DATA, 2)
If (ORDER_ARTICLE_DATA(INDEX_IS_VISIBLE, OrderArrayIndex) = False And ORDER_ARTICLE_DATA(INDEX_IS_OPEN, OrderArrayIndex) = True) Then
ORDER_ARTICLE_DATA(INDEX_IS_VISIBLE, OrderArrayIndex) = True
End If
Next
End Sub
' Gibt True zurück, wenn es min. 1 sichtbare Zeile gibt
Function ExistVisibleRows
ExistVisibleRows = False
For OrderArrayIndex = 0 to UBound(ORDER_ARTICLE_DATA, 2)
If (ORDER_ARTICLE_DATA(INDEX_IS_VISIBLE, OrderArrayIndex) = True) Then
ExistVisibleRows = True
Exit For
End If
Next
End Function