Dokumentablage und Archiv
Die Belegdaten liegen in der Datenbank des invoiceR, die PDF-Dokumente selbst aber nicht. Für die Dokumente bindet der invoiceR eine Ablage an: ein Verzeichnis auf dem Server, einen Cloud-Speicher, SharePoint oder ein revisionssicheres Archivsystem.
Ablagen konfigurieren
Abschnitt betitelt „Ablagen konfigurieren“Jede Ablage ist ein Eintrag in der Tabelle conf.DocumentRepositories. Es können mehrere Ablagen
nebeneinander bestehen, zum Beispiel eine für Rechnungen und eine für Beilagen.
| Spalte | Bedeutung |
|---|---|
Id | Wird von der Datenbank vergeben. Andere Konfigurationen verweisen darauf. |
TenantId | Mandant. |
Name | Freie Bezeichnung, nur als Notiz. |
AssemblyName | Vollständiger Klassenname des Ablage-Plugins, zum Beispiel enio.storage.Plugin.SharePoint.SharePointStorage. Das Plugin muss im Ordner PLUGINS des Backends liegen. |
Connection | JSON mit den Einstellungen für das Plugin (Adresse, Zugangsdaten, Mapping von Belegfeldern auf Archiv-Attribute). |
EnvironmentFilter | Leer: Eintrag gilt immer. Sonst nur in den genannten Umgebungen, zum Beispiel Production. Mehrere Werte mit Komma trennen. |
DocumentType | Für welche Dokumentart die Ablage gilt: 1 Rechnung, 2 Beilage, 3 Report, 4 Dokument. So lassen sich Rechnungen und Beilagen in verschiedenen Archiven ablegen. |
Verfügbar sind unter anderem Plugins für Dateisystem, Azure Storage, Amazon S3, SFTP, SharePoint Online und verschiedene Archivsysteme. Welches Plugin und welche Einstellungen für euch passen, klärst du mit enio.
SharePoint als Ablage
Abschnitt betitelt „SharePoint als Ablage“Mit SharePoint Online als Ablage kann eine Dokumentbibliothek die Rolle des Archivs übernehmen. Mit passenden Aufbewahrungsrichtlinien in Microsoft 365 verhinderst du, dass Dokumente vor Ablauf einer Frist gelöscht werden. Auf Anfrage stellt enio einen Leitfaden für die Einrichtung der Bibliothek zur Verfügung.
App-Registrierung vorbereiten
Abschnitt betitelt „App-Registrierung vorbereiten“- Lege eine App-Registrierung an und notiere Tenant ID und Application (client) ID.
- Füge unter API permissions > Add a permission > SharePoint die Anwendungsberechtigung
Sites.Selectedhinzu und erteile mit Grant admin consent die Zustimmung. - Erstelle ein Zertifikat (zum Beispiel mit dem PowerShell-Skript aus der Microsoft-Anleitung
„Granting access via Azure AD App-Only“). Lade die
.cer-Datei unter Certificates & secrets in die App. - Übergib die
.pfx-Datei mit Passwort auf einem sicheren Weg an enio. SharePoint akzeptiert für diese Art Zugriff nur ein Zertifikat, ein Client Secret genügt nicht (Anfragen werden mit Status 401 abgelehnt).
Zugriff auf die Bibliothek erteilen
Abschnitt betitelt „Zugriff auf die Bibliothek erteilen“Sites.Selected gibt der App zunächst auf keine Site Zugriff. Du erteilst ihn gezielt für die Site mit der
Bibliothek. Dafür brauchst du mindestens Site-Collection-Administrator-Rechte.
Mit der CLI for Microsoft 365 (Node.js nötig):
npm i -g @pnp/cli-microsoft365m365 loginm365 spo site apppermission add --permission write --appId <application-id> --siteUrl https://contoso.sharepoint.com/sites/Kreditorenm365 spo site apppermission list --appId <application-id> --siteUrl https://contoso.sharepoint.com/sites/KreditorenOder mit PnP PowerShell (ab PowerShell 7.2):
Install-Module PnP.PowerShell -Scope CurrentUserConnect-PnPOnline contoso.sharepoint.com -InteractiveGrant-PnPAzureADAppSitePermission -Permissions Write -DisplayName "invoiceR" -AppId <application-id> -Site https://contoso.sharepoint.com/sites/KreditorenGet-PnPAzureADAppSitePermission -AppIdentity <application-id> -Site https://contoso.sharepoint.com/sites/KreditorenMögliche Berechtigungen sind read, write, manage und fullcontrol. Für die Ablage genügt write.
Einstellungen im Connection-JSON
Abschnitt betitelt „Einstellungen im Connection-JSON“| Schlüssel | Bedeutung | Beispiel |
|---|---|---|
url | Adresse des SharePoint-Mandanten | https://contoso.sharepoint.com |
ContentSite | Name der Site; leer oder / für die Stamm-Site | Kreditoren |
ContentFolder | Name der Dokumentbibliothek | Shared Documents |
OAuthTenantId | Tenant ID | <tenant-id> |
OAuthClientId | Application ID der App | <application-id> |
OAuthCertificatePath | Pfad zur .pfx-Datei auf dem Server, absolut oder relativ | Certificates/invoicer.pfx |
OAuthCertificatePassword | Passwort der .pfx-Datei | <passwort> |
Beleg aus einem anderen Programm öffnen
Abschnitt betitelt „Beleg aus einem anderen Programm öffnen“Andere Programme (zum Beispiel ein ERP) können einen Beleg direkt im invoiceR öffnen. Der Link führt ins Archiv und öffnet den Beleg:
- Über die Belegnummer:
https://<invoicer-adresse>/app/main/archive?external=<Belegnummer>#external - Über die interne ID:
https://<invoicer-adresse>/app/main/archive?case=<ID>#case
Der Benutzer muss angemeldet sein und den Beleg sehen dürfen.
