Imports System.Drawing Imports System.IO Imports System.Net.Mail Imports System.Reflection Imports System.Text Imports System.Windows.Forms Imports ClosedXML.Excel Imports Microsoft.Office.Interop Imports ThoughtWorks.QRCode.Codec Imports VERAG_PROG_ALLGEMEIN.TESTJSON Public Class cProgramFunctions Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL Public Shared Function fktEuro(varBetrag As Object, varVonWährung As Object, varNachWährung As Object) As Object '(FixeTaxe, "ATS", RECHNUNG.Währungscode) 'Dim varVonWährung As Object 'Dim varNachWährung As Object Dim varKurs As Object If varVonWährung Is Nothing Then Return Nothing If varNachWährung Is Nothing Then Return Nothing If varVonWährung = varNachWährung Then ' Sind beide Währungen gleich, fktEuro = varBetrag ' ist keine Umrechnung erforderlich Exit Function ' und die Funktion wird beendet End If If Not IsNumeric(varVonWährung) Then varVonWährung = SQL.DLookup("[Währungsschlüssel]", "Währungstabelle", "[Währungscode] = '" & varVonWährung & "' order by Währungsschlüssel DESC", "FMZOLL") End If If Not IsNumeric(varNachWährung) Then varNachWährung = SQL.DLookup("[Währungsschlüssel]", "Währungstabelle", "[Währungscode] = '" & varNachWährung & "' order by Währungsschlüssel DESC", "FMZOLL") End If ' 'Select Case TypeName(fldVonWährung) ' Case "Integer" ' varVonWährung = fldVonWährung ' Case "String", "Textbox", "Field", "Field2" ' varVonWährung = SQL.DLookup("[Währungsschlüssel]", "Währungstabelle", "[Währungscode] = '" & fldVonWährung & "'", "FMZOLL") ' If varVonWährung = "" Then ' MsgBox("Währungstabelle![Währung] enthält keinen Eintrag " & fldVonWährung, , "fktEuro") ' fktEuro = Nothing ' Exit Function ' End If ' Case Else ' MsgBox("Datentyp " & TypeName(fldVonWährung) & " ist für fldVonWährung ungültig.", , "fktEuro") ' fktEuro = Nothing ' Exit Function 'End Select 'Select Case TypeName(fldNachWährung) ' Case "Integer" ' varNachWährung = fldNachWährung ' Case "String", "Textbox", "Field", "Field2" ' varNachWährung = SQL.DLookup("[Währungsschlüssel]", "Währungstabelle", " [Währungscode] = '" & fldNachWährung & "'", "FMZOLL") ' If varNachWährung = "" Then ' MsgBox("Währungstabelle![Währung] enthält keinen Eintrag " & fldNachWährung, , "fktEuro") ' fktEuro = Nothing ' Exit Function ' End If ' Case Else ' MsgBox("Datentyp " & TypeName(fldNachWährung) & " ist für fldNachWährung ungültig.", , "fktEuro") ' fktEuro = Nothing ' Exit Function ' End Select 'If varVonWährung = varNachWährung Then ' Sind beide Währungen gleich, ' fktEuro = varBetrag ' ist keine Umrechnung erforderlich ' Exit Function ' und die Funktion wird beendet 'End If If varVonWährung <> 900 Then ' Eingangswährung in Euro umrechnen. varKurs = SQL.DLookup("[Eurokurs]", "Währungstabelle", "[Währungsschlüssel] = " & varVonWährung & " order by Währungsschlüssel DESC", "FMZOLL") If varKurs = "" OrElse varKurs = 0 Then MsgBox("(1) Die Währungstabelle enthält keinen Umrechnungskurs für den Währungsschlüssel " & varVonWährung, , "fktEuro") fktEuro = Nothing Exit Function End If varBetrag = Int(varBetrag / varKurs * 100 + 0.5) / 100 End If If varNachWährung <> 900 Then ' Euro In Ausgangswährung umrechnen. varKurs = SQL.DLookup("[Eurokurs]", "Währungstabelle", "[Währungsschlüssel] = " & varNachWährung & " order by Währungsschlüssel DESC", "FMZOLL") If varKurs = "" OrElse varKurs = 0 Then MsgBox("(2) Die Währungstabelle enthält keinen Umrechnungskurs für den Währungsschlüssel " & varNachWährung, , "fktEuro") fktEuro = Nothing Exit Function End If varBetrag = Int(varBetrag * varKurs * 100 + 0.5) / 100 End If fktEuro = varBetrag End Function Public Shared Sub SetDoubleBuffered([Control] As Control) [Control].GetType().InvokeMember("DoubleBuffered", BindingFlags.SetProperty Or BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, [Control], New Object() {True}) End Sub Public Shared Function fktEuroKurs(varVonWährung As Object, Rechnungsdatum As Date) As Object 'Funktioniert nciht mit datum!!!!!!!!!!!!!!!!!!! '(FixeTaxe, "ATS", RECHNUNG.Währungscode) 'Dim varVonWährung As Object 'Dim varNachWährung As Object Dim varKurs As Object If varVonWährung Is Nothing Then Return Nothing If varVonWährung = "EUR" Then ' Sind beide Währungen gleich, Return 1 ' ist keine Umrechnung erforderlich Exit Function ' und die Funktion wird beendet End If If Not IsNumeric(varVonWährung) Then varVonWährung = SQL.DLookup("[Währungsschlüssel]", "Währungstabelle", "[Währungscode] = '" & varVonWährung & "' order by Währungsschlüssel DESC", "FMZOLL") End If Dim varBetrag = 1 If varVonWährung <> 900 Then ' Eingangswährung in Euro umrechnen. varKurs = SQL.DLookup("[Eurokurs]", "Währungstabelle", "[Währungsschlüssel] = " & varVonWährung & " order by Währungsschlüssel DESC", "FMZOLL") If varKurs = "" OrElse varKurs = 0 Then MsgBox("(1) Die Währungstabelle enthält keinen Umrechnungskurs für den Währungsschlüssel " & varVonWährung, , "fktEuro") fktEuroKurs = Nothing Exit Function End If varBetrag = Int(varBetrag / varKurs * 100 + 0.5) / 100 End If fktEuroKurs = varBetrag End Function Public Shared Function spireLoadLicense() As Boolean Try ''Nicht notwendig --> license.elic hat beide drinnen. 'Spire.License.LicenseProvider.SetLicenseKey("MkctkXG06cMhlK6LAQCVDXFpzaLd8k9flTIXzX2vqnaj15/RjBiXqzJFPI5Ay0WJO+ng6Fwgb1s0Owoicm6acvP5dL8R/rHMlEAIQmWgY231zrrzVcbfujmJLyeYq1bwdbZY8vAtegSo3uhg8MruQ0NwF8OwrmrRTQzW8VkBRePb6jhCAWqMyr4Ho/d06JN3ngF3ulN/aNkFIWTHBvPG+M0CWuhudGhNtyDcnWPHDHm1+qigpwwnh69s8A4romdnSDQpFa2/LG5KAzwVmcjKSfVZs6e497ydRBFpggoe8d4J0FnRW//ROJOraTklVBMcGNZm9plWQvA23wxAhaVQHPINx/ecdTb9NIAeQajYyghx/tA+XVQ5uessceZW4LWZ4cnq6nhsBS4Y6oZ76/pHw1cUSfOHFCVi++X+2JYatsUJcAn2QXM6qpul7MpKCdDtT+yE94umhllKK7oBA8TMVFntgRfSZU+fftgMB+Nrs91UqM52OQsM4f0Q/dQvLGL/gr7NYE7QBQRV8ersUHls2s/7NHJ1VSoXKO9bghFaqzWoMGJ1UM/DvgdMg+URo6F9yanH4dEv8XDpTgx82f4pwncquCZJoPTdlXVhF4mK6/euo5Od3pmO9ZTqY+DxNwpgBIvkWTTvZiqkq4aDhNR5fhoihtAIWDiaHxMhlXxKTeK8z6n3puusWs0ZcXXaXb1jfUi7L9v8tWavr7Kag89coCXv7q5ejJ+mxTH9N6wIA029crL1+xyWSMOIaU6Iav8nrro5Xhdt14abW+458iqjVQRL1l6ZUkZjXaJHjoqy1aKg1OafFAGjULuOp8ozBJwQbRD0y5czx60NFjKlxR01SrfMrHV8uCjJXWm4BquAQPlHq6gfqSdXjmv/ZgKiKnXu+2FelPHK96IRK+y+pSv0hUx9JJ+9zL0JdAdwKmm2rRGk2KTKKfJ8jB+FdTpp61ecYsM2XB+GqZvLgJx6DUFklevpLG8XuKxcJFJGyAEhUzeUYhjUv60gSRKKAs8XlOmP35fBP2Gd2X6H1cUJFEdam62dDnE9ZBRyBlwA2n7iFav3s7+PzSuEACBG8R1nky52Ye9qE6zM8Plw0boPIoOueKYQIO+9wDLZyhHYjwc/6h3snP76tjsra7IS1c0Yx/P2lMx8C9LogL4c7Hyo7DH/bmn7Kx1C3eYH7IMY2uXoRfJ2tEtJ8MxvD1Xm4ZU1rL/BWpiwTi2rHNl/ikBteyZ7D4YlfoiEpB7P4UksR/SLYS1gpmeh3py7dQytQg8tfq7Ylyn+4umppvhi2ZBhJKElo7DdRegYofwM4XZW5eyWV0Qq7WoBs7YGwq0SHcuUEsgq9mW3j4a7g5/kuTkZSXxVXFKmYEHo+CLJvcbyeWrYeSfgdWd914iiNOzCo/mufmYsOxndMUCUEv9DeKS/zIu7OKM0OIE1O62kt7rBfRyJ5tLcoPKhCaU2y2sa4bsw59YAXq09Maj136qUjLiOfyROIvxlQ30zaydZnn/pqoseHtklySmgCnbO2uQ2vl5RHnv0AbOT7UgLFmQv4x3HL2M5ezEW+3POA1OuEW/TlAvMiaE=") 'Spire.License.LicenseProvider.LoadLicense() 'Spire.License.LicenseProvider.SetLicenseKey("DqgBAA7OVWqLrl0/vKFRQ3B4fULEZEi+uN7wMgS475TeA6kOemBFjzZEG9fkW/Bgn5JDj2f9fGF9/QZ3jnik3iDgvDkaWO3yrb0V+5OaXxviTkoSVmCxzBNhsfNre2Q9BkETcd3DCYew7psFTdQvVKTtugehhx5bhxitSH6q16Vvdma8/EvVg7dsYajEq+Bjxi5Ibe5Q3po5SnZBnvrbegroXy34zuauqFiKnuaIdSFlmqjuf59veZvss6mIqSZSW9IsyfyKRjLupvFZcsH5yKPOuzmoL00KQ2OqxToVvD45IEUEvjNqdWeUKLPx/JVgaV3RmsxqPWd9Bm6zb7h04OBOKNVRtSSmjX2KnBRXdQgXfSGF1uIDlvLNtpD5AOYxKPOIfJ/AFxi9m8pYKnzqSMbpaxxlOqy9Y03EXkrko3SOzhyg+k6ZyebbqMrzeOzJ7f5cl9TfttlADwnoLa42No35+xkYI3tF/kALsrWWGcVsUWK78cg2w2s79y4ERBbgZlbYqVpdsOyKBO7k1ujA83J2MUYfoSydNivNYM05Ll1UJzbMY0sxb6HGWwVHl3t7aVwioZbmonI90fmrZpfjrpkzlL0MvjY5LxL1JXcv5xJ/oXaLN/q1GxCuFvSDroV3uKRbGhonGmTroQpp7AMFoah8Bg+glLFL2ibSoJ16dlvmxwBuZM0uDMCMfJhsFRSEzUEHbX0gv8MTNC3ROmM81Rrm7klfKrsJD3FrBlf13q6yIpxo+qp0/AgkovpjsBv8y8dxEJs37C0PHcvkCr/kA0HDDTH+Rstx8EelQzOv5dcr6CgW1VWW3+dyPjHjADlRPXd+bo+gquT6NMezbQOUdm3wMNbpCQ/qwcZ5bzEXGmdhWcEs/Z+QmXRJvhBbEf3WQrlLSuzVIooL/nXo5MG8XooWPZHURz1g92vvqA2H6FU+DLJkiNp/OI5Xzp0NNqhOubcSX70noHx7SdgQrnAIGZtE90/MzLBPFZMIv1yjaDyoZsTA3nSatae4w7PvN6cXtacLZl5GnAJIRxlmjR+OvwbfXhAcbVeNYtRYXhExR9B4fxKp8/eXZorvzW7yFH8cSopnqSjmw6ywqx0u2upOuuNeGp5/kMP4QC+SMRruXWQM46Ed168OaU1GJ0PpHr+W2EWZLbqqNhrYct1FpOnVxJjA90DOKsbXFzbLGC83YgZdVo9AAIzMYu8RIhbn6ACJQlC+d9nn0S/wZPtX+PUZK1ACCCDdfm/0jwvUEb8Us2pWn6qA/ZHtkk4a/iII8F9hrDMVOQYJBJQ/IPnyJneHfqjtfB/Hw/1/KdHJYnyWg5KXaZWz+Ut4Vc48ZJCt3B6Izaf2wD68iYaDeemnJAFI3OcsjAzNx54kxs5VBJ4VtsFYPMN3SnovtfEVis3mLlKqzy0EdTOOIm0ZkgxCDHS3KogjOp2SI0kvAxxD1jE1IOKpgLkRo6mfjCzjS6RmZ/vBoBbx1OGqqxUlkD+2TyfQUGggoEX8XtYykiVoMuVUdikUQtHP12gq2aYzS9rKpaIINaEpcqU+vQlIumrlsL2MFIdvcdTEBhfoPtq4j9GZkOY=") 'Spire.License.LicenseProvider.LoadLicense() ' Exit Sub 'wegen Problemen die extra Aktivierung pro Lizenzkey wieder eingebaut. Spire.PdfViewer.License.LicenseProvider.ClearLicense() Spire.PdfViewer.License.LicenseProvider.SetLicenseKey("PxZCqGgHjS0Z4zNNAQDYLGI8+G/4QDVnRpJiYlpVAqRX+ha8wFRosyGISZ5CPT3vynGVEGAvrIGhSkRoenn1mCFwM2ENrXh6RbuSldb6QQBTrKEI3cFhMH0tdzCDazkOkVXwO72bqBRE45Z1DHfTBejGcWnZXdI52fSI0EdLNX6tFU5NxSYrU0EsFHpN8jWoTGwnLPSXHLdhQ284JnkMl8WLbJDzphene90MyxglJxhaq2SQ2FMe/NE7TtsJR5rtFQw8G7RlQMY/hfIKGoU0jVYtHprlw7bL/eZM9krw3MgxbbD5fUsWO33XwM2Fl2Omjp7FNHRVLhQtUWjOdi8rV5QEq+jmv5qMIhlxtOIc4QiPySo44++s08pVN5cthZaG033EbLiJAwi8JbY1G2Ms37sFH3kr0ldz5m4fjDrldgdq1NYe8yoTEuFg6fBJxSJ0HIMkBkjPBaptgEgdZP+heowTknRg9seErhwmQy+MLc4GjCnjOxkzvLoTYqatfq8u9abaVd5EegYgzZR0t1OfanDv765Rp+kEFgvkBzHWn55Pw1KghVG0xfd5E7+mGx6560Y4z5oTFyDLldORXgFp9/K4f80pb9/jIHSDemB8x0Ed3YlBxuTmZLHgcXPwVHc/UZiNsN0A3uWZB2GqgZWpY4ICWayb5ZghqOyHiKYZTdCxtCsOWf+9TwKDvgPXqdx0swdwa7IEIjxNUzCWq0rAtcyiN8XpH1fZZVONPJ5Zhyl4dib/bnCez6VfrwUFuKZF6NKskMWgCx393B2HGN+5N1ce5WiABot0dz4SinrRH70qrHSvSzAfeWS3vxRCu9XY5iO48voTzHLcJ0yBD+Vvz3o8TYOYmgCyI663zoAI3BLtdCKPBFEa1htZESQwB1bA2MGYpfikoA6ssKMRAzBR2Z+9JNCgYv7vMcrac6Cn9N1+IpnJmUBB+OHfLLLlqKVud0Rlpe2NGXD66QLjHZZsvIuZ0XZamg7mw2eSEGQO/GZjvAtdjzAXP3lpMT9ZPUctCGUeJboSLITik4Z/JABqIwiMLJ0t75o2AryhjhAy5po6fM3Xng97BJ3e9WN6EmpZxxJDCvtOBo7aUMceqsfYWt4/ubHhag/FnP+3bvzFPmFHjy6gyvWVh0evgDtcs8TeI8DbTfEWzcB1DRxAIPK9hyEq6Bc52DxzS0FppzAp8LLvVIwa0NlG/ey4sT8LOg2mwVoZxQHliej2B2sRnzA481Vcpaxs0jiN6s7fBOepyx4wgjJPFcl45RQVht/kqBQXPQ94V1WqOuDzTZT+lS7thxO2LwyMZtTSUn3soecmuLsZJFgIABw9s6u/GEtyt+8M8K/41a/mQqwCTGXBFZsnmYTkWM1OIURc3848P0CzJraWuZhOjgbADJhiP6DRaEU6AW95bQzPAcELvrDhURBwC4vsYcWLFtuKuNzKbArHb9megBYrnjqwnbO3/XqiH1HyBYqbfN7Jn0mS3QbTzMNoGVOjmpxWnjK5tm8TQnopT2k+1lQ9W8slj0RgAX/h7s4qSpTkl1hWYjoY/6MzURxpcJWuxRS2gd8cWmp7TnB4DXBhjH3Gfqhp7IXoTvDWIV+/") Spire.PdfViewer.License.LicenseProvider.LoadLicense() Spire.Pdf.License.LicenseProvider.ClearLicense() Spire.Pdf.License.LicenseProvider.SetLicenseKey("H+L0V/UZAQAvjnENiqh4GJWlFzzfcxZc+pOA5cYh4RfLjFGHfYAaT0E6wK2A0nBI8H7P71m+C+huUWVSKLQllk0/SfP8S6Ct4tv0SYlBL4Y/MtnVg5mm9Wn4NNIRRzPbGnH5I0xTFZVurffXte14YiUxvoNDkoY9AtZPyxJqiFzQ//etqxSNs68OBHQqQ13iBRBt8N8dS6naLe8TpkDoGvSpBmeOOkGGwVH9SzQV+FVc9cQn8j1P8yra+yMSESwlLQkeLkn4T17utlhs5STs/Lc5IlO64Fb1EuhLASSaaqVX3MsMJPr8G8a0TU4chSDGAJcRhgSX57TYLhYywo8meDdMa3hKi466w2CQ9eiphAjWbIeu1gdsiRtdOkxhhczUUyqWSAn7ju3paTI0TZfK8tLI4lwcBWso5sBkAfWGPPeybCQDsyPmnxEjwF+5n4zSt/jVtQvAiWB2GOHBAHBS/zcYVWoDN8oAGgy5rjH2bGjV0E506/8jG9mlpfJMlPhZSEw3iab14wIOXX/Koijl/pykzZ/TTw+5RrOvIKxriq8ADiP+pbUNAp16TKlvEUiGc9fWQsQ3+a7kObnst4jVoo98jXSC9oeWzFGWLclUHkaUIvQYaoieCxzzLzqOSl8NFjILhQ/Ew7YCUrEAu947qyHH8LYURRGjQGlCEnmD68eNRIXRT39jMrKCsHlhOjvZnJzO9+oJ2yTxcatzsClBccPjix2cuEFb/qmzUvA+0ElSfJfwXhLjWGxc7m11bbGADVvj5uVtZAfMbI8ifECiuRfXcNME+X7ErgP8lRyh9tTkAkmwrso3obUwgCvcMRvqE3w0D4oPJegHmhyShzd3b1zss+8cvyo68sfXotPePD1neJGSM4XWmZrZJeNNe8F+x86sMqMmYBAqkybA13gW01pmHYE/fPte1TKNJz5O8tMujcxdlm/7C6vO+o6Tyh3EIdQ3P2Wu5BjxWbtcvQHVhLXv3F6dbouXyrueOPW/MQrug1pBinxoE5xCLFbU1nWUdDH6/mQJGRRVK7Tm/oEFMGhM6xXBC74udg0VPdPhSsRXIM2B1TNKiBSmaUFWyPlrdaUqxvFIitWRYc5uRKFSdxKbpzpbq9T0g3pxfdqkq4cLd4ZWK450Eh07szHcYiTYwRqLLHWjgVF8EIzNvpT51XCFEv6bmxW6HiaONZ+Vh8NsnchIdMuQOCGRB8hU/x1JK8culq8msO+J0ArhF8E5zXN3EgWpcAMMCeEiCeNf9Wyh1axxxFHzIRsYoIb85XnUyPJakgT2J3uWRCyikg4yqWbxWboO4dM1IjtbirVYeQrlzGk7AkWjC5IGe5bTVUOU2AMi+AH5zi2cxEmcZS1NrNOIdiaDkYYVp6I5nd0Xt5sCP765xRoXuxKv+SCQEUwVIDjUi1IkRPbjq5rBRXcJZ8UI5myMjPTU3zXvw+gpJHajfP1Fx13nRwN0ffCafBLGmMoZNOUtAT9xAjBfdYyR2ukQDbxnj+d2+R6j2RFHHiNcNs+8x0o9hmIW+iuwf6q3hzfqVLi4l+G/3F+awlFRQfF7huYpzfg0mg+6CGry4cfg3lw23k5GzX6bZ2fQF8Rk") Spire.Pdf.License.LicenseProvider.LoadLicense() 'Spire.PdfViewer.License.LicenseProvider.SetLicenseFileName("licensePDFViewer.elic.xml") 'Spire.PdfViewer.License.LicenseProvider.LoadLicense() 'Spire.Pdf.License.LicenseProvider.SetLicenseFileName("licensePDFPro.elic.xml") 'Spire.Pdf.License.LicenseProvider.LoadLicense() 'Spire.Pdf.License.LicenseProvider.SetLicenseFileName("license.elic.xml") 'Spire.Pdf.License.LicenseProvider.LoadLicense() Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try End Function Public Shared Function genCSVFromDT(dt As DataTable, Optional openCSV As Boolean = False, Optional showColumnName As Boolean = True, Optional optFileName As String = "") As String Try Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SDL\tmp\" ' My.Computer.FileSystem.GetTempFileName If Not My.Computer.FileSystem.DirectoryExists(sPath) Then My.Computer.FileSystem.CreateDirectory(sPath) End If Dim txt As String = "" If showColumnName Then Dim line As String = "" For Each column As DataColumn In dt.Columns 'Add ColumnName line += ";" & column.ColumnName.Replace(";", ",") Next 'Add new line txt += line.Substring(1) & vbCrLf End If For Each row As DataRow In dt.Rows Dim line As String = "" For Each column As DataColumn In dt.Columns 'Add the Data rows. line += ";" & row(column.ColumnName).ToString().Replace(";", ",").Replace(vbNewLine, "").Replace(vbCr, "").Replace(vbLf, "").Replace(vbCrLf, "").Replace(System.Environment.NewLine, " ") Next 'Add new line txt += line.Substring(1) & vbCrLf Next Dim endung = ".csv" Dim filename As String = "" If optFileName <> "" Then filename = sPath & optFileName & endung '".xlsx" While System.IO.File.Exists(filename) filename = sPath & optFileName & Now.ToString("ddMMyyyyHHmmss") & endung '".xlsx" End While Else filename = sPath & "tmp_" & Now.ToString("ddMMyyyyHHmmss") & endung '".xlsx" While System.IO.File.Exists(filename) filename = sPath & "tmp_" & Now.ToString("ddMMyyyyHHmmss") & endung '".xlsx" End While End If Using sw As StreamWriter = New StreamWriter(filename, False, System.Text.Encoding.UTF8) sw.WriteLine(txt) End Using If openCSV Then Process.Start(filename) Return filename Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return Nothing End Try End Function Public Shared Function genExcelFromDT_NEW(dt As DataTable, Optional rangeAsWaehrung() As String = Nothing, Optional ShowAutoFilter As Boolean = True, Optional HeaderTxt As String = "", Optional HeaderTxt2 As String = "", Optional openPDF As Boolean = True, Optional optFileName As String = "", Optional endung As String = ".xlsx", Optional autoAdjust As Boolean = True) As String Try Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SDL\tmp\" ' My.Computer.FileSystem.GetTempFileName If Not My.Computer.FileSystem.DirectoryExists(sPath) Then My.Computer.FileSystem.CreateDirectory(sPath) End If Dim wb As New XLWorkbook ' Dim dt As DataTable = (dgv.DataSource) ' Dim dt As DataTable = TryCast(dgv., DataTable) wb.Worksheets.Add(dt, "DATEN") wb.Worksheets(0).Tables.FirstOrDefault().ShowAutoFilter = ShowAutoFilter If rangeAsWaehrung IsNot Nothing Then For Each r As String In rangeAsWaehrung Try wb.Worksheets(0).Range(r).Style.NumberFormat.SetFormat("###,###,##0.00 €") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Next End If If HeaderTxt <> "" Then wb.Worksheets(0).FirstRow.InsertRowsAbove(2) wb.Worksheets(0).Range("A1").Value = HeaderTxt wb.Worksheets(0).Range("A1").Style.Font.Bold = True If HeaderTxt2 <> "" Then wb.Worksheets(0).Range("A2").Value = HeaderTxt2 wb.Worksheets(0).Row(2).InsertRowsBelow(1) End If End If If autoAdjust Then 'Spaltenbreite auto: wb.Worksheets(0).Columns().AdjustToContents() End If Dim filename As String = "" If optFileName <> "" Then filename = sPath & optFileName & endung '".xlsx" While System.IO.File.Exists(filename) filename = sPath & optFileName & Now.ToString("ddMMyyyyHHmmss") & endung '".xlsx" End While Else filename = sPath & "tmp_" & Now.ToString("ddMMyyyyHHmmss") & endung '".xlsx" While System.IO.File.Exists(filename) filename = sPath & "tmp_" & Now.ToString("ddMMyyyyHHmmss") & endung '".xlsx" End While End If wb.SaveAs(filename) If openPDF Then Process.Start(filename) Return filename Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return Nothing End Try End Function Public Shared Function sendMail(eMailTo, betreff, text, Optional eMailfrom = "support@verag.ag", Optional prio = False, Optional uhrzeitAngeben = True, Optional cc = "", Optional bcc = "", Optional anhaenge = Nothing, Optional art = 0) Dim Msg As New MailMessage Dim myCredentials As New System.Net.NetworkCredential Msg.IsBodyHtml = True Dim mySmtpsvr As New SmtpClient() Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA Case "IMEX" myCredentials.UserName = "support@verag.ag" myCredentials.Password = "$up0Rt2809!" mySmtpsvr.Host = "owa.verag.ag" mySmtpsvr.Port = 587 Case "ATILLA" myCredentials.UserName = "support@verag.ag" myCredentials.Password = "$up0Rt2809!" mySmtpsvr.Host = "owa.verag.ag" mySmtpsvr.Port = 587 Case "AMBAR" Select Case art Case "3", "4" 'Export myCredentials.UserName = "office@ambarlog.de" ' myCredentials.Password = "Naq30716" ' myCredentials.UserName = "import@ambarlog.com" myCredentials.Password = "Naq30716" mySmtpsvr.Host = "owa.verag.ag" '"smtp.office365.com" -> office365 deaktiviert! mySmtpsvr.Port = 587 'mySmtpsvr.EnableSsl = True 'text = text.replace("import@ambarlog.com", "office@ambarlog.com") 'text = text.replace("import@ambarlog.de", "office@ambarlog.com") eMailfrom = "office@ambarlog.de" Case Else ' myCredentials.UserName = "import@ambarlog.com" 'myCredentials.UserName = "import@ambarlog.de" 'myCredentials.Password = "Meh062020" 'mySmtpsvr.Host = "smtp.office365.com" 'mySmtpsvr.Port = 587 'mySmtpsvr.EnableSsl = True myCredentials.UserName = "import@ambarlog.de" myCredentials.Password = "Meh062020" mySmtpsvr.Host = "owa.verag.ag" mySmtpsvr.Port = 587 ' mySmtpsvr.EnableSsl = True ' eMailfrom = "import@ambarlog.com" End Select Case "UNISPED" myCredentials.UserName = "no-reply@unisped.at" myCredentials.Password = "GL5unisped!KNL3" mySmtpsvr.Host = "owa.verag.ag" mySmtpsvr.Port = 587 '25 '587 '25 Case Else myCredentials.UserName = "support@verag.ag" myCredentials.Password = "$up0Rt2809!" mySmtpsvr.Host = "owa.verag.ag" mySmtpsvr.Port = 587 '25 '587 '25 End Select mySmtpsvr.UseDefaultCredentials = False mySmtpsvr.Credentials = myCredentials Try 'Msg.BodyEncoding = System.Text.Encoding.GetEncoding("UTF-8") Msg.BodyEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1") Msg.From = New MailAddress(eMailfrom) If eMailTo IsNot Nothing Then For Each s In eMailTo.ToString.Split(";") If s <> "" Then Msg.To.Add(convertToIso(s).ToString.Trim()) Next End If If cc IsNot Nothing Then For Each s In cc.ToString.Split(";") If s <> "" Then Msg.CC.Add(convertToIso(s).ToString.Trim()) Next End If If bcc IsNot Nothing Then For Each s In bcc.ToString.Split(";") If s <> "" Then Msg.Bcc.Add(convertToIso(s).ToString.Trim()) Next End If Msg.Subject = betreff '"ERROR - DAKOSY Einarbeitung" If uhrzeitAngeben Then Msg.Body &= "Zeitpunkt: " & Now.ToShortDateString & " " & Now.ToShortTimeString & "

" 'Msg.Body &= vbNewLine & vbNewLine End If Msg.Body &= text If prio Then Msg.Priority = MailPriority.High If anhaenge IsNot Nothing Then For Each aa In DirectCast(anhaenge, List(Of String)) If aa IsNot Nothing AndAlso aa <> "" Then Msg.Attachments.Add(New System.Net.Mail.Attachment(aa)) Next End If Catch ex As Exception Try VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("MAIL ERROR - VOR SENDEN" & ex.Message, "TO: " & eMailTo & vbNewLine & "SUBJ: " & betreff & vbNewLine & "TXT: " & text, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL) Catch ex2 As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("MAIL ERROR - VOR SENDEN LOG! " & ex2.Message, "TO: " & eMailTo & vbNewLine & "SUBJ: " & betreff & vbNewLine & "TXT: " & text, ex2.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.LOG) End Try End Try 'Prüfen, ob Empfänger angegeben: If Msg.To.Count = 0 And Msg.CC.Count = 0 And Msg.Bcc.Count = 0 Then VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Kein Empfänger!", "TO: " & eMailTo & vbNewLine & "SUBJ: " & betreff & vbNewLine & "TXT: " & text, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL) Return False End If 'Msg.To.Clear() 'Msg.CC.Clear() 'Msg.Bcc.Clear() 'Msg.To.Add("al@verag.ag") Try 'SENDEN:::::::::::::::::::::: 'Dim mailItem As Outlook.MailItem = TryCast(Msg, Outlook.MailItem) ' mailItem.Display() mySmtpsvr.Send(Msg) Catch ex As Exception Try 'Falls Fehler nicht beim Senden, sonder was anderes. VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "TO: " & eMailTo & vbNewLine & "SUBJ: " & betreff & vbNewLine & "TXT: " & text, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL) Catch ex3 As Exception End Try Try mySmtpsvr.Port = 25 mySmtpsvr.Send(Msg) Catch ex2 As Exception If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "UNISPED" Then ' ERST DEN SERVER EINRICHTEN! Return False End If Try mySmtpsvr.Host = "192.168.0.69" mySmtpsvr.Port = 25 mySmtpsvr.Send(Msg) Catch ex3 As Exception MsgBox(ex3.Message & ex3.StackTrace & vbNewLine & vbNewLine & "TO: " & eMailTo & vbNewLine & "cc: " & cc & vbNewLine & "bcc: " & bcc) Return False End Try End Try End Try Return True End Function Shared Function getISO2LandFromISO3Land(Iso3Land As String) If Iso3Land Is Nothing Then Return Nothing If Iso3Land.Length <> 3 Then Return Nothing Dim sqlstr = "SELECT TOP 1 isnull(LandKz,'') AS LandKzISO2 from [Länderverzeichnis für die Außenhandelsstatistik] where LandKz_ISO_3 = '" & Iso3Land & "' " Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Return SQL.getValueTxtBySql(sqlstr, "FMZOLL") End Function Shared Function getISO2LandFromLandNr(LandNr As Integer) If Not IsNumeric(LandNr) Then Return Nothing If LandNr = 0 Then Return Nothing Dim sqlstr = "SELECT TOP 1 isnull(LandKz,'') AS LandKzISO2 from [Länderverzeichnis für die Außenhandelsstatistik] where LandNr = '" & LandNr & "' " Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Return SQL.getValueTxtBySql(sqlstr, "FMZOLL") End Function Shared Function getISO2Land(LandKz As String) If LandKz Is Nothing Then Return Nothing Dim sqlstr = "SELECT TOP 1 isnull([Länderverzeichnis für die Außenhandelsstatistik].LandKz,'') AS LandKzISO2 FROM [Länderverzeichnis für die Außenhandelsstatistik] LEFT JOIN Währungstabelle ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = Währungstabelle.Währungsschlüssel WHERE Währungstabelle.LandKz='" & LandKz & "' " Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Return SQL.getValueTxtBySql(sqlstr, "FMZOLL") End Function Shared Function getISO1Land(LandKz As String) Dim sqlstr = "SELECT TOP 1 isnull(Währungstabelle.LandKz,'') AS LandKzISO1 FROM [Länderverzeichnis für die Außenhandelsstatistik] LEFT JOIN Währungstabelle ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = Währungstabelle.Währungsschlüssel WHERE [Länderverzeichnis für die Außenhandelsstatistik].LandKz='" & LandKz & "' " Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Return SQL.getValueTxtBySql(sqlstr, "FMZOLL") End Function Shared Function convertToIso(s) As String Return s Dim converted As Byte() = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("iso-8859-1"), s) 'Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("iso-8859-1"), s) Return converted.ToString End Function Public Shared Sub sendMailTEST(eMailTo, betreff, text, Optional eMailfrom = "support@verag.ag", Optional prio = False, Optional uhrzeitAngeben = True) Dim Msg As New MailMessage Dim myCredentials As New System.Net.NetworkCredential myCredentials.UserName = "support@verag.ag" myCredentials.Password = "$up0Rt2809!" Msg.IsBodyHtml = True Dim mySmtpsvr As New SmtpClient() mySmtpsvr.Host = "owa.verag.ag" mySmtpsvr.Port = 25 '587 '25 mySmtpsvr.UseDefaultCredentials = False mySmtpsvr.Credentials = myCredentials Try Msg.From = New MailAddress(eMailfrom) Msg.To.Add(eMailTo) Msg.BodyEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1") Msg.Subject = betreff '"ERROR - DAKOSY Einarbeitung" If uhrzeitAngeben Then Msg.Body = "Zeitpunkt: " & Now.ToShortDateString & " " & Now.ToShortTimeString & "

" 'Msg.Body &= vbNewLine & vbNewLine End If Msg.Body &= text If prio Then Msg.Priority = MailPriority.High mySmtpsvr.Send(Msg) Catch ex As Exception Try mySmtpsvr.Host = "192.168.0.107" mySmtpsvr.Send(Msg) Catch ex2 As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Try End Sub Public Shared Function getFilePathTypeValid(filePath) As String Dim Typ = "" If filePath <> "" Then Dim fi As New FileInfo(filePath) Dim filename = fi.Name Select Case fi.Extension.ToString.Replace(".", "").ToUpper Case "PDF" : Typ = "PDF" Case "XLS", "XLM", "XLSM", "XLSX", "CSV" : Typ = "EXCEL" Case "DOC", "DOCX" : Typ = "WORD" Case "TXT" : Typ = "TEXT" Case "JPEG", "JPG", "GIF", "TFF" : Typ = "BILD" Case "EXE" : MsgBox("Aviso-Anhänge: Ungültiges Datei-Format!") : Return False Case Else : Typ = "SONSTIGES" End Select End If Return Typ End Function Shared Function EmAilAttach(e As DragEventArgs) As String Try ' We have a embedded file. First lets try to get the file name out of memory Dim theStream As System.IO.Stream = CType(e.Data.GetData("FileGroupDescriptor"), System.IO.Stream) Dim fileGroupDescriptor(512) As Byte theStream.Read(fileGroupDescriptor, 0, 512) Dim fileName As System.Text.StringBuilder = New System.Text.StringBuilder("") Dim i As Integer = 76 While Not (fileGroupDescriptor(i) = 0) fileName.Append(Convert.ToChar(fileGroupDescriptor(i))) System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1) End While theStream.Close() ' We should have the file name or if its an email, the subject line. Create our temp file based on the temp path and this info Dim myTempFile As String = System.IO.Path.GetTempPath & VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(fileName.ToString) ' Look to see if this is a email message. If so save that temporarily and get the temp file. If InStr(myTempFile, ".msg") > 0 Then Dim objOL As New Microsoft.Office.Interop.Outlook.Application Dim objMI As Microsoft.Office.Interop.Outlook.MailItem If objOL.ActiveExplorer.Selection.Count > 1 Then MsgBox("Es kann nur ein Element übertagen werden.", MsgBoxStyle.OkOnly Or MsgBoxStyle.Information, "Ein Element pro Vorgang") End If For Each objMI In objOL.ActiveExplorer.Selection() objMI.SaveAs(myTempFile) Exit For Next objOL = Nothing objMI = Nothing Else ' If its a attachment we need to pull the file itself out of memory Dim ms As System.IO.MemoryStream = CType(e.Data.GetData("FileContents", True), System.IO.MemoryStream) Dim FileBytes(CInt(ms.Length)) As Byte ' read the raw data into our variable ms.Position = 0 ms.Read(FileBytes, 0, CInt(ms.Length)) ms.Close() ' save the raw data into our temp file Dim fs As System.IO.FileStream = New System.IO.FileStream(myTempFile, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write) fs.Write(FileBytes, 0, FileBytes.Length) fs.Close() End If ' Make sure we have a actual file and also if we do make sure we erase it when done If System.IO.File.Exists(myTempFile) Then ' Assign the file name to the add dialog EmAilAttach = myTempFile Else EmAilAttach = String.Empty End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) EmAilAttach = String.Empty End Try End Function Public Function MakeScreenshot() Dim form As New Form form = Form.ActiveForm Dim bounds As Rectangle Dim screenshot As System.Drawing.Bitmap Dim graph As Graphics If form Is Nothing Then Return "" bounds = form.Bounds 'Screen.PrimaryScreen.Bounds screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb) graph = Graphics.FromImage(screenshot) graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy) ' PictureBox1.Image = screenshot If Not My.Computer.FileSystem.DirectoryExists(My.Computer.FileSystem.SpecialDirectories.Temp & "\Screenshots_" & My.Application.Info.AssemblyName & "\") Then My.Computer.FileSystem.CreateDirectory(My.Computer.FileSystem.SpecialDirectories.Temp & "\Screenshots_" & My.Application.Info.AssemblyName & "\") End If Dim cnt As Integer = 1 Dim strname As String = My.Computer.FileSystem.SpecialDirectories.Temp & "\Screenshots_" & My.Application.Info.AssemblyName & "\" & form.Name & "_" & Now.ToString("ddMMyyyy_HHmm_") While System.IO.File.Exists(strname & cnt & ".bmp") : cnt += 1 : End While screenshot.Save(strname & cnt & ".bmp") Return strname & cnt & ".bmp" End Function Public Function TakeScreenShot(ByVal Control As Control) As Bitmap Dim tmpImg As New Bitmap(Control.Width, Control.Height) Using g As Graphics = Graphics.FromImage(tmpImg) g.CopyFromScreen(Control.PointToScreen(New Point(0, 0)), New Point(0, 0), New Size(Control.Width, Control.Height)) End Using Return tmpImg End Function Shared Function getQRCode(QRtext As String, Optional QZSize As Integer = 4, Optional QRVersion As Integer = 7, Optional CorrectionLevel As QRCodeEncoder.ERROR_CORRECTION = QRCodeEncoder.ERROR_CORRECTION.M, Optional encoding As QRCodeEncoder.ENCODE_MODE = QRCodeEncoder.ENCODE_MODE.BYTE) As Image Dim qrCodeEncoder As QRCodeEncoder = New QRCodeEncoder() qrCodeEncoder.QRCodeEncodeMode = encoding Try Dim scale As Integer = Convert.ToInt16(QZSize) qrCodeEncoder.QRCodeScale = scale Catch ex As Exception MessageBox.Show("Invalid size!") Return Nothing End Try Try Dim version As Integer = Convert.ToInt16(QRVersion) qrCodeEncoder.QRCodeVersion = version Catch ex As Exception MessageBox.Show("Invalid version !") End Try Dim errorCorrect As String = CorrectionLevel qrCodeEncoder.QRCodeErrorCorrect = CorrectionLevel Dim image As Image Dim data As String = QRtext qrCodeEncoder.QRCodeVersion = 0 ' qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M image = qrCodeEncoder.Encode(data, System.Text.Encoding.UTF8) Return image End Function Shared Function getBARCODEAviso(AvisoID As String) As Image Dim barcode As Image = Code128Rendering.MakeBarcodeImage("/" & AvisoID & "/", 1, True, 25) ' barcode.RotateFlip(RotateFlipType.Rotate90FlipNone) Return barcode End Function End Class Public Class SDL_Functions Shared Function SDL_GueltigBis_UTA_IDS() Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Return SQL.doSQL("UPDATE SDL SET Archiviert=1 where SDLNr IN(212,100) AND (Archiviert is null OR Archiviert = 0) AND [GültigBis] is not null AND [GültigBis] < dateadd(month,-2,CAST(SUBSTRING(CAST((DATEADD(d,-DAY(GETDATE()),GETDATE()) + 1) AS BINARY(8)),1,4) + 0x00000000 AS DATETIME))", "SDL") End Function End Class