Gelöst Abfrage offene Aufträge

Graudy

Aktives Mitglied
1. Mai 2014
41
7
Hallo zusammen,

ich bin auf der Suche, wie man über die Datenbank bzw. direkt über DotLiquid die Zahl der offenen Aufträge (wie z.B. im Dashboard) darstellen kann. Alternativ auch die offenen Aufträge vom WMS.
Ich benötige die Informationen für ein eigenes Dashboard, das über "Versand" angestoßen wird.

Vielleicht hat ja einer eine Idee, wo man in der Datenbank an den Wert kommt oder eine andere Idee wie ich zum Ziel komme.

Grüße,
Graudy
 

Thomas_S

Sehr aktives Mitglied
2. Oktober 2012
720
122
50226 Frechern
ich bin auf der Suche, wie man über die Datenbank bzw. direkt über DotLiquid die Zahl der offenen Aufträge (wie z.B. im Dashboard) darstellen kann
Für direkte Abfragen der Datenbank wäre die von dir verwendete WaWi Version hilfreich. Wie, wenn nicht mit DotLiquid, sollen die DB-Abfrage erfolgen?

Um dir mit DotLiquid helfen zu können, fehlen Informationen zu deinem eigenen Dashboard. Wie wird es "angestoßen", wie wird es dargestellt? Die in DotLiquid bereitgestellten Variablen variieren teilweise stark.
 

Graudy

Aktives Mitglied
1. Mai 2014
41
7
Aktuell nutzen wir 1.5.24.1
Das Dashboard wird über Versand-Versendet angestoßen.
Hier kann ich auch keine direkte Variable finden.
Es wäre aber auch ausreichend, wenn man irgendwo anders automatisiert den Wert z.B. jede Minute exportieren (speichern, am besten als txt) könnte, da ich die Daten dann zusammenfassen kann.
 

Thomas_S

Sehr aktives Mitglied
2. Oktober 2012
720
122
50226 Frechern
Die reine Anzahl der offenen Aufträge kannst du per SQL-Abfrage z.B. so ermitteln:
SQL:
SELECT COUNT(kBestellung) AS 'offene Aufträge'
  FROM tBestellung
  WHERE cType = 'B' /* nur Aufträge - keine Angebote, Umlagerungen etc.*/
    AND nKomplettAusgeliefert = 0 /* nicht komplett ausgeliefert */
    AND nStorno = 0 /* nicht storniert */
mit DotLiquid siehts dann so aus:
Code:
{% capture sqlquery -%}
SELECT COUNT(kBestellung) AS 'offene Aufträge'
  FROM tBestellung
  WHERE cType = 'B'
    AND nKomplettAusgeliefert = 0
    AND nStorno = 0
{% endcapture -%}
{% assign offeneAuftraege = sqlquery | DirectQueryScalar -%}
{{ offeneAuftraege }}
Wenn auch nach Platform oder Firma gefiltert werden soll, muss die Abfrage entsprechend angepasst werden. Infos zu den verfügbaren Tabellen und Werten für deine WaWi Version bekommst du, wie schon @elevennerds.de geschrieben hat, hier: https://wawi-db.jtl-software.de/tables/1.5.24.1

Mittels Workflow kannst du dann z.B. bei jedem Versand den aktuellen Wert in eine Datei schreiben lassen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: friederike

Graudy

Aktives Mitglied
1. Mai 2014
41
7
Hallo Tom,

das hatte ich mir auch bereits angeschaut.
Nur gibt es hier ja noch einige Faktoren, die mit einfließen in die Zahl der offenen Bestellungen laut Dashboard. Die Zahl die mit deiner SQL kommt, berücksichtigt ja nicht: unbezahlte Aufträge, Aufträge die per Dropshipping verschickt werden, Fehlbestand, Aufträge die keinen Bestand haben, etc.

Mir geht es aber um die Zahl der offenen Aufträge, die im WMS noch zu bearbeiten sind bzw. noch bearbeitbar sind heute.
 

ATD

Aktives Mitglied
17. August 2016
34
0
Hallo.
Wir sind auch auf der Suche nach der DotLiquid abfrage nach der Anzahl der offenen Aufträge sobald ein neuer Auftrag erstellt wird.

Wir haben jetzt die oben genannte Formel versucht aber kommen damit auf ein anderes Ergebnis.
Wir wollen das ab einer bestimmten Anzahl von offenen Aufträgen automatisch Aufträge an das Fulfillmentlager verschickt werden.

Kann uns vielleicht jemand von euch helfen.

Wir nutzen die JTL WAWI in der Version 1.5.29.1
 

Karobube

Sehr aktives Mitglied
23. September 2020
200
153
Remote via AnyDesk
Firma
contact@karobube.com
Ihr Lieben,

{% capture query -%}\
SELECT COUNT(DISTINCT tBestellung.kBestellung) FROM tBestellung
JOIN dbo.tBestellungEckDaten ON tBestellungEckDaten.kBestellung = tBestellung.kBestellung
JOIN dbo.tZahlungsart ON tBestellung.kZahlungsart = tZahlungsart.kZahlungsart
JOIN dbo.tbestellpos ON tBestellung.kBestellung = tbestellpos.tBestellung_kBestellung
JOIN dbo.tlagerbestand ON tlagerbestand.kArtikel = tbestellpos.tArtikel_kArtikel
WHERE (tBestellungEckDaten.fWert-tBestellungEckDaten.fZahlung <= 0 /* Bezahlt oder Wert 0 */
OR tZahlungsart.nAusliefernVorZahlung = 1) /* oder Auslieferung vor Zahlung in Zahlungsart */
AND tBestellung.nKomplettAusgeliefert = 0 /* noch nicht komplett geliefert */
AND tBestellung.nStorno = 0 /* nicht storniert */
AND tBestellung.kRueckhaltegrund = 0 /* nicht zurückgehalten */
AND tBestellung.cType = 'B' /* Bestellung, kein Angebot oder Umlagerung */
AND ( tlagerbestand.fLagerbestand >= tbestellpos.nAnzahl /* Genug auf Lager je Position */
OR tbestellpos.nType = 0 ) /* oder ist Freiposition */
{% endcapture -%}\
{% assign result = query | DirectQueryScalar %}{{ result }}

das sollte es ungefähr tun, testet es vielleicht Mal und schreibt hier, ob es zu viel oder zu wenig zählt.

Wenn es jemandem geholfen hat, gerne dem nächsten Bedürftigen n 5er zustecken.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: jtlehrling

Mario.

Sehr aktives Mitglied
4. Dezember 2007
1.553
42
Ich habe die SQL-Abfrage für Grafana mal auf Stand 1.7.9.0 gebracht.

SELECT COUNT (DISTINCT cAuftragsNr) FROM Verkauf.tAuftrag AS Auftrag
JOIN Verkauf.tAuftragEckdaten AS Eckdaten ON Eckdaten.kAuftrag = Auftrag.kAuftrag
JOIN dbo.tZahlungsart AS Zahlungsart ON Zahlungsart.kZahlungsart = Auftrag.kZahlungsart
JOIN Verkauf.tAuftragPosition AS Pos ON Pos.kAuftrag = Auftrag.kAuftrag
JOIN dbo.tlagerbestand AS Lagerbestand ON Lagerbestand.kArtikel = Pos.kArtikel
WHERE ( Eckdaten.fWertBrutto - Eckdaten.fZahlung <= 0 -- Bezahlt oder Wert 0
OR Zahlungsart.nAusliefernVorZahlung = 1 -- oder Auslieferung vor Zahlung
)
AND Auftrag.nKomplettAusgeliefert = 0 -- noch nicht komplett ausgeliefert
AND Auftrag.nStorno = 0 -- nicht storniert
AND ( Auftrag.kRueckhaltegrund = 0 OR Auftrag.kRueckhaltegrund is NULL )-- nicht zurückgehalten
AND Auftrag.nType = 1 -- Auftrag, kein Angebot
AND ( Lagerbestand.fLagerbestand >= Pos.fAnzahl -- Genug auf Lager je Position
OR Pos.nType = 0) -- oder ist Freiposition
 
Zuletzt bearbeitet:

Ähnliche Themen