' 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