Wir haben den Bedarf, dass wir einen verfügbaren Lagerstand in unterschiedlichen Lagern im Verkauf benötigen. Der Verfügbarkeitsstand in den Artikelstammdaten bezieht sich ja leider nur auf alle Lager.
Daher haben wir eine eigene Übersicht entwickelt die allerdings einen kleinen Fehler hat: Sobald ein Artikel mehrfach auf einem Auftrag aufscheint sind die angezeigten Mengen nicht mehr korrekt. Die SQL Abfrage sieht wie folgt aus:
SELECT tArtikel.cArtNr as Artikelnummer,
ROUND(CONVERT(FLOAT, SUM(CASE WHEN tlagerbestandProLagerLagerartikel.kWarenlager = 1 THEN tlagerbestandProLagerLagerartikel.fBestand END)
-
Coalesce(
(
SELECT
SUM(inner_pos.nAnzahl) AS inAuftrag
FROM tBestellpos inner_pos
INNER JOIN tBestellung inner_be ON inner_pos.tBestellung_kBestellung = inner_be.kBestellung
LEFT OUTER JOIN tArtikel inner_art ON inner_pos.tArtikel_kArtikel = inner_art.kArtikel
WHERE
inner_art.kArtikel = tArtikel.kArtikel
AND inner_be.nStorno = 0 AND
inner_be.nKomplettAusgeliefert = 0 AND
inner_be.cType = 'B' AND
inner_be.kFirma = 1
)
,0)
+
Coalesce(
(
SELECT
(SUM(inner_lspos2.fAnzahl)) AS inAuftrag
FROM tBestellpos inner_pos2
INNER JOIN tBestellung inner_be2 ON inner_pos2.tBestellung_kBestellung = inner_be2.kBestellung
INNER JOIN tArtikel inner_art2 ON inner_pos2.tArtikel_kArtikel = inner_art2.kArtikel
LEFT OUTER JOIN tLieferscheinPos inner_lspos2 ON inner_pos2.kBestellPos = inner_lspos2.kBestellPos
WHERE
inner_art2.kArtikel = tArtikel.kArtikel
AND inner_be2.nStorno = 0 AND
inner_be2.nKomplettAusgeliefert = 0 AND
inner_be2.cType = 'B' AND
inner_be2.kFirma = 1
)
,0)
),2) AS Verfügbar_Wernberg,
ROUND(CONVERT(FLOAT, SUM(CASE WHEN tlagerbestandProLagerLagerartikel.kWarenlager = 2 THEN tlagerbestandProLagerLagerartikel.fBestand END)
-
Coalesce(
(
SELECT
(SUM(inner_pos.nAnzahl)) AS inAuftrag
FROM tBestellpos inner_pos
INNER JOIN tBestellung inner_be ON inner_pos.tBestellung_kBestellung = inner_be.kBestellung
INNER JOIN tArtikel inner_art ON inner_pos.tArtikel_kArtikel = inner_art.kArtikel
LEFT OUTER JOIN tLieferscheinPos inner_lspos ON inner_pos.kBestellPos = inner_lspos.kBestellPos
WHERE
inner_art.kArtikel = tArtikel.kArtikel
AND inner_be.nStorno = 0 AND
inner_be.nKomplettAusgeliefert = 0 AND
inner_be.cType = 'B' AND
inner_be.kFirma = 2
)
,0)
+
Coalesce(
(
SELECT
(SUM(inner_lspos2.fAnzahl)) AS inAuftrag
FROM tBestellpos inner_pos2
INNER JOIN tBestellung inner_be2 ON inner_pos2.tBestellung_kBestellung = inner_be2.kBestellung
INNER JOIN tArtikel inner_art2 ON inner_pos2.tArtikel_kArtikel = inner_art2.kArtikel
LEFT OUTER JOIN tLieferscheinPos inner_lspos2 ON inner_pos2.kBestellPos = inner_lspos2.kBestellPos
WHERE
inner_art2.kArtikel = tArtikel.kArtikel
AND inner_be2.nStorno = 0 AND
inner_be2.nKomplettAusgeliefert = 0 AND
inner_be2.cType = 'B' AND
inner_be2.kFirma = 2
)
,0)
),2) AS Verfügbar_Klagenfurt
FROM tBestellung
INNER JOIN tBestellpos ON tBestellung.kBestellung = tBestellpos.tBestellung_kBestellung
INNER JOIN tArtikel ON tBestellpos.tArtikel_kArtikel = tArtikel.kArtikel
INNER JOIN tlagerbestandProLagerLagerartikel ON tArtikel.kArtikel = tlagerbestandProLagerLagerartikel.kArtikel
WHERE tBestellung.kBestellung = @Key
GROUP BY tArtikel.kArtikel,tArtikel.cArtNr
Eine ähnliche Abfrage in der Artikelübersicht funktioniert.
Wenn diesen Code jemand braucht, bitte gerne melden.
Ich hoffe es kann mir jemand bei diesem Code weiterhelfen.
Besten Dank vorab.
Daher haben wir eine eigene Übersicht entwickelt die allerdings einen kleinen Fehler hat: Sobald ein Artikel mehrfach auf einem Auftrag aufscheint sind die angezeigten Mengen nicht mehr korrekt. Die SQL Abfrage sieht wie folgt aus:
SELECT tArtikel.cArtNr as Artikelnummer,
ROUND(CONVERT(FLOAT, SUM(CASE WHEN tlagerbestandProLagerLagerartikel.kWarenlager = 1 THEN tlagerbestandProLagerLagerartikel.fBestand END)
-
Coalesce(
(
SELECT
SUM(inner_pos.nAnzahl) AS inAuftrag
FROM tBestellpos inner_pos
INNER JOIN tBestellung inner_be ON inner_pos.tBestellung_kBestellung = inner_be.kBestellung
LEFT OUTER JOIN tArtikel inner_art ON inner_pos.tArtikel_kArtikel = inner_art.kArtikel
WHERE
inner_art.kArtikel = tArtikel.kArtikel
AND inner_be.nStorno = 0 AND
inner_be.nKomplettAusgeliefert = 0 AND
inner_be.cType = 'B' AND
inner_be.kFirma = 1
)
,0)
+
Coalesce(
(
SELECT
(SUM(inner_lspos2.fAnzahl)) AS inAuftrag
FROM tBestellpos inner_pos2
INNER JOIN tBestellung inner_be2 ON inner_pos2.tBestellung_kBestellung = inner_be2.kBestellung
INNER JOIN tArtikel inner_art2 ON inner_pos2.tArtikel_kArtikel = inner_art2.kArtikel
LEFT OUTER JOIN tLieferscheinPos inner_lspos2 ON inner_pos2.kBestellPos = inner_lspos2.kBestellPos
WHERE
inner_art2.kArtikel = tArtikel.kArtikel
AND inner_be2.nStorno = 0 AND
inner_be2.nKomplettAusgeliefert = 0 AND
inner_be2.cType = 'B' AND
inner_be2.kFirma = 1
)
,0)
),2) AS Verfügbar_Wernberg,
ROUND(CONVERT(FLOAT, SUM(CASE WHEN tlagerbestandProLagerLagerartikel.kWarenlager = 2 THEN tlagerbestandProLagerLagerartikel.fBestand END)
-
Coalesce(
(
SELECT
(SUM(inner_pos.nAnzahl)) AS inAuftrag
FROM tBestellpos inner_pos
INNER JOIN tBestellung inner_be ON inner_pos.tBestellung_kBestellung = inner_be.kBestellung
INNER JOIN tArtikel inner_art ON inner_pos.tArtikel_kArtikel = inner_art.kArtikel
LEFT OUTER JOIN tLieferscheinPos inner_lspos ON inner_pos.kBestellPos = inner_lspos.kBestellPos
WHERE
inner_art.kArtikel = tArtikel.kArtikel
AND inner_be.nStorno = 0 AND
inner_be.nKomplettAusgeliefert = 0 AND
inner_be.cType = 'B' AND
inner_be.kFirma = 2
)
,0)
+
Coalesce(
(
SELECT
(SUM(inner_lspos2.fAnzahl)) AS inAuftrag
FROM tBestellpos inner_pos2
INNER JOIN tBestellung inner_be2 ON inner_pos2.tBestellung_kBestellung = inner_be2.kBestellung
INNER JOIN tArtikel inner_art2 ON inner_pos2.tArtikel_kArtikel = inner_art2.kArtikel
LEFT OUTER JOIN tLieferscheinPos inner_lspos2 ON inner_pos2.kBestellPos = inner_lspos2.kBestellPos
WHERE
inner_art2.kArtikel = tArtikel.kArtikel
AND inner_be2.nStorno = 0 AND
inner_be2.nKomplettAusgeliefert = 0 AND
inner_be2.cType = 'B' AND
inner_be2.kFirma = 2
)
,0)
),2) AS Verfügbar_Klagenfurt
FROM tBestellung
INNER JOIN tBestellpos ON tBestellung.kBestellung = tBestellpos.tBestellung_kBestellung
INNER JOIN tArtikel ON tBestellpos.tArtikel_kArtikel = tArtikel.kArtikel
INNER JOIN tlagerbestandProLagerLagerartikel ON tArtikel.kArtikel = tlagerbestandProLagerLagerartikel.kArtikel
WHERE tBestellung.kBestellung = @Key
GROUP BY tArtikel.kArtikel,tArtikel.cArtNr
Eine ähnliche Abfrage in der Artikelübersicht funktioniert.
Wenn diesen Code jemand braucht, bitte gerne melden.
Ich hoffe es kann mir jemand bei diesem Code weiterhelfen.
Besten Dank vorab.