Offene Forderungen importieren

Aus dem aktuellen kivi-Projekt hat sich die Anforderung ergeben, die Funktion “Kontoauszug verbuchen” direkt von Anfang an zu verwenden.

Hieraus enstand dann die Herausforderung, wie man mit Zahlungseingängen aus dem Vorjahr umgeht.

Hintergrund: Das alte ERP-System (SAP by design) wurde durch kivitendo abgelöst und man ist an einer schnellen Abschaltung interessiert, allein um den Vertrag bei SAP möglichst zeitnah zu kündigen.

SAP by design bietet eine OPOS-Liste mit folgender Struktur an:
offene-forderungen-opos-2015

Dabei kam die Idee auf, dass es doch besser ist, die Forderungen einzeln im System einzuspielen, damit man hier eine bessere Rückverfolgbarkeit der offenen Posten hat.

Ich habe die Gelegenheit genutzt, um den Prototyp Debitorenimport über CSV hierfür zu testen.

Der Debitorenimport kann alle kivitendo-Buchungsfälle abbilden. Allerdings muss hierfür der kivitendo-Administrator etwas kivitendo-/Buchhaltungs-Fachwissen mitbringen.
kivitendo teilt Transaktionen in Haupt- und Nebenbuch ein. Im Nebenbuch stehen die Metadaten des Belegs, die nicht direkt zur FiBu gehören und im Hauptbuch sind Soll und Haben sowie die Steuer ausgewiesen.

Für meinen Anwendungsfall brauche ich nur Netto-Werte, da SAP die Steuer nicht explizit bei der OPOS ausweist. Ferner besteht bei dieser kivitendo-Installation Abteilungspflicht und ich habe mir zusätzlich überlegt, dass man für diese Forderungen der Übersichtlichkeit halber ein eigenes Ertrags- und Forderungenkonto verwendet.

Somit sieht meine Debitorenbuchung an der Oberfläche wie folgt aus:
donut-spain

Die benötigte Struktur des Imports besteht aus einer Zeile mit Rechnungs-Metadaten und aus 2 bis 4 weiteren Zeilen (Sollkonto, Habenkonto, diverse Steuersätze):

Zeile 1: datatype,amount,invnumber,customernumber,customer,transdate,duedate,closed,netamount,invoice,department,employee_id

Zeile 2: datatype,amount,invnumber,chart_id,taxkey,transdate

Die chart_id findet man über die URL des Kontos unter System → Konten anzeigen heraus.

Diese Rechnungen sind geschlossen (closed == true), da sie wahrscheinlich schon vollständig geliefert und ferner keine Verkaufsrechnungen (invoice == false) sind.
Alle anderen Information sind in der OPOS-Liste enthalten, die ich per Skript einfach neu zusammenparse.

Somit ergibt sich für diese Debitorenbuchung folgender Datensatz:

Zeile 1:Rechnung,"1.220,00",RG508216,1215600,"Donut Spain S.A.",23.10.2014,22.11.2014,t,"1.220,00",f,"OPOS 2015",979

Zeile 2:AccTransaction,”-1.220,00″,RG508216,12533,0,23.10.2014

Zeile 3:AccTransaction,”1.220,00″,RG508216,12535,0,23.10.2014

Die einzelnen Zeilen werden etwas schlecht formatiert, deshalb hier nochmal als Screenshot:donuts sa

Inventur in kivitendo

Die Anpassung des Warenbestandes in kivitendo nach der Inventur ist über den CSV-Import sehr einfach. Unter System → CSV-Import → Lagerbewegungen/-bestände kann man hierfür eine Liste der frisch gezählten Bestände hochladen. Ein CSV-Liste aller zu zählende Waren exportiert man sich am besten unter Stammdaten → Berichte → Waren.

In diesem Beispiel gibt es die beiden Artikel “Heftzwecken” und “Büroklammern” mit den Artikelnummern 5 und 4, wobei hier nur die Artikelnummer wichtig ist, die Beschreibung wird ignoriert. Die Artikel liegen im Lager “lager1” auf Lagerplatz “Lagerplatz1”, die Inventur fand am 29.12.2015 statt und es wurden 53 Heftzwecken und 33 Büroklammern gezählt, was man jeweils als target_qty (Zielmenge) einträgt. Die Struktur der CSV-Datei sieht wie folgt aus:

partnumber,description,target_qty,shippingdate,warehouse,bin
5,Heftzwecken,53,29.12.2015,lager1,Lagerplatz1
4,Büroklammern,33,29.12.2015,lager1,Lagerplatz1

Beim Import kann man in der Vorschau sehen, was passieren wird:

CSV Import Einstellungen für Inventur

CSV Import Einstellungen für Inventur

Anhand der derzeitigen Menge laut Lagerbestand für das jeweilige Lager bestimmt der Importer, ob Artikel im Rahmen der Inventur eingelagert werden müssen, weil mehr als erwartet da sind, oder ob Artikel ausgelagert werden müssen, weil sich weniger auf Lager befinden. In dem Fall sieht man, daß kivitendo bei beiden Artikeln eine Mengen-Änderung von -7 Artikeln durchführen wird, um auf die vorgegebene Zielmenge zu kommen, da die Lagerbestände zu diesem Zeitpunkt 60 und 40 waren.

Damit der Standardkommentar angezeigt wird, muss man noch “Bei allen Lagerbewegungen ohne Kommentar setzen” einstellen. Der Kommentar ist derzeit auch die einzige Möglichkeit, die Lagerbewegung als Inventur- statt als einfache Korrektur zu markieren.

lager-inventur-umbuchungen

Zu beachten: bis Version 3.3 wurde in den Berichten als Datum immer das Erstellungsdatum verwendet, nicht das Lagerdatum – deshalb kann es hier zu Abweichungen kommen, wenn das Erstellungsdatum vom Lagerdatum abweicht.

 

DATEV-Export maximal nutzen

Das Standard-DATEV-Format bietet die Möglichkeit, zwei Kostenstellen mitzuexportieren.

Bisher wurde dieses Feld nicht befüllt, der DATEV-Standard sieht hier auch nur achstellige Nummern vor. Man muss also etwas überlegen, was man hier übergeben könnte.

Im aktuellen Kundenprojekt buchen zwei Mandanten in derselben kivi. Wir haben beim Steuerberater nachgefragt, ob er dies mit einer Trennung der Mandanten durch Buchungspflicht-Abteilungen und einem entsprechenden Filter beim Export abbilden kann.

Hier die Erweiterung des Exports aus Sicht des DATEV-Anwenders.
Die Kostenstelle ist in diesem Fall auf zwei Ebenen, da der Export nach dem ersten Namen gefiltert wird:

Struktur der Abteilungen:

  • wildwuchs ausbau → id 299
  • wildwuchs standard → id 300
  • wildwuchs internes → id 320
  • fuchswild ausbau → id 321
  • fuchswild standard → id 322
  • fuchswild internes → id 324

Filter für DATEV:
abteilungsfilter-datev

In Kostenstelle2 übergebe ich die Datenbank-ID der Abteilung. Somit ist diese eindeutig erfasst und der Steuerberater kann dieselben Abteilungsfilter abbilden (oder sogar noch bessere Auswertungen fahren), als in kivitendo.
Seine Sicht ist dann etwa so:

datev-mit-kostenstellen

Stornorechnungen drucken

Für den Fall, dass z.B. das Finanzamt die Stornorechnungen sehen möchte, muss man diese auch ausdrucken können. Hierfür gibt es keine eigene Druckvorlage. Für kivitendo handelt es sich erstmal um eine normale Rechnung, in der aber die Mengen und damit auch die Preise negativ sind.

Stornorechnungen erhalten in kivitendo standardmäßig den Zusatz “Storno zu” vor der ursprünglichen Rechnungsnummer. Die meisten Druckvorlagen setzen das Wort Rechnung in groß und fett und dahinter einfach die Rechnungsnummer:

Rechnung 212

In der gedruckten Stornorechnung wird daraus dann:

Rechnung Storno zu 212

Es gibt aber auch Fälle, in denen einfach nur das Wort “Rechnung” in groß und fett erscheint, und die Rechnungsnummer dann in einem anderen Block steht, zusammen mit Rechnungsdatum, Bearbeiter, eventuell Auftragsnummer etc. Dass es sich um eine Stornorechnung handelt, ist auf den ersten Blick also nicht ersichtilich.

Wie so oft in solchen Fällen, kann man sich mit den Druckvorlagen helfen. In der Dokumentation zu den Druckvorlagen wird direkt am Anfang beschrieben, wie man sich auch die nicht dokumentierten Druckvariablen anzeigen lassen kann. In diesem Fall sind das nämlich die Variablen storno und storno_id. Sowohl die Stornorechnung als auch die stornierte Rechnung haben eine Variable storno mit Wert 1. In der Datenbank, aus der die Variablen kommen, hat die stornierte Rechnung zusätzlich noch einen Eintrag für storno_id, dadurch kann man diese auseinanderhalten. Im Template wird storno_id aber nicht aus der Datenbank ausgelesen und ist daher immer leer, kann also ohne Programmupdate nicht verwendet werden. Helfen kann man sich aber trotzdem, indem man den Umstand nutzt, dass in der Rechnungsnummer das Wort “Storno” vorkommt. Eine mögliche Variante wäre also:

\textbf{<%if storno%><%if invnumber =~ “Storno”%>Storno <%end if%><%end if%> Rechnung}

Für den Fall, dass die Variable storno gesetzt ist und das Wort “Storno” in der Rechnungsnummer vorkommt, wird also das Wort “Storno” innerhalb des fetten Bereichs noch vor das Wort “Rechnung” gesetzt.

 

 

 

 

Selbstheilende kivi (Selftests verwenden)

Durch das sehr gute neue E-Mail-Journal sind mir jetzt auch die automatischen SelfTests ins Auge gefallen.
Ursprünglich sind diese Tests als QS für Voll-Fibu-kivitendo Benutzer entwickelt worden, also solche Betriebe, die auch die Bilanz mit kivitendo selbst erstellen und zeichnen.
Allerdings lassen sich auch hiermit sehr gut Fehleingaben oder andere Problemchen entdecken, bevor sie sich symptomatisch über ein ganzes Geschäftsjahr hinziehen.
Standardmässig werden die SelfTests täglich ausgeführt (insofern konfiguriert) und beinhalten aktuell 17 Tests.

Die Tests geben die Ergebnisse zwar auf Englisch und leicht kryptisch aus, aber für ein geübtes Auge ist dies sicherlich verwertbar, bspw.:

Hier fällt der Test 12 negativ auf, da ar (accounts receivable) überbezahlt ist. Der Test gibt auch noch eine Rechnungsnummer als Hinweis mit aus. Mit dieser Info kann man dann simpel den Zahlungseingang korrigieren, der zwar korrekt ist, in diesem Fall aber der falschen Rechnung (allerdings dem richtigen Kunden) zugeordnet wurde:

Voraussetzung für die Selftests ist, dass es einen Login mit einer gültigen E-Mail-Adresse gibt.
Ferner muss der task_server für diesen Mandanten eingeschaltet sein.
Dann wird man mit folgender Einstellung nur im Fehlerfall benachrichtigt:
selftests-konfigurieren

kivitendo mit E-Mail-Journal

Das hat mich heute sehr gefreut, diesen Commit auf der Projektliste zu sehen:

commit 72f19f83681b222d1606d75c90ceedc43bb545f9
Author: Moritz Bunkus <m.bunkus@linet-services.de>
Date: Thu Sep 24 11:42:15 2015 +0200

E-Mail-Journal: Journal anzeigen, Eintrag anzeigen, Anhänge herunterladen

In unseren Projekten empfehlen wir immer möglichst viel über die E-Mail-Funktion des Systems zu versenden, da dies dann im internen Bemerkungsfeld der Belege entsprechend mitprotokolliert wird. Blöderweise kann man hierüber keine direkte Auswertung sehen.
Das ändert sich ab heute in der devel-Version von kivitendo und in einigen Monaten dann im nächsten Release.

Wenn jetzt E-Mails verschickt werden, werden zusätzlich noch der Status (erfolgreich versendet) und der Zeitpunkt in einem extra Bericht mitprotokolliert:

In der Detailansicht der Mail wird dann auch nochmal die gesamte E-Mail inkl. Dokumentanhang dargestellt. Somit ist dies zusätzlich zu der WebDAV-Archivierung der Belege eine richtig sinnvolle Archivfunktion, um wirklich nachzuvollziehen, was an den Empfänger in welchen Zeitraum geschickt wurde. Ferner ist dann auch die Darstellung der Mail etwas klarer, weil hier alle E-Mail-Teile nochmal angezeigt werden:

Da zwei sehr schöne Features in der aktuellen Devel-Version vorhanden sind und außer wirklichen Bugfixes seit dem Release nichts weiter passiert ist, lohnt sich vielleicht schon jetzt ein Upgrade auf die heutige Version.

Administratoren, die aus dem git heraus installiert haben und lokale Änderungen im eigenen Branch verwalten (s.a. Vortragsfolien git und kivitendo bzw. Video) können heute bedenkenlos (insofern 3.3 im Einsatz):


$ git checkout master
$ git pull
$ git checkout mein_eigener_branch
$ git rebase master
$ service apache2 restart

durchführen …

Schnellwachsende Südfrüchte – Massenkonvertieren von Lieferscheinen nach Rechnungen

Kaum ist die 3.3 zwei Wochen in Umlauf, geht es mit der Entwicklerversion in Windeseile weiter.
Aktuell haben wir die sehr gute Situation, dass einige Shopschnittstellen mit hohem Durchsatz an kivitendo angebunden werden.
Für diese Kundengruppe geht es vor allem um eins:

Geschwindigkeit und Einfachheit!

kivitendo muss hier möglichst mit einem Klick sehr viel lästige Kleinarbeit erledigen.
Aus einem dieser Projekte stammt die gerade eingefügte Erweiterung (git commit 4edb3a6f7d23140ec7ca67).
Der Prozess ist wie folgt: Waren werden gepackt und mit Lieferschein und Rechnung verschickt.
Durch eine geschickte Kombination von Hintergrund-Job und Objekt-Konvertierung kommen wir hier (auf unserem Testsystem) auf einen Durchsatz von 440 Lieferscheinen konvertiert zu Rechnungen und an den Netzwerkdrucker übergeben in 7 Minuten. Innerhalb einer Sekunde wird ein Lieferschein gewandelt und zum Drucker geschickt.

Trotzdem hat kivitendo noch Zeit, den aktuellen Status des Prozesses an den Nutzer zu melden und paralleles Weiterarbeiten ist nicht nur möglich, sondern erwünscht ;-).

Der nächste Optimierungs-Schritt wäre hier dann beim Durchsatz, indem man den Ausdruck parallelisiert, aber da warten wir lieber, bis ein begeisterter kivi-Fan in diese Problem-Dimension kommt.

Die obigen Ergebnisse kann man prinzipiell mit einer Server-Client-Lösung im Web (neudeutsch: Cloud) erzielen, allerdings knickt die Performanz auch bei der 10-fachen Menge (4400 Lieferscheine) nicht wesentlich ein und liefert annähernd konstant denselben Durchsatz-Wert (4400 Lieferscheine in kleiner 2h)
Das Druckdokument hat eine Größe von 43 MB mit mehr als 5000 Seiten. In der Kette ist  der Speicher des Netzwerkdruckers dann das nächste Nadelöhr, das kann man aber kivi-seitig auch noch optimieren, indem man einen maximalen Größenwert definiert und die Übergabe an den Drucker bei Erreichen dieses Wertes portioniert.

Ich bin zufrieden ;-).

FrOSCon 2015

Am vergangenen Wochenende waren wir mit Stand und Vorträgen wieder auf der FrOSCon vertreten. Zu ihrem 10-jährigen Jubiläum hatte das FrOSCon-Team auch ein paar prominente Speaker geladen, z.B. Andrew S. Tanenbaum.

Am kivitendo-Stand haben wir am Samstag und Sonntag das Projekt vertreten und dabei reichlich Fragen zu kivitendo beantwortet.
Insgesamt haben wir dieses Jahr drei Vorträge gehalten:

Im ersten Vortrag erzählt Jan von unseren Erfahrungen über die Jahre mit dem Hosting eines eigenen Mailservers:

Am Sonntag habe ich einen Vortrag über Open Source Online Banking gehalten, in dem ich gegen Ende auch auf die Bankerweiterung in kivitendo eingehe:

Und schließlich hat Jan am Sonntag auch noch relativ spontan einen Vortrag über ein aktuelles Migrationsprojekt von SAP zu kivitendo erzählt, nachdem am Donnerstag kurzfristig ein Programmslot frei wurde:

Ich habe mir diesmal zwar keinen Vortrag live angeschaut, aber ein paar Empfehlungen erhalten, die ich mir anschließend als Video angeschaut habe. Ich möchte gerne zwei Vorträge vorstellen, die technisch nicht allzu tief gehen, dafür aber gut vorgetragen und sehr anschaulich und verständlich sind:

In ihrem Vortrag “Rewriting 12 year old code” ist eine der Thesen von Anna Filina, dass ein kompletter Rewrite von alter Software meist fehlschlägt und man besser Stück für Stück Komponenten austauschen sollte.

Das entspricht ja auch dem Konzept von kivitendo – alten Code nach und nach abzulösen und bei der Gelegenheit auch Tests einzuführen. Mit dem Erscheinen von sql-ledger in 1998 blickt kivitendo immerhin auch auf eine Code-Geschichte von mittlerweile 17 Jahren zurück. Und seit dem Erscheinen von lx-office in 2003 wurde immer darauf geachtet, dass man auch von alten Versionen noch auf ein aktuelles kivitendo updaten kann, sodass viele Firmen schon seit vielen Jahren ohne Bruch mit kivitendo arbeiten können.

In einem weiteren sehr schönen Vortrag erklärt Stefan Wintermeyer sehr anschaulich die Grundlagen und prinzipiellen Einschränkungen, die man bei der Optimierung von Webseiten im Hinblick auf Geschwindigkeit berücksichtigen muß:

https://media.ccc.de/browse/conferences/froscon/2015/froscon2015-1536-webperformance_autobahn_oder_fussgangerzone.html

Bankerweiterung in kivitendo 3.3

Das größte neue Feature in kivitendo 3.3 ist die Bankerweiterung, bei der man Kontoauszüge aus einer Bankingsoftware importieren kann, um damit die offenen Posten schnell zu verbuchen. Dabei werden die Zahlungen in der Datenbank mit den entsprechenden Rechnungen verknüpft, sodass diese Informationen auch beim verbesserten Kontenabgleich genutzt werden können. Die Bearbeitung von vielen Zahlungen in kivitendo wird hiermit wesentlich effizienter und die Übersicht beim Zahlungsverkehr erhöht.

Bei den folgenden Firmen, die die Finanzierung dieses Projekts ermöglicht haben, möchte ich mich bedanken:

opendynamic GmbH & Co. KG
c.a.p.e. IT GmbH
CeTaQ GmbH
Kaspers & Wessendorf Unternehmensberater Partnerschaftsgesellschaft
Werner Hahn/V-Solution
Servicelabel GbR

Agenda kivitendo konferenz in Bonn am 05.11.2025

9:00 h – 9:10 h Begrüßung

9:10 h – 09:40 h kivitendo bei der GNS (Gesellschaft für numerische Simulation)

Das vielseitige kivitendo spricht bei der GNS EDI mit Skoda, OAuth2 mit
Microsoft und REST mit dem Ticketsystem JIRA.

Wie das dann alles harmonisch im Gesamtablauf einfügt stellt unser
Projektansprechpartner Christoph Kaulich von der GNS vor.

9:40 h – 10:00 h Technische Schnittstellen im Standard aus dem GNS Projekt

Referent Niklas Schmidt

10:00 h – 11:00 h Technische Schulden in der Softwareentwicklung

Die Entwicklung von Software basiert zu einem großen Teil auf der Nutzung externer Komponenten. Diese Komponenten bringen Risiken verschiedener Art in das eigene Produkt ein. Wir besprechen die Ausgangssituation, die Art der Risiken, deren Sichtbarmachung und die Bewertung. Wir analysieren beispielhaft den Quelltext von Kivitendo und erläutern dabei die Vorgehensweise.

Referent: Jörg Meyer
Leiter der Internen Revision der internationalen Holtzbrinck Publishing Group mit den Geschäftsfeldern Literatur, Wissenschaft und Software. Zuvor zwölf Jahre Leiter des Forensic Technology-Teams einer großen Wirtschaftsprüfungsgesellschaft. Autor und Co-Autor von Büchern zum Thema, Referent von Vorträgen.

11:00 h – 11:20 h Kaffeepause

11:20 h – 12:20 h KIX meets kivitendo – Ein Jahr Integration, Automatisierung und echte Prozessverbesserung

Letztes Jahr haben wir vorgestellt, wie kivitendo bei der KIX Service Software GmbH vieles einfacher macht und für Begeisterung gesorgt hat. Seitdem ist wieder einiges passiert: Durch die Integration mit KIX haben wir weitere Automatismen geschaffen, Prozesse verschlankt und ganz nebenbei auch noch Zeit gespart.

In diesem Vortrag zeigen wir, wie aus einzelnen Schnittstellen eine durchgängige Prozesskette wurde, welche Herausforderungen wir dabei gelöst haben und welche Use Cases heute ganz selbstverständlich im Alltag laufen.

Live demonstrieren wir, wie bei uns aus einer Anfrage ein Auftrag und schließlich eine Rechnung wird, wie wir Verträge effizient verwalten und wie der automatische Versand von AV-Verträgen uns jede Menge Zeit spart.

Freut euch auf ehrliche Einblicke und echte Beispiele aus dem Alltag – natürlich mit Spaßfaktor.

Referenten: Rico Barth (Geschäftsführung), Yvonne Kölling (Projektleitung Bereich kivitendo)

12:20 h – 13:15 h kivitendo bei der Landmaschinen-Werksvertretungen Kranich GmbH

Unser kivitendo Partner Werner Hahn berichtet gemeinsam mit dem Geschäftsführer Lars Härtel von der Kranich GmbH über Herausforderungen und die Prozessgestaltung bei der Kranich GmbH.

Referenten: Werner Hahn (V-Solution), Lars Härtel (Kranich GmbH)

13:15 h – 14:10 h Mittagessen

14:10 h – 14:25 h kivis Dorfkindquiz mit Jan, als Nachmittagsmotivator ..

Lasst Euch Überraschung, eine Idee mitgenommen von der diesjährigen KIXConf …

14:30 h – 15:30 h Bunte Vielfalt im Einzelhandel kombiniert kivis neuer TSE-konformer Kasse

Fortsetzung folgt jetzt!

Nach dem dynamischen Vortrag vom letzten und dem Webinar berichtet Max, diesmal mit Unterstützung von Geoffrey vom aktuellen Projektstand.

Zur Erinnerung:

Im letzten Jahr haben wir uns schon mit den Varianten von Artikeln und der EDI-Schnittstelle des BTE Bundesverband des Deutschen Textil-, Schuh- und Lederwareneinzelhandels e.V. beschäftigt und erste Erfolge gezeigt. Nun haben wir in kivitendo eine Kasse inklusive den aktuellen regulatorischen Vorgaben implementiert.

In unserem aktuellen Vortrag zeigen wir, wie fortgeschritten die Implementierung an der Oberfläche schon ist und lösen die Akronyme TSE und DSFinVK für euch auf und zeigen die weiteren Zusammenhänge in kivitendo dazu.

Referent: Max Wessendorf (kivi Partner), Geoffrey Richardson (Mitbegründer der kivitendo GmbH, jetzt Geschäftsführer der kivitec GmbH)

15:30 h – 16:00 h Kaffeepause

16:00 h – 17:00 h last not least: Lightning Talks

  • Der neue Druckvorlagensatz Mersiha
  • Status ZUGFeRD
  • Die kivi Telefonanlage

Referenten Jan, Niklas

aktuelle Entwicklung im Bereich E-Rechnung

18:00 h Evaluierung des lokalen Brauhaus Bönnsch

Veranstaltungsort ist das Collegium Leonium, welches fußnah vom Hauptbahnhof entfernt ist. Ferner gibt es die Möglichkeit dort direkt zu übernachten.

Anmeldungen bitte per E-Mail an: anmeldung@kivitendo.de