' CompleteOrder() ' --------------------------------------------------------- ' Schließt die Prüfung ab und erstellt einen Lieferschein ' ' Rückgabewert: Keiner ' --------------------------------------------------------- Sub CompleteOrder() Set mywin = CWLStart.CurrentModule.Windows.Item(WINDOW_ID) Set Conn = CWLStart.CurrentCompany.Connection Set Grid = mywin.Controls.Item(GRID_ID).Grid Dim OrderId, AccountSQL, MandatorId, RunningNumber OrderId = mywin.Controls.Item(ORDER_INPUT).ScreenContents AccountSQL = "SELECT DISTINCT c021 FROM t025 (NOLOCK) WHERE c044 = '" & OrderId & "' " & SQLQuery_BasicWhere Set AccountResult = Connection.Select(AccountSQL) If DEBUG_ON = True Then AddDebugLine "Querying for CustomerAccountId.. " & vbNewline AddDebugLine "Result Columns: " & AccountResult AddDebugLine "Result Rows: " & AccountResult.RowCount AddDebugLine "SQL: " & AccountSQL ShowDebugBox "CompleteOrder" End If MandatorId = AccountResult.Value("c021") RunningNumber = RUNNING_NUMBER_PREFIX & OrderId BelegKey = Cstr(DateDiff("s", "01/01/1970 00:00:00", Now)) ' ===================== KOPFDATEN ===================== HeadSQL = "INSERT INTO " & SQLDB_for_EXIM & "." & SQLHeadTB_for_EXIM & " " HeadSQL = HeadSQL & "(BELEGKEY, Kontonummer, Laufnummer, Auftragsnummer, Datum_Lieferschein) " HeadSQL = HeadSQL & "VALUES("& BelegKey &", '"& MandatorId &"', '"& RunningNumber &"', '"& OrderId &"', GETDATE())" HeadResult = Conn.ExecuteSQL(HeadSQL) If DEBUG_ON = True Then AddDebugLine "Inserting Head Data" & vbNewline AddDebugLine "Result: " & HeadResult AddDebugLine "SQL: " & HeadSQL ShowDebugBox "CompleteOrder" End If ' ===================== ENDE KOPFDATEN ===================== ' ===================== MITTEDATEN ===================== Dim ArticleNumber, AmountDelivered, SerialNumber, StorageLocation, LineNumber For Row = 1 To Grid.LineCount IsSerialNumberArticle = Grid.GetCellValue(Row, COLUMN_TYPE) ArticleNumber = Grid.GetCellValue(Row, COLUMN_ARTICLENUMBER) SerialNumber = Grid.GetCellValue(Row, COLUMN_SERIALNUMBER) LineNumber = GetWinLineOriginalLineNumber(OrderId, ArticleNumber, IsSerialNumberArticle) StorageLocation = GetWinLineStorageLocation(ArticleNumber, SerialNumber, IsSerialNumberArticle) AmountDelivered = Grid.GetCellValue(Row, COLUMN_SCANNED) If IsSerialNumberArticle = 1 Then MidSQL = "INSERT INTO " & SQLDB_for_EXIM & "." & SQLMiddleTB_for_EXIM & " " MidSQL = MidSQL & "(BELEGKEY, Artikelnummer, Hauptartikelnummer, Zeilennummer, Datentyp, Mengegeliefert, ChargeIdentnummer, Lagerort) " MidSQL = MidSQL & "VALUES("& BelegKey &", '"& ArticleNumber &"', '"& ArticleNumber &"', "& LineNumber &", '1', "& AmountDelivered &", '"& SerialNumber &"', "& StorageLocation &")" Else MidSQL = "INSERT INTO " & SQLDB_for_EXIM & "." & SQLMiddleTB_for_EXIM & " " MidSQL = MidSQL & "(BELEGKEY, Artikelnummer, Hauptartikelnummer, Zeilennummer, Datentyp, Mengegeliefert, ChargeIdentnummer, Lagerort) " MidSQL = MidSQL & "VALUES("& BelegKey &", '"& ArticleNumber &"', '"& ArticleNumber &"', NULL, '1', "& AmountDelivered &", '"& SerialNumber &"', "& StorageLocation &")" End If MidResult = Conn.ExecuteSQL(MidSQL) If DEBUG_ON = True Then AddDebugLine "Inserting Middle Data" & vbNewline AddDebugLine "Result: " & MidResult AddDebugLine "SQL: " & MidSQL ShowDebugBox "CompleteOrder" End If Next ' ===================== ENDE MITTEDATEN ===================== ' ============================ XML ============================ Dim Request, URL, XML Dim DObj : DObj = Now Dim DateString : DateString = Year(DObj) & "-" & GetLeftPad(Month(DObj)) & "-" & GetLeftPad(Day(DObj)) XML = "" XML = XML & "" XML = XML & "" ' Kopf XML = XML & "<__VORLAGE__T025>" XML = XML & "" & BelegKey & "" XML = XML & "" & MandatorId & "" XML = XML & "" & RunningNumber & "" XML = XML & "" & OrderId & "" XML = XML & "" & DateString & "" XML = XML & "" For Row = 1 To Grid.LineCount ArticleNumber = Grid.GetCellValue(Row, COLUMN_ARTICLENUMBER) SerialNumber = Grid.GetCellValue(Row, COLUMN_SERIALNUMBER) LineNumber = GetWinLineOriginalLineNumber(OrderId, ArticleNumber, IsSerialNumberArticle) StorageLocation = GetWinLineStorageLocation(ArticleNumber, SerialNumber, IsSerialNumberArticle) AmountDelivered = Grid.GetCellValue(Row, COLUMN_SCANNED) InternalArticleNumber = GetWinLineInternalProductNumber(ArticleNumber, SerialNumber) ' Mitte MidXML = "" MidXML = MidXML & "<__VORLAGE__T026>" MidXML = MidXML & "" & BelegKey & "" MidXML = MidXML & "" & InternalArticleNumber & "" MidXML = MidXML & "" & ArticleNumber & "" MidXML = MidXML & "" & LineNumber & "" MidXML = MidXML & "" & "1" & "" MidXML = MidXML & "" & AmountDelivered & "" MidXML = MidXML & "" & SerialNumber & "" MidXML = MidXML & "" & StorageLocation & "" MidXML = MidXML & "" If DEBUG_ON = True Then AddDebugLine "Adding Product Row to XML:" & vbNewLine AddDebugLine MidXML ShowDebugBox "CompleteOrder" End If XML = XML & MidXML Next XML = XML & "" XML = Replace(XML, "__VORLAGE__", WEB_VORLAGE) XML = Replace(XML, "__TYPE__", WEB_TYPE) XML = Replace(XML, "__OPTION__", WEB_OPTION) XML = Replace(XML, "__PRINT__", WEB_PRINT) URL = "http://__SERVER__/ewlservice/import?User=__USER__&Password=__PASSWORD__&Company=__COMPANY__&Type=30&Vorlage=__VORLAGE__&Actioncode=__ACTIONCODE__&byref=0&Data=__DATA__" URL = Replace(URL, "__SERVER__", WEB_SERVER) URL = Replace(URL, "__USER__", WEB_USER) URL = Replace(URL, "__PASSWORD__", WEB_PASS) URL = Replace(URL, "__COMPANY__", WEB_COMPANY) URL = Replace(URL, "__VORLAGE__", WEB_VORLAGE) URL = Replace(URL, "__ACTIONCODE__", WEB_ACTIONCODE) URL = Replace(URL, "__DATA__", XML) If DEBUG_ON = True Then AddDebugLine "Sending Request to WebServices.." AddDebugLine "URL: " & URL ShowDebugBox "CompleteOrder" End If ' ======================= ENDE XML ======================= ' ===================== HTTP REQUEST ===================== Set Request = CreateObject("MSXML2.XMLHTTP") Request.Open "POST", URL, False Request.Send Response = Request.ResponseText Status = Request.Status If DEBUG_ON = True Then AddDebugLine "Response from WebServices!" AddDebugLine "Status: " & Status AddDebugLine "Body: " & Response ShowDebugBox "CompleteOrder" End If ' =================== ENDE HTTP REQUEST ================== Error = False Message = "" If Status = 200 Then If InStr(Response, "true") > 0 Then Message = "Lieferschein wurde übertragen!" Else Error = True Message = "Lieferschein wurde nicht übertragen! Fehlerdetails: " & vbNewline & vbNewline & Response End If Else Error = True Message = "Fehler beim Zugriff auf Webservices aufgetreten" & vbNewline & "Status: " & Status End If If Error = False Then MsgBox Message, vbInformation, DEFAULT_TITLE & " - Abschluss erfolgreich" MacroCommands.MSetFieldFocus WINDOW_ID, ORDER_INPUT Else MsgBox Message, vbExclamation, DEFAULT_TITLE & " - Fehler bei Abschluss" End If End Sub