' VB Script Document ' ' Export Script for WinLine documents. ' Configuration has to be done in SQL Tables TBDD_DOCEXPORT_CONFIG and TBDD_DOCEXPORT_PROFILE ' ' Digital Data ' Ludwig-Rinn-Straße 16 ' 35452 Heuchelheim ' Tel.: 0641 / 202360 ' E-Mail: info-flow(at)digitaldata.works ' ' Version Number: 2.0.0.0 ' Version Date: 09.02.2020 On Error Resume Next '########## set variables ########## DIM MacroParameter(11), RUN_MACRO_GUID, RUN_APP_GUID, ReplaceItems, ReplaceKeys, LoopCounter, LoopCounter2 DocVersion = 1 DocVersionSeparator = "~" ReplaceSpecialChar = "" DebugMode = "Enabled" MandatorNr = Value (0,11) RecordNumber = Value (25,22) HeadDocType = Value (25,139) ProgramDocType = Value (0,20) PostingType = Value (357,6) DocFinalAmount = Value (25,100) TBDD_DOCEXPORT_PROFILE = "T651" TBDD_DOCEXPORT_PROFILE_SQL = "[U001] = 1 AND [u003] IN ('ALL','"& MandatorNr &"') AND [U004] = '"& ProgramDocType &"' AND [U005] = '"& HeadDocType &"' AND [U006] = '"& PostingType &"' AND [U011] IS NOT NULL AND [U012] IS NOT NULL" TBDD_DOCEXPORT_CONFIG = "T650" TBDD_DOCEXPORT_CONFIG_VARSQL = "[U001] = 1 AND [u003] IN ('ALL','"& MandatorNr &"') AND [U004] LIKE '%Variable%' AND [U005] IS NOT NULL AND [U006] IS NOT NULL AND [U007] IS NOT NULL AND [U008] IS NULL AND [U012] IS NULL" SET FileSystemObject = CreateObject("Scripting.FileSystemObject") SET ReplaceItems = CreateObject("Scripting.Dictionary") ReplaceItems.CompareMode = vbTextCompare '########## preparing part ########## 'Reset Error Var Err.Clear 'Display debug infos, if enabled IF DebugMode = "Enabled" THEN MSGBOX "ProgramDocType: "& ProgramDocType & vbCrLf & _ "HeadDocType: " & HeadDocType & vbCrLf & _ "RecordNumber: " & RecordNumber & vbCrLf & _ "PostingType: " & PostingType,,"DEBUG - Info: WinLine Runtime Variables" MSGBOX "Profile SQL:"& vbCrLf & TBDD_DOCEXPORT_PROFILE_SQL & vbCrLf & vbCrLf & _ "Var SQL: " & vbCrLf & TBDD_DOCEXPORT_CONFIG_VARSQL,,"DEBUG - Info: SQL Commands (not final!)" END IF 'Replace Object, because functions are not available ReplaceItems.ADD "%MandantenNr%",MandatorNr ReplaceItems.ADD "%Laufnummer%",RecordNumber ReplaceItems.ADD "%UserName%",TRIM(CSTR(Value (0,14))) ReplaceItems.ADD "%KontoNr%",TRIM(CSTR(Value (0,30))) ReplaceItems.ADD "%KontoName%",TRIM(CSTR(Value (50,3))) ReplaceItems.ADD "%ProjektNr%",TRIM(CSTR(Value (25,136))) ReplaceItems.ADD "%AngebotsNr%",TRIM(CSTR(Value (0,34))) ReplaceItems.ADD "%AuftragsNr%",TRIM(CSTR(Value (0,35))) ReplaceItems.ADD "%LieferscheinNr%",TRIM(CSTR(Value (0,36))) ReplaceItems.ADD "%RechnungsNr%",TRIM(CSTR(Value (0,37))) ReplaceItems.ADD "%AnfragenNr%",TRIM(CSTR(Value (0,34))) ReplaceItems.ADD "%BestellNr%",TRIM(CSTR(Value (0,35))) ReplaceItems.ADD "%Textzeile1%",TRIM(CSTR(Value (25,63))) ReplaceItems.ADD "%Textzeile2%",TRIM(CSTR(Value (25,64))) ReplaceItems.ADD "%Textzeile3%",TRIM(CSTR(Value (25,65))) ReplaceItems.ADD "%Textzeile4%",TRIM(CSTR(Value (25,66))) ReplaceItems.ADD "%Textzeile5%",TRIM(CSTR(Value (25,67))) ReplaceItems.ADD "%Textzeile6%",TRIM(CSTR(Value (25,68))) ReplaceItems.ADD "%Textzeile7%",TRIM(CSTR(Value (25,69))) ReplaceItems.ADD "%Textzeile8%",TRIM(CSTR(Value (25,70))) ReplaceItems.ADD "%Textzeile9%",TRIM(CSTR(Value (25,71))) ReplaceItems.ADD "%Textzeile10%",TRIM(CSTR(Value (25,72))) ReplaceItems.ADD "%Tag%",(day(date)) ReplaceItems.ADD "%Monat%",(month(date)) ReplaceItems.ADD "%Monatsname%",MonthName((month(date))) ReplaceItems.ADD "%Jahr%",(Year(date)) 'Code block to get document profile from table IF (Mid(DocFinalAmount,1,1)) = "-" THEN TBDD_DOCEXPORT_PROFILE_SQL = TBDD_DOCEXPORT_PROFILE_SQL & " AND [U007] = 'NegativAmount'" END IF SET TBDD_DOCEXPORT_PROFILE_RESULT = CWLStart.CurrentCompany.SearchRecord(TBDD_DOCEXPORT_PROFILE, TBDD_DOCEXPORT_PROFILE_SQL) IF Err.Number <> 0 THEN MSGBOX "Error Code: "& Err.Number & vbCrLf & _ "Error Description: "& Err.Description,,"ERROR: Getting Variables from DB Table "& TBDD_DOCEXPORT_PROFILE Err.Clear ELSE IF TBDD_DOCEXPORT_PROFILE_RESULT = -1 Then IF DebugMode = "Enabled" THEN MSGBOX "No Rows found, SQL: "& vbCrLf & TBDD_DOCEXPORT_PROFILE_SQL,,"DEBUG - Info: Profiles from Database table "& TBDD_DOCEXPORT_PROFILE END IF ELSE IF DebugMode = "Enabled" THEN MSGBOX "WINLINE_ProgramDocType: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(4) & vbCrLf & _ "WINLINE_HeadDocType: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(5) & vbCrLf & _ "WINLINE_PostingType: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(6) & vbCrLf & _ "WINLINE_VARIABLE4: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(7) & vbCrLf & _ "WINLINE_VARIABLE5: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(8) & vbCrLf & _ "WINLINE_VARIABLE6: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(9) & vbCrLf & _ "WINLINE_VARIABLE7: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(10) & vbCrLf & vbCrLf & _ "DOCEXPORT_PATH: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(11) & vbCrLf & _ "DOCEXPORT_FILENAME: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(12) & vbCrLf & _ "DOCEXPORT_FILENAME_PREVIEW: "& TBDD_DOCEXPORT_PROFILE_RESULT.Value(13) & vbCrLf & _ "DOCEXPORT_FILEEXTENSION: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(14) & vbCrLf & _ "DOCEXPORT_VERSIONING: " & TBDD_DOCEXPORT_PROFILE_RESULT.Value(15),,"DEBUG - Info: document profile from Database table "& TBDD_DOCEXPORT_PROFILE END IF WINLINE_ProgramDocType = TBDD_DOCEXPORT_PROFILE_RESULT.Value(4) WINLINE_HeadDocType = TBDD_DOCEXPORT_PROFILE_RESULT.Value(5) WINLINE_PostingType = TBDD_DOCEXPORT_PROFILE_RESULT.Value(6) WINLINE_VARIABLE4 = TBDD_DOCEXPORT_PROFILE_RESULT.Value(7) WINLINE_VARIABLE5 = TBDD_DOCEXPORT_PROFILE_RESULT.Value(8) WINLINE_VARIABLE6 = TBDD_DOCEXPORT_PROFILE_RESULT.Value(9) WINLINE_VARIABLE7 = TBDD_DOCEXPORT_PROFILE_RESULT.Value(10) DOCEXPORT_PATH = TBDD_DOCEXPORT_PROFILE_RESULT.Value(11) DOCEXPORT_FILENAME = TBDD_DOCEXPORT_PROFILE_RESULT.Value(12) DOCEXPORT_FILENAME_PREVIEW = TBDD_DOCEXPORT_PROFILE_RESULT.Value(13) DOCEXPORT_FILEEXTENSION = TBDD_DOCEXPORT_PROFILE_RESULT.Value(14) DOCEXPORT_VERSIONING = TBDD_DOCEXPORT_PROFILE_RESULT.Value(15) 'Code block to get variables from table SET TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT = CWLStart.CurrentCompany.SearchRecord(TBDD_DOCEXPORT_CONFIG, TBDD_DOCEXPORT_CONFIG_VARSQL) IF Err.Number <> 0 THEN MSGBOX "Error Code: "& Err.Number & vbCrLf & _ "Error Description: "& Err.Description,,"ERROR: Variables from Database table "& TBDD_DOCEXPORT_CONFIG &" !" Err.Clear ELSE IF TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT = -1 Then IF DebugMode = "Enabled" THEN MSGBOX "No Rows found, SQL: "& TBDD_DOCEXPORT_CONFIG_VARSQL,,"DEBUG - Info: Variables from Database table "& TBDD_DOCEXPORT_CONFIG END IF ELSE FOR LoopCounter = 1 TO TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT.RowCount IF DebugMode = "Enabled" THEN MSGBOX "Name: " & TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT.Value(5) & vbCrLf & _ "Type: " & TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT.Value(6) & vbCrLf & _ "Value: "& TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT.Value(7),,"DEBUG - Info: "& LoopCounter &" of "& TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT.RowCount &" Variables from Database table "& TBDD_DOCEXPORT_CONFIG END IF ReplaceItems.ADD TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT.Value(5),TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT.Value(7) TBDD_DOCEXPORT_CONFIG_VARSQL_RESULT.NextRecord NEXT END IF END IF 'Replace PlaceHolder and invalid Characters IF (DOCEXPORT_PATH <> "") THEN ReplaceKeys = ReplaceItems.keys For LoopCounter = 0 To ReplaceItems.Count -1 IF InStr(DOCEXPORT_PATH,ReplaceKeys(LoopCounter)) > 0 Then DOCEXPORT_PATH = Replace(DOCEXPORT_PATH,ReplaceKeys(LoopCounter),ReplaceItems(ReplaceKeys(LoopCounter))) END IF Next DOCEXPORT_PATH = Replace(Replace(Replace(Replace(Replace(Replace(DOCEXPORT_PATH,"/",ReplaceSpecialChar),"*",ReplaceSpecialChar),"?",ReplaceSpecialChar),"<",ReplaceSpecialChar),">",ReplaceSpecialChar),"|",ReplaceSpecialChar) ReplaceItems.ADD "%DOCEXPORT_PATH%",DOCEXPORT_PATH IF DebugMode = "Enabled" THEN MSGBOX "DOCEXPORT_PATH: "& vbCrLf & DOCEXPORT_PATH & vbCrLf & vbCrLf & _ "ReplaceItems includes "& ReplaceItems.count &" Items.",,"DEBUG - Info: DOCEXPORT_PATH Variable AFTER replace routine" END IF END IF 'Replace PlaceHolder and invalid Characters IF (DOCEXPORT_FILENAME <> "") THEN ReplaceKeys = ReplaceItems.keys For LoopCounter = 0 To ReplaceItems.Count -1 IF InStr(DOCEXPORT_FILENAME,ReplaceKeys(LoopCounter)) > 0 Then DOCEXPORT_FILENAME = Replace(DOCEXPORT_FILENAME,ReplaceKeys(LoopCounter),ReplaceItems(ReplaceKeys(LoopCounter))) END IF Next DOCEXPORT_FILENAME = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(DOCEXPORT_FILENAME,"\",ReplaceSpecialChar),"/",ReplaceSpecialChar),":",ReplaceSpecialChar),"*",ReplaceSpecialChar),"?",ReplaceSpecialChar),"<",ReplaceSpecialChar),">",ReplaceSpecialChar),"|",ReplaceSpecialChar) ReplaceItems.ADD "%DOCEXPORT_FILENAME%",DOCEXPORT_FILENAME IF DebugMode = "Enabled" THEN MSGBOX "DOCEXPORT_FILENAME: "& vbCrLf & DOCEXPORT_FILENAME & vbCrLf & vbCrLf & _ "ReplaceItems includes "& ReplaceItems.count &" Items.",,"DEBUG - Info: DOCEXPORT_FILENAME Variable AFTER replace routine" END IF END IF 'Replace PlaceHolder and invalid Characters IF (DOCEXPORT_FILENAME_PREVIEW <> "") THEN ReplaceKeys = ReplaceItems.keys For LoopCounter = 0 To ReplaceItems.Count -1 IF InStr(DOCEXPORT_FILENAME_PREVIEW,ReplaceKeys(LoopCounter)) > 0 Then DOCEXPORT_FILENAME_PREVIEW = Replace(DOCEXPORT_FILENAME_PREVIEW,ReplaceKeys(LoopCounter),ReplaceItems(ReplaceKeys(LoopCounter))) END IF Next DOCEXPORT_FILENAME_PREVIEW = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(DOCEXPORT_FILENAME_PREVIEW,"\",ReplaceSpecialChar),"/",ReplaceSpecialChar),":",ReplaceSpecialChar),"*",ReplaceSpecialChar),"?",ReplaceSpecialChar),"<",ReplaceSpecialChar),">",ReplaceSpecialChar),"|",ReplaceSpecialChar) ReplaceItems.ADD "%DOCEXPORT_FILENAME_PREVIEW%",DOCEXPORT_FILENAME_PREVIEW IF DebugMode = "Enabled" THEN MSGBOX "DOCEXPORT_FILENAME_PREVIEW: "& vbCrLf & DOCEXPORT_FILENAME_PREVIEW & vbCrLf & vbCrLf & _ "ReplaceItems includes "& ReplaceItems.count &" Items.",,"DEBUG - Info: DOCEXPORT_FILENAME_PREVIEW Variable AFTER replace routine" END IF END IF END IF END IF '########## main part ########## 'Check if all necessary export parameters are set. IF ((DOCEXPORT_PATH <> "") AND (DOCEXPORT_FILENAME <> "") AND (DOCEXPORT_FILEEXTENSION <> "")) THEN 'Check if destination folder / folder strukture exists. If not, try to create. IF NOT FileSystemObject.FolderExists(DOCEXPORT_PATH) THEN strDir = FileSystemObject.GetAbsolutePathName(DOCEXPORT_PATH) arrDirs = Split( strDir, "\" ) If Left( strDir, 2 ) = "\\" THEN strDirBuild = "\\" & arrDirs(2) & "\" & arrDirs(3) & "\" idxFirst = 4 Else strDirBuild = arrDirs(0) & "\" idxFirst = 1 End If For idx = idxFirst to Ubound( arrDirs ) strDirBuild = FileSystemObject.BuildPath( strDirBuild, arrDirs(idx) ) If Not FileSystemObject.FolderExists( strDirBuild ) THEN FileSystemObject.CreateFolder strDirBuild End if Next END IF 'If DOCEXPORT_PATH exists, export file - including version tagging. IF (FileSystemObject.FolderExists(DOCEXPORT_PATH)) THEN DOCEXPORT_PATH_AND_FILENAME = DOCEXPORT_PATH & "\" & DOCEXPORT_FILENAME & "." &DOCEXPORT_FILEEXTENSION IF (DOCEXPORT_VERSIONING = 1) THEN IF (FileSystemObject.FileExists(DOCEXPORT_PATH_AND_FILENAME)) THEN DO DocVersion = DocVersion + 1 DOCEXPORT_PATH_AND_FILENAME = DOCEXPORT_PATH & "\" & DOCEXPORT_FILENAME & DocVersionSeparator & DocVersion & "." & DOCEXPORT_FILEEXTENSION ReplaceItems.Remove("%DOCEXPORT_FILENAME%") ReplaceItems.ADD "%DOCEXPORT_FILENAME%",DOCEXPORT_FILENAME & DocVersionSeparator & DocVersion & "." & DOCEXPORT_FILEEXTENSION ReplaceItems.ADD "%DOCEXPORT_PATH_AND_FILENAME%",DOCEXPORT_PATH_AND_FILENAME LOOP UNTIL (FileSystemObject.FileExists(DOCEXPORT_PATH_AND_FILENAME) = False) END IF END IF IF DebugMode = "Enabled" THEN MSGBOX "FINAL DOCEXPORT_PATH_AND_FILENAME: "& vbCrLf & DOCEXPORT_PATH_AND_FILENAME & vbCrLf & vbCrLf & _ "ReplaceItems includes "& ReplaceItems.count &" Items.",,"DEBUG - Info: Final document settings" END IF IF (DOCEXPORT_FILENAME_PREVIEW <> "") THEN Formtitle = DOCEXPORT_FILENAME_PREVIEW END IF 'In doc preview mode, there will be no export ExportOutput DOCEXPORT_PATH_AND_FILENAME, 5, 1 ELSE MSGBOX("ACHTUNG: Zielpfad für Export konnte nicht erstellt werden! Export wird abgebrochen.") END IF ELSEIF (DOCEXPORT_FILENAME_PREVIEW <> "") THEN Formtitle = DOCEXPORT_FILENAME_PREVIEW ELSE 'Missing Value in DOCEXPORT_PATH, DocTargetFileName or DOCEXPORT_FILEEXTENSION WScript.Quit(1) END IF ResultValue = DOCEXPORT_PATH_AND_FILENAME