2014/IX = ERP

ArchivistaBox 2014/IX mit rundum neuer ERP-Lösung

Egg, 28. August 2014: Die ArchivistaBox beinhaltet seit einiger Zeit bereits ArchivistaERP. Kunden, welche ArchivistaDMS einsetzen, können das Modul mit ein zwei Mausklicks aktivieren, doch verhielt sich ArchivistaERP bis anhin im Hintergrund. Mit der ArchivistaBox 2014/IX ändert sich dies, ArchivistaERP bildet neu ein gleichberechtigtes Standbein neben ArchivistaVM und ArchivistaDMS. Der nachfolgende Blog zeigt die Entstehungsgeschichte auf und stellt ArchivistaERP vor.

Was bisher geschah…

Wer unsere Blogs dann und wann verfolgt, dürfte schon den einen oder anderen Blog zu ArchivistaERP vorgefunden haben. Historisch gesehen ist ArchivistaERP im Jahre 2008 entstanden, weil für unsere Firma im Laufe der Jahre drei unterschiedliche Fakturierungssysteme enstanden sind (gekaufe Lösungen und eigene Entwicklungen), welche nur schwer miteinander kommunizieren konnten. Daraus entstand der Wunsch, diese drei Lösungen durch eine quelloffene, webbasierte ERP-Lösung zu ersetzen. Für eine Firma (wie die Archivista GmbH), welche Software entwickelt, sollte dies ja nicht allzu schwer sein. Mit diesem Leitbild investierte unsere Firma viele Personen-Monate in die Evaluation der damaligen Lösungen SQL-Ledger sowie TinyERP (heute OpenERP bzw. Tryton). Leider stellte sich bei TinyERP die Problematik, dass die RichClient-Applikation zwar schick aussah, aber mit etlichen Fehlern (insb. beim Drucken) behaftet war.

SQL-Ledger lief soweit, war aber (damals) nicht auf Schweizer Verhältnisse angepasst. Um es kurz zu sagen, der Versuch, diese Lösung an unsere Bedürfnisse anzupassen, endete im Disaster. Ein Zeilenhaufen im höheren sechstelligen Bereich, das Verwenden von Frames, ein fehlendes Security-Management, kurz und gut, vielleicht gerade weil wir den Code anpassen wollten, brachen wir die Übung letztlich ab. Dabei lernten wir (wenn auch schmerzhaft), dass auch quelloffene Lösungen nur dann einen Wert ergeben, wenn sie akkurat entwickelt werden.

Stellvertretend für viele Stimmen, dazu ein Link zu einem Artikel bei lwn.net/Articles/227151/, bzw. das folgende Zitat: „…SQL-Ledger’s code is absolutely horrible“. Oder ein weiteres Zitat: „…not only the code – the UI is imho unusable.“. Die Sache mit SQL-Ledger lernte uns überdies, auch mit unserem eigenen Code anspruchsvoller umzugehen, Vieles ging seit da vielleicht etwas später in Produktion, drohte dafür aber nie auf der Qualitätsstufe ebendieser Codebasis zu verkommen. Wie die Sachlage bei nicht quelloffenen ERP-Systemen aussieht, kann hier nicht abschliessend gesagt werden. Sollte der Hersteller die Sourcen aber nicht zumindest vorzeigen wollen, so würde ich keine Lösung auch nur mehr evaluieren wollen.

Etwa ein Jahr nach dem Übungsabbruch starteten wir mit OpenBravo und FrontAccounting einen neuen Versuch. OpenBravo hätte uns gut gefallen, aber erschien uns am Ende als deutlich zu mächtig für eine KUM-Firma. FrontAccouting erwies sich da leichtgewichtiger, und so konnten wir im Jahre 2009 das daraus entstandene ArchivistaERP für uns intern in Betrieb nehmen. Der Code war deutlich brauchbarer als jener von SQL-Ledger (obwohl wir erst PHP erlernen mussten), einzig die Fragmentierung des Codes (ca. 360 Dateien) erwies sich als grössere Hürde. Als derrart gröbere Hürde, dass eine Weiterentwicklung immer wieder verschoben wurde. Diesen Sommer endlich konnte ArchivistaERP erneuert werden, das Ergebnis findet sich in der ArchivistaBox 2014/IX.

Komplett neue Codebasis

Zunächst wurde der Quellcode komplett überarbeitet. Die ca. 360 Dateien wurden in eine Datei migriert, aus ca. 60000 Zeilen Code wurden noch ca. 28000 Zeilen. Alle Formulare und Reporte wurden in Klassen gelegt und lkönnen so beliebig für Kundenprojekte weiterverwendet werden. Dies bedeutet, dass es eine Basis-Bibliothek und derzeit ca. 100 Formulare sowie 30 Reporte gibt. Diese Klassen können beliebig für Projekte erweitert werden. Alle (klassenbasierten) Formulare und Reporte können über den Einstiegspunkt ‚index.php‘ aufgerufen werden (z.B. index.php?form=order). Ebenfalls neu ist der Zugriff mit HTTP-Requests oder direkt mit PHP (im Batch-Modus). Dazu ein Beispiel:

$_POST['batch']=1;
$_POST['login_user']="admin";
$_POST['login_db']="archivistaerp3";
$_POST['password']="archivista";
include("session.inc");
include("form_order.inc");
$customer=345;
for($c=1;$c<=10000;$c++) { // replace $c<=10000 with $c<=1 for one order
$form=new form_order("NewOrder=1");
$form->form_order("customer_id=$customer");
if (getCartVal('customer_id')==$customer) {
$form->form_order("stock_id=dolder&price=310&qty=2&AddItem=1");
$form->form_order("stock_id=eiger&price=4020&qty=2&AddItem=1");
$form->form_order("ProcessOrder=1");
}
$form=null;
}
?>

Mit diesem Code werden Bestellungen im Batch-Modus im System abgesetzt. Dabei wird der gleiche Code ausgeführt, wie wenn der/die angemeldete Benutzer/in die Bestellung übers Web-Interface erfassen würde. Die Bestellung kann auch per HTTP-Rquest übermittelt werden, sodass andere Programmiersprachen nicht aussen vor bleiben. Was bringt mir als Kunde ein Batch-Mode? Nun, als Kunde erhalte ich eine einfache Schnittstelle zur Applikation (API), ohne dass ich die internen Strukturen der Anwendung verstehen muss. So wird z.B. bei der Bestellung das Datum automatisch ausgefüllt, auch kann auf die interne Preissturktur (Endkunden, Wiederverkauf, etc.) zugegriffen werden.

Kleine Nebenbemerkung: Eine der grössten „Sünden“ der PHP-Sprache dürfte wohl die sein, dass aufgrund der Einbettung in HTML quasi ab dem ersten Zeichen die Ausgabe zum Bildschirm erfolgt. Dies führt dazu, dass entweder HTML-Artefakte schwer lesbar sind oder tonnenweise echo-Befehle im PHP-Code auftreten. Konkret auf ArchivistaERP bezogen. Bisher gab es über 3600 echo-Befehle, neu gibt es noch einen Aufruf. Damit kann die Applikation bis ganz zum Schluss entscheiden, wie mit dem Inhalt zu verfahren ist.

Ajax-Interface für Kunden, Lieferanten und Artikel

Es ist eine Unsittte älterer Web-Applikationen, dass die Informationen in an den Benutzer übermittelt werden. Leider machte ArchivistaERP hier keine Ausnahme. Dies ist bei einem Kundenstamm mit einer vier-/fünfstelliger Anzahl von Adressen noch machbar, bei einigen Millionen von Adressen wäre es ein unüberwindbares Problem, weil bei jedem -Seitenaufruf alle Eintäge an den Web-Browser übermittelt werden. Dank der integrierten Ajax-Technologie werden nur noch jene Kunden, Lieferanten und/oder Artikel übermittelt, mit denen gerade gearbeitet wird, ohne dasa die Seiten immer wieder neu geladen werden müssen. Einfach die ersten Buchstaben eingeben, und schon kann der passende Kunde, Lieferant oder der gewünschte Artikel ausgewählt werden.

Funktionstasten für zügiges Arbeiten

ArchivisaERP kann beim Erfassen der Daten neu an vielen Punkten mit Funktionstasten bedient werden. Zum Eröffnen einer Bestellung kann z.B. die Taste F2 verwendet werden, danach kann direkt der Kunde gewählt werden, mit der Tab-Taste geht es weiter zu den Artikeln, wobe
i hier Posten mit F5 in die laufende Bestellung übertragen werden und am Schluss kann die Besellung mit F6 gespeichert werden. Eine Bestellung ist so in wenigen Sekunden erfasst.

Braucht eine ERP-Lösung wirklich 32 oder 64 GByte RAM?

Wenn Weltkonzerne auf PHP setzen, kann PHP nicht wirklich langsam sein. Aber seien wir ehrlich, die Laufzeitgeschwindigkeit ist bei heutigen Programmiersprachen und Rechnern kaum mehr je das Problem. Und trotzdem sind am Schluss viele Applikationen langsam bzw. laufen nur noch performant, wenn extrem leistungsfähige Rechner eingesetzt werden. So bestellte ein ArchivistaVM-Kunde Server mit 128 GByte an RAM, weil die neue ERP-Lösung (ein Produkt aus dem Hause mit Kacheln) eher 64 GByte denn 32 GByte RAM erforderte. Zur Information: Das tägliche Bestellwesen bei jenem Kunden liegt im Bereich von einigen wenigen hundert Rechnungen.

Bei ArchivistaERP haben wir ein grosses Augenmerk darauf gelegt, dass die Applikation mehr als schnell arbeitet. Um dies regelmässig zu testen, arbeiten wir in der Entwicklung immer wieder (und mittlerweile auch ganz gerne) mit der ArchivistaBox Albis III. Dieser Kleinstrechner hat einen ARM-Prozessor und 512 MByte RAM. Wir erhalten auf diesen „Raspi“ mittlerweile überall Reaktionszeiten von unter 3 Sekunden (d.h. länger dauert es nicht, bis eine Maske aufgebuat ist, bzw. ein Vorgang gespeichert ist. Bereits auf der ArchivistaBox Dolder ergeben sich Reaktionszeiten von max. 1 bis 2 Sekunden, auf allen übrigen ArchivistaBox-System sprechen wir von deutlich weniger als einer Sekunde, selbst für komplexe Vorgänge wie z.B. das Erstellen der Jahresbilanz.

Zum Zweiten: 10’000 Bestellungen mit der ArchivistaBox Dolder

Derzeit wird ArchivistaERP mit Test-Prozessen bestückt. Dabei ist uns für die ArchivistaBox Dolder ein alter Test in den Sinn gekommen. In letzten Blog testeten wir die Scangeschwindigkeit der ArchivistaBox Dolder, diesmal (nunmehr mit ArchivistaERP) ging es darum, wie lange es dauern würde, um 10’000 Bestellungen zu verarbeiten. Wer den obenstehenden Code genau betrachtet, wird auch bereits die for-Schleife mit den 10’000 Durchläufen erkennen. Wir waren gepsannt, welche Zeiten auf der ArchivistaBox Dolder resultieren würden.Hier die Testresultate:

real 5m42.823s   user 4m22.140s   sys 0m23.565s

Effektiv benötigte der Job weniger als 5 Minuten und 43 Sekunden, die ArchivistaBox Dolder erreicht damit beim Verarbeiten der Bestellungen den Faktor Zehn im Vergleich zum Scannen. Einmal davon abgesehen, dass bereits 10’000 Scans nicht übel sind, so muss doch beachtet werden, dass beim Scannen mindestens um den Faktor 100 oder 1000 mehr Daten anfallen — womit auch geklärt ist, warum das Scannen ca. 10 Mal mehr Zeit benötigt. Rechnen wir die 5 Minuten 43 Sekunden auf 24 Stunden hoch, so kann die ArchivistaBox Dolder pro Tag satte 2.5 Mio. Bestellungen verarbeiten — nicht schlecht, für eine Box, bei der Soft- und Hardware mit sFr. 360.– oder 300 Euro zu Buche schlagen.

Kleine Nachbemerkung: Die ArchivistaBox Dolder enthält 2 GByte RAM, wobei 1.5 GByte für das im RAM-liegende Betriebssystem (dürrfte hier nicht ganz nebensächlich sein) verwendet und letztlich dem Betriebssystem „nur“ 512 MByte RAM zur Verfügung stehen. Von wegen 64 GByte für einige hundert Rechnungen am Tag!

Ausblick, Verfügbarkeit und Preis ab sFr. 360.– (inkl. Hardware)

ArchivistaERP steht mittlerweile auf einem Stand, dass wir es an dieser Stelle uneingeschränkt empfehlen können. Kurz und gut, wir haben jeden Tag mehr Freude daran, und freuen uns, diese Freude weiterzugeben. Natürlich sind ERP-Projekte nicht ohne eine gewisse Komplexität und einen ausreichenden Implementierungsaufwand erfolgeich zu stemmen, aber nur ArchivistaERP bietet das, was ArchivistaDMS seit zehn Jahren bietet, eine Ready-to-Use-Lösung, die komplett vorkonfiguriert ausgeliefert werden kann. Und dies alles zu einem Preis ab sFr. 360.– oder 300 Euro. (ArchivistaBox Dolder). Für diesen Preis erhalten Sie andernorts kaum ein SaaS-Angebot (Software-as-a-Service), wenn wir Setup und die erste Monatsrate zusammenzählen — und dabei geben Sie bei einer SaaS-Lösung die Datenhoheit komplett ans Internet ab. Dies alles muss nicht sein.

Dank der ArchivistaBox steht ArchivistaERP bereits ab der ersten Projektstunde als System zum Arbeiten zur Verfügung. Der Standardumfang (Verkauf, Einkauf, Lager, Produktion und Buchhaltung) steht umgehend zum Arbeiten zur Verfügung. Dank dem modularen Aufbau mit Klassen kann ArchivistaERP an alle erdenklichen Anforderungen angepasst und/oder erweitert werden. Dabei entscheiden Sie alleine, wo, wann und wie ArchivistaERP im Einsatz stehen wird. Dass Sie dabei gleichzeitig ArchivistaDMS erhalten, sei hier nur nebenei erwähnt, weil es für uns selbstverständlich ist.

Und wenn Sie jetzt denken, dies ist zu diesem Preis unmöglich, dann laden wir Sie herzlich ein, sich vom Gegenteil zu überzeugen. Kurz zur Erinnerung, die ArchivistaBox (DMS) gibt es seit 2005, seit dem Jahre 2009 gibt es ArchivistaVM, hier ArchivistaERP beizupacken, dies stellt schlicht und einfach gesagt keinen zusätzlichen Aufwand und/oder Kostenfaktor dar. Vielmehr können wir dank ArchivistaERP unsere Prozesse deutlich schlanker halten, als dies mit anderen Lösungen der Fall war bzw. wäre. Vergessen Sie Serverräume, Datacenter und Clouds, eine 600 Gramm schwere lüfterlose Box mit ein paar Watt genügen, um Ihr Business zu betreiben,

ArchivistaERP 2014/IX wird ab sofort auf all unseren ArchivstaDMS-Boxen ausgeliefert. In naher Zukunft wird ArchivistaERP auch kostenfrei auf der ArchivistaCloud erscheinen. Die Weiterentwicklung von ArchiistaERP schreitet derzeit rasch voran. Es gibt noch viele Dinge, die nur darauf warten, realisiert zu werde. Die besten Ideen bei ArchviistaDMS und ArchivistaVM brachten unsere Kunden ein, und so wird es auch bei ArchivistaERP werden. Sie bringen die Anforderung, wir kümmern uns um die technische Realisierung. Wir sprechen Ihre Sprache, Outsourcing bei der Entwicklung ist uns dagegen gänzlich frend, als KMU-Firma sind wir seit nunmehr mehr als 15 Jahren für Sie, und nur für Sie da!

Was bringt mir dies als ArchivistaVM-Kunde?

In erster Linie brauchen Sie sich mit ArchivistaERP keine Gedanken zu machen, ob das nächste Release der ERP-Software nicht schon wieder neue Server und neue Software benötigt. Das mag zwar schlecht für den Verkauf unserer ArchivistaVM-Server sein, aber doch gut für uns, weil dann unsere bestehenden ArchivistaVM-Server gut und gerne für andere Projekte und viel länger verwendet werden können.

Welche Vorteile ergeben sich für mich als DMS-Kunde?

Als Kunde einer ArchivistaDMS profitieren Sie doppelt. Einmal dürfen Sie ArchivistaERP kostenfrei einsetzen, weiter aber profitieren Sie davon, dass wir z.B. beliebige Teil-Abläufe, welche die hauseigene ERP-Lösung nicht (oder nicht idealerweise) abbildet, mit Leichtigkeit mit ArchivistaERP anpacken können. Weiter wird die Entwicklung von ArchivistaDMS durch ArchivistaERP optimal befruchet, als Beispiel seien hier sämtliche Anpassungsarbeiten für den Internet-Explorer erwähnt, welche bei der Entwicklung von ArchivistaERP direkt in ArchivistaDMS Einzug halten konnten.

Zusätzlich werden wir in Zuk
unft vollautomatisierte Testläufe für ArchivistaDMS-Kunden auf jeder ArchivistaBox vorrätig haben, da wir dank ArchivistaERP über das Werkzeug verfügen. Beisiele: ArchivistaERP erstellt eine Rechnung, sendet diese an ArchivstaDMS oder ein Aufruf aus ArchivistaDMS kann mit ArchivistaERP getestet werden. Allgemeiner formuliert: ArchivistaERP stellt das mächtigste Testwerkzeug für ArchivistaDMS zur Verfügung, welches es je gab und wohl auch je geben wird. Ein Teil dieser Arbeiten an ArchivistaERP ist bereits in die Version 2014/IX von ArchivistaDMS eingeflossen. In diesem Sinne können wir mit der ArchivistaBox 2014/IX ein ausgesprochen stabiles DMS, das mit sämtlichen aktuellen Web-Browsern ausgiebig getestet wurde, zur Verfügung stellen.