FNCUST_GET_JSON_INVOICE_DATA: Erster Release canidate
This commit is contained in:
@@ -8,7 +8,7 @@ GO
|
|||||||
-- Reads invoice data from relational tables and returns a normalized
|
-- Reads invoice data from relational tables and returns a normalized
|
||||||
-- JSON response matching the CreateInvoice_Request structure.
|
-- JSON response matching the CreateInvoice_Request structure.
|
||||||
--
|
--
|
||||||
-- Parameter: @DocumentID INT = NULL (NULL = alle Dokumente)
|
-- Parameter: @pDOCUMENT_ID INT = NULL (NULL = alle Dokumente)
|
||||||
-- Returns: TABLE (success BIT, message NVARCHAR(MAX), data NVARCHAR(MAX))
|
-- Returns: TABLE (success BIT, message NVARCHAR(MAX), data NVARCHAR(MAX))
|
||||||
-- Usage: SELECT * FROM dbo.FNCUST_GET_JSON_INVOICE_DATA(NULL)
|
-- Usage: SELECT * FROM dbo.FNCUST_GET_JSON_INVOICE_DATA(NULL)
|
||||||
-- SELECT * FROM dbo.FNCUST_GET_JSON_INVOICE_DATA(42)
|
-- SELECT * FROM dbo.FNCUST_GET_JSON_INVOICE_DATA(42)
|
||||||
@@ -20,40 +20,43 @@ GO
|
|||||||
-- =================================================================
|
-- =================================================================
|
||||||
-- Creation Date / Author: 26.02.2026 / MK
|
-- Creation Date / Author: 26.02.2026 / MK
|
||||||
-- Version Date / Editor: 26.02.2026 / MK
|
-- Version Date / Editor: 26.02.2026 / MK
|
||||||
-- Version Number: 3.0.0.0
|
-- Version Number: 3.2.0.0
|
||||||
-- =================================================================
|
-- =================================================================
|
||||||
-- History:
|
-- History:
|
||||||
-- 26.02.2026 / MK - Initial version based on JSON invoice import
|
-- 26.02.2026 / MK - Initial version based on JSON invoice import
|
||||||
-- 26.02.2026 / MK - Style harmonized to PRDEX convention
|
-- 26.02.2026 / MK - Style harmonized to PRDEX convention
|
||||||
-- 26.02.2026 / MK - Umstellung auf Export-Prozedur (Tabellen → JSON)
|
-- 26.02.2026 / MK - Converted to export function (tables to JSON)
|
||||||
-- 26.02.2026 / MK - JSON-Ausgabe: camelCase, INCLUDE_NULL_VALUES, CreateInvoice_Request-Vorlage
|
-- 26.02.2026 / MK - JSON output: camelCase, INCLUDE_NULL_VALUES, CreateInvoice_Request template
|
||||||
-- 26.02.2026 / MK - Umbau zu Inline-Tabellenwertfunktion (ITVF)
|
-- 26.02.2026 / MK - Converted to inline table-valued function (ITVF)
|
||||||
|
-- 26.02.2026 / MK - Style, formatting, naming convention aligned with PRDEX_CHECK_SYSTEM
|
||||||
|
-- 26.02.2026 / MK - Added SCHEMABINDING, ORDER BY in subqueries, simplified validation
|
||||||
|
|
||||||
CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_JSON_INVOICE_DATA](
|
CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_JSON_INVOICE_DATA](
|
||||||
@DocumentID INT = NULL
|
@pDOCUMENT_ID INT = NULL
|
||||||
)
|
)
|
||||||
RETURNS TABLE
|
RETURNS TABLE
|
||||||
|
WITH SCHEMABINDING
|
||||||
AS
|
AS
|
||||||
RETURN
|
RETURN
|
||||||
(
|
(
|
||||||
SELECT
|
SELECT
|
||||||
--==== success ====--
|
--=========================================================-- success --=========================================================--
|
||||||
success = CAST(IIF(v.status = 0, 1, 0) AS BIT)
|
success = CAST(IIF(v.status = 0, 1, 0) AS BIT)
|
||||||
|
|
||||||
--==== message ====--
|
--=========================================================-- message --=========================================================--
|
||||||
, message = CAST(
|
, message = CAST(
|
||||||
CASE v.status
|
CASE v.status
|
||||||
WHEN 1 THEN N'Kein PurchaseDocument mit DocumentID = ' + CAST(@DocumentID AS NVARCHAR(20)) + N' gefunden.'
|
WHEN 1 THEN N'Kein PurchaseDocument mit DocumentID = ' + CAST(@pDOCUMENT_ID AS NVARCHAR(20)) + N' gefunden.'
|
||||||
WHEN 2 THEN N'Keine PurchaseDocuments vorhanden.'
|
WHEN 2 THEN N'Keine PurchaseDocuments vorhanden.'
|
||||||
ELSE N'Daten erfolgreich verarbeitet.'
|
ELSE N'Daten erfolgreich verarbeitet.'
|
||||||
END
|
END
|
||||||
AS NVARCHAR(MAX))
|
AS NVARCHAR(MAX))
|
||||||
|
|
||||||
--==== data ====--
|
--===========================================================-- data --==========================================================--
|
||||||
, data = CAST(
|
, data = CAST(
|
||||||
CASE WHEN v.status > 0 THEN NULL
|
CASE WHEN v.status > 0 THEN NULL
|
||||||
ELSE (
|
ELSE (
|
||||||
--===============================================-- Build output JSON result --===============================================--
|
--=================================================-- Build output JSON result --================================================--
|
||||||
SELECT
|
SELECT
|
||||||
JSON_QUERY(
|
JSON_QUERY(
|
||||||
COALESCE(
|
COALESCE(
|
||||||
@@ -125,6 +128,7 @@ RETURN
|
|||||||
, [dimensionValueCode] = d.DimensionValueCode
|
, [dimensionValueCode] = d.DimensionValueCode
|
||||||
FROM dbo.DimSetEntry d
|
FROM dbo.DimSetEntry d
|
||||||
WHERE d.LineID = pl.LineID
|
WHERE d.LineID = pl.LineID
|
||||||
|
ORDER BY d.DimSetEntryID
|
||||||
FOR JSON PATH, INCLUDE_NULL_VALUES
|
FOR JSON PATH, INCLUDE_NULL_VALUES
|
||||||
)
|
)
|
||||||
, '[]'
|
, '[]'
|
||||||
@@ -147,6 +151,7 @@ RETURN
|
|||||||
, [appliesToDocLineAmount] = ia.AppliesToDocLineAmount
|
, [appliesToDocLineAmount] = ia.AppliesToDocLineAmount
|
||||||
FROM dbo.ItemChargeAssignment ia
|
FROM dbo.ItemChargeAssignment ia
|
||||||
WHERE ia.LineID = pl.LineID
|
WHERE ia.LineID = pl.LineID
|
||||||
|
ORDER BY ia.ItemChargeAssignmentID
|
||||||
FOR JSON PATH, INCLUDE_NULL_VALUES
|
FOR JSON PATH, INCLUDE_NULL_VALUES
|
||||||
)
|
)
|
||||||
, '[]'
|
, '[]'
|
||||||
@@ -154,13 +159,14 @@ RETURN
|
|||||||
)
|
)
|
||||||
FROM dbo.PurchaseLine pl
|
FROM dbo.PurchaseLine pl
|
||||||
WHERE pl.DocumentID = pd.DocumentID
|
WHERE pl.DocumentID = pd.DocumentID
|
||||||
|
ORDER BY pl.LineID
|
||||||
FOR JSON PATH, INCLUDE_NULL_VALUES
|
FOR JSON PATH, INCLUDE_NULL_VALUES
|
||||||
)
|
)
|
||||||
, '[]'
|
, '[]'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
FROM dbo.PurchaseDocument pd
|
FROM dbo.PurchaseDocument pd
|
||||||
WHERE @DocumentID IS NULL OR pd.DocumentID = @DocumentID
|
WHERE @pDOCUMENT_ID IS NULL OR pd.DocumentID = @pDOCUMENT_ID
|
||||||
ORDER BY pd.DocumentID
|
ORDER BY pd.DocumentID
|
||||||
FOR JSON PATH, INCLUDE_NULL_VALUES
|
FOR JSON PATH, INCLUDE_NULL_VALUES
|
||||||
)
|
)
|
||||||
@@ -175,14 +181,16 @@ RETURN
|
|||||||
|
|
||||||
FROM (VALUES (1)) AS src(x)
|
FROM (VALUES (1)) AS src(x)
|
||||||
CROSS APPLY (
|
CROSS APPLY (
|
||||||
|
--======================================================-- Validate input --=====================================================--
|
||||||
SELECT status = CASE
|
SELECT status = CASE
|
||||||
WHEN @DocumentID IS NOT NULL
|
WHEN @pDOCUMENT_ID IS NOT NULL
|
||||||
AND NOT EXISTS (SELECT 1 FROM dbo.PurchaseDocument WHERE DocumentID = @DocumentID)
|
AND NOT EXISTS (SELECT 1 FROM dbo.PurchaseDocument WHERE DocumentID = @pDOCUMENT_ID)
|
||||||
THEN 1
|
THEN 1
|
||||||
WHEN NOT EXISTS (SELECT 1 FROM dbo.PurchaseDocument WHERE @DocumentID IS NULL OR DocumentID = @DocumentID)
|
WHEN NOT EXISTS (SELECT 1 FROM dbo.PurchaseDocument)
|
||||||
THEN 2
|
THEN 2
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END
|
END
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------
|
||||||
) AS v
|
) AS v
|
||||||
);
|
);
|
||||||
GO
|
GO
|
||||||
Reference in New Issue
Block a user