Entwicklertagebuch JTL-Toolbox – Programmieren mit Visual Basic Teil 3

Egon – wir brauchen einen Plan. Nun bin ich nicht die Olsen-Bande, aber einen Plan sollte ich schon haben. Irgendwie so planlos mal drauf los zu coden (ersetze das „c“ durch „k“ und es kommt Mist heraus) macht ja keinen Sinn. Also brauchen wir einen Prozess oder Programmablaufplan, an dem wir uns orientieren können und der uns als roter Faden dient.

prozessdebitorvergabe

Schaubild verstanden? – Nein, dann erkläre ich, was ich da vor habe. Als Kaufmann kennen wir das Konto Forderungen aus Lieferungen und Leistungen. Da laufen quasi alle Umsätze auf, die wir dem Kunden schon in Rechnung gestellt haben, diese aber noch nicht bezahlt haben. Wir geben diesen Kunden also einen Kredit und sind aus deren Sicht ein Kreditor. Aus unserer Sicht sind das Schuldner und Schulden heißen auf lateinisch debere und somit sind das für uns Debitoren. Nun Arbeiten wir in der Buchhaltung mit Konten und Kontennummern und Forderungen werden in SKR03 im Konto 1400 und im SKR04 im Konto 1200 ausgewiesen. Da sehen wir aber nur wie hoch unsere Forderungen gesamt sind. Damit wir aber auch sehen können, wie viel uns ein Kunde schuldet, gibt es für jeden Schuldner ein Unterkonto und die fangen in der Regel mit 10000 an. Das sind dann unsere Debitorennummern, die wir jedem Kunden vergeben.

Nicht jeder Kunde ist ein Debitor (Schuldner) und wenn ich ausschließlich meine Ware per Vorkasse vertreibe, werde ich das auch nicht brauchen. Aber wenn ich meinen Kunden die Möglichkeit gebe auf Rechnung zu kaufen und ihnen einen Zahlungsziel von 7 Tagen einräume, dann sollte ich meinen Kunden eine Debitorennummer zuweisen und die muss nicht zwingend die Kundennummer sein. In der JTL-Wawi haben wir dafür das Feld Debitorennr. (hier rot umrandet).

2016-11-17-12_14_49-kundendetails

Nach welcher Maßgabe die Wawi die Debitorennummern vergibt, bleibt ein Rätsel. Auch kann ich dafür keinen Nummernkreis anlegen. Und die Vergabe der Debitorennummer nach dem ersten Buchstaben im Nachnamen halte ich auch für wenig sinnvoll. Und ich will auch nicht, das der gesamte Prozess direkt in der Datenbank geschieht. Zum einen traue ich den Entwicklern der JTL-Wawi nicht und zum anderen habe ich dann keine Kontrolle darüber. Wie gut das es da die Ameise gibt.

2016-11-17-12_23_40-admin_-global

In unserer JTL-Toolbox brauchen wir also eine Routine/Funktion mit der wir die Ameise ansteuern können und die uns die Daten in einer CSV-Datei bereit stellt. Das machen wir deshalb aus der JTL-Toolbox heraus, wir dafür nicht jedes Mal umständlich durch die JTL-Wawi klicken und anschließend noch in diesem Tool noch nach der Exportdatei suchen wollen. Der Prozess ist klar: Button drücken und Export starten und Daten einlesen. Button drücken und die Debitorennummern werden vergeben. Und nochmal Button drücken und die Daten werden wieder in die Wawi importiert – fertig.

Neuen Ordner und Modul anlegen

  1. Wir legen also in unserer Projektmappe einen neuen Ordner an, indem wir im Menü Projekt auf Neuer Ordner Klicken.
  2. Anschließen geben wir diesem den Namen Module
  3. Im Ordner Module legen wir ebenfalls über das Menü Projekt mit einem Klick auf Modul hinzufügen… ein Modul mit dem Namen Ameise an.

2016-11-17-13_26_05-jtl-toolbox-microsoft-visual-studio

Wie wir eine externe Anwendung in Visual Basic starten, habe ich schon in Teil 2 des Entwicklertagebuchs gezeigt. Um mit der JTL-Wawi-Ameise einen automatischen Export durchzuführen, brauchen wir mal grob folgende Befehl:

Als erstes haben wir den den Pfad zur JTL-wawi-ameise.exe. Der Parameter –server= gibt an, auf welchem Rechner die Datenbank installiert ist. Mit dem Parameter –database= geben wir den Mandanten an, mit dem Parameter –dbuser= den Datenbankbenutzer und der Parameter –dbpass= gibt sein Passwort an. Mit dem Parameter –templateid= geben wir die ID unserer Exportvorlage an und der Parameter –outputfile= gibt an, wo wir unseren Export speichern wollen.

Projekteigenschaften anpassen

  1. Über das Menü Projekt öffnen wir die Projekt Eigenschaften.
  2. Wir wechseln in Register Einstellungen
  3. Wir legen die folgenden drei Einstellungen neu an:
    1. Name: kdtemplateid, Typ: String, Bereich: Benutzer, Wert: EXP1
    2. Name: kdoutputfile, Typ: String, Bereich: Benutzer, Wert: kunden.csv
    3. Name: outputpath, Typ: String, Bereich: Benutzer, Wert: c:\temp
    4. Name: server, Type: String, Bereich: Benutzer, Wert: (local)\JTLWAWI

2016-11-17-16_15_41-jtl-toolbox-microsoft-visual-studio

Modul Ameise anpassen

Zuerst deklarieren wir wieder unser Prozess-Objekt als globale Variable. Dazu kommt noch eine zweite, in der wir festhalten, um was für einen Prozess es sich handelt, also Export oder Import. Dann legen wir wieder unseren Ereignis-Handler fest, um auf das Ende des Prozesses reagieren zu können. Anschließend bauen wir uns aus den Settings und den übergebenen Werten unseren Start-String und den Param-String für die notwendigen Parameter zusammen und starten schließen die JTL-Wawi-Ameise. Über den Ereignis-Handler werden wir mit einer Message-Box darüber informiert, das der Vorgang abgeschlossen ist.

Form3 anpassen

Jetzt können wir in Form3 den Kill-Button, das Textfeld, den Timer und den Label löschen. Somit bleibt nur der Start-Button übrig. Anschließend löschen wir den unnötigen Quelltext aus und fügen bei Button1_Click nur noch den Aufruf zum Start der Methode StartAmeise ein. Anschließend sieht dann der Quelltext so aus:

Bevor wir jetzt unser Tool an der JTL-Wawi-Ameise testen können, sollten wir unsere Wawi anpassen. Dazu legen wir eine Exportvorlage für die Kunden an und speichern diese ab. Zum Testen habe ich dieser Vorlage genau zwei Felder hinzugefügt. Die Kundennummer und die Debitorennummer. Die Exportvorlage heißt auch schön EXP1.

2016-11-17-18_39_28-exportvorlage-laden

Meine Wawi habe ich mit 10.000 Musterkunden gefüllt, es soll ja auch was zum Exportieren geben. Auf fakenamegenerator.com kann man sich so eine Datei innerhalb von 5 Minuten erstellen lassen und die habe ich schon mal in die Wawi importiert. Und jetzt drücke ich ganz mutig die F5 Taste:

2016-11-17-18_36_41-greenshot

Und am Ende gibt es auch noch eine schöne Hinweismeldung.

2016-11-17-18_42_44

3 Gedanken zu „Entwicklertagebuch JTL-Toolbox – Programmieren mit Visual Basic Teil 3“

  1. Nettes Tool, aber warum VB ;)

    Grundsätzlich zu erwähnen sei, für die welche doch ein paar mehr anforderungen an die Debitorennummer haben, gibt es tools, die machen das zwar über die db (ob man es mag oder nicht lasse ich dahin gestellt) Und sind dabei etwas besser kontrollierbar.
    Aktuell z.B.
    Debitorennummer aus Kundennummer (um Zeichen bereinigt) (Ähnlich der möglichkeit aus JTL2Datev) wobei halt persistent
    Nach ANfangsbuchstabe Firma / Nachname (Gruppierte Debitorennummern
    Oder 1 Sammelkonto.

    Ich kann da gerne mal screens zukommen lassen ;)

    1. Marc,

      das ist eine Spielerei in Visual Basic. Grundsätzlich gibt es keine Anforderungen an eine Debitorennummer. Auch im Controlling gibt es diese nicht. Debitorennummer aus Kundennummer wird nicht immer mit den Nummernkreisen zusammenpassen.

      In diesem Teil geht es darum Lücken in einem Nummernkreis zu finden und diese aufzufüllen. Der zweite Teil ist einen externe Anwendung zu starten und zu kontrollieren ;).

  2. Joar, war schon klar.

    Aus Kundennummer geht natürlich nicht immer, gerade wenn die Größen der Nummernkreise in der Form unterschiedlich sind. Sprich die Kundennummern größer sind als das in der buchhaltung verwendete Format.
    Ist die Wawi KUndennummer kleiner, passt es. Aber auch deine Variante ist natürlich eine klasse Idee um z.B. allen Kunden eine Nummer zu verpassen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.