ERP-Plugins
Der invoiceR prüft und gibt Rechnungen frei, bezahlt sie aber nicht selbst. Die Zahlung übernimmt das ERP- oder Buchhaltungssystem. Die Verbindung dazu stellt ein ERP-Plugin her. Jedes Plugin kann bis zu drei Aufgaben übernehmen:
- Stammdaten-Import: Konten, Kostenstellen, Projekte, Lieferanten, MwSt-Codes und weitere Stammdaten regelmässig aus dem ERP holen (siehe Stammdaten).
- Buchungsexport: Freigegebene Belege nach der Schlusskontrolle als Kreditorenbeleg an das ERP übergeben, je nach Plugin mit dem PDF der Rechnung.
- Vorbuchung: Bei wenigen ERP die Rechnung schon vor der letzten Freigabe melden, damit sie in Auswertungen erscheint. Bezahlt wird erst nach der Freigabe.
Verfügbare Plugins
Abschnitt betitelt „Verfügbare Plugins“| ERP-System | Import | Export | Vorbuchung | Fehler-Rückmeldung | Verbindung |
|---|---|---|---|---|---|
| Abacus | ja | ja | ja | SOAP (AbaConnect) | |
| Abacus über ODBC | ja | ja | ja | ODBC und Datei | |
| Comarch | ja | Datei | |||
| CSS eGecko | ja | XML-Datei | |||
| Generisch CSV | ja | ja | CSV-Datei | ||
| SAP (IDoc) | ja | IDoc-Datei | |||
| Axians Infoma | ja | Datei | |||
| Microsoft Dynamics 365 Business Central | ja | ja | ja | REST-API | |
| Generisch SQL Server | ja | SQL | |||
| Nexus | ja | ja | ja | SOAP und REST | |
| Generisch ODBC | ja | ODBC | |||
| Dynasoft | ja | ODBC | |||
| Lobos | ja | ja | ja | ja | ODBC |
| Opale | ja | Datei | |||
| pain.001 (ISO 20022) | ja | ja | XML-Datei | ||
| Proffix | ja | API | |||
| E3K | ja | ja | REST-API |
Fehler-Rückmeldung heisst: Lehnt das ERP eine Buchung ab, holt der invoiceR den Beleg zurück in die Schlusskontrolle und zeigt die Fehlermeldung dort und im Verlauf an. Plugins ohne Fehler-Rückmeldung übergeben die Buchung, ohne eine Antwort des ERP auszuwerten. Fehler siehst du dann im ERP selbst.
So laufen Import und Export ab
Abschnitt betitelt „So laufen Import und Export ab“Import und Export laufen als wiederkehrende Hangfire-Jobs. Ihre Konfiguration steht
in der Tabelle conf.IrRecurringJobs im Feld Configuration als JSON. Sie enthält die
Verbindungsdaten zum ERP, ERP-spezifische Angaben (Mandant, Firma, Belegart) und Einstellungen des
invoiceR wie die Rolle, die bei Fehlern informiert wird.
Import: Zur eingestellten Zeit verbindet sich der Job mit dem ERP, holt die Stammdaten und gleicht sie mit den bestehenden ab. Details unter Stammdaten-Import.
Export: Ist ein Beleg fertig freigegeben, legt der invoiceR einen Eintrag in der Export-Warteschlange
an (Tabelle exp.IrCaseBookings). Der Export-Job sucht regelmässig nach offenen Einträgen und
übergibt jeden Beleg einzeln an das ERP. Ein verarbeiteter Eintrag erhält ein Verarbeitungsdatum
und wird nicht noch einmal exportiert.
Beispiel: Microsoft Dynamics 365 Business Central
Abschnitt betitelt „Beispiel: Microsoft Dynamics 365 Business Central“Das Plugin für Business Central verbindet sich über die REST-API von Business Central und meldet sich mit einer App-Registrierung in Microsoft Entra ID an.
Es importiert Konten, Lieferanten, Projekte, Artikel und Währungen mit Kursen und exportiert freigegebene Belege als Einkaufsrechnung mit dem PDF als Anhang.
Konfiguration
Abschnitt betitelt „Konfiguration“| Einstellung | Bedeutung |
|---|---|
AzureAdTenantId | Verzeichnis-ID (Tenant) in Microsoft Entra ID |
AzureAdClientId | Anwendungs-ID der App-Registrierung |
AzureAdClientSecret | Geheimer Schlüssel der App-Registrierung |
AzureAdScope | Berechtigungsumfang, in der Regel https://api.businesscentral.dynamics.com/.default |
BusinessCentralEnvironment | Name der Business-Central-Umgebung, zum Beispiel Production |
OrganizationUnitExternalIds | Liste der Firmen-IDs in Business Central, die importiert bzw. exportiert werden. Jede entspricht einem Geschäftsbereich im invoiceR. |
MappingKeys, Source | Nur Import, siehe Stammdaten |
ExceptionRoleId | Nur Export: Rolle, der ein Beleg bei einem Fehler im Export zugewiesen wird |
CreateMissingVendor | Nur Export: Fehlt der Lieferant in Business Central, legt ihn der Export an (true) oder bricht mit einem Fehler ab (false, Standard) |
| Aufgabe | ClassIdentifier | MethodName | MethodArgumentIdentifier |
|---|---|---|---|
| Konten importieren | enio.erp.Plugin.MSDynamics365.Entities.Accounts | DoImport | enio.erp.Plugin.MSDynamics365.Import.ImportArgument |
| Lieferanten importieren | enio.erp.Plugin.MSDynamics365.Entities.Suppliers | DoImport | enio.erp.Plugin.MSDynamics365.Import.ImportArgument |
| Projekte importieren | enio.erp.Plugin.MSDynamics365.Entities.Projects | DoImport | enio.erp.Plugin.MSDynamics365.Import.ImportArgument |
| Artikel importieren | enio.erp.Plugin.MSDynamics365.Entities.Articles | DoImport | enio.erp.Plugin.MSDynamics365.Import.ImportArgument |
| Währungen importieren | enio.erp.Plugin.MSDynamics365.Entities.CurrencyExchangeRates | DoImport | enio.erp.Plugin.MSDynamics365.Import.ImportArgument |
| Belege exportieren | enio.erp.Plugin.MSDynamics365.Export.Invoices | DoExport | enio.erp.Plugin.MSDynamics365.Export.ExportArgument |
Beispiel für die Konfiguration des Lieferanten-Imports:
{ "AzureAdTenantId": "<verzeichnis-id>", "AzureAdClientId": "<anwendungs-id>", "AzureAdClientSecret": "<geheimer-schluessel>", "AzureAdScope": "https://api.businesscentral.dynamics.com/.default", "BusinessCentralEnvironment": "Production", "OrganizationUnitExternalIds": ["<firmen-id-1>", "<firmen-id-2>"], "MappingKeys": ["IrOrganizationUnitId", "Number"], "Source": "MSDynamicsImport"}