Vielen Dank für deine Erklärung und Zusammenfassung. Ich habe das Skript noch etwas ausgebaut. Hier eine kurze Erklärung:
Folgender SQL-Code erstellt eine Übersicht der Verkäufe (VK) und Einkaufskosten (EK) der letzten 12 Monate in der
JTL-Wawi. Er kann sowohl in
JTL Ameise als auch unter
Verkauf (F6) → Eigene Übersichten verwendet werden.
🔍 Funktionen des Codes:
✅
Erfasst alle bezahlten und versandten Aufträge der letzten 12 Monate
✅
Berechnet den Gesamtumsatz brutto und netto (VK Brutto, VK Netto)
✅
Berechnet die Einkaufskosten netto (EK Netto), aber nur für echte Artikelpositionen
✅
Unterscheidet Verkäufe nach Plattform (Amazon, eBay, Onlineshop, Wawi)
✅
Berücksichtigt Währungsumrechnung mit fWaehrungsfaktor
✅
Zeigt die Daten gruppiert nach Monat und Jahr an
✅ Gilt nur für Firma 1 (lvA.kFirma = 1) – wichtig, falls mehrere Firmen in der Wawi angelegt sind
📌 Wichtige Filterbedingungen:
- Es werden nur Aufträge berücksichtigt, die bezahlt (Zahlungsstatus = 2) und versendet (Lieferstatus = 5) sind.
- Die Einkaufspreise (EK) werden nur für echte Artikelpositionen (nType = 1) berechnet (keine Rabatte oder Versandkosten).
- Alle Umsätze werden in Euro umgerechnet basierend auf dem Währungsfaktor (fWaehrungsfaktor).
📊 Verwendung in JTL-Wawi:
1️⃣
In der JTL Ameise:
- SQL unter "Eigene SQL-Abfragen" speichern und ausführen.
2️⃣
Im Verkauf (F6) → Eigene Übersichten:
- In "Eigene Übersicht konfigurieren" einfügen, um die Werte direkt in JTL-Wawi anzuzeigen.
🚀
Perfekt für Umsatz- und Margenanalysen in JTL! 😊
WITH EK_Aggregation AS (
SELECT
Bestellung.tBestellung_kBestellung AS kAuftrag,
ROUND(SUM(Artikel.fEKNetto * Bestellung.nAnzahl), 2) AS EK_Netto_EUR
FROM
tbestellpos AS Bestellung
LEFT JOIN
tArtikel AS Artikel ON Bestellung.tArtikel_kArtikel = Artikel.kArtikel
WHERE
Artikel.kStueckliste = 0 -- Nur echte Artikel, keine Stücklisten
AND Bestellung.nType = 1 -- Nur echte Artikelpositionen (keine Rabatte oder Versand) für EK-Berechnung
GROUP BY
Bestellung.tBestellung_kBestellung
)
SELECT
FORMAT(MONTH(lvA.dErstellt), '00') AS Monat, -- Monat
YEAR(lvA.dErstellt) AS Jahr, -- Jahr
CAST(ROUND(SUM(lvA.fAuftragswertBrutto / NULLIF(lvA.fWaehrungsfaktor, 0)), 2) AS DECIMAL(20,2)) AS VK_Brutto_Gesamt, -- VK Brutto Gesamt
CAST(ROUND(SUM(lvA.fAuftragswertNetto / NULLIF(lvA.fWaehrungsfaktor, 0)), 2) AS DECIMAL(20,2)) AS VK_Netto_Gesamt, -- VK Netto Gesamt
CAST(ROUND(SUM(COALESCE(ek.EK_Netto_EUR, 0)), 2) AS DECIMAL(20,2)) AS EK_Netto_Gesamt, -- EK Netto Gesamt
CAST(ROUND(SUM(CASE WHEN lvA.nPlattformTyp = 6 THEN lvA.fAuftragswertBrutto / NULLIF(lvA.fWaehrungsfaktor, 0) ELSE 0 END), 2) AS DECIMAL(20,2)) AS Amazon_Brutto,
CAST(ROUND(SUM(CASE WHEN lvA.nPlattformTyp = 6 THEN lvA.fAuftragswertNetto / NULLIF(lvA.fWaehrungsfaktor, 0) ELSE 0 END), 2) AS DECIMAL(20,2)) AS Amazon_Netto,
CAST(ROUND(SUM(CASE WHEN lvA.nPlattformTyp = 5 THEN lvA.fAuftragswertBrutto / NULLIF(lvA.fWaehrungsfaktor, 0) ELSE 0 END), 2) AS DECIMAL(20,2)) AS Ebay_Brutto,
CAST(ROUND(SUM(CASE WHEN lvA.nPlattformTyp = 5 THEN lvA.fAuftragswertNetto / NULLIF(lvA.fWaehrungsfaktor, 0) ELSE 0 END), 2) AS DECIMAL(20,2)) AS Ebay_Netto,
CAST(ROUND(SUM(CASE WHEN lvA.nPlattformTyp = 2 THEN lvA.fAuftragswertBrutto / NULLIF(lvA.fWaehrungsfaktor, 0) ELSE 0 END), 2) AS DECIMAL(20,2)) AS Onlineshop_Brutto,
CAST(ROUND(SUM(CASE WHEN lvA.nPlattformTyp = 2 THEN lvA.fAuftragswertNetto / NULLIF(lvA.fWaehrungsfaktor, 0) ELSE 0 END), 2) AS DECIMAL(20,2)) AS Onlineshop_Netto,
CAST(ROUND(SUM(CASE WHEN lvA.nPlattformTyp = 1 THEN lvA.fAuftragswertBrutto / NULLIF(lvA.fWaehrungsfaktor, 0) ELSE 0 END), 2) AS DECIMAL(20,2)) AS Wawi_Brutto,
CAST(ROUND(SUM(CASE WHEN lvA.nPlattformTyp = 1 THEN lvA.fAuftragswertNetto / NULLIF(lvA.fWaehrungsfaktor, 0) ELSE 0 END), 2) AS DECIMAL(20,2)) AS Wawi_Netto
FROM
Verkauf.lvAuftragsverwaltung AS lvA
LEFT JOIN
EK_Aggregation AS ek ON lvA.kAuftrag = ek.kAuftrag
WHERE
lvA.dErstellt >= DATEADD(YEAR, -1, GETDATE()) -- Exakt 1 Jahr zurück ab jetzt
AND lvA.dErstellt < DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) -- Bis heute 23:59:59
AND lvA.kFirma = 1
AND lvA.nZahlungStatus = 2 -- Nur bezahlte Aufträge
AND lvA.nLieferstatus = 5 -- Nur versandte Aufträge
GROUP BY
MONTH(lvA.dErstellt),
YEAR(lvA.dErstellt)
ORDER BY
Jahr DESC,
Monat DESC;