WITH OuterResult AS
(
SELECT dbo.tBestellung.* , CASE WHEN BestellInfo.nLieferbarEigen = 1 AND (dbo.tBestellung.kColor IN (0,16777215)) THEN 'Yellow' ELSE CAST (dbo.tBestellung.kColor AS VARCHAR) END AS ItemState,
BestellPos.fAnzahlArtikel,BestellInfo.nLieferbarEigen AS nStatusEigen,dbo.tversandart.cName AS VersandArt
FROM dbo.tBestellung
JOIN Versand.vBestellungLieferInfoProLager AS BestellInfo ON BestellInfo.kBestellung = dbo.tBestellung.kBestellung
LEFT JOIN dbo.tversandart ON dbo.tversandart.kVersandArt = dbo.tBestellung.tVersandArt_kVersandArt
LEFT JOIN dbo.tKunde ON dbo.tKunde.kKunde = dbo.tBestellung.tKunde_kKunde
LEFT JOIN dbo.tZahlungsart WITH(NOLOCK) ON dbo.tZahlungsart.kZahlungsart = dbo.tBestellung.kZahlungsart
OUTER APPLY (SELECT SUM(Versand.vBestellPosLieferInfo.fAnzahlOffen) AS fAnzahlArtikel
FROM dbo.tbestellpos
JOIN Versand.vBestellPosLieferInfo ON Versand.vBestellPosLieferInfo.kBestellPos = dbo.tbestellpos.kBestellPos
WHERE dbo.tbestellpos.tBestellung_kBestellung = dbo.tBestellung.kBestellung
GROUP BY dbo.tbestellpos.tBestellung_kBestellung) AS BestellPos WHERE BestellInfo.kWarenlager = 1
AND BestellInfo.nLieferbarEigen != 0
AND dbo.tBestellung.nKomplettAusgeliefert = 0
AND dbo.tBestellung.nStorno = 0
AND isnull(dbo.tKunde.cSperre,'') != 'Y'
AND (dbo.tBestellung.kRueckhalteGrund IS NULL OR dbo.tBestellung.kRueckhalteGrund = 0)
AND (dbo.tBestellung.dBezahlt IS NOT NULL OR ISNULL(dbo.tZahlungsart.nAusliefernVorZahlung,0) = 1)
AND NOT EXISTS (SELECT *
FROM dbo.tPicklistePos
WHERE tPicklistePos.kBestellung = tBestellung.kBestellung
AND tPicklistePos.nStatus < 40) AND tBestellung.cType in ('B','U')
)