478 lines
20 KiB
Plaintext
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 |