' LoadOrder(OrderNumber: String) ' --------------------------------------------------------- ' Sucht Belegzeilen zur angegebenen Belegnummer ' - Filtert Artikel der Gruppe 100 aus ' - Lädt Ergebnisse in eine Tabelle auf dem Formular ' - Erzeugt N Zeilen für Seriennummer-Artikel der Menge N ' ' Rückgabewert: LoadSuccessful: Boolean ' --------------------------------------------------------- ' Version Date: 04.01.2021 Function LoadOrder(OrderNumber) Set mywin = CWLStart.CurrentModule.Windows.Item(WINDOW_ID) Set Grid = mywin.Controls.Item(GRID_ID).Grid ' ARTIKEL FILTERN SQL = "" ' Nach eingescannter Auftragsnummer/Belegnummer filtern SQL = SQL & "(c067 = '"& OrderNumber &"') " ' Nur Artikelzeilen anzeigen SQL = SQL & "AND (c042 = 1) " ' Teillieferungs-Zeilen rausfiltern SQL = SQL & "AND (c005 - c016) > 0 AND (c099 = 0) " 'SQL = SQL & "AND c039 <> '*' AND (c005 - c016) > 0 AND (c099 = 0) " ' Versandkosten (Art.Gruppe 100) rausfiltern ' SQL = SQL & "AND c012 NOT IN (100, 101) " ' Keine Hauptartikel, wenn dazu auch Ausprägungen vorhanden sind ' Legende: '-1 - Ausprägung ' 0 - HA ohne Ausprägungen ' 2 - HA mit Ausprägungen + Ident ' 12 - HA mit Ausprägungen + Ident (bereits ausgeprägt) SQL = SQL & "AND c055 NOT IN (12)" ' Nach Mandant und Wirtschaftsjahr filtern SQL = SQL & SQLQuery_OrderWhere Set Result = CWLStart.CurrentCompany.SearchRecord (TABLE_26, SQL) If DEBUG_ON = True Then MsgBox "SQL: ... FROM "& TABLE_26 & " WHERE " & 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 Grid.InitUserGrid Grid.Header Grid.Clear(1002) Grid.IsRedraw = False If Result.RowCount > 0 Then LineCounter = 1 ' Speicher für benutzerdefinierte Felder ' (495,0) - Menge Gescannt ' (495,1) - Menge Gesamt ' (495,2) - Seriennummer ' (495,3) - Artikelnummer ' (495,4) - Bezeichnung ORDER_ACCOUNT_NUMBER = Result.Value("c044") ORDER_RUNNING_NUMBER = Result.Value("c045") ORDER_DOCUMENT_NUMBER = Result.Value("c067") Do ' Zeilen hochzählen Dim AmountOrdered, AmountDelivered AmountOrdered = Cint(Result.Value("c005")) AmountDelivered = Cint(Result.Value("c016")) ProductGroup = Cint(Result.Value("c012")) Amount = AmountOrdered - AmountDelivered ChargeFlag = Cint(Result.Value("c055")) If ChargeFlag = 2 Then For index = 1 To Amount Dim IsLateShape SQL = "(C002 = '" & Result.Value("c003") & "')" ' Nach Mandant und Wirtschaftsjahr filtern SQL = SQL & SQLQuery_BasicWhere Set ShapeResult = CWLStart.CurrentCompany.SearchRecord (TABLE_21, SQL) If Len(ShapeResult.Value("C222")) > 0 Then IsLateShape = 1 Else IsLateShape = 0 End If CWLCurrentWindow.ActiveWindow.Vars.Value(495,0) = 1 CWLCurrentWindow.ActiveWindow.Vars.Value(495,1) = 0 CWLCurrentWindow.ActiveWindow.Vars.Value(495,2) = "" CWLCurrentWindow.ActiveWindow.Vars.Value(495,3) = Result.Value("c003") CWLCurrentWindow.ActiveWindow.Vars.Value(495,4) = Result.Value("c004") CWLCurrentWindow.ActiveWindow.Vars.Value(495,5) = 1 CWLCurrentWindow.ActiveWindow.Vars.Value(495,6) = IsLateShape Grid.AddLine ' Zeilenfarbe mit ROT vorbelegen Grid.SetLineColor LineCounter, COLOR_RED LineCounter = LineCounter + 1 Next Else If ProductGroup >= 100 Then CWLCurrentWindow.ActiveWindow.Vars.Value(495,0) = Amount CWLCurrentWindow.ActiveWindow.Vars.Value(495,1) = Amount LineColor = COLOR_GREEN Else CWLCurrentWindow.ActiveWindow.Vars.Value(495,0) = Amount CWLCurrentWindow.ActiveWindow.Vars.Value(495,1) = 0 LineColor = COLOR_RED End If CWLCurrentWindow.ActiveWindow.Vars.Value(495,2) = "" CWLCurrentWindow.ActiveWindow.Vars.Value(495,3) = Result.Value("c003") CWLCurrentWindow.ActiveWindow.Vars.Value(495,4) = Result.Value("c004") CWLCurrentWindow.ActiveWindow.Vars.Value(495,5) = 0 CWLCurrentWindow.ActiveWindow.Vars.Value(495,6) = 0 ' Ergebnisse aus SQL in Zeile schreiben Grid.AddLine ' Zeilenfarbe mit ROT vorbelegen Grid.SetLineColor LineCounter, LineColor LineCounter = LineCounter + 1 End If Loop While Result.NextRecord = True Else MsgBox "Beim Laden des Auftrags ["& OrderNumber &"] wurden keine Zeilen zurück gegeben.", vbExclamation, DEFAULT_TITLE LoadOrder = False End If LoadOrder = True Grid.IsRedraw = True End Function