# Einrichtung WEB-Konfiguration

# Einleitung WEB-Konfiguration

Der abschließende Teil der initialen Invoice-Einrichtung erfolgt über die WEB-Konfigurationen. Hierzu muss man sich mit einem Benutzer aus der Gruppe "Administration" an der Documents WEB-Seite anmelden. Nur Mitglieder der Gruppe "Administration" haben initial Zugriff zu den Aministrations-Outbars. Projektspezifisch können die Berechtigungen feiner justiert werden, indem über den Documents-Manager zusätzliche Berechtigungen pro Ordner definiert werden. Dies kann zum Beispiel notwendig sein, wenn ein Anwender lediglich Workflow-Regeln ändern können soll.

Die einzelnen Konfigurationen verteilen sich auf mehrere Sub-Outbars. auf der Sub-Outbar "Allgemein" befinden sich sehr allgemeine Konfigurations-Elemente wie die Konfiguration für die Benutzer und Gruppen, Datenbank-Verbindungen und Übersetzungen. Die Sub-Outbar "Invoice" enthält spezifische Konfigurationen für die gleichnamige Documents-Lösung wie die Workflow-Regeln und Feldkonfigurationen. Die Sub-Outbar "Squeeze" enthält Konfigurations-Ordner für die Squeeze-Anbindung und -Konfiguration. Hierfür existiert eine separate Anleitung.

Die WEB-Konfigurationen wurden als Gadget-Aufruf auf öffentlichen Ordnern umgesetzt. Die Darstellung erfolgt über das Framework "Vue.js" und die Daten werden in der Regel in Datenbank-Tabellen gespeichert.

<p class="callout info">Der Zugriff auf die Datenbank-Daten erfolgt über den Table-Service.</p>

# Einrichtung Table-Service

Die WEB-Konfigurationen von Invoice greifen über den Table-Service auf Daten aus den Datenbanktabellen zu. Hierzu muss die Verbindung zur Datenbank eingerichtet werden. Der Ordner "TableService" befindet sich im DEXPRO-Ordner der Documents-Installation.

Die Datenbank-Verbindung kann über den Ordner "**Verbindung**" -&gt; "**Table Service**" auf der Administrations-Outbar "**Allgemein**" konfiguriert werden. Die TableService-URL verweist auf das lokale System. Der Port kann in der Regel unverändert bleiben und der Api-Key kann über den Button "**API-KEY ERZEUGEN**" automatisch generiert werden. Der API key vom Table Service befindet sich im Ordner "**...\\DEXPRO\\TableService\\config\\**" in der Datei "**local.json**". Sollte der Table Service an anderer Stelle installiert sein (zum Beispiel bei Docker-Systemen), dann muss sich die Datei "local.json" trotzdem an dieser Stelle befinden und in der Datei muss der API key von der Table Service konfiguration eingetragen werden.

Pro Datenbank kann ein alternativer Zugriff definiert werden. In der Standard-Auslieferung muss der Zugriff für die Datenbanken "DEX\_MasterData", "DEX\_Workflow" sowie für die "Documents"-Datenbank konfiguriert werden. Da alle 3 Datenbanken in der Regel auf demselben SQL-Server liegen und die Zugriffe in der Regel über denselben Benutzer erfolgen, kann die Checkbox "**Verbindungsdaten für alle Verbindungen verwenden?**" gesetzt werden. Hierdurch muss der Zugriff nur einmalig konfiguriert werden. Der Anwender muss unter "Host" den SQL-Server-Namen inklusive Instanz angeben. Der SQL-Benutzer sollte volle Berechtigungen auf den Datenbanken haben.

[![image-1591266623552.png](https://docs.squeeze.one/uploads/images/gallery/2020-06/scaled-1680-/image-1591266623552.png)](https://docs.squeeze.one/uploads/images/gallery/2020-06/image-1591266623552.png)

Die WEB-Konfiguration passt die folgenden Dateien an, welche alternativ auch manuell angepasst werden können:

- ...\\Documents5\\DEXPRO\\TableService\\data\\**database-connections.js**
- ...\\Documents5\\DEXPRO\\TableService\\data\\**database-users.js**
- ...\\Documents5\\DEXPRO\\TableService\\config\\**local.json**
- ...\\Documents5\\SQUEEZE\\www\\vue\\conf\\**ServerConfig.js** (Eintrag: "dexServer")

Über den Button "**SERVICE INSTALLIEREN**" wird das angegebene Passwort automatisch verschlüsselt und der Table-Service wird als Dienst installiert und gestartet. Sollte die Installation fehlschlagen sollte die "service-install.bat" aus dem Ordner "TableService" manuell mit Administrations-Rechten ausgeführt werden.

<p class="callout info">Nach der Table-Service-Installation muss der **Browser-Cache** geleert werden! Andernfalls werden auf den Konfigurations-Seiten keine Daten geladen!</p>

Alternativ kann der Browser-Cache vorübergehend deaktiviert werden. Hierfür kann man über die "**F12**"-Taste auf dem Register "**Netzwerk**" die Checkbox "**Cache deaktivieren**" drücken.

[![image-1605261689740.png](https://docs.squeeze.one/uploads/images/gallery/2020-11/scaled-1680-/image-1605261689740.png)](https://docs.squeeze.one/uploads/images/gallery/2020-11/image-1605261689740.png)

<p class="callout info">Bei einem **MS SQL Express Server** (bitte nur auf Testservern verwenden) muss die Einstellung "**Named Pipes**" über den **SQL Server-Konfigurations-Manager** aktiviert werden und der Dienst "**SQL Server-Browser**" muss gestartet werden.</p>

[![image-1606313564287.png](https://docs.squeeze.one/uploads/images/gallery/2020-11/scaled-1680-/image-1606313564287.png)](https://docs.squeeze.one/uploads/images/gallery/2020-11/image-1606313564287.png)

Sobald der Table-Service korrekt konfiguriert wurde, können auch die WEB-Konfigurationen aufgerufen werden, welche auf Daten aus den Datenbanken zugreifen. Auch die Stammdaten Pop-Up Auswahlfenster verwenden den Table-Service.

Projektspezifische Konfigurationen sollten immer nur unter "**...\\DEXPRO\\DocumentsOS\\DEXPRO\\TableService\\data\\table-definitions\\Custom\\**" abgelegt werden. Standard-Konfigurationen sollten durch projektspezifische Konfigurationen im Custom-Ordner ersetzt werden. Die Konfigurations-Bezeichnungen ("**nameApi**") dürfen immer nur einmalig vergeben werden. Andernfalls lässt sich der TableService nicht mehr starten. Projektspezifische Konfigurationen sollten immer die Bezeichnung "**Custom**" enthalten, um Dopplungen auch bei Updates auszuschließen. Spezielle WEB-Konfigurationen befinden sich im Ordner "**...\\DEXPRO\\Vue\\www\\vue\\include\\**". Der Ordnername entspricht dem "**nameApi**".

# Einrichtung Datenbankverbindung für Documents-Skripte

Neben den WEB-Konfigurationen müssen auch die Documents-Skripte eine Datenbank-Verbindung herstellen können. Die Klasse "DBConnection()" enthält 4 Parameter.

In der Documents-Installation im *DEXPRO*-Ordner befindet sich die Datei "dbConn.json". Die Datei beinhalte Informationen zu den Datenbankverbindungen zu den 3 Datenbanken "DEX\_Workflow", "DEX\_MasterData" und der "Documents"-Datenbank. Die Angaben können entweder direkt über die Datei oder über den WEB-Konfigurations-Ordner "Datenbank-Verbindung" hinterlegt werden. Der Konfigurations-Ordner befindet sich auf der Administrations-Outbar "Allgmein" unter "Verbindung".

[![image-1591271338981.png](https://docs.squeeze.one/uploads/images/gallery/2020-06/scaled-1680-/image-1591271338981.png)](https://docs.squeeze.one/uploads/images/gallery/2020-06/image-1591271338981.png)

In der Regel liegen alle 3 Datenbanken auf demselben SQL-Server und der Zugriff soll über denselben Benutzer erfolgen. Über die Checkbox "Verbindungsdaten für alle Verbindungen verwenden?" muss die Verbindung nur beim ersten Eintrag gesetzt werden und die Angaben werden automatisch übertragen.

Für die Datenbankverbindung muss zunächst der SQL-Typ ("sqltype") definiert werden. Bei den Standard-Verbindungen werden nur die Angaben "MySQL" und "Microsoft-SQL" unterstützt. Bei projektspezifischen Verbindungen kann auch "ORACLE" angegeben werden. Die Angabe bezieht sich auf den "sqltype"-Eintrag in der "dbConn.json". Die Angaben hier sind "mysql", "mssql" bzw. "oracle".

Als Verbindungstyp steht bei Microsoft-SQL nur die Option via "ODBC" zur Verfügung und unter "SQL-Connection String" muss entsprechend der ODBC-Verbindungsname angegeben werden. Die entsprechenden Angaben in der "dbConn.json" sind "d5conntype" und "d5connstr".

[![image-1591273480895.png](https://docs.squeeze.one/uploads/images/gallery/2020-06/scaled-1680-/image-1591273480895.png)](https://docs.squeeze.one/uploads/images/gallery/2020-06/image-1591273480895.png)

<p class="callout info">Die ODBC muss als System-DSN (64-Bit) angelegt werden!</p>

Bei "MySQL" kann hingegen eine direkte Verbindung zur Datenbank hergestellt werden (Beispiel: "dex\_workflow@localhost").

Pro Verbindung kann genau ein Datenbankname angegeben werden. Bei einigen Kundeninstallationen liegen die Test- und Produktiv-Datenbanken auf demselben SQL-Server und die Test-Datenbank-Namen werden lediglich um ein "\_Test" ergänzt. Bei Microsoft-SQL wird die Verbindung zusätzlich auf eine "dbo"-Angabe eingeschränkt.

Um Datums-Werte korrekt in die Datenbank schreiben zu können muss das korrekte Datums-Format bekannt sein. Je nach Konfiguration muss entweder zuerst der Monat oder zuerst der Tag angegeben werden.

Zuletzt muss ein Benutzer für die Datenbankverbindung angegeben werden. Dieser SQL-Benutzer muss mindestens Schreibrechte auf die 3 Datenbanken haben. Bei SQL-Benutzern muss das Passwort angegeben werden. Dieses Passwort wird beim ersten Portal-Skript-Aufruf automatisch verschlüsselt. Alternativ kann auch ein Windows-Benutzer verwendet werden. In dem Fall muss das Passwort leer bleiben.

Die Verbindung sollte zum Abschluss über den Button "VERBINDUNG PRÜFEN" getestet werden.

<p class="callout warning">Bei Microsoft-SQL-Benutzern darf die Checkbox "Kennwortrichtlinie erzwingen" nicht gesetzt werden!</p>

<p class="callout warning">Bei manuellen Anpassungen über die dbConn.json muss der propCache "DbConnections" über den Ordner "Documents Property Cache" auf der allgemeinen Administrations-Outbar gelöscht werden.</p>

<p class="callout info">Projektspezifisch können eigene Einträge zur dbConn.json hinzugefügt werden.</p>

# Tabellen-Konfigurationen importieren

Über den Ordner *„Tabellendaten exportieren*“ können Daten aus einer Datenbank-Tabelle exportiert und wieder importiert werden. Die Exporte werden im Ordner *„…\\Documents5\\DEXPRO\\JsonExport\\“* als JSON-Dateien abgelegt. Der Dateiname entspricht dem Tabellen-Namen plus Zeitstempel.

[![image-1585896326735.png](https://docs.squeeze.one/uploads/images/gallery/2020-04/scaled-1680-/image-1585896326735.png)](https://docs.squeeze.one/uploads/images/gallery/2020-04/image-1585896326735.png)

Alle JSON-Dateien aus dem Ordner „**JsonImport**“ können bei einer Neu-Installation über den Button "**Alle Importieren**" in einem Zug importiert werden! Bei einem Update wird in der Regel nur die "parameter\_config" JSON ausgeliefert.

[![image-1591269527630.png](https://docs.squeeze.one/uploads/images/gallery/2020-06/scaled-1680-/image-1591269527630.png)](https://docs.squeeze.one/uploads/images/gallery/2020-06/image-1591269527630.png)

Folgende JSON-Dateien sollten beim Import enthalten sein:

- **fields\_pos\_definition**\_%yyyymmdd\_HHMMSS%.json
- **fields\_pos\_definition\_alternatives**\_%yyyymmdd\_HHMMSS%.json
- **fields\_pos\_gentablebuttons**\_%yyyymmdd\_HHMMSS%.json
- **fields\_pos\_gentablebuttonssettings**\_%yyyymmdd\_HHMMSS%.json
- **fields\_pos\_gentablesettings**\_%yyyymmdd\_HHMMSS%.json
- **fields\_pos\_gentablexmlsettings\_%**yyyymmdd\_HHMMSS%.json
- **invoice\_gentable\_searchfields**\_%yyyymmdd\_HHMMSS%.json
- **lang\_properties\_config**\_%yyyymmdd\_HHMMSS%.json
- **parameter\_config**\_%yyyymmdd\_HHMMSS%.json
- **rights\_initial**\_%yyyymmdd\_HHMMSS%.json
- **wf\_actionid**\_%yyyymmdd\_HHMMSS%.json
- **wf\_configuration**\_%yyyymmdd\_HHMMSS%.json
- **wf\_rules**\_%yyyymmdd\_HHMMSS%.json
- **wf\_workflow**\_%yyyymmdd\_HHMMSS%.json
- **wf\_workflowid**\_%yyyymmdd\_HHMMSS%.json

# Übersetzungen

Über den Ordner *„**Übersetzungen**“* müssen die produktspezifischen properties-Dateien über den Button mit dem Wolken-Icon und dem Pfeil nach unten in die Datenbank geladen werden. Im Anschluss sollten die Daten direkt wieder über den nebenstehenden Button wieder zurück in die properties-dateien geschrieben werden.

[![image-1591269278326.png](https://docs.squeeze.one/uploads/images/gallery/2020-06/scaled-1680-/image-1591269278326.png)](https://docs.squeeze.one/uploads/images/gallery/2020-06/image-1591269278326.png)

Beim Schreiben in die Datenbank werden immer nur Daten hinzugefügt. Wenn an einem Eintrag die Checkbox "**Projektspezifische Anpassung**" gesetzt ist, werden die Daten bei einem Import nicht überschrieben. Bei einem Export wird die bestehende properties-Datei mit einem Zeitstempel versehen und in einen Backup-Ordner verschoben und es wird eine neue Datei erstellt.

# Benutzer / Benutzergruppen

Neue Benutzer und Gruppen können über die WEB-Konfiguration über die jeweiligen Filter-Ordner erstellt werden. Über den Aktionslisten-Eintrag „Synchronisieren“ werden die jeweiligen Akten erstellt. Falls die Benutzer und Gruppen über LDAP synchronisiert werden können die Ordner über den Documents-Manager ausgeblendet werden.

Es werden die aus anderen Lösungen bekannten Mappentypen **otrAccessProfile** und **otrUser** verwendet. Allerdings wurden alle an den Mappentypen hinterlegten Skripte durch eigene Skripte ersetzt. Die Mappentypen wurde um diverse Funktionen erweitert. Falls sich diese Mappentypen bereits durch andere Lösungen auf dem System befinden, dann sollten die Mappentypen nicht überschrieben werden, damit alle bestehenden Funktionen auch weiterhin funktionieren!

# Anlage der kundenspezifischen Mandanten

Es muss mindestens ein kundenspezifischer Mandant über den Stammdaten-Konfigurations-Ordner *„**Mandanten**“* angelegt werden. Die Lösung unterscheidet "Mandanten" (Principal) und "Buchungskreise" (CompanyCode).

In der Regel reicht ein Wert zur Unterscheidung aus. Beide Werte können in dem Fall auf denselben Wert gesetzt werden und das "CompanyCode" Feld kann später über die Feldkonfiguration ausgeblendet werden. Beim Speichern können beide Feldwerte zum Beispiel über das UserExit "**ue\_OnSave\_Start()**" auf denselben Wert gesetzt werden. In den Stammdaten-Tabellen sollte "CompanyCode" hingegen immer mit "**ANY**" belegt werden, damit bei einem Mandanten-Wechsel ohne Zwischen-Speichern direkt die korrekten Stammdaten angezeigt werden.

# Import Kopf-Felder und Anpassung SQL-Insert

Auf der Administrations-Outbar „**Invoice**“ gibt es den Ordner „**Kopf-Felder**“ unterhalb der „**Feldkonfigurationen**“. Die Kopffelder müssen initial über den Button „**KOPFFELDER NEU LADEN**“ eingelesen werden. Die Werte werden direkt aus der Documents5-Datenbank ausgelesen.

Bei den Standardwerten kann über die Checkbox „**SQL Insert?**“ angegeben werden, ob das Feld beim Speichern der Rechnungs-Akte in die Datenbank-Tabelle „**invoice\_posting\_head**“ geschrieben wird oder nicht. Wenn es zum Feld ein gleichnamiges Feld in der Tabelle existiert, wird die Checkbox beim Import vorbelegt. Andernfalls kann über die Feldkonfirguation automatisch eine passende Spalte in der Tabelle erzeugt werden.

Über die Spalte "**In Workflow-Regel verwenden?**" kann festgelegt werden, ob das Feld in den Workflow-Regeln zur Auswahl steht. In den Workflow-Regeln wird die Auswahlliste hierdurch übersichtlicher.