Category Archives: Erweiterung

kivitendo eigene Erweiterung mit git pflegen

Auf der FrOSCon 2014 hatte ich ja hierzu einen Vortrag gehalten, s.a.:älterer Blog-Eintrag
In dem Vortrag hatte ich einige Checkboxen geändert.
Im aktuellen Kundenprojekt ist mir jetzt ein noch bessere Anwendungsfall aufgetaucht:
Individualisierter Verkaufsbericht!
Der ursprüngliche Auftraggeber braucht hier mehrere Sichtweisen je nach Bearbeitertyp.

$ cp templates/webpages/vk/search_invoice.html templates/webpages/vk/search_invoices_Karsten.html

Ein vimdiff der beiden Templates sieht wie folgt aus:

Das Template ist ja komplett unkritisch da wir dies mit

$ git add templates/webpages/vk/search_invoices_Karsten.html

hinzufügen. Die zwei Zeilen in der vk.pl können wir sicher als Weiche dann immer “krisensicher” rebasen:

Zu guter Letzt noch der Hinweis, wie ich zwei Repos auf demselben Server aktuell halte, weil ich das ja auch immer selber “nachgoogle”:

$ git remote add dev-lokal /usr/local/lib/lx-office-erp-devel
$ git fetch dev-lokal
$ git cherry-pick 805b11a

Kleine Helferlein

Eine der Stärken von kivitendo ist die Anpassbarkeit der Software an die Geschäftsprozesse der Unternehmens. Aber auch mit kleinen Detailverbesserungen kann man die Zufriedenheit der Benutzer, die den ganzen Tag mit kivitendo arbeiten, erhöhen. In diesem Fall war gewünscht, dass sich die Größe der Bemerkungsfelder in den Belegmasken anpassen lässt, und zwar dauerhaft und pro Benutzer individuell.

Da die meisten Browser es heute schon zulassen, Textfelder mit der Maus auf eine andere Größe zu ziehen, wäre es eher keine große Erleichterung, die gewünschte Größe z.B. nur in den Benutzereinstellungen eintragen zu können. Vielmehr ist es intuitiver, die Felder mit der Maus anzupassen und kivitendo “merkt” sich die neue Größe dann.

Da wir ohnehin schon einiges aus der JavaScript-Bibliothek jQuery verwenden, habe ich dort mal nach etwas passendem gesucht. Gefunden habe ich jQuery-UI resizable. Also habe die Bemerkungsfelder “resizable” gemacht und dafür gesorgt, dass die Maße  nach einer Änderung mit der Maus per Ajax in die Datenbank in die Tabelle mit den Benutzereinstellungen geschrieben werden.

Größenänderung des Bemerkungsfeldes merken

Größenänderung des Bemerkungsfeldes merken

Damit kann sich der Benutzer die Bemerkungsfelder einmal auf die gewünschte Größe ziehen, und danach erscheinen sie in allen Masken (von Angebot bis Rechnung, Ein- und Verkauf) in der konfigurierten Größe.

EDIFACT Erweiterung Handel

Exemplarisch mal ein Beispiel für ein sehr sinnvolles Einsatzfeld, nämlich immer dann, wenn die Skalierung entscheidend ist und der Standard nicht mehr ausreicht, ist der Einsatz von OpenSource Software gekoppelt mit einem flexiblen Dienstleister Gold wert …
In diesem Fall war die Anforderung, dass innerhalb eines Rahmenvertrags mit dem Kunden die Datenübermittlung per EDI erfolgt. Relativ zeitnah stellte sich heraus, dass die Datenmenge den Einsatz von dem sogenannten WebEDI, sprich die Aufträge werden per Webinterface händisch abgeholt, nicht sinnvoll ist.
Ferner sollten dann auch die Ausgangsrechnungen direkt elektronisch in das System des Kunden übertragen werden, sodass eine komplette elektronische Abbildung des Prozess sinnvoll erschien:

Soweit so gut, jetzt wird die automatische Übertragung der Aufträge noch elektronisch per E-Mail protokolliert und damit ist diese Anforderung soweit erfüllt.

Das ist theoretisch alles nichts Neues, aber je einfacher man den Prozess gestaltet und implementiert, desto besser funktioniert es dann auch in der Praxis, insbesondere wenn der Handlungsbedarf auf Grundlage der Datenmenge sinnvoll ist. Das klingt zwar lustig, aber wenn der Kunde von alleine darauf kommt, dass hier etwas zu tun ist und wir ihm dabei unterstützen können ist der Prozesserfolg dann umso sicherer ;-).

Das ist ferner auch ein sehr schönes Beispiel, wie man mit einfachen OpenSource “Basis-Komponenten” und “etwas” kivi-Perl-Kleber einen Unternehmensprozess abbilden und verbessern kann. Genau an dieser Stelle, setzt ja unsere Geschäftsidee an und dies ist ja genau die Nische die sinnvoll ist, s.a.

Grafiken in kivitendo

Es gibt in kivitendo bisher keine Möglichkeit, Auswertungen mit Grafiken darzustellen. Hierzu muß man sich die Berichte als CSV-Export exportieren und die Grafiken selber z.B. in einer Tabellenkalkulation aufbereiten. In kivitendo wird allerdings immer mehr in jQuery umgesetzt, und für jQuery gibt es mittlerweile ein paar sehr schöne Grafikbibliotheken, z.B. jqPlot. Zusammen mit einem Controller in kivitendo, wo man sich die benötigten Daten per JSON dynamisch holen kann, ist es nun relativ einfach möglich, spezielle grafische Berichte zu erstellen. Als ein Beispiel aus der Entwicklungsabteilung wurde eine GuV als Jahresbericht dargestellt, mit der Summe der Erträge und Aufwendungen für die jeweiligen Monate, sowie dem Verlauf des resultierenden Jahresgewinns. So kann man schön auf einen Blick die Entwicklung von Einnahmen und Ausgaben innerhalb eines Jahres verfolgen.

W

XV

Belegnummernkreise auffüllen

Weil mich am Samstag die internen Code-Qualität von kivitendo begeistert hat, hab ich noch das Bedürfnis dieses auch mal ins Internet zu verkünden …

Kundenanforderung: Wir arbeiten mit der Löschen-Funktion in allen Verkaufsbereichen und mögen keine “Lücken” im Nummernkreisen. Präventiv haben wir uns hier schon den Kopf zerbrochen, wie man diese Anforderung umsetzen kann und das auch noch möglichst “allgemeingültig”.
Pragmatischerweise setz ich den Nummernkreis einfach wieder auf den Vorgänger und dann wird ja die Lücke bei der nächsten Nummernvergabe wieder aufgefüllt.
Ich hab mir einmal den Nummernkreis des Kunden angeschaut und der ist soweit “gutartig”, sprich wir haben keine Präfix (A2014-$IRGENDWAS), also kann ich hier unkritisch eine Projekterweiterung durchführen.

Jetzt ist aber hier die Programmierung mittlerweile schon viel intelligenter und es wird überprüft, ob es sich um eine Nummer die schon in Benutzung ist handelt UND: Ob es eine Prefix gibt!

$ perldoc SL/PrefixedNumber.pm

Ich bin begeistert!
Im Kern der Software stecken so manche kleine bis größere Juwelen drin.

Insofern brauch ich in diese Modul nur noch für meinen Anwendungsfall erweitern und die Kunden-Erweiterung ist durch …

kivitendo Modus Schweiz und andere “Länder”

Weil die Frage schon öfters mal auftaucht und teilweise kontrovers diskutiert wird:

kivitendo ist erstmal eine frei konfigurierbare doppelte Buchhaltung
mit der Möglichkeiten einen Kontorahmen von Grund auf aufzubauen.
Insofern kann man diesen flexibel an Landesbedürfnisse anpassen.

Für die Schweiz gibt es auch einen eigenen Kontenrahmen, der 
allerdings nur in Anlehnung eines "Käfer"-Kontenrahmens erstellt wurde
und in diesem müssen auch noch nachträgliche Einstellungen gemacht 
werden (bspw. Steuersätze anpassen).

Falls man kivitendo als gleichwertigen Ersatz, nur mit dem
Kostenvorteil OpenSource evaluiert, macht dies in der Regel keinen 
Sinn,da ist man bei einem FiBu-Produkte von der Massenstange (sage 
oder lexware) besser
aufgehoben.
Wir nutzen LexWare selber um die DATEV-konformität zu überprüfen.

 Falls man Spass und Freude daran hat, sich selber in die doppelte
Buchführung reinzufuchsen und einen Kontenrahmen selber zu gestalten, 
dann ist man hier genau richtig.

Ansätze für die Schweiz gibt es beispielsweise auch hier.

Falls man eine größere und komplexere Struktur abbilden möchte 
(Betrieb ab 10 Mitarbeiter), würden wir uns dann als Implementierungs-
partner selber empfehlen, da wir kivitendo für unsere Kunden in
verschiedenen Ländern im Einsatz haben, allerdings ist der
Stammsitz immer in Deutschland.
Hier kann man sich am Besten über die aktuellen Referenzen 
ein Bild machen, ob man in diese Kategorie fällt oder nicht.
Screenshot für Auswahl Massenmailversand

Massenmailversand in kivitendo

Ich mußte neulich ein schönes Feature aus einem Kundenprojekt anpassen, den Massenmailversand in kivitendo. Bei dem Kunden werden am Monatsanfang viele Rechnungen automatisch generiert, und diese werden teilweise per E-Mail verschickt (seit dem Steuervereinfachungsgesetz 2011 ist das auch ohne digitale Signatur möglich). Man kann in den Stammdaten konfigurieren, welche Kunden die Rechnung per E-Mail erhalten, und sofern auch eine E-Mail-Adresse konfiguriert ist erscheint vor jeder Rechnung in der Liste eine Checkbox. Somit kann man dann auf Knopfdruck alle ausgewählten Rechnungen mit einem vorkonfigurierten E-Mail-Text verschicken. Wurde die Rechnung bei der Erstellung schon in die Warteschlange gedruckt muß das PDF auch nicht erneut generiert werden, sondern kann direkt verschickt werden.

Screenshot für Auswahl Massenmailversand