Nach einiger Zeit wieder ein kleiner Codeschnipsel für die JTL Warenwirtschaft hier. Hintergrund sind die eher beschränkten Möglichkeiten in der mir zugrunde liegenden JTL WaWi Version 0.99711 betreffend Inventurlisten.
Zwar bietet JTL seit kurzem die Möglichkeit, mittels externem Exporttool (JTL Ameise) teilweise komplexe Artikellisten in CSV Dateiformate zu exportieren, was dabei aber fehlt ist das Feld „Lagerort“. Auch die in der JTL WaWi integrierte Funktion zur Erstellung von Inventurlisten (Menu Artikelverwaltung -> Inventur) ist suboptimal, da sie nur den Druck oder Export als PDF vorsieht.
Möchte man eine CSV und im weiteren Verlauf eine editierbare Excel Tabelle zur Inventur nutzen (beispielsweise um den aktuellen Lagerbestand einzutragen und sofort nach Inventur automatisiert in den Datenbestand zu übernehmen), benötigen wir also einen eigene Lösung. An dieser Stelle mein Vorschlag in Form einer SQL Anfrage:
SELECT lo.cName as Lagerort, a.cArtNr as Artikelnummer, a.cName as Artikelname, a.cBarcode as EAN, a.nLagerbestand as Lagerbestand FROM (tartikel a LEFT OUTER JOIN tArtikelLagerOrt l ON (l.kArtikel = a.kArtikel)) LEFT OUTER JOIN tlagerort lo ON (l.kLagerOrt = lo.kLagerOrt)
Man kann dieses Script in diversen MS SQL Server Management Lösungen verwenden, oder die Anfrage direkt auf die Datenbank loslassen. Ich selbst habe das Snippet in eine eigene Toolsammlung für die JTL WaWi eingebunden.
Erzeugt wird durch die Anfrage eine Ergbnistabelle der Art:
Lagerort | Artikelnummer | Artikelname | EAN | Lagerbestand |
---|---|---|---|---|
A10 | 1234 | Testartikel 1 | 10 | |
A20 | 1234 | Testartikel 1 | 10 | |
A20 | 5678 | Testartikel 2 | 0 | |
999 | Testartikel 3 | 10 |
Wie in der kleinen Beispielliste zu sehen, deckt das Script auch folgende Möglichkeiten in einer Inventurliste ab:
- ein Artikel kann verschiedene Lagerorte haben
- an einem Lagerort können verschiedene Artikel hinterlegt sein
- Artikel können auch keinen Lagerort haben
Und nach der Inventur?
Wie oben beschrieben ist der Import aus dem erstellten CSV Format logisch der nächste Schritt. Diese Anforderungen muss ich aber derzeit noch nicht erfüllen. Ich hoffe bis dahin hat JTL ein besseres Handling der Inventur in die JTL Ameise integriert.
Optimierung?
Ich bin bei weitem kein Profi im Bereich SQL. Daher hier die obligatorische Warnung, diese Anfrage bitte an einem Testsystem zu probieren, auch wenn ich nur lesend auf die Datenbank zugreife. Ideen zur Optimierung oder Erweiterung diskutiere ich gerne in den Kommentaren!
Mai 2nd, 2011 at 2:28 pm
Hallo,
kann es sein, dass da ein Fehler im Code ist.
Wenn ich den Code kopiere und einfüge kommt die Meldung
MySQL meldet: Dokumentation
#1146 – Table ‚UNSER_DATENBANKNAME.tArtikelLagerOrt‘ doesn’t exist
Liegt hier ein Fehler vor?
Grüße
Michael
Mai 15th, 2011 at 10:43 am
Hallo Michael,
bist Du sicher, dass der Datenbankname auch korrekt gesetzt ist?
Ansonsten funktioniert das Script so beim Kunden, ohne weitere Infos ist es jetzt schwer, einen möglichen Fehler auszumachen.
Viele Grüße!