Zum Inhalt springen

Laravel und Sage. Welches Sage denn?

Sage ist eine Produktfamilie, die auf der Schnittstellenebene fast nichts gemeinsam hat. Welches Produkt der Kunde einsetzt und wo es läuft, entscheidet die Architektur vor der ersten Zeile.

5 Min. Lesezeit

Ein Erstgespräch, in dem jemand sagt "wir nutzen Sage", hat ungefähr so viel gesagt wie "wir nutzen eine Datenbank". Es grenzt den Hersteller ein und sonst nichts. Die Produkte, die sich den Namen teilen, wurden in verschiedenen Jahrzehnten von verschiedenen Unternehmen gebaut, mehrere davon zugekauft, und an der Stelle, an der Ihre Laravel-Anwendung mit einem davon sprechen soll, haben sie beinahe nichts gemeinsam.

Das ist keine Beschwerde über Sage. Es ist eine sehr große Produktfamilie, die vom Einzelunternehmer bis zum Hersteller mit vier Werken alles bedient, und keine einzelne Schnittstelle würde beiden gerecht. Es heißt aber, dass die erste Stunde des Projekts eine Frage ist und kein Schema.

Die Frage, die alles entscheidet

Sage Accounting, das Produkt für kleine Unternehmen, ist ein gehosteter Dienst mit einer REST-Schnittstelle und OAuth 2. Wenn der Kunde das einsetzt, sieht die Integration aus wie jede andere moderne SaaS-Anbindung, und die Arbeit sind die fachlichen Regeln.

Sage 50 ist eine Desktop-Anwendung mit einer Datendatei. Je nach Edition und Baujahr führt der Weg hinein über einen Treiber oder einen lokalen Dienst auf der Maschine, die diese Datei hält. Das wichtige Wort ist lokal: Was Sie aufrufen würden, steht nicht im Internet und war nie dafür gedacht.

Sage 200 teilt sich. Eine Edition wird von Sage gehostet und hat eine veröffentlichte Schnittstelle. Die andere wird auf den eigenen Servern des Kunden installiert, und ihre Schnittstelle läuft dort, hinter dem, was das Netzwerk des Kunden vorgibt. Das sind nicht dieselbe Integration und nicht dieselbe Schätzung.

Sage Intacct und Sage X3 sind wieder andere Produkte, für größere Finanzabteilungen, mit eigenen Schnittstellen, eigener Authentifizierung und eigenem Vokabular für dieselben buchhalterischen Begriffe.

Diese Fragen gehören also beantwortet, bevor sich jemand auf einen Termin festlegt:

  • Welches Produkt, und welche Edition davon.
  • Wo es physisch läuft, und wer diese Maschine administriert.
  • Welche Version, denn Schnittstellen sind über Versionen hinzugekommen und weggefallen.
  • Wer beim Kunden Zugang gewähren kann, und wie lange dessen Freigabe dauert.

Die letzte Frage ist keine technische und steht häufig als längster Posten im Plan.

Wenn es nichts im Internet zum Aufrufen gibt

Nehmen wir Sage 50 auf einem Server im Büro des Kunden, oder Sage 200 auf dessen eigener Infrastruktur. Ihre Laravel-Anwendung läuft bei einem Hoster mit öffentlicher Adresse. Zwischen beiden gibt es keinen Weg, und keine Bibliothek ändert das.

Es gibt drei ehrliche Formen dafür, und sie sind ebenso Entscheidungen über die Infrastruktur des Kunden wie über Ihren Code.

Ein Konnektor, den der Kunde installiert. Ein kleiner Prozess in dessen Netzwerk, neben den Sage-Daten, der nach außen über HTTPS mit Ihrer Anwendung spricht. Weil er die Verbindung aufbaut, ist keine eingehende Firewall-Regel nötig, und genau das macht ihn für die meisten IT-Abteilungen akzeptabel. Er wird aber auch zu Software, die Sie versionieren, überwachen und auf einer Maschine unterstützen müssen, auf die Sie sich nicht einloggen können.

Ein privater Netzwerkpfad. Ein VPN oder ein eigener Tunnel zwischen dessen Netzwerk und Ihrem Host. Leichter zu durchdenken, sobald es existiert - und es existiert, wenn die IT-Abteilung Zeit hat, was das Risiko ist. Lohnt sich, wenn der Kunde diese Vereinbarung bereits mit einem anderen Dienstleister hat.

Dateiaustausch. Auf Ihrer Seite nach Zeitplan exportieren, dort ablegen, wo das Produkt importiert, oder dessen Export lesen. Wird von Leuten, die APIs bevorzugen, zu schnell abgetan. Er ist beobachtbar, ein fehlgeschlagener Lauf lässt die Datei liegen, und ein Mensch kann sie öffnen und sehen, was nicht gestimmt hat.

Wie auch immer es ausgeht, die Konsequenz für den Entwurf ist dieselbe und gehört dem Kunden in der ersten Woche gesagt: Die Daten in Ihrer Anwendung sind eine Kopie mit Verzögerung, die Verzögerung hängt daran, dass eine Maschine in dessen Gebäude eingeschaltet ist, und die Oberfläche muss das sagen, statt einen veralteten Wert als aktuell zu zeigen.

Alles in die Queue, und zwar wirklich

Gegen Sage Accounting ist das gewöhnlicher Rat. Gegen eine lokale Installation ist es der Unterschied zwischen einem funktionierenden System und einem, das jeden Donnerstagnachmittag umfällt, wenn dort die Wochenauswertungen laufen und der Server beschäftigt ist.

Ein synchroner Aufruf in so ein System wird irgendwann neunzig Sekunden dauern, und wenn er in einem Web-Request steckt, haben Sie einen Timeout, einen Benutzer, der einen Fehler gesehen hat, und keine verlässliche Möglichkeit zu wissen, ob der Schreibvorgang angekommen ist. Legen Sie jede Interaktion auf eine Queue, geben Sie ihr eine großzügige Zeitgrenze, und machen Sie die Wiederholung sicher - dieselbe At-least-once-Realität gilt hier, mit der zusätzlichen Gefahr, dass die Gegenseite Ihnen womöglich nicht sagen kann, ob Ihr erster Versuch erfolgreich war.

Halten Sie zu jedem Versuch Anfrage, Antwort und Zeitstempel fest, und behalten Sie das länger, als Sie meinen zu brauchen. Wenn die Buchhaltung im März fragt, warum eine Februar-Rechnung fehlt, ist diese Tabelle das Einzige, was antwortet.

Umsatzsteuer, und wie man sich heraushält

Bei britischen Kunden kommt das sofort auf, weil Making Tax Digital dafür gesorgt hat, dass Meldungen aus Software heraus übermittelt werden statt in ein Webformular getippt.

Der Reflex ist, die Übermittlung zu bauen. Meist ist der richtige Zug das Gegenteil. Führt das Unternehmen seine Umsatzsteueraufzeichnungen in einem unterstützten Sage-Produkt, meldet dieses Produkt, und die Aufgabe Ihrer Integration ist, dafür zu sorgen, dass die Zahlen, die dort ankommen, stimmen und vor der Frist da sind. Ein zweiter Meldeweg schafft ein Abstimmungsproblem mit einer Steuerbehörde am Ende.

Ihr Problem wird es bei der Form der Daten, die Sie übergeben. Leistungszeitpunkt gegen Rechnungsdatum, die Behandlung einer Gutschrift aus einer späteren Periode, Rundung auf Positionsebene gegen Rundung auf Rechnungsebene, und die Umkehr der Steuerschuld bei grenzüberschreitenden Leistungen. Wird das falsch, ist die Übermittlung korrekte Software, die eine falsche Meldung erzeugt.

Was vor der ersten Zeile zu tun ist

Bitten Sie um eine Kopie der Daten oder um Lesezugriff auf einen Testmandanten. Keine Spezifikation, keinen Screenshot: die tatsächlichen Datensätze, mit den Feldern, die die Mitarbeiter des Kunden umbenannt haben, und den Debitorenkonten, die 2011 angelegt und nie aufgeräumt wurden. Jede gründlich danebengegangene Schätzung entstand aus einer Beschreibung der Daten statt aus den Daten.

Schreiben Sie dann für jede Entität auf, welche Seite die Wahrheit hält, in einem Dokument, das die Buchhaltung abzeichnet, und nicht in einem, das nur Entwickler lesen. Es ist eine Seite Prosa. Es ist auch das einzige Artefakt des Projekts, das in zwei Jahren noch zählt, weil der Code neu geschrieben wird und diese Seite das ist, woran die Neufassung geprüft wird.

Liegt das Hauptbuch in Xero statt in Sage, verschwindet die Zugriffsfrage und eine andere tritt an ihre Stelle - der Lebenszyklus der Token, mit einem Fehlerbild, das Kunden lautlos trennt. Unsere Seite zum Integration Engineering beschreibt, wie beide Arten von Projekt zugeschnitten werden.

Verwandte Fragen

Können wir einfach die Sage-API nehmen?
Es gibt keine einzelne Sage-API. Sage Accounting, Sage 50, Sage 200, Sage Intacct und Sage X3 sind getrennte Produkte mit getrennten Schnittstellen, getrennter Authentifizierung und in mehreren Fällen getrennten Betriebsmodellen. Klären Sie Produkt und Edition, bevor irgendjemand schätzt, denn die Antwort ändert die Architektur und nicht die Details.
Der Kunde sagt, sein Sage liege in der Cloud. Reicht das als Antwort?
Für sich genommen nein. Mehrere Sage-Produkte werden üblicherweise auf einem gehosteten Windows-Desktop betrieben, was die Nutzer zu Recht als Cloud beschreiben, weil sie ihn über den Browser erreichen. Das ist nicht dasselbe wie ein Produkt mit einer Schnittstelle im Internet, und dieser Unterschied entscheidet, ob Sie überhaupt etwas aufrufen können. Fragen Sie, was die Nutzer nach dem Anmelden sehen.
Müssen wir die Umsatzsteuermeldung selbst übernehmen?
Meist nicht, und meist sollten Sie es auch nicht wollen. Wo ein unterstütztes Sage-Produkt bereits die führende Aufzeichnung für die Umsatzsteuer ist, meldet es selbst, und eine Integration, die zusätzlich meldet, erzeugt zwei Meldungen und eine Auseinandersetzung. Ihre Aufgabe ist in der Regel, korrekte Daten früh genug für die Frist hineinzubekommen.
Und wenn es gar keine nutzbare Schnittstelle gibt?
Dann ist die Integration ein Dateiaustausch, und das ist eine legitime Antwort und keine Niederlage. Ein überwachter Ordner, eine CSV im Format, das das Produkt importiert, ein Import nach Zeitplan. Es ist unspektakulär, es ist nachvollziehbar, und für ein Unternehmen, das monatlich meldet, ist es oft genau die richtige Menge Technik.

← Zurück zu allen Artikeln

Anrufen+1 848 272 7583WhatsApp+90 850 308 5436E-Mailinfo@codefacture.comKontaktseite