From e670cefb0ead11b865b3743f3204dd43b4f2d827 Mon Sep 17 00:00:00 2001 From: KammM Date: Thu, 26 Feb 2026 14:56:58 +0100 Subject: [PATCH] FNCUST_GET_JSON_INVOICE_DATA: Erster Release canidate --- ...sql => [FNCUST_GET_JSON_INVOICE_DATA].sql} | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) rename SWESQL/SQL-Server/Prozeduren/{[PRCUST_SET_JSON_INVOICE_DATA].sql => [FNCUST_GET_JSON_INVOICE_DATA].sql} (79%) diff --git a/SWESQL/SQL-Server/Prozeduren/[PRCUST_SET_JSON_INVOICE_DATA].sql b/SWESQL/SQL-Server/Prozeduren/[FNCUST_GET_JSON_INVOICE_DATA].sql similarity index 79% rename from SWESQL/SQL-Server/Prozeduren/[PRCUST_SET_JSON_INVOICE_DATA].sql rename to SWESQL/SQL-Server/Prozeduren/[FNCUST_GET_JSON_INVOICE_DATA].sql index 5413a7f..b30a31e 100644 --- a/SWESQL/SQL-Server/Prozeduren/[PRCUST_SET_JSON_INVOICE_DATA].sql +++ b/SWESQL/SQL-Server/Prozeduren/[FNCUST_GET_JSON_INVOICE_DATA].sql @@ -8,7 +8,7 @@ GO -- Reads invoice data from relational tables and returns a normalized -- 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)) -- Usage: SELECT * FROM dbo.FNCUST_GET_JSON_INVOICE_DATA(NULL) -- SELECT * FROM dbo.FNCUST_GET_JSON_INVOICE_DATA(42) @@ -20,40 +20,43 @@ GO -- ================================================================= -- Creation Date / Author: 26.02.2026 / MK -- Version Date / Editor: 26.02.2026 / MK --- Version Number: 3.0.0.0 +-- Version Number: 3.2.0.0 -- ================================================================= -- History: -- 26.02.2026 / MK - Initial version based on JSON invoice import -- 26.02.2026 / MK - Style harmonized to PRDEX convention --- 26.02.2026 / MK - Umstellung auf Export-Prozedur (Tabellen → JSON) --- 26.02.2026 / MK - JSON-Ausgabe: camelCase, INCLUDE_NULL_VALUES, CreateInvoice_Request-Vorlage --- 26.02.2026 / MK - Umbau zu Inline-Tabellenwertfunktion (ITVF) +-- 26.02.2026 / MK - Converted to export function (tables to JSON) +-- 26.02.2026 / MK - JSON output: camelCase, INCLUDE_NULL_VALUES, CreateInvoice_Request template +-- 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]( - @DocumentID INT = NULL + @pDOCUMENT_ID INT = NULL ) RETURNS TABLE +WITH SCHEMABINDING AS RETURN ( SELECT - --==== success ====-- + --=========================================================-- success --=========================================================-- success = CAST(IIF(v.status = 0, 1, 0) AS BIT) - --==== message ====-- + --=========================================================-- message --=========================================================-- , message = CAST( 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.' ELSE N'Daten erfolgreich verarbeitet.' END AS NVARCHAR(MAX)) - --==== data ====-- + --===========================================================-- data --==========================================================-- , data = CAST( CASE WHEN v.status > 0 THEN NULL ELSE ( - --===============================================-- Build output JSON result --===============================================-- + --=================================================-- Build output JSON result --================================================-- SELECT JSON_QUERY( COALESCE( @@ -125,6 +128,7 @@ RETURN , [dimensionValueCode] = d.DimensionValueCode FROM dbo.DimSetEntry d WHERE d.LineID = pl.LineID + ORDER BY d.DimSetEntryID FOR JSON PATH, INCLUDE_NULL_VALUES ) , '[]' @@ -147,6 +151,7 @@ RETURN , [appliesToDocLineAmount] = ia.AppliesToDocLineAmount FROM dbo.ItemChargeAssignment ia WHERE ia.LineID = pl.LineID + ORDER BY ia.ItemChargeAssignmentID FOR JSON PATH, INCLUDE_NULL_VALUES ) , '[]' @@ -154,13 +159,14 @@ RETURN ) FROM dbo.PurchaseLine pl WHERE pl.DocumentID = pd.DocumentID + ORDER BY pl.LineID FOR JSON PATH, INCLUDE_NULL_VALUES ) , '[]' ) ) 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 FOR JSON PATH, INCLUDE_NULL_VALUES ) @@ -175,14 +181,16 @@ RETURN FROM (VALUES (1)) AS src(x) CROSS APPLY ( + --======================================================-- Validate input --=====================================================-- SELECT status = CASE - WHEN @DocumentID IS NOT NULL - AND NOT EXISTS (SELECT 1 FROM dbo.PurchaseDocument WHERE DocumentID = @DocumentID) + WHEN @pDOCUMENT_ID IS NOT NULL + AND NOT EXISTS (SELECT 1 FROM dbo.PurchaseDocument WHERE DocumentID = @pDOCUMENT_ID) 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 ELSE 0 END + ----------------------------------------------------------------------------------------------------------------------------------- ) AS v ); GO