Files
aufmass-web/_legacy/_tools/_Test_Evergabe.au3
T

1616 lines
63 KiB
AutoIt
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
;_Test_Evergabe.au3
;Includes AutoStandart
#include <File.au3>
#include <Array.au3>
#include <Debug.au3>
#include <winhttp.au3>
#include <Excel.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
Global $GsSMNr = ""
Global $GsBasePfad = @ScriptDir & "\..\EV\DBM\"
Global $GsBasePfad = @ScriptDir & "\..\EV\TP\2023\"
Global $Cloud_Pfad_Baubegleitung = "D:\Arbeit\OneDrive - Technik Partner AG\TP-DE\Aufträge\Eingang\_Baubegleitung\"
Global $Cloud_Pfad_Service_GF = "D:\Arbeit\OneDrive - Technik Partner AG\TP-DE\Aufträge\Eingang\_Service_GF\"
Global $Cloud_Pfad_STOE_TB = "D:\Arbeit\OneDrive - Technik Partner AG\TP-DE\Aufträge\Eingang\_Störung_Tiefbau_TP\"
Global $Cloud_Pfad_Tagesgeschaeft = "D:\Arbeit\OneDrive - Technik Partner AG\TP-DE\Aufträge\Eingang\_Tagesgeschäft\"
Global $Cloud_Pfad_Tiefbau_Dritte = "D:\Arbeit\OneDrive - Technik Partner AG\TP-DE\Aufträge\Eingang\_Tiefbau_Dritte\"
;~ _start_Evergabe()
;~ _Aktuelle_Auftraege()
;~ _testtst()
;~ ConsoleWrite("Fertig mit dem Task...")
;~ _test()
; ======= MINIMALTEST BITTE GENAU SO TESTEN =====================
; ======= KONFIGURATION ==========================================
Global Const $LOGIN_URL = "https://evergabe.telekom.de/public/login"
Global Const $DASHBOARD = "https://evergabe.telekom.de/framework-agreement-call"
Global Const $USERNAME = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Benutzer", "xxx")
Global Const $PASSWORD = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Passwort", "xxx")
; COM-Fehler anzeigen
Global $oMyError = ObjEvent("AutoIt.Error", "_ComErrFunc")
Global $g_iReqCounter = 0 ; Zähler für 01.header.txt, 01.response.txt, ...
Func _ComErrFunc()
Local $sMsg = "COM-Fehler!" & @CRLF & _
"Beschreibung: " & @error & @CRLF & _
"Zusatzzahl: " & @extended & @CRLF
ConsoleWrite("! " & $sMsg & @CRLF)
MsgBox(16, "COM-Fehler", $sMsg)
EndFunc
; =================== Hilfsfunktionen ============================
Func _UrlEncode($s)
Local $i, $ch, $sOut = ""
For $i = 1 To StringLen($s)
$ch = StringMid($s, $i, 1)
Local $asc = Asc($ch)
If ($asc >= 48 And $asc <= 57) Or _
($asc >= 65 And $asc <= 90) Or _
($asc >= 97 And $asc <= 122) Or _
$ch = "-" Or $ch = "_" Or $ch = "." Or $ch = "~" Then
$sOut &= $ch
Else
$sOut &= "%" & Hex($asc, 2)
EndIf
Next
Return $sOut
EndFunc
Func _Pad2($i)
If $i < 10 Then
Return "0" & $i
EndIf
Return $i
EndFunc
; Speichert Request- und Response-Daten als NN.header.txt / NN.response.txt
Func _LogRequestResponse($sMethod, $sUrl, $sReqHeaders, $sReqBody, _
$iStatus, $sRespHeaders, $sRespBody)
$g_iReqCounter += 1
Local $sIdx = _Pad2($g_iReqCounter)
; ----- Header-Datei -----
Local $sHeaderFile = $sIdx & ".header.txt"
Local $sHeaderContent = ""
$sHeaderContent &= "=== REQUEST " & $sIdx & " ===" & @CRLF
$sHeaderContent &= "Method: " & $sMethod & @CRLF
$sHeaderContent &= "URL: " & $sUrl & @CRLF & @CRLF
$sHeaderContent &= "[Request Headers]" & @CRLF & $sReqHeaders & @CRLF & @CRLF
$sHeaderContent &= "[Request Body]" & @CRLF & $sReqBody & @CRLF
FileWrite($sHeaderFile, $sHeaderContent)
; ----- Response-Datei -----
Local $sRespFile = $sIdx & ".response.txt"
Local $sRespContent = ""
$sRespContent &= "=== RESPONSE " & $sIdx & " ===" & @CRLF
$sRespContent &= "Status: " & $iStatus & @CRLF & @CRLF
$sRespContent &= "[Response Headers]" & @CRLF & $sRespHeaders & @CRLF & @CRLF
$sRespContent &= "[Response Body]" & @CRLF & $sRespBody & @CRLF
FileWrite($sRespFile, $sRespContent)
; ----- Konsolen-Ausgabe -----
ConsoleWrite("+ ==== REQUEST " & $sIdx & " " & $sMethod & " " & $sUrl & " ====" & @CRLF)
ConsoleWrite($sReqHeaders & @CRLF)
If $sReqBody <> "" Then
ConsoleWrite("Body:" & @CRLF & $sReqBody & @CRLF)
EndIf
ConsoleWrite("+ ==== RESPONSE " & $sIdx & " (HTTP " & $iStatus & ") ====" & @CRLF)
ConsoleWrite($sRespHeaders & @CRLF)
ConsoleWrite("Body (erste 500 Zeichen):" & @CRLF & StringLeft($sRespBody, 500) & @CRLF)
EndFunc
Func _HttpCreate()
Local $oHttp = ObjCreate("WinHttp.WinHttpRequest.5.1")
If Not IsObj($oHttp) Then
MsgBox(16, "Fehler", "WinHttp-Objekt konnte nicht erzeugt werden.")
Exit
EndIf
; Cookie Handling aktivieren
$oHttp.Option(6) = True ; WinHttpRequestOption_EnableCookie
Return $oHttp
EndFunc
Func _HttpGet($oHttp, $sUrl)
If Not IsObj($oHttp) Then
MsgBox(16, "Fehler", "HTTP-Objekt ist ungültig vor GET.")
Exit
EndIf
Local $sMethod = "GET"
Local $sReqHeaders = ""
Local $sReqBody = ""
ConsoleWrite("+ GET " & $sUrl & @CRLF)
$oHttp.Open($sMethod, $sUrl, False)
$oHttp.SetRequestHeader("User-Agent", _
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) eVergabeBot/1.0")
; Für Logging: Request-Header rekonstruieren (was wir selbst gesetzt haben)
$sReqHeaders &= "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) eVergabeBot/1.0" & @CRLF
$oHttp.Send()
Local $iStatus = $oHttp.Status
; Response-Header holen
Local $sAllRespHeaders = $oHttp.GetAllResponseHeaders()
Local $sRespBody = $oHttp.ResponseText
_LogRequestResponse($sMethod, $sUrl, $sReqHeaders, $sReqBody, _
$iStatus, $sAllRespHeaders, $sRespBody)
Return $sRespBody
EndFunc
Func _HttpPost($oHttp, $sUrl, $sBody)
If Not IsObj($oHttp) Then
MsgBox(16, "Fehler", "HTTP-Objekt ist ungültig vor POST.")
Exit
EndIf
Local $sMethod = "POST"
Local $sReqHeaders = ""
Local $sReqBody = $sBody
ConsoleWrite("+ POST " & $sUrl & @CRLF)
$oHttp.Open($sMethod, $sUrl, False)
$oHttp.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)")
$oHttp.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHttp.SetRequestHeader("Referer", $LOGIN_URL)
; Request-Header fürs Logging
$sReqHeaders &= "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" & @CRLF
$sReqHeaders &= "Content-Type: application/x-www-form-urlencoded" & @CRLF
$sReqHeaders &= "Referer: " & $LOGIN_URL & @CRLF
$oHttp.Send($sBody)
Local $iStatus = $oHttp.Status
Local $sAllRespHeaders = $oHttp.GetAllResponseHeaders()
Local $sRespBody = $oHttp.ResponseText
_LogRequestResponse($sMethod, $sUrl, $sReqHeaders, $sReqBody, _
$iStatus, $sAllRespHeaders, $sRespBody)
Return $oHttp
EndFunc
Func _ExtractCsrf($sHtml, ByRef $sFieldName)
; Meta-Tag
Local $aMeta = StringRegExp($sHtml, '(?i)<meta[^>]+name="csrf-token"[^>]+content="([^"]+)"', 3)
If Not @error And UBound($aMeta) >= 1 Then
$sFieldName = "_csrf"
ConsoleWrite("+ CSRF (meta): " & $aMeta[0] & @CRLF)
Return $aMeta[0]
EndIf
; Hidden input
Local $a = StringRegExp($sHtml, '(?i)name="([^"]*csrf[^"]*)"[^>]*value="([^"]+)"', 3)
If @error Or UBound($a) < 2 Then
ConsoleWrite("! CSRF-Token nicht gefunden" & @CRLF)
FileWrite("debug_login_page.html", $sHtml)
Exit
EndIf
$sFieldName = $a[0]
ConsoleWrite("+ CSRF Feld: " & $a[0] & " = " & $a[1] & @CRLF)
Return $a[1]
EndFunc
; ===================== HAUPT-PROGRAMM ============================
ConsoleWrite("+ AutoIt-Version: " & @AutoItVersion & @CRLF)
Local $oHttp = _HttpCreate()
; 1. Login-Seite holen
Local $sHtml = _HttpGet($oHttp, $LOGIN_URL)
; 2. CSRF-Token + Feldname
Local $sCsrfField = ""
Local $sCsrfValue = _ExtractCsrf($sHtml, $sCsrfField)
; 3. Cookies zu Debugzwecken
Local $sSetCookie = $oHttp.GetResponseHeader("Set-Cookie")
ConsoleWrite("+ Set-Cookie: " & $sSetCookie & @CRLF)
; 4. POST-Body bauen (Feldnamen an deine Login-Seite anpassen!)
; Beispiel für Yii2/Evergabeseite mit LoginForm[username]/LoginForm[password]:
Local $sBody = _
"LoginForm[username]=" & _UrlEncode($USERNAME) & _
"&LoginForm[password]=" & _UrlEncode($PASSWORD) & _
"&" & $sCsrfField & "=" & _UrlEncode($sCsrfValue)
; 5. Login senden
$oHttp = _HttpPost($oHttp, $LOGIN_URL, $sBody)
Local $iStatus = $oHttp.Status
Local $sResp = $oHttp.ResponseText
If $iStatus <> 302 And StringInStr($sResp, "Logout") = 0 Then
ConsoleWrite("! Login fehlgeschlagen, HTTP " & $iStatus & @CRLF)
; Response ist bereits in NN.response.txt geloggt
Exit
EndIf
ConsoleWrite("+ Login scheint erfolgreich, HTTP " & $iStatus & @CRLF)
; 6. Authentifizierte Dashboard-Abfrage (ebenfalls geloggt)
Local $sDash = _HttpGet($oHttp, $DASHBOARD)
Local $sTitle = StringRegExpReplace($sDash, "(?is).*?<title>(.*?)</title>.*", "\1")
ConsoleWrite("+ Dashboard-Titel: " & $sTitle & @CRLF)
Func _testtst()
Global $hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0")
Global $aHosts[2][2]
$aHosts[1][0] = "www.evergabe.telekom.de"
$aHosts[1][1] = _WinHttpConnect($hSession, $aHosts[1][0])
Global $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF
$sUsername = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Benutzer", "xxx")
$sPasswort = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Passwort", "xxx")
;~ $sUsername = "FK-Technikpartner"
;~ $sPasswort = "5@sLkx2rabv#"
ConsoleWrite($sUsername &@CRLF)
ConsoleWrite($sPasswort &@CRLF)
;~ FK-TechnikpartnerFK-Technikpartner
$sHeader = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
$sLink = "/"
$sReferer = ""
$aHTML = _WinHttpSimpleSSLRequest( $aHosts[1][0], "GET", $sLink, $sReferer, Default, $sHeader, True, 1)
_Write_to_Console("laden | " & $aHosts[1][0] & $sLink)
If IsArray($aHTML) Then
$aHTML[1] = StringReplace($aHTML[1], "amp;", "")
;~ $aHTML[1] = BinaryToString($aHTML[1], 4)
;~ _ArrayDisplay($aHTML)
ConsoleWrite($aHTML[1])
Else
$aHTML = _WinHttpSimpleSSLRequest($aHosts[1][0], "GET", $sLink, $sReferer)
$aHTML = StringReplace($aHTML, "amp;", "")
;~ $aHTML = BinaryToString($aHTML, 4)
ConsoleWrite($aHTML)
EndIf
MsgBox(64, "", "")
$sRetrunLogin = _EV_Login($sUsername, $sPasswort)
If $sRetrunLogin = "True" Then
;~ ConsoleWrite("Login Erfolgreich" & @CRLF)
_Write_to_Console("Login Erfolgreich")
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call", "https://www.evergabe.telekom.de/")
$sDetailsID = "17675084"
$aRrasd = _EV_GET_LEB_Liste($sDetailsID)
_DebugArrayDisplay($aRrasd)
EndIf
EndFunc ;==>_testtst
Func _Aktuelle_Auftraege()
Global $hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0")
Global $aAMasterListe[5]
Global $aHosts[2][2]
$aHosts[1][0] = "www.evergabe.telekom.de"
$aHosts[1][1] = _WinHttpConnect($hSession, $aHosts[1][0])
Global $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF
$sUsername = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Benutzer", "xxx")
$sPasswort = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Passwort", "xxx")
$sUsername = "FK-Technikpartner"
$sPasswort = "5@sLkx2rabv#"
;~ FK-TechnikpartnerFK-Technikpartner
$sPfadNextCloud = "E:\OneDrive - Technik Partner Construction GmbH\TP-DE\"
$aSearchInfo = _RecursiveFileListToArray($sPfadNextCloud, '', 2)
$sPfadCloudPlanung = "E:\OneDrive - Technik Partner Construction GmbH\TP-DE\_Planung\MA\"
$aSearchInfoP = _RecursiveFileListToArray($sPfadCloudPlanung, '', 2)
$sRetrunLogin = _EV_Login($sUsername, $sPasswort)
If $sRetrunLogin = "True" Then
ConsoleWrite("Login Erfolgreich" & @CRLF)
_Write_to_Console("Login Erfolgreich")
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call", "https://www.evergabe.telekom.de/")
;~ ClipPut($sHTML)
;~ _Write_to_Console($sHTML)
;~ MsgBox(64,"erstmal","fertig")
$sStatus = "-1"
$aEV_Liste = _EV_Suche_Status_All($sStatus) ;Vertrag;SM;TitleEV;42erNr;StartDatum;EndDatum;DetailsIDEV;Status
;~ _DebugArrayDisplay($aEV_Liste)
;4650009407|208602505|Hof 979244 Münstertal SM 208602505|4211387386|29.08.2022|30.09.2022|18168514|Neu
$sWrite = "Vertrag|SMNr|Kurztext EV|AbrufNr EV|Startdatum|Enddatum|DetailsID|Status EV|CloudPFad|LEB Status EV|PlanPreis EV|Freigabedatum|Preis|RBU|Gutschrift|Avis"& @CRLF
FileWrite(@ScriptDir & "\..\EV_Daten_" & @YEAR &"_" & @MON & "_" &@MDAY& ".txt", $sWrite)
Dim $aMasterListe[UBound($aEV_Liste)][17]
For $i = 0 To UBound($aEV_Liste) - 1
$aMasterListe[$i][0] = $aEV_Liste[$i][0]
$aMasterListe[$i][1] = $aEV_Liste[$i][1]
$aMasterListe[$i][2] = $aEV_Liste[$i][2]
$aMasterListe[$i][3] = $aEV_Liste[$i][3]
$aMasterListe[$i][4] = $aEV_Liste[$i][4]
$aMasterListe[$i][5] = $aEV_Liste[$i][5]
$aMasterListe[$i][6] = $aEV_Liste[$i][6]
$aMasterListe[$i][7] = $aEV_Liste[$i][7]
$aAMasterListe[0] = $aEV_Liste[$i][0];Vertrag
$aAMasterListe[1] = $aEV_Liste[$i][1];SMnr
$aAMasterListe[2] = $aEV_Liste[$i][2];TitleEV
$aAMasterListe[3] = $aEV_Liste[$i][3];42erNr
$aAMasterListe[4] = $aEV_Liste[$i][6];DetailsIDEv
Dim $aSuchErg[1]
For $ii = 1 To UBound($aSearchInfo) - 1
If StringInStr($aSearchInfo[$ii], $aEV_Liste[$i][1]) Then
_ArrayAdd($aSuchErg, $aSearchInfo[$ii])
EndIf
Next
If UBound($aSuchErg) > 1 Then
_ArrayDelete($aSuchErg, 0)
$aMasterListe[$i][8] = $aSuchErg[0]
Else
; Suche Aufträge in der Planung
Dim $aSuchErg2[1]
For $a = 1 To UBound($aSearchInfoP) - 1
If StringInStr($aSearchInfoP[$a], $aEV_Liste[$i][1]) Then
_ArrayAdd($aSuchErg2, $aSearchInfoP[$a])
EndIf
Next
If UBound($aSuchErg2) > 1 Then
_ArrayDelete($aSuchErg2, 0)
$aMasterListe[$i][8] = $aSuchErg2[0]
Else
_Write_to_Console($aEV_Liste[$i][1] & " nicht in der Cloud gefunden!!!!")
$aMasterListe[$i][8] = "NA " & $aEV_Liste[$i][1]
EndIf
EndIf
;Abgrge Plan Preis
$sSumme = _EV_GET_PlanungsSumme($aEV_Liste[$i][6])
$aMasterListe[$i][10] = $sSumme
$stemp = _EV_DDL_P83_GET_Bez($aEV_Liste[$i][6])
_EV_DDL_LV_Planung($aEV_Liste[$i][6])
; Abfrage EV Abgerechnet in Bemerkung
$aLEB_Liste = _EV_GET_LEB_Liste($aEV_Liste[$i][6]) ;detailsID
If IsArray($aLEB_Liste) Then
;~ _DebugArrayDisplay($aLEB_Liste)
$sNeuText = ""
;~ $sNeuText = _ArrayToString($aLEB_Liste, ";", -1, -1, 1, 3)
For $iii = 0 To UBound($aLEB_Liste) - 1
$sNeuText &= $aLEB_Liste[$iii][2] & " Status: " & $aLEB_Liste[$iii][3] &$aLEB_Liste[$iii][4]& " ;"
Next
$aMasterListe[$i][9] = $sNeuText
_Write_to_Console($sNeuText)
Else
$aMasterListe[$i][9] = "keine Abrechnung"
EndIf
;~ _DebugArrayDisplay($aMasterListe)
$sWrite = $aMasterListe[$i][0] & "|"& $aMasterListe[$i][1] & "|"& $aMasterListe[$i][2] & "|"& $aMasterListe[$i][3] & "|"& $aMasterListe[$i][4] & "|"& $aMasterListe[$i][5] & "|"& $aMasterListe[$i][6] & "|"& $aMasterListe[$i][7] & "|"& $aMasterListe[$i][8] & "|"& $aMasterListe[$i][9] & "|"& $aMasterListe[$i][10] & "|"&$aMasterListe[$i][11] & "|"&$aMasterListe[$i][12] & "|"&$aMasterListe[$i][13] & "|"&$aMasterListe[$i][14] & "|"&$aMasterListe[$i][15] & "|"&$aMasterListe[$i][16] & "|"& @CRLF
FileWrite(@ScriptDir & "\..\EV_Daten_" & @YEAR &"_" & @MON & "_" &@MDAY& ".txt", $sWrite)
ConsoleWrite($sWrite&@CRLF)
Next
_DebugArrayDisplay($aMasterListe)
EndIf
EndFunc ;==>_Aktuelle_Auftraege
Func _Suche_Cloud()
$sPfadNextCloud = "D:\Arbeit\OneDrive - Technik Partner AG\TP-DE\"
Local $sSuchtext = "208158851"
If $sSuchtext = "" Then
$sSuchtext = "*"
EndIf
;~ MsgBox(64, "Suche los...",$sSuchtext & @CRLF & $sPfadNextCloud )
;~ $aSearchInfo = _RecursiveFileListToArray($sPfadNextCloud, $sSuchtext, 1)
$aSearchInfo = _RecursiveFileListToArray($sPfadNextCloud, '', 2)
;~ _ArrayDisplay($aSearchInfo)
;~ _ArrayDisplay($aSearchInfo, "$aFileList")
Dim $aSuchErg[1]
For $i = 1 To UBound($aSearchInfo) - 1
If StringInStr($aSearchInfo[$i], $sSuchtext) Then
_ArrayAdd($aSuchErg, $aSearchInfo[$i])
EndIf
Next
;~ _ArrayDisplay($aSuchErg)
;~ MsgBox(64, "", UBound($aSuchErg))
If UBound($aSuchErg) > 1 Then
_ArrayDelete($aSuchErg, 0)
;~ _ArrayDisplay($aSuchErg)
_Write_to_Console("Pfad Cloud; " & $aSuchErg[0])
ShellExecute($aSuchErg[0])
Else
_Write_to_Console($sSuchtext & " nicht in der Cloud gefunden!!!!")
EndIf
EndFunc ;==>_Suche_Cloud
Func _start_Evergabe()
Global $hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0")
Global $aHosts[2][2]
$aHosts[1][0] = "www.evergabe.telekom.de"
$aHosts[1][1] = _WinHttpConnect($hSession, $aHosts[1][0])
Global $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF
$sUsername = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Benutzer", "xxx")
$sPasswort = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Passwort", "xxx")
$sUsername = "FK-Technikpartner"
$sPasswort = "5@sLkx2rabv#"
;~ FK-TechnikpartnerFK-Technikpartner
$sRetrunLogin = _EV_Login($sUsername, $sPasswort)
If $sRetrunLogin = "True" Then
;~ ConsoleWrite("Login Erfolgreich" & @CRLF)
_Write_to_Console("Login Erfolgreich")
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call", "https://www.evergabe.telekom.de/")
;~ ClipPut($sHTML)
;~ _Write_to_Console($sHTML)
;~ MsgBox(64,"erstmal","fertig")
$sStatus = "-1"
$aEV_Liste = _EV_Suche_Status_All($sStatus) ;Vertrag;SM;TitleEV;42erNr;StartDatum;EndDatum;DetailsIDEV;Status
_DebugArrayDisplay($aEV_Liste)
;~ ;;Row|Col 0|Col 1|Col 2|Col 3|Col 4|Col 5|Col 6|Col 7
;;# 0|4650009407|208602505|Hof 979244 Münstertal SM 208602505|4211387386|29.08.2022|30.09.2022|18168514|Neu
$aListre = _EV_Suche_Status_All("-1")
;_DebugArrayDisplay($aListre)
For $i = 0 To UBound($aEV_Liste) - 1
; SMnr suchen in EVergabe:
$aArrayList = _EV_Search_SM($aEV_Liste[$i][1])
;_DebugArrayDisplay($aArrayList)
;Carl-Benz-Str. 578579 Neuhausen ob Eck SM 207268568|207268568|4210464751|17542106|4210464751/00010 Fremdleistung Tiefbau DBM|4650002630|06.09.2021|01.07.2022|Angenommen
$GsSMNr = $aEV_Liste[$i][1]
If IsArray($aArrayList) Then
For $ia = 0 To UBound($aArrayList) - 1
$aLEB_Liste = _EV_GET_LEB_Liste($aArrayList[$ia][3]) ; DetailsID übergeben
_EV_DDL_P83_GET_Bez($aArrayList[$ia][3])
_EV_DDL_LV_Planung($aArrayList[$ia][3])
If IsArray($aLEB_Liste) Then
For $ii = 0 To UBound($aLEB_Liste) - 1
$aAufmass = _EV_GET_Aufma_positionen($aLEB_Liste[$ii][1])
;~ _DebugArrayDisplay($aAufmass)
$sDateiname = $aLEB_Liste[$ii][1] & "_" & $aLEB_Liste[$ii][2] & "__" & $aLEB_Liste[$ii][3]
;~ _EVAufmLV_Export_Exel($aAufmass, $sDateiname)
_EVAufmLV_Export_txt($aAufmass, $sDateiname)
_EV_GET_DDL_Anlagen($aLEB_Liste[$ii][1])
Next
EndIf
Next
EndIf
Next
Else
MsgBox(64, "Login Fehler", "Login war nicht erfolgreich")
EndIf
EndFunc ;==>_start_Evergabe
Func _test()
$GsSMNr = "206288250"
$sDeateilsID = "16941965"
$sSheatID = "0007928495"
Global $hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0")
Global $aHosts[2][2]
$aHosts[1][0] = "www.evergabe.telekom.de"
$aHosts[1][1] = _WinHttpConnect($hSession, $aHosts[1][0])
Global $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF
$sUsername = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Benutzer", "xxx")
$sPasswort = IniRead(@ScriptDir & "\..\daten\conf.ini", "EVergabe", "Passwort", "xxx")
$sUsername = "EvTOOL"
$sPasswort = "qS5ch#64"
$sRetrunLogin = _EV_Login($sUsername, $sPasswort)
If $sRetrunLogin = "True" Then
;~ $aArrayList = _EV_Search_SM($GsSMNr)
;~ If IsArray($aArrayList) Then
;~ For $ia = 0 To UBound($aArrayList) - 1
;~ $aLEB_Liste = _EV_GET_LEB_Liste($aArrayList[$ia][3]) ; DetailsID übergeben
;~ _EV_DDL_P83_GET_Bez($aArrayList[$ia][3])
;~ _EV_DDL_LV_Planung($aArrayList[$ia][3])
;~ If IsArray($aLEB_Liste) Then
;~ For $ii = 0 To UBound($aLEB_Liste) - 1
_EV_GET_DDL_Anlagen($sSheatID)
$aAufmass = _EV_GET_Aufma_positionen($sSheatID)
;~ _DebugArrayDisplay($aAufmass)
$sDateiname = $sSheatID & "_" & "testadfasdf" & "__" & "adsfsadfasdfasdf"
;~ _EVAufmLV_Export_Exel($aAufmass, $sDateiname)
_EVAufmLV_Export_txt($aAufmass, $sDateiname)
;~ MsgBox(64, "", "")
;~ Next
;~ EndIf
;~ Next
;~ EndIf
Else
MsgBox(64, "Login Fehler", "Login war nicht erfolgreich")
EndIf
EndFunc ;==>_test
Func _EV_Login($sUsername, $sPasswort)
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/", "https://www.evergabe.telekom.de/")
ClipPut($sHTML)
MsgBox(64, "Startseite", "Quellcode")
$aCSRF = StringRegExp($sHTML, '_csrf" value="([^=]+)', 3)
If IsArray($aCSRF) Then
$sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF
$sPosu = "_csrf=" & $aCSRF[0] & "%3D%3D&LoginForm%5Busername%5D=" & $sUsername & "&LoginForm%5Bpassword%5D=" & _URIEncode($sPasswort)
$aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/public/login", "https://www.evergabe.telekom.de/", $sPosu, "", True)
_DebugArrayDisplay($aHTML)
ClipPut($sPosu)
MsgBox(64, $sPosu, "")
If IsArray($aHTML) Then
If StringInStr($aHTML[1], 'Abmelden</a>') Then
Return "True"
Else
Return "False"
EndIf
EndIf
EndIf
_Write_to_Console("Seitenfehler/Check Internetseite")
EndFunc ;==>_EV_Login
; Function Name: _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
; Description:: gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die
; einem RegExp-Pattern entsprechen
; Parameter(s): $sPath = Startverzeichnis
; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
; $iFlag = Auswahl
; 0 = Dateien & Verzeichnisse
; 1 = nur Dateien
; 2 = nur Verzeichnisse
; $iFormat = Rückgabeformat
; 0 = String
; 1 = Array mit [0] = Anzahl
; 2 = Nullbasiertes Array
; $sDelim = Trennzeichen für die String-Rückgabe
Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
Local $hSearch, $sFile, $sReturn = ''
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*.*')
If @error Or $hSearch = -1 Then Return SetError(0, 0, $sReturn)
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
$sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
Return $sReturn
EndFunc ;==>_RecursiveFileListToArray
Func _EV_Suche_Status_All($sStatus)
;~ Dim $aStatus[12] = ["-1","NEU","ANGENOMME","AUSGEF%C3%9CHRT","ABGESCHLOSSEN","GEAENDERT","STORNO","LEB_FREIGEGEBEN","LEB_ABGELEHNT","LEB_IN_BEARBEITUNG","LEB_AKZEPTIERT","LEB_rbu"]
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call/index?OrderRecallSearch%5Bhead_line%5D=&OrderRecallSearch%5Bdocument_no%5D=&OrderRecallSearch%5Bincoming_date%5D=&OrderRecallSearch%5Border_date%5D=&OrderRecallSearch%5Bgeneral_agreement_id%5D=&OrderRecallSearch%5Bdocument_state%5D=" & $sStatus, "https://www.evergabe.telekom.de")
$aAnzBelgeGesamt = StringRegExp($sHTML, '<b>([^"<]+)</b> Belegen', 3)
If IsArray($aAnzBelgeGesamt) Then
$aAnzBelgeGesamt[0] = StringReplace($aAnzBelgeGesamt[0], ".", "")
EndIf
;~ _ArrayDisplay($aAnzBelgeGesamt)
If IsArray($aAnzBelgeGesamt) Then
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call/index?OrderRecallSearch%5Blimit%5D=" & $aAnzBelgeGesamt[0] & "&OrderRecallSearch%5Bdocument_state%5D=" & $sStatus, "https://www.evergabe.telekom.de/")
;~ ClipPut($sHTML)
;~ _Write_to_Console($sHTML)
;~ MsgBox(64,"","")
;MsgBox(0, "Status:" & $sStatus & " Belege:" & $aAnzBelgeGesamt[0], "Status:" & $sStatus & " Belege:" & $aAnzBelgeGesamt[0])
;Abrufliste gefhilter nach Status
;auslesen Titel
;array's
$aTitel = _EV_Abrufliste_GET_Title($sHTML)
$aSMnr = _EV_Abrufliste_GET_Bedarfnr($sHTML) ;SMnr
$aBelegEinDatum = _EV_Abrufliste_GET_Belegeingang($sHTML) ;Eingang E-Vergabe
$aBelegNr42 = _EV_Abrufliste_GET_Belegnr($sHTML) ;42Nr
$aAusfuehrungsfrist = _EV_Abrufliste_GET_Ausfuehrungsfrist($sHTML) ;Ausführungsfrist
$aDetailID = _EV_Abrufliste_GET_DetailsID($sHTML) ;DetailsID intern für E-Vergabe
$aRV = _EV_Abrufliste_GET_RV($sHTML) ;Rahmenvertrag
$aStatus = _EV_Abrufliste_GET_Status($sHTML) ;Status Angenommen Abgelehnt usw.
Dim $aListe[UBound($aTitel)][8]
For $i = 0 To UBound($aTitel) - 1
$aListe[$i][0] = $aRV[$i]
$aListe[$i][1] = $aSMnr[$i]
$aListe[$i][2] = $aTitel[$i]
$aListe[$i][3] = $aBelegNr42[$i]
$aListe[$i][4] = $aBelegEinDatum[$i]
$aListe[$i][5] = $aAusfuehrungsfrist[$i]
$aListe[$i][6] = $aDetailID[$i]
$aListe[$i][7] = $aStatus[$i]
Next
;~ _ArrayDisplay($aListe)
Return $aListe
;~ _ArrayDisplay($aListe)
EndIf
EndFunc ;==>_EV_Suche_Status_All
Func _EV_GET_LEB_Liste($sDetailsID)
;Detailsid,LEB,Title,Status
;15564152|0006004494| 1. TA NVT 2V1011 Tiefbau Mollenberg|AKZEPTIERT
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/sheet/index?c=1&importId=" & $sDetailsID & "&BapiEssrSearch%5Blimit%5D=20", "https://www.evergabe.telekom.de/framework-agreement-call/details?id=" & $sDetailsID & "&c=1")
_Write_to_Console("https://www.evergabe.telekom.de/sheet/index?c=1&importId=" & $sDetailsID & "&BapiEssrSearch%5Blimit%5D=20")
;~ If StringInStr($sHTML, "LERF nicht") Then
;~ _Write_to_Console("LERF nicht möglich Auftrag noch nicht angenommen")
;~ MsgBox(64, "LEB nicht angenommen", "LEB nicht angenommen")
;~ Else
;~
;~ EndIf
$aPages = StringRegExp($sHTML, 'Blimit%5D=\d+&page=(\d+)" data-page="\d+">\d+', 3)
;~ _ArrayDisplay($aPages)
If IsArray($aPages) Then
$aBelege = StringRegExp($sHTML, '<b>(\d+)</b> Belegen', 3)
If IsArray($aBelege) Then
$sPage = _nNumber($aPages, 1, 1)
;~ _Write_to_Console($sPage)
Dim $aArray[1]
For $i = 1 To $sPage
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/sheet/index?c=1&importId=" & $sDetailsID & "&page=" & $i, "https://www.evergabe.telekom.de/framework-agreement-call/details?id=" & $sDetailsID & "&c=1")
;~ ClipPut($sHTML)
;~ MsgBox(0, "/framework-agreement-call/index", $aPages[$i])
;~ MsgBox(64, "", $aPages[$i])
$aSheetId = StringRegExp($sHTML, 'sheetId=([^&]+)&c=1"', 3)
$aTitle = StringRegExp($sHTML, '<strong>([^<]+)</strong><', 3)
$aStatus = StringRegExp($sHTML, 'leb-status[^>]+.([^<]+)', 3)
If IsArray($aSheetId) Then
For $ii = 0 To UBound($aSheetId) - 1
If StringInStr($aSheetId[$ii], "Schlussaufmass") Then
_ArrayAdd($aArray, $aSheetId[$ii] & "#" & $aTitle[$ii] & "#" & $aStatus[$ii] & "#Schlussaufm.")
Else
_ArrayAdd($aArray, $aSheetId[$ii] & "#" & $aTitle[$ii] & "#" & $aStatus[$ii] & "#Teilaufm.")
EndIf
Next
;~ _ArrayDelete($aArray, 0)
EndIf
Next
;~ _ArrayDelete($aArray, 0)
Dim $aReturn[UBound($aArray)][5]
;_ArrayDisplay($aArray)
For $i = 1 To UBound($aReturn) - 1
$aSplitt = StringSplit($aArray[$i], "#")
;~ $aReturn[$i][0] = $aArray[0]
$aReturn[$i][0] = $sDetailsID
$aReturn[$i][1] = $aSplitt[1]
$aReturn[$i][2] = $aSplitt[2]
$aReturn[$i][3] = $aSplitt[3]
$aReturn[$i][4] = $aSplitt[4]
Next
;_ArrayDisplay($aReturn)
Return $aReturn
EndIf
Else
Dim $aArray[1]
;nur eine Seite
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/sheet/index?c=1&importId=" & $sDetailsID, "https://www.evergabe.telekom.de/framework-agreement-call/details?id=" & $sDetailsID & "&c=1")
;~ ClipPut($sHTML)
;MsgBox(0, "/framework-agreement-call/index", $aPages[$i])
;~ MsgBox(64, "", "")
$aSheetId = StringRegExp($sHTML, 'sheetId=([^&]+)&c=1"', 3)
$aTitle = StringRegExp($sHTML, '<strong>([^<]+)</strong><', 3)
$aStatus = StringRegExp($sHTML, 'leb-status[^>]+.([^<]+)', 3)
$aSchlussAuf = StringRegExp($sHTML, '"></td><td></td><td([^<]+)', 3)
;~ _DebugArrayDisplay($aTitle)
If IsArray($aSheetId) Then
For $ii = 0 To UBound($aSheetId) - 1
If StringInStr($aSchlussAuf[$ii], "Schlussaufmass") Then
_ArrayAdd($aArray, $aSheetId[$ii] & "#" & $aTitle[$ii] & "#" & $aStatus[$ii] & "#Schlussaufm.")
Else
_ArrayAdd($aArray, $aSheetId[$ii] & "#" & $aTitle[$ii] & "#" & $aStatus[$ii] & "#Teilaufm.")
EndIf
Next
_ArrayDelete($aArray, 0)
Dim $aReturn[UBound($aArray)][5]
;_ArrayDisplay($aArray)
For $i = 0 To UBound($aReturn) - 1
$aSplitt = StringSplit($aArray[$i], "#")
$aReturn[$i][0] = $sDetailsID
$aReturn[$i][1] = $aSplitt[1]
$aReturn[$i][2] = $aSplitt[2]
$aReturn[$i][3] = $aSplitt[3]
$aReturn[$i][4] = $aSplitt[4]
Next
;~ _DebugArrayDisplay($aReturn)
Return $aReturn
EndIf
EndIf
;'sheetId=([^&]+)&c=1" title="([^"]+)' SheetID und Titel
;'leb-status[^>]+.([^<]+)' Status
;https://www.evergabe.telekom.de/sheet/index?c=1&importId=15564152
;https://www.evergabe.telekom.de/sheet/index?c=1&importId=15564152&page=2
;https://www.evergabe.telekom.de/sheet/index?c=1&importId=15564152&page=1
;/sheet/index?c=1&importId=15564152&BapiEssrSearch%5Blimit%5D=10
EndFunc ;==>_EV_GET_LEB_Liste
Func _EV_GET_Aufma_positionen($sLEB_NR)
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/sheet-position/index?c=1&sheetId=" & $sLEB_NR, "https://www.evergabe.telekom.de/sheet/header?class=list-item&sheetId=" & $sLEB_NR & "&c=1")
;~ ClipPut($sHTML)
;~ _Write_to_Console($sHTML)
;~ MsgBox(0, "/sheet-position/index?c=1&sheetId=" & $sLEB_NR, "/sheet-position/index?c=1&sheetId=" & $sLEB_NR)
;~
$iPages = _EV_LEP_POs_MaxPages($sHTML)
;~ MsgBox(64, "", $iPages)
Dim $aAufM[1]
For $i = 1 To $iPages
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/sheet-position/index?c=1&sheetId=" & $sLEB_NR & "&page=" & $i, "https://www.evergabe.telekom.de/sheet/header?class=list-item&sheetId=" & $sLEB_NR & "&c=1")
;~ ClipPut($sHTML)
;~ MsgBox(0, $sLEB_NR, "")
$aShowlinks = StringRegExp($sHTML, '(/sheet-position[^c]+c=1)">00', 3)
;~ _ArrayDisplay($aShowlinks)
If IsArray($aShowlinks) Then
For $ii = 0 To UBound($aShowlinks) - 1
$sHTML = _send_WinhttpS_GET($aHosts[1][1], $aShowlinks[$ii], "https://www.evergabe.telekom.de/sheet/header?class=list-item&sheetId=" & $sLEB_NR & "&c=1")
;~ _Write_to_Console("https://www.evergabe.telekom.de/sheet/header?class=list-item&sheetId=" & $sLEB_NR & "&c=1")
;ClipPut($sHTML)
;~ If $sLEB_NR = "0007615468" then
;~ ConsoleWrite($sHTML & @CRLF)
;~ MsgBox(0, $sLEB_NR, "asdf")
;~ EndIf
$aPosNr = StringRegExp($sHTML, 'Position 0([^:]+)', 3)
$aPosKurztext = StringRegExp($sHTML, 'Position 0[^:]+:.([^<]+)', 3)
$aPosAbschnitt = StringRegExp($sHTML, 'sectionText]" value="([^"]+)', 3)
$aPosMenge = StringRegExp($sHTML, 'quantity]" value="([^"]+)', 3)
$aPosEinheit = StringRegExp($sHTML, 'unitOfQuantity]" value="([^"]+)', 3)
$aBegrund = StringRegExp($sHTML, 'longText]" disabled>([^<]+)', 3)
$aFaktor = StringRegExp($sHTML, 'Multiplier]" value="([^"]+)', 3)
$aLeange = StringRegExp($sHTML, 'formulaValueLength]" value="([^"]+)', 3)
$aBreite = StringRegExp($sHTML, 'formulaValueWidth]" value="([^"]+)', 3)
$aTiefe = StringRegExp($sHTML, 'formulaValueDepth]" value="([^"]+)', 3)
If IsArray($aPosNr) Then
$sPosNr = $aPosNr[0]
Else
$sPosNr = ""
EndIf
If IsArray($aPosKurztext) Then
$sPosKurztext = $aPosKurztext[0]
Else
$sPosKurztext = ""
EndIf
If IsArray($aPosAbschnitt) Then
$sPosAbschnitt = $aPosAbschnitt[0]
Else
$sPosAbschnitt = ""
EndIf
If IsArray($aPosMenge) Then
$sPosMenge = $aPosMenge[0]
Else
$sPosMenge = ""
EndIf
If IsArray($aPosEinheit) Then
$sPosEinheit = $aPosEinheit[0]
Else
$sPosEinheit = ""
EndIf
If IsArray($aBegrund) Then
$sBegrund = $aBegrund[0]
Else
$sBegrund = ""
EndIf
If IsArray($aFaktor) Then
If $aFaktor[0] = "1" Then
$sFaktor = "1,0"
EndIf
$sFaktor = $aFaktor[0]
Else
$sFaktor = "1,0"
EndIf
If IsArray($aLeange) Then
$sLeange = $aLeange[0]
Else
$sLeange = ""
EndIf
If IsArray($aBreite) Then
$sBreite = $aBreite[0]
Else
$sBreite = ""
EndIf
If IsArray($aTiefe) Then
$sTiefe = $aTiefe[0]
Else
$sTiefe = ""
EndIf
If IsArray($aPosEinheit) Then
Select
Case $aPosEinheit[0] = "ST"
$sFaktor = "1,0"
$sLeange = ""
$sBreite = ""
$sTiefe = ""
Case $aPosEinheit[0] = "LE"
$sFaktor = "1,0"
$sLeange = ""
$sBreite = ""
$sTiefe = ""
Case $aPosEinheit[0] = "STD"
$sFaktor = "1,0"
$sLeange = ""
$sBreite = ""
$sTiefe = ""
Case $aPosEinheit[0] = "M"
$sBreite = ""
$sTiefe = ""
$sPosMenge = $sLeange
Case $aPosEinheit[0] = "M2"
;~ $sLeange = ""
;~ $sBreite = ""
$sPosMenge = $sLeange * $sBreite
Case $aPosEinheit[0] = "M3"
$sPosMenge = $sLeange * $sBreite * $sTiefe
EndSelect
_ArrayAdd($aAufM, $sPosAbschnitt & "#" & $sPosNr & "#" & $sFaktor & "#" & $sLeange & "#" & $sBreite & "#" & $sTiefe & "#" & $sPosMenge & "#" & $sPosEinheit & "#" & $sPosKurztext & "#" & $sBegrund & "#" & $sPosMenge)
;~ ;_ArrayDisplay($aAufM)
EndIf
Next
EndIf
Next
_ArrayDelete($aAufM, 0)
Dim $aReturn[UBound($aAufM)][13]
;_ArrayDisplay($aReturn)
For $i = 0 To UBound($aAufM) - 1
$aSplitt = StringSplit($aAufM[$i], "#")
;_ArrayDisplay($aSplitt)
$aReturn[$i][0] = $aSplitt[1]
$aReturn[$i][1] = $aSplitt[2]
;~ if $aSplitt[3] = "1" Then
;~ $aReturn[$i][2] = StringReplace($aSplitt[3],"1","1.0")
;~ Else
;~ $aReturn[$i][2] = $aSplitt[3]
;~ EndIf
$aReturn[$i][2] = $aSplitt[3]
$aReturn[$i][3] = $aSplitt[4]
$aReturn[$i][4] = $aSplitt[5]
$aReturn[$i][5] = $aSplitt[6]
$aReturn[$i][6] = $aSplitt[7]
$aReturn[$i][7] = $aSplitt[8]
$aReturn[$i][8] = $aSplitt[9]
$aReturn[$i][9] = $aSplitt[10]
$aReturn[$i][10] = $aSplitt[11]
Next
;~ _ArrayDisplay($aReturn)
;~ MsgBox(64, "Array ohne Preise", "")
$aArray = _EV_GET_Aufma_preise_to_Array($aReturn, $sLEB_NR)
Return $aArray
;~ _ArrayDisplay($aArray)
EndFunc ;==>_EV_GET_Aufma_positionen
Func _EV_GET_DDL_Anlagen($sLEB_NR)
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/sheet/header?class=list-item&sheetId=" & $sLEB_NR & "&c=1", "https://www.evergabe.telekom.de//sheet/header?class=list-item&sheetId=" & $sLEB_NR)
;~ ClipPut($sHTML)
;~ _Write_to_Console($sHTML)
$aAnlagenLink = StringRegExp($sHTML, '/file/sheet-attachment.c=1&f=([^"]+).*noopener">[^<]+', 3)
$aAnlagenName = StringRegExp($sHTML, '/file/sheet-attachment.c=1&f=[^"]+.*noopener">([^<]+)', 3)
If IsArray($aAnlagenLink) And IsArray($aAnlagenName) Then
;~ _DebugArrayDisplay($aAnlagenLink)
;~ _DebugArrayDisplay($aAnlagenName)
For $i = 0 To UBound($aAnlagenName) - 1
;~ GET https://evergabe.telekom.de/file/sheet-attachment?c=1&f=959442&d=1 HTTP/1.1
;~ Host: evergabe.telekom.de
;~ Connection: keep-alive
;~ sec-ch-ua: "Google Chrome";v="93", " Not;A Brand";v="99", "Chromium";v="93"
;~ sec-ch-ua-mobile: ?0
;~ sec-ch-ua-platform: "Windows"
;~ Upgrade-Insecure-Requests: 1
;~ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36
;~ Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
;~ Sec-Fetch-Site: same-origin
;~ Sec-Fetch-Mode: navigate
;~ Sec-Fetch-User: ?1
;~ Sec-Fetch-Dest: document
;~ Referer: https://evergabe.telekom.de/sheet/header?class=list-item&sheetId=0008109632&c=1
;~ Accept-Encoding: gzip, deflate, br
;~ Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
;~ Cookie: EV_PHPSESSID=4bueubpp0uq243jrl3t758jeg2; OrderRecallSearch_document_state=2f1c8f1a05294aedf4773cc828350b57006b57c226c8f85e72c6a5bc03df96b41e09679df61d8df630b15de3c140b242431390f39d12f7320640529e1353df3aa%3A2%3A%7Bi%3A0%3Bs%3A32%3A%22OrderRecallSearch_document_state%22%3Bi%3A1%3Bs%3A2%3A%22-1%22%3B%7D; OrderRecallSearch_limit=36f3f250aeea8650ac33f0b2ce57b9d0402b2a65895c3076155dd06873766558e6b3d07e5edfaaed5e983755984ce650d8993f3654e4c72ef289bce2c46d5b25a%3A2%3A%7Bi%3A0%3Bs%3A23%3A%22OrderRecallSearch_limit%22%3Bi%3A1%3BN%3B%7D; OrderRecallSearch_sort=62c784b485fedb7853c73aabc8393c7cf27704bbdce8ff65ce6337d62767070743b3e9a40cca5c849e75731c25f83fb8f48ba19b1769345a0b23fa5db6980fb9a%3A2%3A%7Bi%3A0%3Bs%3A22%3A%22OrderRecallSearch_sort%22%3Bi%3A1%3BN%3B%7D; BapiEssrSearch_vs__status=8a6c38c3f9ec0826db7ededb735d5c40fd54e12ae2dc4a2bc305b41be76c78aebd938919171091b8ab529e8f554dd05cc81c45c10ce4ed768be127ff7520a342a%3A2%3A%7Bi%3A0%3Bs%3A25%3A%22BapiEssrSearch_vs__status%22%3Bi%3A1%3Bs%3A2%3A%22-1%22%3B%7D; AWSALB=pYKgYgH+EpnkLkUkn4dF+OFGl+7LX7yNa8YmFlcwzm4ONirC+CJfssftOFqNmmUe5n8Pq6uURHzLq6CWRxwNlc6uzvo5eoiFMDdX10LS7zAQ/fymaGWxAvDkxan3; AWSALBCORS=pYKgYgH+EpnkLkUkn4dF+OFGl+7LX7yNa8YmFlcwzm4ONirC+CJfssftOFqNmmUe5n8Pq6uURHzLq6CWRxwNlc6uzvo5eoiFMDdX10LS7zAQ/fymaGWxAvDkxan3
$aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "GET", "file/sheet-attachment?c=1&f=" & $aAnlagenLink[$i] & "&c=1", "https://evergabe.telekom.de/sheet/header?class=list-item&sheetId=" & $sLEB_NR & "&c=1", Default, $sHeader, False, 2)
_Write_to_Console("File Download: | " & $GsBasePfad & $GsSMNr & "\Anlagen\" & $aAnlagenName[$i] & ".pdf")
$hBild = FileOpen($GsBasePfad & $GsSMNr & "\Anlagen\" & $sLEB_NR & "\" & $aAnlagenName[$i] & ".pdf", 10)
FileWrite($hBild, $aHTML)
FileClose($hBild)
Next
EndIf
;~ MsgBox(0, "/sheet-position/index?c=1&sheetId=" & $sLEB_NR, "/sheet-position/index?c=1&sheetId=" & $sLEB_NR)
;~
EndFunc ;==>_EV_GET_DDL_Anlagen
Func _EVAufmLV_Export_Exel($aArray, $sDateiname)
$aDN = StringRegExp($sDateiname, "([^_]+)", 3)
$sLEBNr = $aDN[0]
$sTitle = $aDN[1]
$sStatus = $aDN[2]
;~ LEB_vorlage.xlsx$sLEBNr
FileCopy(@ScriptDir & "\..\daten\LEB_vorlage.xlsx", $GsBasePfad & "\LEB_vorlage.xlsx", $FC_OVERWRITE + $FC_CREATEPATH)
$sPfadExcel = $GsBasePfad & "\LEB_vorlage.xlsx"
Local $oExcel = _Excel_Open(False)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookOpen($oExcel, $sPfadExcel)
If @error Then
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error opening workbook '" & $sPfadExcel & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_Excel_Close($oExcel)
;~ Exit
EndIf
;~ Local $aArray = _Listview2Array($frm_lv_evaufm)
;~ _ArrayDisplay($aArray)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aArray, "B3")
$iLastZeile = $oWorkbook.ActiveSheet.UsedRange.SpecialCells($xlCellTypeLastCell).Row
With $oWorkbook.ActiveSheet.Range("A3:N" & $iLastZeile).Borders
.LineStyle = 1
.TintAndShade = 0
EndWith
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=SUMME(N3:N" & $iLastZeile & ")", "N1")
; Zeilen Nummer hinzufügen in 10 schritten
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "10", "A3")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "20", "A4")
If UBound($aArray) <= 1 Then
$iStart = 3
;~ _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=SUMME(A" & $iStart+$i & ")+10", "A" & $iStart + $i+1)
$sZNr = "=SUMME(A" & $iStart + 2 & ")+10"
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sZNr, "A5")
Else
;~ MsgBox(64, UBound($aArray) - 2, UBound($aArray))
Dim $aZNr[UBound($aArray) - 2]
$iStart = 3
For $i = 0 To UBound($aArray) - 3
;~ _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=SUMME(A" & $iStart+$i & ")+10", "A" & $iStart + $i+1)
$aZNr[$i] = "=SUMME(A" & $iStart + $i + 1 & ")+10"
Next
;~ _ArrayDisplay($aZNr)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aZNr, "A5")
EndIf
;~ $sLEBNrREad =
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sLEBNr, "C1")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sTitle & " => " & $sStatus, "J1")
$oWorkbook.ActiveSheet.Columns.AutoFit
;~ $sDateiname = $sLEBNrREad
_Excel_BookSaveAs($oWorkbook, $GsBasePfad & $GsSMNr & "\" & $sDateiname & ".xlsx", Default, True)
_Excel_Close($oExcel, True, True)
;~
;~ Local $aWorkSheets = _Excel_SheetList($oWorkbook)
;~ _DebugArrayDisplay($aWorkSheets)
FileDelete($sPfadExcel)
EndFunc ;==>_EVAufmLV_Export_Exel
Func _EVAufmLV_Export_txt($aArray, $sDateiname)
$hFileOpen = FileOpen($GsBasePfad & $GsSMNr & "\" & $sDateiname & ".txt", 10)
FileWriteLine($hFileOpen, "[Aufmaßdaten]")
_FileWriteFromArray($hFileOpen, $aArray)
FileClose($hFileOpen)
EndFunc ;==>_EVAufmLV_Export_txt
;Hilffunktions für Preise beim Array
Func _EV_GET_Aufma_preise_to_Array($aArray, $sLEB_NR)
Global $aVertrag_Preis
;https://www.evergabe.telekom.de/sheet/header?c=1&sheetId=0006119386
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/sheet/header?c=1&sheetId=" & $sLEB_NR, "https://www.evergabe.telekom.de/sheet/header?class=list-item&sheetId=" & $sLEB_NR & "&c=1")
;ClipPut($sHTML)
;MsgBox(0, $sLEB_NR, "asdf")
$aDetailID = StringRegExp($sHTML, 'details\?id=([^&]+)', 3)
If IsArray($aDetailID) Then
;https://www.evergabe.telekom.de/framework-agreement-call/details?id=15562026&c=1
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call/details?id=" & $aDetailID[0] & "&c=1", "https://www.evergabe.telekom.de/sheet/header?class=list-item&sheetId=" & $sLEB_NR & "&c=1")
;~ ClipPut($sHTML)
;~ MsgBox(0, $sLEB_NR, "asdf")
$aRVertrag = StringRegExp($sHTML, 'c=1">(\d+)/00010', 3)
If IsArray($aRVertrag) Then
$sFilePath = @ScriptDir & "\..\daten\LV\" & $aRVertrag[0] & ".txt"
_FileReadToArray($sFilePath, $aVertrag_Preis)
_ArrayDelete($aVertrag_Preis, 0)
;_ArrayDisplay($aVertrag_Preis)
;~ _ArrayDisplay($aArray)
For $ii = 0 To UBound($aArray) - 1
For $i = 0 To UBound($aVertrag_Preis) - 1
$aSplitt = StringSplit($aVertrag_Preis[$i], "|")
;_ArrayDisplay($aSplitt)
If $aSplitt[1] = $aArray[$ii][1] Then
$aArray[$ii][11] = _replaceKom2Punkt($aSplitt[4])
$aArray[$ii][10] = _replaceKom2Punkt($aArray[$ii][2]) * _replaceKom2Punkt($aArray[$ii][6])
$aArray[$ii][12] = _replaceKom2Punkt($aSplitt[4]) * _replaceKom2Punkt($aArray[$ii][10])
EndIf
Next
Next
EndIf
EndIf
For $i = 0 To UBound($aArray) - 1
If $aArray[$i][2] = 1 Then
$aArray[$i][2] = 1.0
EndIf
$aArray[$i][2] = _replacePunkt2Koma($aArray[$i][2])
$aArray[$i][3] = _replacePunkt2Koma($aArray[$i][3])
$aArray[$i][4] = _replacePunkt2Koma($aArray[$i][4])
$aArray[$i][5] = _replacePunkt2Koma($aArray[$i][5])
$aArray[$i][6] = _replacePunkt2Koma($aArray[$i][6])
$aArray[$i][10] = _replacePunkt2Koma($aArray[$i][10])
$aArray[$i][11] = _replacePunkt2Koma($aArray[$i][11])
$aArray[$i][12] = _replacePunkt2Koma($aArray[$i][12])
Next
;~ _ArrayDisplay($aArray)
Return $aArray
EndFunc ;==>_EV_GET_Aufma_preise_to_Array
;SM Suchen mit 2 oder 3 Abrufen 206069376 => 3 Stück
Func _EV_Search_SM($sSMnr)
;suche Aufmaß nach SMnr:
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call?OrderRecallSearch%5Bhead_line%5D=" & $sSMnr & "&OrderRecallSearch%5Bdocument_no%5D=&OrderRecallSearch%5Bincoming_date%5D=&OrderRecallSearch%5Border_date%5D=&OrderRecallSearch%5Bgeneral_agreement_id%5D=&OrderRecallSearch%5Bdocument_state%5D=-1", "https://www.evergabe.telekom.de/framework-agreement-call")
_Write_to_Console("Suche SM-Nr: | " & $sSMnr)
;~
;~ ClipPut($sHTML)
;~ _Write_to_Console($sHTML)
;~ MsgBox(64,"","")
$aTitle = _EV_Abrufliste_GET_Title($sHTML)
$aBedarfnr = _EV_Abrufliste_GET_Bedarfnr($sHTML) ;SMnr
$aBelegEinDatum = _EV_Abrufliste_GET_Belegeingang($sHTML) ;Eingang E-Vergabe
$aBelegnr = _EV_Abrufliste_GET_Belegnr($sHTML) ;42Nr
$aAusfuehrungsfrist = _EV_Abrufliste_GET_Ausfuehrungsfrist($sHTML) ;Ausführungsfrist
$aDetailID = _EV_Abrufliste_GET_DetailsID($sHTML) ;DetailsID intern für E-Vergabe
$aRV = _EV_Abrufliste_GET_RV($sHTML) ;Rahmenvertrag
$aStatus = _EV_Abrufliste_GET_Status($sHTML) ;Status Angenommen Abgelehnt usw.
Dim $aReturn[UBound($aTitle)][9]
;~ _DebugArrayDisplay($aReturn)
For $i = 0 To UBound($aTitle) - 1
$aReturn[$i][0] = $aTitle[$i]
$aReturn[$i][1] = $aBedarfnr[$i]
$aReturn[$i][2] = $aBelegnr[$i]
$aReturn[$i][3] = $aDetailID[$i]
$aReturn[$i][4] = _EV_DDL_P83_GET_Bez($aDetailID[$i]) ; Bezeichnung auslesen
;~ $aReturn[$i][4] = $aRV[$i]
$aReturn[$i][5] = $aRV[$i]
$aReturn[$i][6] = $aBelegEinDatum[$i]
$aReturn[$i][7] = $aAusfuehrungsfrist[$i]
$aReturn[$i][8] = $aStatus[$i]
Next
;~ _DebugArrayDisplay($aReturn)
Return $aReturn
EndFunc ;==>_EV_Search_SM
Func _EV_GET_PlanungsSumme($sDetailID)
$sVertrag_temp = $aAMasterListe[0]
$sSMNR_temp = $aAMasterListe[1]
$sTitleEV_temp = $aAMasterListe[2]
$s42erNr_temp = $aAMasterListe[3]
$sDetailsIDEv_temp = $aAMasterListe[4]
;https://www.evergabe.telekom.de/framework-agreement-call/details?id=18332809&c=1
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call/details?id=" & $sDetailID & "&c=1", "https://www.evergabe.telekom.de/framework-agreement-call")
$aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "GET", "/file/service-positions?c=1&iid=" & $sDetailID & "&s=1&d=1", "https://www.evergabe.telekom.de/framework-agreement-call", Default, $sHeader, False, 2)
_Write_to_Console("File Download: | " & "LV_" & $sDetailID & "_SM_" & $sSMNR_temp & ".pdf")
$hBild = FileOpen($GsBasePfad & $GsSMNr & "\" & "LV_" & $sDetailID & "_SM_" & $sSMNR_temp & ".pdf", 10)
FileWrite($hBild, $aHTML)
FileClose($hBild)
_Write_to_Console("PDF-File convert to TXT-File ")
_XPDF_ToText($GsBasePfad & $GsSMNr & "\" & "LV_" & $sDetailID & "_SM_" & $sSMNR_temp & ".pdf",$GsBasePfad & $GsSMNr & "\" & "LV_" & $sDetailID & "_SM_" & $sSMNR_temp & ".txt")
Local $sFileRead = FileRead($GsBasePfad & $GsSMNr & "\" & "LV_" & $sDetailID & "_SM_" & $sSMNR_temp & ".txt")
$aSumme = StringRegExp($sFileRead, 'Gesamtsumme in EUR.(\d+.\d+)', 3)
if IsArray($aSumme) Then
Return $aSumme[0]
Else
Return "NA"
EndIf
EndFunc
Func _EV_DDL_P83_GET_Bez($sDetailID)
;https://www.evergabe.telekom.de/framework-agreement-call/details?id=17005356&c=1
;https://www.evergabe.telekom.de/file/gaeb-83?c=1&iid=17005356&f=p2000 ;P83 download link
$sVertrag_temp = $aAMasterListe[0]
$sSMNR_temp = $aAMasterListe[1]
$sTitleEV_temp = $aAMasterListe[2]
$s42erNr_temp = $aAMasterListe[3]
$sDetailsIDEv_temp = $aAMasterListe[4]
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call/details?id=" & $sDetailID & "&c=1", "https://www.evergabe.telekom.de/framework-agreement-call")
$aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "GET", "/file/gaeb-83?c=1&iid=" & $sDetailID & "&f=p2000", "https://www.evergabe.telekom.de/framework-agreement-call", Default, $sHeader, False, 2)
_Write_to_Console("File Download: | " & "LV_" & $sDetailID & "_SM_" & $GsSMNr & ".p83")
$hBild = FileOpen($GsBasePfad & $GsSMNr & "\" & "LV_" & $sDetailID & "_SM_" & $sSMNR_temp & ".p83", 10)
FileWrite($hBild, $aHTML)
FileClose($hBild)
;~ $aHTML = FileRead(@ScriptDir & "\..\test_" & $sDetailID & ".p83")
$sFilePath = $GsBasePfad & $GsSMNr & "\" & "LV_" & $sDetailID & "_SM_" & $sSMNR_temp & ".p83"
Local $hFileOpen = FileOpen($sFilePath, 1)
If $hFileOpen = -1 Then
MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading the file.")
Return False
EndIf
; Read the contents of the file using the handle returned by FileOpen.
Local $sFileRead = FileRead($hFileOpen)
; Close the handle returned by FileOpen.
FileClose($hFileOpen)
$aBez = StringRegExp($sFileRead, '\[Bez]([^\[]+)', 3)
If IsArray($aBez) Then
FileDelete($sFilePath)
Return $aBez[0]
Else
Return "NA"
EndIf
EndFunc ;==>_EV_DDL_P83_GET_Bez
Func _EV_DDL_LV_Planung($sDetailID)
$sVertrag_temp = $aAMasterListe[0]
$sSMNR_temp = $aAMasterListe[1]
$sTitleEV_temp = $aAMasterListe[2]
$s42erNr_temp = $aAMasterListe[3]
$sDetailsIDEv_temp = $aAMasterListe[4]
;test
;https://www.evergabe.telekom.de/gaeb-viewer/index?c=1&id=3239890
;https://www.evergabe.telekom.de/file/service-positions?c=1&iid=17542106&s=1&d=1
$sHTML = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call/details?id=" & $sDetailID & "&c=1", "https://www.evergabe.telekom.de/framework-agreement-call")
$aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "GET", "/file/service-positions?c=1&iid=" & $sDetailID & "&s=1&d=1", "https://www.evergabe.telekom.de/framework-agreement-call", Default, $sHeader, False, 2)
_Write_to_Console("File Download: | " & "PlanungsLV_Kurz_" & $sDetailID & "_SM_" & $GsSMNr & ".pdf")
$hBild = FileOpen($GsBasePfad & $GsSMNr & "\" & "PlanungsLV_Kurz_" & $sDetailID & "_SM_" & $sSMNR_temp & ".pdf", 10)
FileWrite($hBild, $aHTML)
FileClose($hBild)
;~ $aHTML = FileRead(@ScriptDir & "\..\test_" & $sDetailID & ".p83")
;~ $sFilePath = $GsBasePfad & $GsSMNr & "\" & "PlanungsLV_Kurz_" & $sDetailID & "_SM_" & $sSMNR_temp & ".pdf"
;~ Local $hFileOpen = FileOpen($sFilePath, 1)
;~ If $hFileOpen = -1 Then
;~ MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading the file.")
;~ Return False
;~ EndIf
;~ ; Read the contents of the file using the handle returned by FileOpen.
;~ Local $sFileRead = FileRead($hFileOpen)
EndFunc ;==>_EV_DDL_LV_Planung
Func _EV_LEP_POs_MaxPages($sQuellcode)
Local $aMaxPages = StringRegExp($sQuellcode, '(\d+)</b> Belegen', 3)
;~ _DebugArrayDisplay($aMaxPages)
If IsArray($aMaxPages) Then
$iMaxPages = Round(Int($aMaxPages[0]) / 20, 1)
;~ ConsoleWrite($iMaxPages & @CRLF)
If StringInStr($iMaxPages, ".") Then
$sSplit = StringSplit($iMaxPages, ".")
;~ _DebugArrayDisplay($sSplit)
$iSplit = StringLeft($sSplit[2], 1)
If $iSplit <= 5 Then
$iMaxPages = Round(Int($aMaxPages[0]) / 20) + 1
Else
$iMaxPages = Round(Int($aMaxPages[0]) / 20)
EndIf
EndIf
Return $iMaxPages
Else
Return "1"
EndIf
EndFunc ;==>_EV_LEP_POs_MaxPages
Func _EV_Abrufliste_GET_Title($sQuellcode)
;Rückgabe Array sonst $error string
;~ local $aTitle = StringRegExp($sQuellcode, 'no-wrap" title="([^"]+)', 3)
Local $aTitle = StringRegExp($sQuellcode, '(?m)no-wrap" title="([^"]+)', 3)
;~ _DebugArrayDisplay($aTitle)
If IsArray($aTitle) Then
For $i = 0 To UBound($aTitle) - 1
$aTitle[$i] = StringReplace($aTitle[$i], "SM Auftragsnummer: 000", " SM ")
$aTitle[$i] = StringReplace($aTitle[$i], @CR, " ") ;CR out
$aTitle[$i] = StringReplace($aTitle[$i], @LF, " ") ;LF out
Next
Return $aTitle
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Title
Func _EV_Abrufliste_GET_Bedarfnr($sQuellcode)
;SMNr
;Rückgabe Array sonst $error string
Local $aBedarfnr = StringRegExp($sQuellcode, 'Bedarfsnr.: 0([^<]+)</td>', 3)
If IsArray($aBedarfnr) Then
Return $aBedarfnr
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Bedarfnr
Func _EV_Abrufliste_GET_Belegeingang($sQuellcode)
;42Nr
;Rückgabe Array sonst $error string
Local $aBelegeingang = StringRegExp($sQuellcode, 'Bedarfsnr.: [^<]+</td><td>[^<]+</td><td>([^<]+)', 3)
If IsArray($aBelegeingang) Then
Return $aBelegeingang
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Belegeingang
Func _EV_Abrufliste_GET_Belegnr($sQuellcode)
;42Nr
;Rückgabe Array sonst $error string
Local $aBelegnr = StringRegExp($sQuellcode, 'Bedarfsnr.: [^<]+</td><td>([^/]+)', 3)
If IsArray($aBelegnr) Then
Return $aBelegnr
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Belegnr
Func _EV_Abrufliste_GET_Ausfuehrungsfrist($sQuellcode)
;Ausführungsfrist
;Rückgabe Array sonst $error string
Local $aAusfuehrungsfrist = StringRegExp($sQuellcode, '(\d\d\.\d\d\.\d\d\d\d)</td><td><a href', 3)
If IsArray($aAusfuehrungsfrist) Then
Return $aAusfuehrungsfrist
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Ausfuehrungsfrist
Func _EV_Abrufliste_GET_DetailsID($sQuellcode)
;DetailsID intern für E-Vergabe
;Rückgabe Array sonst $error string
Local $aDetailsID = StringRegExp($sQuellcode, 'call/details.id=([^&]+)&c=1', 3)
If IsArray($aDetailsID) Then
Return $aDetailsID
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_DetailsID
Func _EV_Abrufliste_GET_RV($sQuellcode)
;Rahmenvertrag
;Rückgabe Array sonst $error string
Local $aRV = StringRegExp($sQuellcode, '/framework-agreement/details.id=[^"]+">([^/]+)', 3)
If IsArray($aRV) Then
Return $aRV
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_RV
Func _EV_Abrufliste_GET_Status($sQuellcode)
;Stauts
;Rückgabe Array sonst $error string
Local $aStatus = StringRegExp($sQuellcode, '/framework-agreement/details.id=[^"]+">[^"]+"[^>]+>([^<]+)', 3)
If IsArray($aStatus) Then
Return $aStatus
Else
Return "Error"
EndIf
EndFunc ;==>_EV_Abrufliste_GET_Status
Func _send_Winhttp_POST($sHost, $sLink, $sReferer, $sPostContend)
$aHTML = _WinHttpSimpleRequest($sHost, "POST", $sLink, $sReferer, $sPostContend, $sHeader, True, 1)
_Write_to_Console("laden| " & $aHosts[1][0] & $sLink)
If IsArray($aHTML) Then
$aHTML[1] = StringReplace($aHTML[1], "amp;", "")
;~ $aHTML[1] = BinaryToString($aHTML[1], 4)
;~ _ArrayDisplay($aHTML)
Return $aHTML[1]
Else
$aHTML = _WinHttpSimpleRequest($sHost, "POST", $sLink, $sReferer, $sPostContend)
$aHTML = StringReplace($aHTML, "amp;", "")
;~ $aHTML = BinaryToString($aHTML, 4)
Return $aHTML
EndIf
EndFunc ;==>_send_Winhttp_POST
Func _send_Winhttp_GET($sHost, $sLink, $sReferer)
Local $sHeader = "Content-Type: application/x-www-form-urlencoded"
$aHTML = _WinHttpSimpleRequest($sHost, "GET", $sLink, $sReferer, Default, $sHeader, True, 1)
_Write_to_Console("laden | " & $aHosts[1][0] & $sLink)
If IsArray($aHTML) Then
$aHTML[1] = StringReplace($aHTML[1], "amp;", "")
$aHTML[1] = BinaryToString($aHTML[1], 4)
Return $aHTML[1]
Else
$aHTML = _WinHttpSimpleRequest($sHost, "GET", $sLink, $sReferer)
$aHTML = StringReplace($aHTML, "amp;", "")
$aHTML = BinaryToString($aHTML, 4)
Return $aHTML
EndIf
EndFunc ;==>_send_Winhttp_GET
Func _send_WinhttpS_GET($sHost, $sLink, $sReferer)
;~ Local $sHeader = "Content-Type: application/x-www-form-urlencoded" & @CRLF & $sHeader_lovoo
$aHTML = _WinHttpSimpleSSLRequest($sHost, "GET", $sLink, $sReferer, Default, $sHeader, True, 1)
_Write_to_Console("laden | " & $aHosts[1][0] & $sLink)
If IsArray($aHTML) Then
$aHTML[1] = StringReplace($aHTML[1], "amp;", "")
;~ $aHTML[1] = BinaryToString($aHTML[1], 4)
;~ _ArrayDisplay($aHTML)
Return $aHTML[1]
Else
$aHTML = _WinHttpSimpleSSLRequest($sHost, "GET", $sLink, $sReferer)
$aHTML = StringReplace($aHTML, "amp;", "")
;~ $aHTML = BinaryToString($aHTML, 4)
Return $aHTML
EndIf
EndFunc ;==>_send_WinhttpS_GET
Func _send_WinhttpS_POST($sHost, $sLink, $sReferer, $sPostContend)
;~ Local $sHeader = "Content-Type: application/x-www-form-urlencoded" & @CRLF & $sHeader_lovoo
$aHTML = _WinHttpSimpleSSLRequest($sHost, "POST", $sLink, $sReferer, $sPostContend, $sHeader, True, 1)
_Write_to_Console("laden | " & $aHosts[1][0] & $sLink)
If IsArray($aHTML) Then
$aHTML[1] = StringReplace($aHTML[1], "amp;", "")
;~ $aHTML[1] = BinaryToString($aHTML[1], 4)
Return $aHTML[1]
Else
$aHTML = _WinHttpSimpleSSLRequest($sHost, "POST", $sLink, $sReferer, $sPostContend)
$aHTML = StringReplace($aHTML, "amp;", "")
;~ $aHTML = BinaryToString($aHTML, 4)
Return $aHTML
EndIf
EndFunc ;==>_send_WinhttpS_POST
Func _URIEncode($sData)
; Prog@ndy
Local $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "")
Local $nChar
$sData = ""
For $i = 1 To $aData[0]
;~ ConsoleWrite($aData[$i] & @CRLF)
$nChar = Asc($aData[$i])
Switch $nChar
Case 45, 46, 48 - 57, 65 To 90, 95, 97 To 122, 126
$sData &= $aData[$i]
Case 32
$sData &= "+"
Case Else
$sData &= "%" & Hex($nChar, 2)
EndSwitch
Next
Return $sData
EndFunc ;==>_URIEncode
Func _URIDecode($sData)
; Prog@ndy
Local $aData = StringSplit(StringReplace($sData, "+", " ", 0, 1), "%")
$sData = ""
For $i = 2 To $aData[0]
$aData[1] &= Chr(Dec(StringLeft($aData[$i], 2))) & StringTrimLeft($aData[$i], 2)
Next
Return BinaryToString(StringToBinary($aData[1], 1), 4)
EndFunc ;==>_URIDecode
; Description ...: Returns the n biggest or smallest number
; Syntax.........: nNumber($numbers, $n, $dir = 0)
; Parameters ....: $numbers - the numbers either from a string or from an array
; $n - search for n biggest or smallest number where n is an integer
; $dir - 0 search for smallest number, 1 for biggest number
; Return values .: Success - Returns the appropriate number and set @error to 0
; Failure - Returns error code:
; 1 - Wrong delimiter in string! Valid is comma (,) only!
; 2 - No numbers found!
; 3 - n is not an integer
; 4 - n is not in boundary of amount of numbers
; Remarks .......: Needs the function CompSort() for sorting the internal array
; Author ........: UEZ
; Version .......: 0.90 Build 2010-11-11 Beta
; ================================================================================================================================
Func _nNumber($numbers, $n, $dir = 0)
If IsArray($numbers) Then
$num = _ArrayToString($numbers, ",")
If @error Then Return SetError(1, 0, "Error! Wrong delimiter in string! Valide is comma (,) only!")
$numbers = $num
EndIf
Local $aNum = StringRegExp($numbers, "(-\d+\.\d+|\d+\.\d+|\d+)", 3)
If Not IsArray($aNum) Then Return SetError(2, 0, "Error! No numbers found!")
If Not IsInt($n) Then Return SetError(3, 0, "Error! n is not an integer")
If $n < 1 Or $n > UBound($aNum) - 1 Then Return SetError(4, 0, "Error! n is not in boundary of amount of numbers")
_CompSort($aNum)
If Not $dir Then Return SetError(0, 0, $aNum[$n - 1]) ;n smallest number
Return SetError(0, 0, $aNum[UBound($aNum) - $n]) ;n biggest number
EndFunc ;==>_nNumber
Func _CompSort(ByRef $aArray)
Local $gap = UBound($aArray)
Local $swaps, $i, $tmp
Do
$gap = Int($gap / 1.247330950103979)
If $gap < 1 Then $gap = 1
$i = 0
$swaps = 0
Do
If Number($aArray[$i]) > Number($aArray[$i + $gap]) Then
$tmp = Number($aArray[$i])
$aArray[$i] = Number($aArray[$i + $gap])
$aArray[$i + $gap] = $tmp
$swaps = 1
EndIf
$i += 1
Until $i + $gap > UBound($aArray) - 1
Until $gap = 1 And $swaps = 0
EndFunc ;==>_CompSort
Func _replaceKom2Punkt($sString)
Return StringReplace($sString, ",", ".")
EndFunc ;==>_replaceKom2Punkt
Func _replacePunkt2Koma($sString)
Return StringReplace($sString, ".", ",")
EndFunc ;==>_replacePunkt2Koma
Func _Write_to_Console($sText)
ConsoleWrite($sText & @CRLF)
EndFunc ;==>_Write_to_Console
Func _XPDF_ToText($sPDFFile, $sTXTFile, $iFirstPage = 1, $iLastPage = 0, $bLayout = True)
Local $sXPDFToText = @ScriptDir & "\..\daten\pdftotext.exe"
Local $sOptions
If Not FileExists($sPDFFile) Then Return SetError(1, 0, 0)
If Not FileExists($sXPDFToText) Then Return SetError(2, 0, 0)
If $iFirstPage <> 1 Then $sOptions &= " -f " & $iFirstPage
If $iLastPage <> 0 Then $sOptions &= " -l " & $iLastPage
If $bLayout = True Then $sOptions &= " -layout" ;das war standart
;~ If $bLayout = True Then $sOptions &= " simple" ;ganz gut viele leerzeichen
;~ If $bLayout = True Then $sOptions &= " raw" ;fast perfekt
If $bLayout = False Then $sOptions &= " table" ;fast perfekt
Local $iReturn = ShellExecuteWait($sXPDFToText, $sOptions & ' "' & $sPDFFile & '" "' & $sTXTFile & '"', @ScriptDir & "\..", "", @SW_HIDE)
If $iReturn = 0 Then Return 1
Return 0
EndFunc ;==>_XPDF_ToText
Func _create_Gui_Ausw($aArrayList)
#Region ### START Koda GUI section ### Form=c:\users\flo\documents\isn autoit studio\projects\aufmasscreaterv2\forms\frm_ausw.kxf
Global $frm_ausw = GUICreate("AuftragsAuswahl", 919, 231, 777, 303)
Global $lv_auswahl = GUICtrlCreateListView("Beschreibung|SMNr|42Nr|DetailsID|Bezeichnung|Rahemvertrag|Start Datum|End Datum|Status", 5, 5, 905, 150, -1, BitOR($WS_EX_CLIENTEDGE, $LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 120)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 80)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 80)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 60)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 4, 220)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 5, 90)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 6, 80)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 7, 80)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 8, 80)
Global $frm_ausw_txt_besch = GUICtrlCreateInput("", 5, 160, 121, 21)
Global $frm_ausw_txt_smnr = GUICtrlCreateInput("", 130, 160, 81, 21)
Global $frm_ausw_txt_42er = GUICtrlCreateInput("", 215, 160, 71, 21)
Global $frm_ausw_txt_detailsid = GUICtrlCreateInput("", 290, 160, 56, 21)
Global $txt_ausw_txt_bez = GUICtrlCreateInput("", 350, 160, 216, 21)
Global $frm_ausw_txt_rv = GUICtrlCreateInput("", 570, 160, 86, 21)
Global $frm_ausw_txt_sDatum = GUICtrlCreateInput("", 660, 160, 76, 21)
Global $frm_ausw_txt_eDatum = GUICtrlCreateInput("", 740, 160, 76, 21)
Global $frm_ausw_txt_status = GUICtrlCreateInput("", 820, 160, 91, 21)
Global $frm_ausw_bt_best = GUICtrlCreateButton("übernehmen", 5, 185, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_GUICtrlListView_AddArray($lv_auswahl, $aArrayList)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $frm_ausw_bt_best
$iRow = _GUICtrlListView_GetSelectedIndices($lv_auswahl)
;~ ConsoleWrite($aTest & @CRLF)
GUICtrlSetData($frm_ausw_txt_besch, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 0))
GUICtrlSetData($frm_ausw_txt_smnr, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 1))
GUICtrlSetData($frm_ausw_txt_42er, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 2))
GUICtrlSetData($frm_ausw_txt_detailsid, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 3))
GUICtrlSetData($txt_ausw_txt_bez, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 4))
GUICtrlSetData($frm_ausw_txt_rv, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 5))
GUICtrlSetData($frm_ausw_txt_sDatum, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 6))
GUICtrlSetData($frm_ausw_txt_eDatum, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 7))
GUICtrlSetData($frm_ausw_txt_status, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 8))
GUICtrlSetData($frm_ausw_bt_best, _GUICtrlListView_GetItemText($lv_auswahl, Int($iRow), 9))
;~ _DebugArrayDisplay($aTest)
ExitLoop
EndSwitch
WEnd
Return GUICtrlRead($frm_ausw_txt_detailsid)
EndFunc ;==>_create_Gui_Ausw