Category Archives: Uncategorized

Kopie von DSC_0139

kivitendo zieht aufs Spielfeld

kreisliga (3)Die kivi-Kiwi hat es jetzt in den Sport verschlagen: Seit kurzem ist kivitendo Trikot-Sponsor der Volleyball-Damenmannschaften des SSF Fortuna Bonn in der Bezirksklasse und der Kreisliga. Und die ersten Tage im kivi-Trikot waren erfolgreich – die Bezirksklasse-Mannschaft packte den Aufstieg in die Bezirksliga, während die Kreisliga-Spielerinnen die nächste Saison in der höheren Bezirksklasse antreten dürfen.

Dass die Mädels in blau und orange auftreten, ist für uns noch etwas ungewohnt – aber grüner Schwung kommt ja jetzt mit kivitendo auf’s Spielfeld. Toi toi toi für die zukünftigen Spielzeiten!

bezirksklasse (1)

Bezirklsklasse-Team

kreisliga (4)

Kreisliga-Team

 

 

Demo-Mandant auf die Version 3.4.0 aktualisiert

Unsere offizielle kivitendo-Demo, die Steigmann Werft unter https://www.kivitendo.de, habe ich eben auf die Version 3.4.0 aktualisiert. Da in den Testsystemen schon lange alles aktualisiert war und ich die UPGRADE-Datei nicht gelesen habe, ist mir das natürlich direkt um die Ohren geflogen.

Was ich unter Ubuntu für unsere Installation nach dem git pull noch gemacht habe:

  • perl scripts/installation_check.pl
  • apt-get install libalgorithm-checkdigits-perl
  • in der Konfigurationsdatei den [task_server] Abschnitt auskommentiert
  • den Webserver neu gestartet
  • im Admin-Bereich angemeldet: /controller.pl?action=Admin/login
  • als Benutzer angemeldet

Alle Updates liefen mit unserem Testdatenbestand flott durch, damit steht die 3.4.0 jetzt offiziell online zum Ausprobieren bereit.

Buchungsgruppen optimieren

In der Regel fällt erst im laufenden Projekt auf, dass Konten anders zugeordnet gebucht werden sollen.

Unter der Haube, sprich in der Datenbank, lässt sich dies einfach ändern. Allerdings gibt es dann Konflikte, wenn man Gutschriften/Stornos zu Belegen generieren möchte, die auf andere Konten gebucht sind.

Was idiotensicher geht, ist das Ändern der Buchungsgruppe und nochmals bei allen Belegen auf Buchen klicken. Oder man wartet bis zum Geschäftsjahreswechsel mit der Buchungsgruppen-Änderung.

Anbei der SQL-Befehl, um bspw. alle Standard-19 %-Konten anzuzeigen:

select zon.description, chart.accno as income, c.accno as expense from taxzone_charts left join tax_zones zon on (zon.id=taxzone_id) left join chart on (chart.id = income_accno_id) left join chart c on (c.id = expense_accno_id) where buchungsgruppen_id=(select id from buchungsgruppen where description ='Standard 19%');

Jetzt braucht man “nur” die IDs der Konten anzupassen. Am besten unterteilt man Schritt für Schritt noch Aufwands- und Erfolgskonten.

select taxzone_charts.id, zon.description, c.accno as expense,expense_accno_id from taxzone_charts left join tax_zones zon on (zon.id=taxzone_id) left join chart on (chart.id = income_accno_id) left join chart c on (c.id = expense_accno_id) where buchungsgruppen_id=(select id from buchungsgruppen where description ='Standard 19%');

Und das Update:
update taxzone_charts set expense_accno_id=(select id from chart where accno='520000') where id=7;

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

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