;createCSV.au3

#include <File.au3>
#include <Array.au3>
#include <Debug.au3>



#include <ButtonConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ### Form=
$_1 = GUICreate("Daten Eingabe", 401, 301, 192, 125)
$po_number_input = GUICtrlCreateInput("4212007585", 10, 10, 180, 21)
$po_item_input = GUICtrlCreateInput("00010", 10, 40, 180, 21)
$finalMark_input = GUICtrlCreateInput("No", 10, 70, 180, 21)
$lzvon_input = GUICtrlCreateInput("YYYY-MM-DD", 10, 100, 180, 21)
$lzbis_input = GUICtrlCreateInput("YYYY-MM-DD", 10, 130, 180, 21)
$txz01_input = GUICtrlCreateInput("Hier steht Kurztext mit max 40 Zeichen", 10, 160, 380, 21)
$sbnaman_input = GUICtrlCreateInput("Rutta / Frau Erdmann", 10, 190, 380, 21)
$dlort_input = GUICtrlCreateInput("77749 HohbergSM Auft...", 10, 220, 380, 21)
$generate_button = GUICtrlCreateButton("Generieren", 10, 250, 80, 30)
$date_start = GUICtrlCreateDate(@YEAR & "-" & @MON& "-" & @MDAY, 200, 100, 129, 21)
$date_end = GUICtrlCreateDate(@YEAR & "-" & @MON& "-" & @MDAY, 200, 130, 130, 21)
; Button zum Generieren der Ausgabe
$generate_button = GUICtrlCreateButton("Generieren", 10, 250, 80, 30)
#EndRegion ### END Koda GUI section ###

Local $sStyle = "yyyy/MM/dd"
GUICtrlSendMsg($date_start, $DTM_SETFORMATW, 0, $sStyle)
GUICtrlSendMsg($date_end, $DTM_SETFORMATW, 0, $sStyle)


GUISetState(@SW_SHOW)

; GUI Nachrichtenschleife
While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit

		Case $generate_button
			
			MsgBox(64, "", "")
			
			$po_number = GUICtrlRead($po_number_input)
			$po_item = GUICtrlRead($po_item_input)
			$finalMark = GUICtrlRead($finalMark_input)
			$lzvon = GUICtrlRead($lzvon_input)
			$lzbis = GUICtrlRead($lzbis_input)
			$txz01 = GUICtrlRead($txz01_input)
			$sbnaman = GUICtrlRead($sbnaman_input)
			$dlort = GUICtrlRead($dlort_input)

			Local $sFilePath, $aArray
;~ 	_GUICtrlListView_DeleteAllItems($LV_Aufm)
			$aListeImport = ""
			Local $message = "Bitte wählen Sie die Import Datei aus!"

			Local $sFilePath = FileOpenDialog($message, @ScriptDir & "\..\_Aufmaße\", "Text (*.txt)", 1 + 4)
			If @error Then
				MsgBox(4096, "", "Keine Datei(en) ausgewählt")
				Return "No Datei"
			Else
				$sFilePath = StringReplace($sFilePath, "|", @CRLF)
;~ 		MsgBox(4096, "", "Es wurde(n) " & $var & " ausgewählt")
				_FileReadToArray($sFilePath, $aArray)
				If IsArray($aArray) Then
					Dim $aListeImport[$aArray[0] - 15][13]
					$iZ = 0
					For $i = 16 To UBound($aArray) - 1
						$aTemp = StringSplit($aArray[$i], "|")
						For $ii = 1 To UBound($aTemp) - 1
							$aListeImport[$iZ][$ii - 1] = $aTemp[$ii]
						Next
						$iZ = $iZ + 1
					Next

				EndIf
				_DebugArrayDisplay($aArray)
				_DebugArrayDisplay($aListeImport)

;~ $S_srvpos = _ArrayToString($aListeImport, ";", Default , Default , )
;~ $S_menge =
;~ $S_longText =
;~ $S_sectionText =
				$aData = $aListeImport


				$S_srvpos = ""
				$S_sectionText = ""
				$S_longText = ""
				$S_menge = ""

;~ Bachstr. 11||||||||||||
;~ |10034578|1,0||||1|ST|FTTH- GrundstüeksersehIieI?ung HP PIus||1|67,80|67,8
;~ |10037463|1,0|2||||M|Einbringen v. KabeI/Rohren unbeIegt|||1,81|
;~ |10037473|1,0|22|||22|M|Ein-/Ausbr. v. KabeI/Rohren beIegt||22|2,37|52,14
;~ |10034682|1,0|3,8|||3,8|M|ZuIage HausansehIuss >10m||3,8|42,77|162,526
;~ |10034642|1,0||||1|ST|Gf-HausansehIuss hersteIIen||1|680,00|680


				For $i = 0 To UBound($aData) - 1
					If $aData[$i][2] <> "" Then
						$S_srvpos &= $aData[$i][1] & ";"
						$S_sectionText &= $aData[$i][0] & ";"
						$S_longText &= $aData[$i][9] & ";"

						$aData[$i][$j] = StringReplace($aData[$i][$j], "ä", "ae")
						$aData[$i][$j] = StringReplace($aData[$i][$j], "ö", "oe")
						$aData[$i][$j] = StringReplace($aData[$i][$j], "ü", "ue")
						$aData[$i][$j] = StringReplace($aData[$i][$j], "ß", "ss")
						; Überprüfen, ob der Inhalt eine Zahl ist, und dann Punkt durch Komma ersetzen
						If StringRegExp($aData[$i][$j], "^[\d+\.?\d*]$") Then
							$aData[$i][$j] = StringReplace($aData[$i][$j], ".", ",")
						EndIf

						; Anpassung der Zeichenkette für $S_menge ohne Berechnung, nur Ausdruck
						Local $expr = ""
						Switch $aData[$i][7]
							Case "ST"
								$expr = $aData[$i][2] & "*" & $aData[$i][6]
							Case "M"
								$expr = $aData[$i][2] & "*" & $aData[$i][3]
							Case "M2"
								$expr = $aData[$i][2] & "*" & $aData[$i][3] & "*" & $aData[$i][4]
							Case "M3"
								$expr = $aData[$i][2] & "*" & $aData[$i][3] & "*" & $aData[$i][4] & "*" & $aData[$i][5]
						EndSwitch
						$S_menge &= $expr & ";"
					EndIf
				Next

				; Entfernen des letzten Semikolons von jeder Variable, um Übereinstimmung zu gewährleisten
				$S_srvpos = StringTrimRight($S_srvpos, 1)
				$S_sectionText = StringTrimRight($S_sectionText, 1)
				$S_longText = StringTrimRight($S_longText, 1)
				$S_menge = StringTrimRight($S_menge, 1)

				; Ausgabe generieren
				$sFirst = "po_number;po_item;finalMark;lzvon;lzbis;txz01;sbnaman;dlort;srvpos;menge;longText;sectionText"
				$dataLine = $po_number & ";" & $po_item & ";" & $finalMark & ";" & $lzvon & ";" & $lzbis & ";" & _
						$txz01 & ";" & $sbnaman & ";" & $dlort & ';"' & $S_srvpos & '";"' & $S_menge & '";"' & _
						$S_longText & '";"' & $S_sectionText

				; Ausgabe in Konsole
				ConsoleWrite($sFirst & @CRLF & $dataLine & @CRLF)

				; Ausgabedateipfad definieren
				$sOutputFilePath = @ScriptDir & "\..\ausgabe.csv"

				; Datei im Schreibmodus öffnen, UTF-8 ohne BOM
				$hFile = FileOpen($sOutputFilePath, $FO_OVERWRITE + $FO_UTF8_NOBOM)

				If $hFile = -1 Then
					MsgBox($MB_SYSTEMMODAL, "Fehler", "Konnte die Ausgabedatei nicht öffnen.")
					Exit
				EndIf

				; Kopfzeile und Datenzeile schreiben
				FileWrite($hFile, $sFirst & @CRLF & $dataLine & @CRLF)

				; Datei schließen
				FileClose($hFile)
				; FileWrite(@ScriptDir & "\..\ausgabe.csv", $sFirst & @CRLF & $dataLine)
			EndIf
			
		case $date_start
			GUICtrlSetData($lzvon_input, GUICtrlRead($date_start))
		case $date_end
			GUICtrlSetData($lzbis_input, GUICtrlRead($date_end))
	EndSwitch
WEnd




;~ ; Ausgabe der Variablen zur Überprüfung
;~ ConsoleWrite("S_srvpos: " & $S_srvpos & @CRLF)
;~ ConsoleWrite("S_sectionText: " & $S_sectionText & @CRLF)
;~ ConsoleWrite("S_longText: " & $S_longText & @CRLF)
;~ ConsoleWrite("S_menge: " & $S_menge & @CRLF)
;~ 	$sTeilaufma = StringReplace($aArray[2], "Teilaufma=", "")
;~ 	If $sTeilaufma = "X" Then

;~ 	Else

;~ 	EndIf
;~ 	$sSchlussaufma = StringReplace($aArray[3], "Schlussaufma=", "")
;~ 	If $sSchlussaufma = "X" Then

;~ 	Else

;~ 	EndIf


;~ 	$kopf_tab_txt_datum = StringReplace($aArray[4], "Datum=", "")
;~ 	$kopf_tab_txt_baustelle = StringReplace($aArray[5], "Baustelle=", "")
;~ 	$kopf_tab_txt_abrufnr = StringReplace($aArray[6], "AbrufNr=", "")
;~ 	$kopf_tab_txt_smnr = StringReplace($aArray[7], "SMNr=", "")
;~ 	$kopf_tab_chb_vertrag = StringReplace($aArray[8], "Vertrag=", "")
;~ 	$kopf_tab_datum_start = StringReplace($aArray[9], "StartZ=", "")
;~ 	$kopf_tab_txt_datum_ende = StringReplace($aArray[10], "EndZ=", "")
;~ 	$kopf_tab_txt_aspa = StringReplace($aArray[11], "AspaN=", "")
;~ 	$kopf_tab_txt_telnr = StringReplace($aArray[12], "AspaTel=", "")
;~ 	$kopf_tab_txt_bauabschnitt = StringReplace($aArray[13], "Bauabschnitt=", "")
;~ 	$kopf_tab_txt_kolone = StringReplace($aArray[14], "Kolone=", "")

;~ 	$lve_tab_chb_vertrag = StringReplace($aArray[8], "Vertrag=", "")
;~ 	$kopf_tab_chb_vertrag = StringReplace($aArray[8], "Vertrag=", "")



;~ 	$aStartDatum = StringSplit($kopf_tab_datum_start, ".")

;~ 	If IsArray($aStartDatum) Then
;~ 		If UBound($aStartDatum) = 3 Then
;~ 			$iYear = $aStartDatum[3]
;~ 			$iMonth = $aStartDatum[2]
;~ 			$iDay = $aStartDatum[1]
;~ 			$kopf_tab_datumfeld_start = $iYear & "-" & $iMonth & "-" & $iDay
;~ 		EndIf

;~ 	EndIf

;~ 	$aStartDatum = StringSplit($kopf_tab_txt_datum_ende, ".")
;~ 	If IsArray($aStartDatum) Then
;~ 		If UBound($aStartDatum) = 3 Then
;~ 			$iYear = $aStartDatum[3]
;~ 			$iMonth = $aStartDatum[2]
;~ 			$iDay = $aStartDatum[1]
;~ 			$kopf_tab_datumfeld_ende = $iYear & "-" & $iMonth & "-" & $iDay
;~ 		EndIf
;~ 	EndIf

;~ EndIf
;~
