DROP FUNCTION [Verkauf].[ifStorno]
GO
CREATE FUNCTION [Verkauf].[ifStorno] (@kAuftrag INT, @ignoreIstExterneRechnung BIT = 0, @ignorePendingStatus BIT = 0)
RETURNS INT
AS
BEGIN
--Lieferscheine
IF(EXISTS(SELECT 1
FROM dbo.tLieferschein
WHERE tLieferschein.kBestellung = @kAuftrag))
RETURN 4;
--Pickliste
IF(EXISTS(SELECT 1
FROM dbo.tPicklistePos
WHERE tPicklistePos.kbestellung = @kAuftrag AND tPicklistePos.nStatus <> 40))
RETURN 5;
--Rechnung
IF(EXISTS(SELECT 1
FROM Rechnung.tRechnungPosition
JOIN Rechnung.tRechnung ON tRechnung.kRechnung = tRechnungPosition.kRechnung
WHERE tRechnungPosition.kAuftrag = @kAuftrag AND tRechnung.nStorno = 0))
RETURN 7;
--LS-Pos
IF(EXISTS(SELECT 1
FROM Verkauf.tAuftrag
JOIN tPlattform ON tPlattform.nPlattform = tAuftrag.kPlattform
WHERE tAuftrag.kAuftrag = @kAuftrag AND tPlattform.nTyp = 9))
RETURN 12;
--StornoSperre
IF(EXISTS(SELECT 1
FROM Verkauf.tAuftragStornoSperre
WHERE tAuftragStornoSperre.kAuftrag = @kAuftrag))
RETURN 13;
RETURN
(
SELECT
CASE
WHEN tAuftrag.nStorno = 1
THEN 1
--
WAWI-58059 WHEN tAuftrag.nIstExterneRechnung > 0 AND @ignoreIstExterneRechnung = 0 THEN 6
WHEN tAuftrag.nPending = 1 AND @ignorePendingStatus = 0
THEN 14
ELSE 0
END
FROM Verkauf.tAuftrag
WHERE tAuftrag.kAuftrag = @kAuftrag
);
END;
GO