Gelöst Stichtagsbezogene Lagerbewertung [WAWI-37044, WAWI-37043, WAWI-33817, WAWI-32600, WAWI-8316]

benkct

Aktives Mitglied
17. Juli 2024
38
6
Moin Jonas,
hier einmal die Abfrage (Nur Hauptzustand) mit Lagerplätzen
. Dabei wird jeder Artikel pro lagerplatz in eine Zeile geschreiben.
Ich hoffe das reicht dir aus.

Den Anhang 122569 betrachten


Einfach als neues Profil hinzufügen und dann auf "OK" klicken. Im Anschluss das Programm bitte einmal schließen und neu öffnen und ausführen.


SQL:
/*
Profil: NUR Hauptzustände – je Lagerplatz
Nur lesende Befehle • Kompatibel ab SQL Server 2017+ (wegen STRING_AGG)
*/

/* 1) Bestände je Lagerplatz ------------------------------------ */
;WITH PlatzSummen AS (
    SELECT
        E.kArtikel,
        LP.kWarenLager,
        LP.cName                 AS Lagerplatz,
        SUM(ISNULL(E.fAnzahl,0) - ISNULL(A.fAnzahl,0)) AS BestandPlatz
    FROM  dbo.tWarenLagerEingang    E
    JOIN  dbo.tWarenLagerPlatz      LP ON LP.kWarenLagerPlatz = E.kWarenLagerPlatz
    LEFT  JOIN dbo.tWarenLagerAusgang A ON A.kWarenLagerEingang = E.kWarenLagerEingang
    WHERE LP.kWarenLager = @warehouse
      AND E.dErstellt    < DATEADD(day,1,@date)
    GROUP BY E.kArtikel, LP.kWarenLager, LP.cName
    HAVING SUM(ISNULL(E.fAnzahl,0) - ISNULL(A.fAnzahl,0)) > 0
),

/* 2) artikelweiter Bestand + Einkaufssumme ----------------------- */
ArtikelGesamt AS (
    SELECT
        E.kArtikel,
        LP.kWarenLager,
        SUM(ISNULL(E.fAnzahl,0) - ISNULL(A.fAnzahl,0))                 AS GesamtBestand,
        SUM((ISNULL(E.fAnzahl,0) - ISNULL(A.fAnzahl,0)) * Art.fEKNetto) AS GesamtEK
    FROM  dbo.tWarenLagerEingang    E
    JOIN  dbo.tWarenLagerPlatz      LP  ON LP.kWarenLagerPlatz = E.kWarenLagerPlatz
    LEFT  JOIN dbo.tWarenLagerAusgang A  ON A.kWarenLagerEingang = E.kWarenLagerEingang
    JOIN  dbo.tArtikel              Art ON Art.kArtikel = E.kArtikel
    WHERE LP.kWarenLager = @warehouse
      AND E.dErstellt    < DATEADD(day,1,@date)
    GROUP BY E.kArtikel, LP.kWarenLager
    HAVING SUM(ISNULL(E.fAnzahl,0) - ISNULL(A.fAnzahl,0)) > 0
)

SELECT
    Art.cArtNr                                 AS Artikelnummer,
    MAX(AB.cName)                              AS Artikelname,
    MAX(ESVerk.cName)                          AS Verkaufseinheit,
    MAX(ISNULL(Art.fMassMenge,1))              AS InhaltMenge,
    MAX(MES.cName)                             AS InhaltEinheit,

    /* Einkaufspreis  für **diesen Platz** */
    SUM(Platz.BestandPlatz * ISNULL(Art.fEKNetto,0))      AS [Einkaufspreis Gesamt],

    /* Ø-EK  artikelweit (wieder wie früher) */
    CASE
       WHEN AG.GesamtBestand <> 0
       THEN AG.GesamtEK / AG.GesamtBestand
       ELSE 0
    END                                        AS [Durchschnittlicher EK Einzel],

    Platz.BestandPlatz                         AS BestandPlatz,
    WL.cName                                   AS Lager,
    Platz.Lagerplatz                           AS Lagerplatz,
    MAX(E.dGeliefertAm)                        AS [Letztes Lieferdatum]

FROM  PlatzSummen          Platz
JOIN  dbo.tArtikel         Art   ON Art.kArtikel      = Platz.kArtikel
JOIN  dbo.tWarenLager      WL    ON WL.kWarenLager    = Platz.kWarenLager
JOIN  ArtikelGesamt        AG    ON AG.kArtikel       = Platz.kArtikel
                                 AND AG.kWarenLager   = Platz.kWarenLager

/* beliebige Wareneingangszeile, nur fürs Lieferdatum */
LEFT JOIN dbo.tWarenLagerEingang E
       ON E.kArtikel = Platz.kArtikel
      AND E.kWarenLagerPlatz IN (
           SELECT kWarenLagerPlatz
           FROM dbo.tWarenLagerPlatz
           WHERE kWarenLager = @warehouse
             AND cName       = Platz.Lagerplatz)

-- Beschreibung (1 Zeile pro Artikel & Sprache)
LEFT JOIN dbo.tSpracheUsed SU ON SU.nStandard = 1
LEFT JOIN dbo.tArtikelBeschreibung AB
       ON AB.kArtikel   = Art.kArtikel
      AND AB.kSprache   = SU.kSprache
      AND AB.kPlattform = 1

-- Verkaufseinheit
LEFT JOIN dbo.tEinheit        EV   ON Art.kVerkaufsEinheit = EV.kEinheit
LEFT JOIN dbo.tEinheitSprache ESVerk
       ON ESVerk.kEinheit = EV.kEinheit AND ESVerk.kSprache = 1

-- Masseinheit
LEFT JOIN dbo.tMassEinheit        ME  ON Art.kMassEinheit = ME.kMassEinheit
LEFT JOIN dbo.tMassEinheitSprache MES ON MES.kMassEinheit = ME.kMassEinheit
                                      AND MES.kSprache    = 1

WHERE Art.cArtNr NOT LIKE '%brauchbar'
  AND Art.cArtNr NOT LIKE '%defekt'
  AND Art.cArtNr NOT LIKE '%verpackung'

GROUP BY
    Art.cArtNr,
    WL.cName,
    Platz.Lagerplatz,
    Platz.BestandPlatz,
    AG.GesamtBestand,
    AG.GesamtEK

ORDER BY Art.cArtNr, Platz.Lagerplatz;


Gruß
Vielen Dank für die schnelle Antwort. Bei der Berechnung der Spalte "Einkaufspreis Gesamt" stimmt aber was nicht (siehe Bild). Zu sehen sind die einzigen Schuhpaare, die wir haben.
Und im besten Fall bräuchten wir alle Artikelzustände, da die Teil unseres Lagers sind.


LG
Jonas
 

Anhänge

  • Screenshot 2025-06-13 123543.png
    Screenshot 2025-06-13 123543.png
    23,3 KB · Aufrufe: 38

overfl0w23

Sehr aktives Mitglied
19. Oktober 2020
152
88
Celle
Vielen Dank für die schnelle Antwort. Bei der Berechnung der Spalte "Einkaufspreis Gesamt" stimmt aber was nicht (siehe Bild). Zu sehen sind die einzigen Schuhpaare, die wir haben.
Und im besten Fall bräuchten wir alle Artikelzustände, da die Teil unseres Lagers sind.


LG
Jonas
Abfragen nun korrigiert und im Urpsungspost angepasst:

https://forum.jtl-software.de/threa...3817-wawi-32600-wawi-8316.121144/post-1286752
 

gerfriedd

Gut bekanntes Mitglied
20. Januar 2010
135
13
erst einmal: Super Tool !!

Frage / Idee: kann es auch als Windows Dienst mit nssm.exe eingerichtet werden ?

Frage wäre wegen den Settings Einstellungen und welches SQL Export Profil ausgegeben werden soll
 

overfl0w23

Sehr aktives Mitglied
19. Oktober 2020
152
88
Celle
erst einmal: Super Tool !!

Frage / Idee: kann es auch als Windows Dienst mit nssm.exe eingerichtet werden ?

Frage wäre wegen den Settings Einstellungen und welches SQL Export Profil ausgegeben werden soll
Hi, freut mich, dass es es dir gefällt🙂

Wie Marc schon geschrieben hat ist dies nicht vorgesehen. Macht aber auch wenig Sinn wenn du mich fragst? Wieso lässt Du das Tool nicht einfach auf dem Server laufen wenn dieser eh durchgehend eingeschaltet ist?

Ganz nebenbei, besteht denn generell bei mehreren Leuten Interesse FBA und Streckenlager mit auszuwerten? Das ist relativ umfangreich, da ich die Daten in einer eigenen DB speichern würde und diese regelmäßig abfragen würde.


Gruß
Maurice
 

TiK

Aktives Mitglied
19. September 2022
28
8
Hallo zusammen, eine Frage zu der Bestandsbewertungsabfrage: ich möchte den Wert der Ware haben, die von einem bestimmten Lieferanten eingekauft wurde. Reicht es in der Abfrage einen join über tWarenLagerEingang.kLieferantenBestellungPos auf tLieferantenBestellungPos und dann auf tLieferantenBestellung und natürlich den jeweiligen Lieferanten einzufügen oder wird das so nicht funktionieren?
In der "normalen" Bestandsbewertungsfunktion kann ich zwar einen Filter auf den Lieferanten setzen, aber dann werden alle Artikel genommen wo der jeweilige Lieferant zugeordnet ist, egal, ob über ihn gekauft wurde oder nicht.
Sorry, wenn es etwas offtopic sein sollte.
Danke und Gruß
Tiberius
 

tsinus

Sehr aktives Mitglied
7. Januar 2013
331
29
Bei der korrigierten Abfrage "Alle Zustände mit Lagerplätzen" werden bei mir nur die "Hauptzustände" und nicht "alle Zustände" ausgegeben. Kannst Du da bitte nochmal drüberschauen?
Wenn ich die Abfrage "ALLE Zustände" benutze werden tatsächlich alle Zustände aufgeführt, aber eben ohne Lagerplätze des WMS lagers.

Gruß
Thomas
 
Zuletzt bearbeitet:

overfl0w23

Sehr aktives Mitglied
19. Oktober 2020
152
88
Celle
Bei der korrigierten Abfrage "Alle Zustände mit Lagerplätzen" werden bei mir nur die "Hauptzustände" und nicht "alle Zustände" ausgegeben. Kannst Du da bitte nochmal drüberschauen?
Wenn ich die Abfrage "ALLE Zustände" benutze werden tatsächlich alle Zustände aufgeführt, aber eben ohne Lagerplätze des WMS lagers.

Gruß
Thomas
Hab dir ne PN geschreiben.
 

Cowboy

Aktives Mitglied
11. Oktober 2012
88
1
Hallo und danke für die tolle Unterstützung durch das Tool.
V 0.80 stable zeigt mir im drop down alle Lager an mit Ausnahme des Lagers "Standard".
Habe ich etwas falsch gemacht?
Gruß
Thorsten
 

Fdb2024

Mitglied
18. November 2024
65
7
Vielen Dank für das Tool.
ich habe es heute installiert bzw. gestartet und Leider kommt bei mir folgende Fehlermeldung:
Fehler: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.

Könnt ihr sagen was das für ein Fehler ist?
 

messFM

Mitglied
15. November 2024
44
4
Huhu,

dieses Quartal nutzen wir noch um die Wareneingänge und Einkaufspreise miteinander zu verheiraten. Dann wird es auch möglich sein den Einkaufspreis eines Wareneingangs manuell rückwirkend zu ändern.
Den GLD werden wir abschaffen und folglich nur noch Ø Einkaufspreis nennen, da sich dieser immer aus den offenen Wareneingängen neu errechen lässt.
Ich denke das werden wir alles noch im Rahmen der JTL-Wawi 1.6 abschließen und auf der Basis dann die Lagerbewertung nach Stichtag (so auch die Inventur) aufsetzen. Unterm Strich (ohne etwas zu versprechen) rechne ich mit der JTL-Wawi 1.7 und somit mit einer Umsetzung im kommenden Jahr 2020.

Gruß

Manuel
Hallo Manuel,

wir haben jetzt 2025 und meine Frage lautet: ist es jetzt Umgesetzt worden? Wir arbeiten seit 2024 mit JTL und ich kann immer noch keine Lagerbewertung zu Ende eines Monats durchführen.

Eine schnelle Abhilfe würde uns allen als JTL-Nutzern sehr gut tun.

Danke im Voraus für deine Mühe.
 

Care21

Sehr aktives Mitglied
1. Februar 2022
141
79
wir haben jetzt 2025 und meine Frage lautet: ist es jetzt Umgesetzt worden? Wir arbeiten seit 2024 mit JTL und ich kann immer noch keine Lagerbewertung zu Ende eines Monats durchführen.

Eine schnelle Abhilfe würde uns allen als JTL-Nutzern sehr gut tun.
Wir machen seit 5 Jahren das per SQL. JTL scheint dafür nicht in der Lage zu sein so elementar wichtige Dinge zu programmieren wie bspw. Inventurwerte.

Zu dem Skript:
2025-09-18 13:34:46.5368 | DEBUG | Verarbeite Lager: XYZ (ID: 25)
2025-09-18 13:34:46.5368 | DEBUG | Verarbeite Lager: XXX (ID: 26)
2025-09-18 13:34:56.0072 | ERROR | Fehler bei der Abfrageausführung. System.ArgumentException: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.
bei System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
bei System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
bei System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
bei StockScope.MainForm.<btnExecuteQuery_Click>d__65.MoveNext() in C:\Users\ms\Desktop\StockScope_0_9\StockScope\Form1.cs:Zeile 1434.
2025-09-18 13:35:03.1215 | INFO | Abfrageausführung beendet.

Endet bei uns leider so. 🙁
 

overfl0w23

Sehr aktives Mitglied
19. Oktober 2020
152
88
Celle
Guten Morgen,
ich konnte das Problem identifizieren. Es scheint so, als hätten bei dir 2 Lager den gleichen Namen.
Dieses Case habe ich nicht berücksichtigt.

Habe das gefixt und eine neue Version 0.91 hochgeladen mit der es funktionieren sollte.
Gib mir gern ein Feedback 🙂

LG
 

andiarbeit

Sehr aktives Mitglied
17. Juni 2018
342
98
Hallo @overfl0w23

Danke für Dein cooles Tool. Bei mir hat soweit alles funktioniert.
Was ich noch nicht kapiere: Wenn ich das Intervall auf täglich oder wöchentlich stelle, dann wird trotzdem immer eine Lagerbewertung für den einmal hinterlegten Stichtag gemacht. Der Stichtag bleibt bei mir also statisch und immer gleich. D.h. das Tool macht jeden Tag die selbe Lagerbewertung für den gleichen Stichtag.

Mein Wunsch wäre, dass sich der Stichtag nach dem Lagerabgleich, je nach Einstellung, dynamisch auf den nächsten Tag, die nächste Woche oder das Ende des Monats ändert.

Mache ich das was falsch?


Viele Grüße
Andi
 

overfl0w23

Sehr aktives Mitglied
19. Oktober 2020
152
88
Celle
Hallo @overfl0w23

Danke für Dein cooles Tool. Bei mir hat soweit alles funktioniert.
Was ich noch nicht kapiere: Wenn ich das Intervall auf täglich oder wöchentlich stelle, dann wird trotzdem immer eine Lagerbewertung für den einmal hinterlegten Stichtag gemacht. Der Stichtag bleibt bei mir also statisch und immer gleich. D.h. das Tool macht jeden Tag die selbe Lagerbewertung für den gleichen Stichtag.

Mein Wunsch wäre, dass sich der Stichtag nach dem Lagerabgleich, je nach Einstellung, dynamisch auf den nächsten Tag, die nächste Woche oder das Ende des Monats ändert.

Mache ich das was falsch?


Viele Grüße
Andi
Hey Andi,
danke für dein Feedback. Ich hoffe, dass ich in der letzten Version nicht ausversehen etwas falsch verdrahtet habe. Ich prüfe das schnellstmöglich.

lg
 

overfl0w23

Sehr aktives Mitglied
19. Oktober 2020
152
88
Celle
@andiarbeit

Es hatte sich tatsächlich ein Fehler eingeschlichen welcher nun behoben sein sollte.
Habs auf der Webseite unter v 0.92 hochgeladen. Gib mir gern ein Feedback.

LG
 

andiarbeit

Sehr aktives Mitglied
17. Juni 2018
342
98

Ähnliche Themen