' CompleteOrder() ' --------------------------------------------------------- ' Schließt die Prüfung ab und erstellt einen Lieferschein ' ' Rückgabewert: OrderSuccessful : Boolean ' --------------------------------------------------------- ' Version Date: 05.01.2021 Function 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 If DEBUG_ON = True Then AddDebugLine "Completing order.. " & vbNewline ShowDebugBox "CompleteOrder" End If OrderId = mywin.Controls.Item(ORDER_INPUT).ScreenContents AccountSQL = "SELECT DISTINCT c021 FROM t025 (NOLOCK) WHERE c044 = '" & OrderId & "' " & SQLQuery_OrderWhere 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 ===================== Dim Request, URL, XML Dim DObj : DObj = Now Dim DateString : DateString = Year(DObj) & "-" & GetLeftPad(Month(DObj)) & "-" & GetLeftPad(Day(DObj)) ' === WEB SERVICES ======================= XML = "" XML = XML & "" XML = XML & "" XML = XML & "<__VORLAGE__T025>" XML = XML & "" & BelegKey & "" XML = XML & "" & MandatorId & "" XML = XML & "" & RunningNumber & "" XML = XML & "" & OrderId & "" XML = XML & "" & DateString & "" XML = XML & "" ' === EXIM TABELLE ======================= HeadSQL = "INSERT INTO " & SQLDB_for_EXIM & "." & SQLHeadTB_for_EXIM & " " HeadSQL = HeadSQL & "(BELEGKEY, Kontonummer, Laufnummer, Auftragsnummer, Belegdatum) " 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, AmountScanned, 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) AmountScanned = Grid.GetCellValue(Row, COLUMN_SCANNED) AmountTotal = Grid.GetCellValue(Row, COLUMN_TOTAL) If PRINT_DOCUMENT_AFTER_COMPLETION = True Then StorageLocation = GetWinLineStorageLocation(ArticleNumber, SerialNumber, IsSerialNumberArticle) InternalArticleNumber = GetWinLineInternalProductNumber(ArticleNumber, SerialNumber) Else StorageLocation = 0 InternalArticleNumber = 0 End If LineNumber = GetWinLineOriginalLineNumber(OrderId, ArticleNumber, IsSerialNumberArticle) ' === EXIM TABELLE ======================= 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', "& AmountScanned &", '"& 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', "& AmountScanned &", '"& SerialNumber &"', "& StorageLocation &")" End If MidResult = Conn.ExecuteSQL(MidSQL) ' === WEB SERVICES ======================= MidXML = "" MidXML = MidXML & "<__VORLAGE__T026>" MidXML = MidXML & "" & BelegKey & "" MidXML = MidXML & "" & InternalArticleNumber & "" MidXML = MidXML & "" & ArticleNumber & "" MidXML = MidXML & "" & LineNumber & "" MidXML = MidXML & "" & "1" & "" MidXML = MidXML & "" & AmountScanned & "" MidXML = MidXML & "" & SerialNumber & "" MidXML = MidXML & "" & StorageLocation & "" MidXML = MidXML & "" If DEBUG_ON = True Then AddDebugLine "Inserting Middle Data" & vbNewline AddDebugLine "For Article " & ArticleNumber AddDebugLine "And Amount " & AmountScanned AddDebugLine "Result: " & MidResult & vbNewline AddDebugLine "SQL: " & MidSQL & vbNewline AddDebugLine "XML: " & 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, "__PRINT__", WEB_PRINT) XML = Replace(XML, "__OPTION__", WEB_OPTION) 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 AddDebugLine "WEB_PRINT: " & WEB_PRINT AddDebugLine "WEB_OPTION: " & WEB_OPTION ShowDebugBox "CompleteOrder" End If ' ======================= ENDE MITTEDATEN ======================= If PRINT_DOCUMENT_AFTER_COMPLETION = True Then ' ===================== 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 TestIsWebserviceResponseSuccessful(Response) = True Then Message = "Lieferschein wurde uebertragen!" Else Error = True Message = "Lieferschein wurde nicht uebertragen! Fehlerdetails: " & vbNewline & vbNewline & Response End If Else Error = True Message = "Fehler beim Zugriff auf Webservices aufgetreten!" & vbNewline & vbNewline & "Status: " & Status End If If Error = False Then MsgBox Message, vbInformation, DEFAULT_TITLE CompleteOrder = True Else MsgBox Message, vbExclamation, DEFAULT_TITLE & " - Fehler bei Abschluss" CompleteOrder = False End If Else CompleteOrder = True End If End Function