Zum Inhalt springen

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.

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.

SpalteBedeutung
IdWird von der Datenbank vergeben. Andere Konfigurationen verweisen darauf.
TenantIdMandant.
NameFreie Bezeichnung, nur als Notiz.
AssemblyNameVollständiger Klassenname des Ablage-Plugins, zum Beispiel enio.storage.Plugin.SharePoint.SharePointStorage. Das Plugin muss im Ordner PLUGINS des Backends liegen.
ConnectionJSON mit den Einstellungen für das Plugin (Adresse, Zugangsdaten, Mapping von Belegfeldern auf Archiv-Attribute).
EnvironmentFilterLeer: Eintrag gilt immer. Sonst nur in den genannten Umgebungen, zum Beispiel Production. Mehrere Werte mit Komma trennen.
DocumentTypeFü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.

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.

  1. Lege eine App-Registrierung an und notiere Tenant ID und Application (client) ID.
  2. Füge unter API permissions > Add a permission > SharePoint die Anwendungsberechtigung Sites.Selected hinzu und erteile mit Grant admin consent die Zustimmung.
  3. 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.
  4. Ü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).

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):

Terminal-Fenster
npm i -g @pnp/cli-microsoft365
m365 login
m365 spo site apppermission add --permission write --appId <application-id> --siteUrl https://contoso.sharepoint.com/sites/Kreditoren
m365 spo site apppermission list --appId <application-id> --siteUrl https://contoso.sharepoint.com/sites/Kreditoren

Oder mit PnP PowerShell (ab PowerShell 7.2):

Terminal-Fenster
Install-Module PnP.PowerShell -Scope CurrentUser
Connect-PnPOnline contoso.sharepoint.com -Interactive
Grant-PnPAzureADAppSitePermission -Permissions Write -DisplayName "invoiceR" -AppId <application-id> -Site https://contoso.sharepoint.com/sites/Kreditoren
Get-PnPAzureADAppSitePermission -AppIdentity <application-id> -Site https://contoso.sharepoint.com/sites/Kreditoren

Mögliche Berechtigungen sind read, write, manage und fullcontrol. Für die Ablage genügt write.

SchlüsselBedeutungBeispiel
urlAdresse des SharePoint-Mandantenhttps://contoso.sharepoint.com
ContentSiteName der Site; leer oder / für die Stamm-SiteKreditoren
ContentFolderName der DokumentbibliothekShared Documents
OAuthTenantIdTenant ID<tenant-id>
OAuthClientIdApplication ID der App<application-id>
OAuthCertificatePathPfad zur .pfx-Datei auf dem Server, absolut oder relativCertificates/invoicer.pfx
OAuthCertificatePasswordPasswort der .pfx-Datei<passwort>

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.