diff --git a/WinLineArtikelnummerGenerator/Winline.vb b/WinLineArtikelnummerGenerator/Winline.vb index 193e777..961ae63 100644 --- a/WinLineArtikelnummerGenerator/Winline.vb +++ b/WinLineArtikelnummerGenerator/Winline.vb @@ -179,18 +179,33 @@ Public Class Winline _Logger.Info("WebService Response: {0}", oXmlResponse) Dim oDocument As New XmlDocument - oDocument.LoadXml(oXmlResponse) - oDocument.Save(Console.Out) + + Try + oDocument.LoadXml(oXmlResponse) + oDocument.Save(Console.Out) + Catch ex As Exception + _Logger.Error(ex) + Return False + End Try Dim oSuccess As XmlNode = oDocument.DocumentElement.SelectSingleNode("OverallSuccess") + Dim oInnerSuccess = True If oSuccess.InnerText.ToUpper = "TRUE" Then - For Each oNode As XmlNode In oDocument.DocumentElement.SelectNodes("Success") + Dim oSuccessNodes = oDocument.DocumentElement.SelectNodes("//Success") + For Each oNode As XmlNode In oSuccessNodes + If oNode.InnerText.ToUpper <> "TRUE" Then + oInnerSuccess = False + End If Next _Logger.Info("Request was SUCCESSFUL!") - Return True + If oInnerSuccess = False Then + Return False + Else + Return True + End If Else _Logger.Info("Request FAILED!") Return False @@ -203,7 +218,7 @@ Public Class Winline Public Function TestArticleExists(ArticleNumber As String) As Boolean Try - Dim oResult = _Winline.GetScalarValue($"SELECT c000 FROM v021 WHERE c002 = '{ArticleNumber}'") + Dim oResult = _Winline.GetScalarValue($"SELECT c002 FROM v021 WHERE c002 = '{ArticleNumber}'") If IsNothing(oResult) Or IsDBNull(oResult) Then Return False @@ -275,8 +290,7 @@ Public Class Winline oXmlData &= $"" Try - My.Application.Winline.SendWebserviceRequest(oTemplateType, oTemplateName, oXmlData) - Return True + Return My.Application.Winline.SendWebserviceRequest(oTemplateType, oTemplateName, oXmlData) Catch ex As Exception _Logger.Error(ex) Return False @@ -301,25 +315,28 @@ Public Class Winline oXmlData &= $"" Try - My.Application.Winline.SendWebserviceRequest(oTemplateType, oTemplateName, oXmlData) - Return True + Return My.Application.Winline.SendWebserviceRequest(oTemplateType, oTemplateName, oXmlData) Catch ex As Exception _Logger.Error(ex) Return False End Try End Function - Public Sub RunWinlineMacro(MacroName As String, ParamArray Parameters As Object()) + Public Function RunWinlineMacro(MacroName As String, ParamArray Parameters As Object()) As Boolean Try Dim oCWLObject Dim oParamArray As Object = New Runtime.InteropServices.VariantWrapper(Parameters) oCWLObject = CreateObject("cwlstart.application") oCWLObject.MacroCommands.MRunMacro(MacroName, oParamArray) + + Return True Catch ex As Exception _Logger.Error(ex) - MsgBox($"Das WinLine-Makro [{MacroName}] konnte nicht gestartet werden. Mehr Informationen im Log.", MsgBoxStyle.Critical, "WinLine") + _Logger.Warn($"Das WinLine-Makro [{MacroName}] konnte nicht gestartet werden.") + + Return False End Try - End Sub + End Function End Class diff --git a/WinLineArtikelnummerGenerator/frmCreateArticle.vb b/WinLineArtikelnummerGenerator/frmCreateArticle.vb index 6d095c6..a61e761 100644 --- a/WinLineArtikelnummerGenerator/frmCreateArticle.vb +++ b/WinLineArtikelnummerGenerator/frmCreateArticle.vb @@ -33,8 +33,6 @@ Dim oPriceResult = My.Application.Winline.CreatePriceInfo(ArticleNumber, RunningNumber, Vendor.WinlineNumber) If oArticleResult And oPriceResult Then - MsgBox("Artikel erfolgreich angelegt!", MsgBoxStyle.Information, Text) - txtFinalArticleNumber.Text = $"{ArticleNumber}{RunningNumber}" Return $"{ArticleNumber}{RunningNumber}" @@ -54,19 +52,29 @@ MsgBoxStyle.Question Or vbYesNo, Text) If oResult = MsgBoxResult.Yes Then - Dim oArticle = StartArticleCreation(True) - If oArticle IsNot Nothing Then - My.Computer.Clipboard.SetText(oArticle) - My.Application.Winline.RunWinlineMacro(My.Application.ConfigManager.Config.CompletionMacro, oArticle) - End If + Dim oArticleNumber = StartArticleCreation(True) + HandleArticleCreation(oArticleNumber) End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click - Dim oArticle = StartArticleCreation(False) - If oArticle IsNot Nothing Then - My.Computer.Clipboard.SetText(oArticle) - My.Application.Winline.RunWinlineMacro(My.Application.ConfigManager.Config.CompletionMacro, oArticle) + Dim oArticleNumber = StartArticleCreation(False) + HandleArticleCreation(oArticleNumber) + End Sub + + Private Sub HandleArticleCreation(ArticleNumber As String) + If ArticleNumber IsNot Nothing Then + If My.Application.Winline.TestArticleExists(ArticleNumber) Then + My.Computer.Clipboard.SetText(ArticleNumber) + If My.Application.Winline.RunWinlineMacro(My.Application.ConfigManager.Config.CompletionMacro, ArticleNumber) = False Then + MsgBox($"Der Artikelstamm konnte nicht geƶffnet werden. Die Artikelnummer {ArticleNumber} wurde in die Zwischenablage kopiert.", MsgBoxStyle.Information, Text) + End If + Application.Exit() + + Else + MsgBox($"Der Artikel '{ArticleNumber}' wurde nicht angelegt!", MsgBoxStyle.Critical, Text) + + End If End If End Sub End Class \ No newline at end of file