Anlage des Repos
This commit is contained in:
135
current/Modules/Archiv/Packtisch/ArticleExists.vbs
Normal file
135
current/Modules/Archiv/Packtisch/ArticleExists.vbs
Normal file
@@ -0,0 +1,135 @@
|
||||
' ArticleExists(Identifier: String)
|
||||
' ---------------------------------------------------------
|
||||
' Findet Artikelnummer anhand von versch. Kriterien
|
||||
' - Artikel-Nummer, Alternative Artikel-Nummer, EAN-Code, Seriennummer
|
||||
' - Gibt die Zeile im Grid zurück in der Artikel das erste Mal gefunden wurde
|
||||
'
|
||||
' Rückgabewert: ArticleRow: Int
|
||||
' ---------------------------------------------------------
|
||||
|
||||
Const ARTICLE_EXISTS_NO_STOCK = -99
|
||||
Const ARTICLE_EXISTS_NO_SERIALNUMBER = -98
|
||||
Const ARTICLE_EXISTS_NO_ARTICLE_EAN = -97
|
||||
|
||||
Function ArticleExists(Identifier)
|
||||
ArticleExists = 0
|
||||
CURRENT_SERIALNUMBER = ""
|
||||
|
||||
Set mywin = CWLStart.CurrentModule.Windows.Item(WINDOW_ID)
|
||||
Set Grid = mywin.Controls.Item(GRID_ID).Grid
|
||||
|
||||
' ===================== ARTIKEL NUMMER / EAN-CODE =====================
|
||||
SQL = ""
|
||||
' Artikelnummer / EAN-Code / Alternative Artikelnummer
|
||||
SQL = SQL & "((C002 = '" & Identifier & "') Or (C075 = '" & Identifier & "') Or (C114 = '" & Identifier & "')) AND "
|
||||
' Artikel darf nicht inaktiv sein
|
||||
SQL = SQL & "(c038 IS NULL) "
|
||||
' Nach Mandant und Wirtschaftsjahr filtern
|
||||
SQL = SQL & SQLQuery_BasicWhere
|
||||
|
||||
Set ResultArtikel = CWLStart.CurrentCompany.SearchRecord(TABLE_21, SQL)
|
||||
|
||||
If DEBUG_ON = True Then
|
||||
AddDebugLine "Searching for Article by ArticleNo/EAN-Code.. " & vbNewline & vbNewline
|
||||
AddDebugLine "Result Columns: " & ResultArtikel & vbNewline
|
||||
AddDebugLine "Result Rows: " & ResultArtikel.RowCount & vbNewline
|
||||
AddDebugLine "SQL: " & SQL
|
||||
|
||||
ShowDebugBox "ArticleExists"
|
||||
End If
|
||||
|
||||
' ===================== SERIENNUMMER =====================
|
||||
SQL = ""
|
||||
' Artikelnummer
|
||||
SQL = SQL & "(C068 = '" & Identifier & "') AND "
|
||||
' Artikel darf nicht inaktiv sein
|
||||
SQL = SQL & "(c038 IS NULL) "
|
||||
' Nach Mandant und Wirtschaftsjahr filtern
|
||||
SQL = SQL & SQLQuery_BasicWhere
|
||||
|
||||
Set ResultSeriennummer = CWLStart.CurrentCompany.SearchRecord(TABLE_21, SQL)
|
||||
|
||||
If DEBUG_ON = True Then
|
||||
AddDebugLine "Searching for Article by Article serial number " & vbNewline & vbNewline
|
||||
AddDebugLine "Result Columns: " & ResultSeriennummer & vbNewline
|
||||
AddDebugLine "Result Rows: " & ResultSeriennummer.RowCount & vbNewline
|
||||
AddDebugLine "SQL: " & SQL
|
||||
|
||||
ShowDebugBox "ArticleExists"
|
||||
End If
|
||||
|
||||
If ResultSeriennummer.RowCount > 0 Then
|
||||
CURRENT_SERIALNUMBER = Identifier
|
||||
Set Result = ResultSeriennummer
|
||||
Else
|
||||
Set Result = ResultArtikel
|
||||
End If
|
||||
|
||||
'==========================================================
|
||||
If Result.RowCount > 0 Then
|
||||
' Wir brauchen die Hauptartikelnummer, weil die Prüfung sonst bei SN-Artikeln fehlschlägt
|
||||
MainArticleNumber = Result.Value("C011")
|
||||
RealArticleNumber = Result.Value("C002")
|
||||
|
||||
' Lagerstand des Artikels prüfen
|
||||
SQL = ""
|
||||
SQL = SQL & "SELECT "
|
||||
SQL = SQL & "(SELECT C008 AS [MengeZugang] from [v021] (NOLOCK) where (c011 = '__ARTICLENUMBER__' OR c002 = '__ARTICLENUMBER__') "& SQLQuery_BasicWhere &") - "
|
||||
SQL = SQL & "(SELECT C009 AS [MengeAbgang] from [v021] (NOLOCK) where (c011 = '__ARTICLENUMBER__' OR c002 = '__ARTICLENUMBER__') "& SQLQuery_BasicWhere &") - "
|
||||
SQL = SQL & "ISNULL((SELECT SUM(C035) AS [MengeVerkauf] FROM [t014] (NOLOCK) where c000 = '__ARTICLENUMBER__' "& SQLQuery_BasicWhere &"), 0) AS c000"
|
||||
|
||||
SQL = Replace(SQL, "__ARTICLENUMBER__", RealArticleNumber)
|
||||
|
||||
Set Result = CWLStart.CurrentCompany.Connection.Select(SQL)
|
||||
AmountStocked = Result.Value("c000")
|
||||
|
||||
If DEBUG_ON = True Then
|
||||
AddDebugLine "Checking stock of product: " & RealArticleNumber & " (" & MainArticleNumber & ")" & vbNewline & vbNewline
|
||||
AddDebugLine "Result Columns: " & Result & vbNewline
|
||||
AddDebugLine "Result Rows: " & Result.RowCount & vbNewline
|
||||
AddDebugLine "Stock: " & AmountStocked & vbNewLine
|
||||
AddDebugLine "SQL: " & SQL
|
||||
|
||||
ShowDebugBox "ArticleExists"
|
||||
End If
|
||||
|
||||
If AmountStocked > 0 Then
|
||||
If DEBUG_ON = True Then
|
||||
AddDebugLine "Amount stocked: " & AmountStocked
|
||||
ShowDebugBox "ArticleExists"
|
||||
End If
|
||||
|
||||
' Vorkommen in Tabelle prüfen
|
||||
For Row = 1 To Grid.LineCount
|
||||
CurrentArticleNumber = Grid.GetCellValue(Row, COLUMN_ARTICLENUMBER)
|
||||
Total = Cint(Grid.GetCellValue(Row, COLUMN_TOTAL))
|
||||
Scanned = Cint(Grid.GetCellValue(Row, COLUMN_SCANNED))
|
||||
|
||||
If CurrentArticleNumber = MainArticleNumber Then
|
||||
If DEBUG_ON = True Then
|
||||
AddDebugLine "CurrentArticleNumber matches MainArticleNumber! (" & CurrentArticleNumber & ")"
|
||||
ShowDebugBox "ArticleExists"
|
||||
End If
|
||||
|
||||
If Total > Scanned Then
|
||||
If DEBUG_ON = True Then
|
||||
AddDebugLine "Product is not yet scanned completetly and exists in Row " & Row & "!"
|
||||
ShowDebugBox "ArticleExists"
|
||||
End If
|
||||
|
||||
ArticleExists = Row
|
||||
Exit For
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Else
|
||||
ArticleExists = ARTICLE_EXISTS_NO_STOCK
|
||||
End If
|
||||
Else
|
||||
If CURRENT_SERIALNUMBER = "" Then
|
||||
ArticleExists = ARTICLE_EXISTS_NO_ARTICLE_EAN
|
||||
Else
|
||||
ArticleExists = ARTICLE_EXISTS_NO_SERIALNUMBER
|
||||
End If
|
||||
End If
|
||||
End Function
|
||||
Reference in New Issue
Block a user