diff --git a/SWESQL/SQL-Server/Prozeduren/[FNCUST_GET_JSON_INVOICE_DATA].sql b/SWESQL/SQL-Server/Prozeduren/[FNCUST_GET_JSON_INVOICE_DATA].sql deleted file mode 100644 index c301134..0000000 --- a/SWESQL/SQL-Server/Prozeduren/[FNCUST_GET_JSON_INVOICE_DATA].sql +++ /dev/null @@ -1,190 +0,0 @@ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- [FNCUST_GET_JSON_INVOICE_DATA] --- ================================================================= --- Reads invoice data from relational tables and returns a normalized --- JSON response matching the CreateInvoice_Request structure. --- --- 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) --- ================================================================= --- Copyright (c) 2026 by Digital Data GmbH --- --- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim --- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works --- ================================================================= --- Creation Date / Author: 26.02.2026 / MK --- Version Date / Editor: 26.02.2026 / MK --- Version Number: 1.0.0.0 --- ================================================================= --- History: --- 26.02.2026 / MK - First Version - -CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_JSON_INVOICE_DATA]( - @pDOCUMENT_ID BIGINT = NULL -) -RETURNS TABLE -WITH SCHEMABINDING -AS -RETURN -( - SELECT - --=========================================================-- success --=========================================================-- - success = CAST(IIF(v.status = 0, 1, 0) AS BIT) - - --=========================================================-- message --=========================================================-- - , message = CAST( - CASE v.status - 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 = CAST( - CASE WHEN v.status > 0 THEN NULL - ELSE ( - --=================================================-- Build output JSON result --================================================-- - SELECT - JSON_QUERY( - COALESCE( - ( - SELECT - [documentType] = pd.DocumentType - , [no] = pd.No_ - , [noSeries] = pd.NoSeries - , [processIDTransfer] = pd.ProcessIDTransfer - , [buyFromVendorNo] = pd.BuyFromVendorNo - , [payToVendorNo] = pd.PayToVendorNo - , [postingDate] = pd.PostingDate - , [paymentTermsCode] = pd.PaymentTermsCode - , [paymentTermsCodeIR] = pd.PaymentTermsCodeIR - , [dueDate] = pd.DueDate - , [pmtDiscountDate] = pd.PmtDiscountDate - , [paymentDiscount] = pd.PaymentDiscount - , [paymentDiscountIR] = pd.PaymentDiscountIR - , [currencyCode] = pd.CurrencyCode - , [invoiceDiscCode] = pd.InvoiceDiscCode - , [postingDescription] = pd.PostingDescription - , [paymentMethodCode] = pd.PaymentMethodCode - , [vendorInvoiceNo] = pd.VendorInvoiceNo - , [vendorCrMemoNo] = pd.VendorCrMemoNo - , [phrVendorBankAccountCode] = pd.PhrVendorBankAccountCode - , [phrBankBranchNo] = pd.PhrBankBranchNo - , [phrBankAccountNo] = pd.PhrBankAccountNo - , [phrIBAN] = pd.PhrIBAN - , [phrSWIFTCode] = pd.PhrSWIFTCode - , [phrBankName] = pd.PhrBankName - , [phrBankAccountEntryPriority] = pd.PhrBankAccountEntryPriority - , [phrRMCashDiscountReceived] = pd.PhrRMCashDiscountReceived - , [phrRMAmountIncludingVAT] = pd.PhrRMAmountIncludingVAT - , [phrRMAmountLessDiscount] = pd.PhrRMAmountLessDiscount - , purchaseLines = JSON_QUERY( - COALESCE( - ( - SELECT - [attachedToLineNo] = pl.AttachedToLineNo - , [type] = pl.Type - , [no] = pl.No_ - , [description] = pl.Description - , [description2] = pl.Description2 - , [locationCode] = pl.LocationCode - , [variantCode] = pl.VariantCode - , [quantity] = pl.Quantity - , [unitOfMeasureCode] = pl.UnitOfMeasureCode - , [directUnitCost] = pl.DirectUnitCost - , [lineDiscount] = pl.LineDiscount - , [ableToDiscount] = pl.AbleToDiscount - , [discountCalculated] = pl.DiscountCalculated - , [workOrderNo] = pl.WorkOrderNo - , [genBusPostingGroup] = pl.GenBusPostingGroup - , [genProdPostingGroup] = pl.GenProdPostingGroup - , [vatBusPostingGroup] = pl.VatBusPostingGroup - , [vatProdPostingGroup] = pl.VatProdPostingGroup - , [applToItemEntry] = pl.ApplToItemEntry - , [postingWithoutApply] = pl.PostingWithoutApply - , [anticipatedPayment] = pl.AnticipatedPayment - , [receiptNo] = pl.ReceiptNo - , [receiptLineNo] = pl.ReceiptLineNo - , [irOrderNo] = pl.IrOrderNo - , [irOrderLineNo] = pl.IrOrderLineNo - , dimSetEntries = JSON_QUERY( - COALESCE( - ( - SELECT - [dimensionCode] = d.DimensionCode - , [dimensionValueCode] = d.DimensionValueCode - FROM dbo.DimSetEntry d - WHERE d.LineID = pl.LineID - ORDER BY d.DimSetEntryID - FOR JSON PATH, INCLUDE_NULL_VALUES - ) - , '[]' - ) - ) - , itemChargeAssignmentLines = JSON_QUERY( - COALESCE( - ( - SELECT - [itemChargeNo] = ia.ItemChargeNo - , [unitCost] = ia.UnitCost - , [appliesToDocType] = ia.AppliesToDocType - , [appliesToDocNo] = ia.AppliesToDocNo - , [appliesToDocLineNo] = ia.AppliesToDocLineNo - , [itemNo] = ia.ItemNo - , [description] = ia.Description - , [qtyToAssign] = ia.QtyToAssign - , [qtyAssigned] = ia.QtyAssigned - , [amountToAssign] = ia.AmountToAssign - , [appliesToDocLineAmount] = ia.AppliesToDocLineAmount - FROM dbo.ItemChargeAssignment ia - WHERE ia.LineID = pl.LineID - ORDER BY ia.ItemChargeAssignmentID - FOR JSON PATH, INCLUDE_NULL_VALUES - ) - , '[]' - ) - ) - FROM dbo.PurchaseLine pl - WHERE pl.DocumentID = pd.DocumentID - ORDER BY pl.LineID - FOR JSON PATH, INCLUDE_NULL_VALUES - ) - , '[]' - ) - ) - FROM dbo.PurchaseDocument pd - WHERE @pDOCUMENT_ID IS NULL OR pd.DocumentID = @pDOCUMENT_ID - ORDER BY pd.DocumentID - FOR JSON PATH, INCLUDE_NULL_VALUES - ) - , '[]' - ) - ) AS purchaseDocuments - FOR JSON PATH, WITHOUT_ARRAY_WRAPPER - ----------------------------------------------------------------------------------------------------------------------------------- - ) - END - AS NVARCHAR(MAX)) - - FROM (VALUES (1)) AS src(x) - CROSS APPLY ( - --======================================================-- Validate input --=====================================================-- - SELECT status = CASE - 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) - THEN 2 - ELSE 0 - END - ----------------------------------------------------------------------------------------------------------------------------------- - ) AS v -); -GO diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_EDMI_ITEM_VALUE].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_EDMI_ITEM_VALUE].sql new file mode 100644 index 0000000..02ac664 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_EDMI_ITEM_VALUE].sql @@ -0,0 +1,192 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [FNCUST_GET_EDMI_ITEM_VALUE] +-- ================================================================= +-- Returns item values from [TBEDMI_ITEM_VALUE] with optional filters, +-- fallback handling and EB normalization for INVOICE_REFERENCE specs. +-- +-- Returns: Table (max. 10.000 rows) +-- ================================================================= + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_EDMI_ITEM_VALUE] ( + @REFERENCE_GUID NVARCHAR(250) = NULL, + @SPEC_NAME NVARCHAR(100) = NULL +) +RETURNS TABLE +AS +RETURN ( + + --====================================-- SPEC fallback configuration --====================================-- + -- FALLBACK_ITEM_VALUE: value used when EB is invalid/missing + -- ALLOW_FALLBACK: 1 = use fallback, 0 = keep original ITEM_VALUE + WITH [CFG_INVOICE_REFERENCE_SPEC] AS ( + SELECT N'INVOICE_REFERENCE' AS [SPEC_NAME], CAST(N'EB9999999' AS NVARCHAR(100)) AS [FALLBACK_ITEM_VALUE], CAST(1 AS BIT) AS [ALLOW_FALLBACK] + UNION ALL SELECT N'INVOICE_REFERENCE2', CAST(NULL AS NVARCHAR(100)), CAST(0 AS BIT) + UNION ALL SELECT N'INVOICE_REFERENCE3', N'', CAST(0 AS BIT) + ), + + --=======================================-- Source data (filtered) --=======================================-- + [SRC_FILTERED_DATA] AS ( + SELECT + [GUID], + [REFERENCE_GUID], + [ITEM_DESCRIPTION], + [ITEM_VALUE], + [CREATEDWHEN], + [CREATEDWHO], + [CHANGEDWHEN], + [GROUP_COUNTER], + [SPEC_NAME], + [IS_REQUIRED], + [CHANGEDWHO], + [COMMENT] + FROM [dbo].[TBEDMI_ITEM_VALUE] + WHERE (@REFERENCE_GUID IS NULL OR [REFERENCE_GUID] = @REFERENCE_GUID) + AND (@SPEC_NAME IS NULL OR [SPEC_NAME] = @SPEC_NAME) + ) + + --========================================-- Final output resultset --========================================-- + SELECT TOP (10000) + [GUID], + [REFERENCE_GUID], + [ITEM_DESCRIPTION], + CASE + -- Normalize ITEM_VALUE for configured INVOICE_REFERENCE specs only + WHEN [CHK_SPEC].[IS_INVOICE_REFERENCE_SPEC] = 1 + THEN [NORM_EB].[NORMALIZED_EB_VALUE] + ELSE [OUT_RESULT_DATA].[ITEM_VALUE] + END AS [ITEM_VALUE], + [OUT_RESULT_DATA].[CREATEDWHEN], + [OUT_RESULT_DATA].[CREATEDWHO], + [OUT_RESULT_DATA].[CHANGEDWHEN], + [OUT_RESULT_DATA].[GROUP_COUNTER], + [OUT_RESULT_DATA].[SPEC_NAME], + [OUT_RESULT_DATA].[IS_REQUIRED], + [OUT_RESULT_DATA].[CHANGEDWHO], + [OUT_RESULT_DATA].[COMMENT], + [OUT_RESULT_DATA].[IS_FALLBACK], + CASE + -- Flag rows where configured EB fallback was actually applied + WHEN [CHK_SPEC].[IS_INVOICE_REFERENCE_SPEC] = 1 + AND + [CHK_SPEC].[ALLOW_FALLBACK] = 1 + AND + ( + ([CHK_SPEC].[CONFIGURED_FALLBACK_ITEM_VALUE] IS NULL AND [NORM_EB].[NORMALIZED_EB_VALUE] IS NULL) + OR [NORM_EB].[NORMALIZED_EB_VALUE] = [CHK_SPEC].[CONFIGURED_FALLBACK_ITEM_VALUE] + ) + THEN CAST(1 AS BIT) + ELSE CAST(0 AS BIT) + END AS [IS_EB_FALLBACK] + FROM ( + -- Real rows from source table + SELECT + [GUID], + [REFERENCE_GUID], + [ITEM_DESCRIPTION], + [ITEM_VALUE], + [CREATEDWHEN], + [CREATEDWHO], + [CHANGEDWHEN], + [GROUP_COUNTER], + [SPEC_NAME], + [IS_REQUIRED], + [CHANGEDWHO], + [COMMENT], + CAST(0 AS BIT) AS [IS_FALLBACK] + FROM [SRC_FILTERED_DATA] + + UNION ALL + + -- Failsafe row if source query returns no row + SELECT + CAST(0 AS BIGINT) AS [GUID], + ISNULL(@REFERENCE_GUID, N'FAILSAFE') AS [REFERENCE_GUID], + N'NO_DATA_FOUND' AS [ITEM_DESCRIPTION], + N'' AS [ITEM_VALUE], + GETDATE() AS [CREATEDWHEN], + N'SYSTEM' AS [CREATEDWHO], + NULL AS [CHANGEDWHEN], + CAST(0 AS INT) AS [GROUP_COUNTER], + ISNULL(@SPEC_NAME, N'FAILSAFE') AS [SPEC_NAME], + CAST(0 AS BIT) AS [IS_REQUIRED], + 'SYSTEM' AS [CHANGEDWHO], + 'FAILSAFE_ROW_RETURNED' AS [COMMENT], + CAST(1 AS BIT) AS [IS_FALLBACK] + WHERE NOT EXISTS (SELECT 1 FROM [SRC_FILTERED_DATA]) + ) AS [OUT_RESULT_DATA] + + --===================================-- Resolve spec configuration --===================================-- + OUTER APPLY ( + SELECT TOP (1) + v.[SPEC_NAME] AS [MATCHED_SPEC_NAME], + v.[FALLBACK_ITEM_VALUE] AS [CONFIGURED_FALLBACK_ITEM_VALUE], + v.[ALLOW_FALLBACK] AS [ALLOW_FALLBACK] + FROM [CFG_INVOICE_REFERENCE_SPEC] v + WHERE v.[SPEC_NAME] = UPPER(CONVERT(NVARCHAR(200), ISNULL([OUT_RESULT_DATA].[SPEC_NAME], N''))) + ) AS [CFG_SPEC] + + --=============================-- Derived check flags and fallback value --=============================-- + CROSS APPLY ( + SELECT + CASE + WHEN [CFG_SPEC].[MATCHED_SPEC_NAME] IS NULL THEN CAST(0 AS BIT) + ELSE CAST(1 AS BIT) + END AS [IS_INVOICE_REFERENCE_SPEC], + [CFG_SPEC].[CONFIGURED_FALLBACK_ITEM_VALUE] AS [CONFIGURED_FALLBACK_ITEM_VALUE], + ISNULL([CFG_SPEC].[ALLOW_FALLBACK], CAST(0 AS BIT)) AS [ALLOW_FALLBACK] + ) AS [CHK_SPEC] + + --=============================-- Preprocessing for EB pattern matching --=============================-- + CROSS APPLY ( + SELECT LTRIM(RTRIM(ISNULL([OUT_RESULT_DATA].[ITEM_VALUE], N''))) AS [CLEAN_ITEM_VALUE] + ) AS [VAL_CLEAN] + + CROSS APPLY ( + SELECT N' ' + [VAL_CLEAN].[CLEAN_ITEM_VALUE] + N' ' AS [PADDED_ITEM_VALUE] + ) AS [VAL_PADDED] + + CROSS APPLY ( + -- Match EB + 8 digits with non-digit boundaries left and right + SELECT PATINDEX( + N'%[^0-9]EB[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%', + [VAL_PADDED].[PADDED_ITEM_VALUE] + ) AS [EB_PATTERN_POS] + ) AS [PAT_EB] + + --====================================-- Normalize EB output value --====================================-- + CROSS APPLY ( + SELECT + CASE + -- Exact EB value + WHEN [VAL_CLEAN].[CLEAN_ITEM_VALUE] LIKE N'EB[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' + THEN [VAL_CLEAN].[CLEAN_ITEM_VALUE] + + -- Extract EB value from a longer free-text string + WHEN [PAT_EB].[EB_PATTERN_POS] > 0 + THEN SUBSTRING([VAL_PADDED].[PADDED_ITEM_VALUE], [PAT_EB].[EB_PATTERN_POS] + 1, 10) + + -- No valid EB found: fallback if allowed, otherwise keep original value + ELSE CASE + WHEN [CHK_SPEC].[ALLOW_FALLBACK] = 1 THEN [CHK_SPEC].[CONFIGURED_FALLBACK_ITEM_VALUE] + ELSE [OUT_RESULT_DATA].[ITEM_VALUE] + END + END AS [NORMALIZED_EB_VALUE] + ) AS [NORM_EB] + + --=========================================-- Default result ordering --=========================================-- + ORDER BY [GROUP_COUNTER] ASC +); + +/*** +-- Test + + SELECT * from dbo.[FNCUST_GET_EDMI_ITEM_VALUE] ('ERw202602090942454286171lfelsburg','INVOICE_TAXPOS_RATE') + +***/ \ No newline at end of file diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_DATA_AS_JSON].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_DATA_AS_JSON].sql new file mode 100644 index 0000000..5adf1fb --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_DATA_AS_JSON].sql @@ -0,0 +1,249 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- [FNCUST_GET_INVOICE_DATA_AS_JSON] +-- ================================================================= +-- Reads invoice data from relational tables and returns a normalized +-- JSON response matching the CreateInvoice_Request structure. +-- +-- Parameters: +-- @pMANDATOR NVARCHAR(5) Mandant (e.g. 'SWE') +-- @pIDB_OBJECT_ID BIGINT windream Document ID +-- @pORDER_NR NVARCHAR(25) Order number from NAV +-- @pDATA_SEPERATOR NVARCHAR(1) Separator character (e.g. '~') +-- @pWD_VKR_POSTING_DESCRIPTION NVARCHAR(25) Vector string for posting description +-- @pWD_VKR_ACCOUNTING NVARCHAR(25) Vector string for accounting +-- Returns: TABLE (success BIT, message NVARCHAR(MAX), data NVARCHAR(MAX)) +-- ================================================================= +-- Copyright (c) 2026 by Digital Data GmbH +-- +-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim +-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works +-- ================================================================= +-- Creation Date / Author: 26.02.2026 / MK +-- Version Date / Editor: 03.03.2026 / MK +-- Version Number: 1.3.0.0 +-- ================================================================= +-- History: +-- 03.03.2026 / MK - Replaced STRING_ESCAPE with REPLACE to preserve +-- Unicode characters (umlauts, +) in JSON output +-- 03.03.2026 / MK - Wrapped JSON output in {"data":"..."} envelope matching +-- CreateInvoice_Request template +-- 03.03.2026 / MK - Removed unreachable WHEN 2 validation branch; removed commented-out +-- WITH SCHEMABINDING; fixed header parameter documentation +-- 26.02.2026 / MK - First Version + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_INVOICE_DATA_AS_JSON]( + @pMANDATOR NVARCHAR(5), -- SWE + @pIDB_OBJECT_ID BIGINT, -- windream Doc ID + @pORDER_NR NVARCHAR(25), -- Bestellnr aus NAV + @pDATA_SEPERATOR NVARCHAR(1), -- ~ + @pDATA_SEPERATOR_TAX NVARCHAR(3), -- ' - ' + @pWD_VKR_POSTING_DESCRIPTION NVARCHAR(25), -- 'Vektor String 054' + @pWD_IDX_POSTING_DESCRIPTION NVARCHAR(25), -- 'Beschreibung' + @pWD_VKR_ACCOUNTING NVARCHAR(25) -- 'Vektor String 422' +) +RETURNS TABLE +AS +RETURN +( + SELECT + --=========================================================-- success --=========================================================-- + success = CAST(IIF(HEAD.HEAD_STATUS = 0, 1, 0) AS BIT), + + --=========================================================-- message --=========================================================-- + message = CAST( + CASE HEAD.HEAD_STATUS + WHEN 1 THEN N'Kein PurchaseDocument mit [IDB_OBJECT_ID] = ' + CAST(@pIDB_OBJECT_ID AS NVARCHAR(20)) + N' gefunden.' + ELSE N'Daten erfolgreich verarbeitet.' + END + AS NVARCHAR(MAX)), + + --===========================================================-- data --==========================================================-- + data = CAST( + CASE WHEN HEAD.HEAD_STATUS >= 1 THEN NULL -- No Head data found + WHEN HEAD.HEAD_STATUS = 0 AND POS.POS_STATUS >= 1 THEN -- Head data found, no pos data found + + --===========================================-- Build output JSON without pos data --============================================-- + + N'{"data":"' + REPLACE(REPLACE( + ( + SELECT + JSON_QUERY( + COALESCE( + ( + SELECT + [documentType] = [INVOICE_HEAD].[DocumentType] + , [no] = [INVOICE_HEAD].[No] + , [noSeries] = [INVOICE_HEAD].[NoSeries] + , [processIDTransfer] = [INVOICE_HEAD].[ProcessIDTransfer] + , [buyFromVendorNo] = [INVOICE_HEAD].[BuyFromVendorNo] + , [payToVendorNo] = [INVOICE_HEAD].[PayToVendorNo] + , [postingDate] = [INVOICE_HEAD].[PostingDate] + , [paymentTermsCode] = [INVOICE_HEAD].[PaymentTermsCode] + --, [paymentTermsCodeIR] = [INVOICE_HEAD].[PaymentTermsCodeIR] + , [dueDate] = [INVOICE_HEAD].[DueDate] + , [pmtDiscountDate] = [INVOICE_HEAD].[PmtDiscountDate] + , [paymentDiscount] = [INVOICE_HEAD].[PaymentDiscount] + --, [paymentDiscountIR] = [INVOICE_HEAD].[PaymentDiscountIR] + , [currencyCode] = [INVOICE_HEAD].[CurrencyCode] + , [invoiceDiscCode] = [INVOICE_HEAD].[InvoiceDiscCode] + , [postingDescription] = [INVOICE_HEAD].[PostingDescription] + , [paymentMethodCode] = [INVOICE_HEAD].[PaymentMethodCode] + , [vendorInvoiceNo] = [INVOICE_HEAD].[VendorInvoiceNo] + , [vendorCrMemoNo] = [INVOICE_HEAD].[VendorCrMemoNo] + , [phrVendorBankAccountCode] = [INVOICE_HEAD].[PhrVendorBankAccountCode] + , [phrBankBranchNo] = [INVOICE_HEAD].[PhrBankBranchNo] + , [phrBankAccountNo] = [INVOICE_HEAD].[PhrBankAccountNo] + , [phrIBAN] = [INVOICE_HEAD].[PhrIBAN] + , [phrSWIFTCode] = [INVOICE_HEAD].[PhrSWIFTCode] + , [phrBankName] = [INVOICE_HEAD].[PhrBankName] + , [phrBankAccountEntryPriority] = [INVOICE_HEAD].[PhrBankAccountEntryPriority] + , [phrRMCashDiscountReceived] = [INVOICE_HEAD].[PhrRMCashDiscountReceived] + , [phrRMAmountIncludingVAT] = [INVOICE_HEAD].[PhrRMAmountIncludingVAT] + , [phrRMAmountLessDiscount] = [INVOICE_HEAD].[PhrRMAmountLessDiscount] + + FROM [dbo].[FNCUST_GET_INVOICE_HEAD_TRANSFER](@pMANDATOR,@pIDB_OBJECT_ID,@pORDER_NR,@pWD_IDX_POSTING_DESCRIPTION,@pWD_VKR_POSTING_DESCRIPTION) as [INVOICE_HEAD] + WHERE [INVOICE_HEAD].[IDB_OBJECT_ID] = @pIDB_OBJECT_ID + ORDER BY [INVOICE_HEAD].[IDB_OBJECT_ID] + FOR JSON PATH, INCLUDE_NULL_VALUES + ) + , '[]' + ) + ) AS purchaseDocuments + FOR JSON PATH, WITHOUT_ARRAY_WRAPPER + ) + , N'\', N'\\'), N'"', N'\"') + N'"}' + + ELSE + --=============================================-- Build output JSON with pos data --=============================================-- + N'{"data":"' + REPLACE(REPLACE( + ( + SELECT + JSON_QUERY( + COALESCE( + ( + SELECT + [documentType] = [INVOICE_HEAD].[DocumentType] + , [no] = [INVOICE_HEAD].[No] + , [noSeries] = [INVOICE_HEAD].[NoSeries] + , [processIDTransfer] = [INVOICE_HEAD].[ProcessIDTransfer] + , [buyFromVendorNo] = [INVOICE_HEAD].[BuyFromVendorNo] + , [payToVendorNo] = [INVOICE_HEAD].[PayToVendorNo] + , [postingDate] = [INVOICE_HEAD].[PostingDate] + , [paymentTermsCode] = [INVOICE_HEAD].[PaymentTermsCode] + --, [paymentTermsCodeIR] = [INVOICE_HEAD].[PaymentTermsCodeIR] + , [dueDate] = [INVOICE_HEAD].[DueDate] + , [pmtDiscountDate] = [INVOICE_HEAD].[PmtDiscountDate] + , [paymentDiscount] = [INVOICE_HEAD].[PaymentDiscount] + --, [paymentDiscountIR] = [INVOICE_HEAD].[PaymentDiscountIR] + , [currencyCode] = [INVOICE_HEAD].[CurrencyCode] + , [invoiceDiscCode] = [INVOICE_HEAD].[InvoiceDiscCode] + , [postingDescription] = [INVOICE_HEAD].[PostingDescription] + , [paymentMethodCode] = [INVOICE_HEAD].[PaymentMethodCode] + , [vendorInvoiceNo] = [INVOICE_HEAD].[VendorInvoiceNo] + , [vendorCrMemoNo] = [INVOICE_HEAD].[VendorCrMemoNo] + , [phrVendorBankAccountCode] = [INVOICE_HEAD].[PhrVendorBankAccountCode] + , [phrBankBranchNo] = [INVOICE_HEAD].[PhrBankBranchNo] + , [phrBankAccountNo] = [INVOICE_HEAD].[PhrBankAccountNo] + , [phrIBAN] = [INVOICE_HEAD].[PhrIBAN] + , [phrSWIFTCode] = [INVOICE_HEAD].[PhrSWIFTCode] + , [phrBankName] = [INVOICE_HEAD].[PhrBankName] + , [phrBankAccountEntryPriority] = [INVOICE_HEAD].[PhrBankAccountEntryPriority] + , [phrRMCashDiscountReceived] = [INVOICE_HEAD].[PhrRMCashDiscountReceived] + , [phrRMAmountIncludingVAT] = [INVOICE_HEAD].[PhrRMAmountIncludingVAT] + , [phrRMAmountLessDiscount] = [INVOICE_HEAD].[PhrRMAmountLessDiscount] + , purchaseLines = JSON_QUERY( + COALESCE( + ( + SELECT + [attachedToLineNo] = [INVOICE_POS].[AttachedToLineNo] + , [type] = [INVOICE_POS].[Type] + , [no] = [INVOICE_POS].[No] + , [description] = [INVOICE_POS].[Description] + , [description2] = [INVOICE_POS].[Description2] + , [locationCode] = [INVOICE_POS].[LocationCode] + , [variantCode] = [INVOICE_POS].[VariantCode] + , [quantity] = [INVOICE_POS].[Quantity] + , [unitOfMeasureCode] = [INVOICE_POS].[UnitOfMeasureCode] + , [directUnitCost] = [INVOICE_POS].[DirectUnitCost] + , [lineDiscount] = [INVOICE_POS].[LineDiscount] + , [ableToDiscount] = [INVOICE_POS].[AbleToDiscount] + , [discountCalculated] = [INVOICE_POS].[DiscountCalculated] + , [workOrderNo] = [INVOICE_POS].[WorkOrderNo] + , [genBusPostingGroup] = [INVOICE_POS].[GenBusPostingGroup] + , [genProdPostingGroup] = [INVOICE_POS].[GenProdPostingGroup] + , [vatBusPostingGroup] = [INVOICE_POS].[VatBusPostingGroup] + , [vatProdPostingGroup] = [INVOICE_POS].[VatProdPostingGroup] + , [applToItemEntry] = [INVOICE_POS].[ApplToItemEntry] + , [postingWithoutApply] = [INVOICE_POS].[PostingWithoutApply] + , [anticipatedPayment] = [INVOICE_POS].[AnticipatedPayment] + , [receiptNo] = [INVOICE_POS].[ReceiptNo] + , [receiptLineNo] = [INVOICE_POS].[ReceiptLineNo] + , [irOrderNo] = [INVOICE_POS].[IrOrderNo] + , [irOrderLineNo] = [INVOICE_POS].[IrOrderLineNo] + + FROM [dbo].[FNCUST_GET_INVOICE_POS_TRANSFER](@pMANDATOR,@pIDB_OBJECT_ID,@pORDER_NR,@pDATA_SEPERATOR,@pDATA_SEPERATOR_TAX,@pWD_VKR_ACCOUNTING) as [INVOICE_POS] + WHERE [INVOICE_POS].[IDB_OBJECT_ID] = [INVOICE_HEAD].[IDB_OBJECT_ID] + ORDER BY [INVOICE_POS].[attachedToLineNo] + FOR JSON PATH, INCLUDE_NULL_VALUES + ) + , '[]' + ) + ) + FROM [dbo].[FNCUST_GET_INVOICE_HEAD_TRANSFER](@pMANDATOR,@pIDB_OBJECT_ID,@pORDER_NR,@pWD_IDX_POSTING_DESCRIPTION,@pWD_VKR_POSTING_DESCRIPTION) as [INVOICE_HEAD] + WHERE [INVOICE_HEAD].[IDB_OBJECT_ID] = @pIDB_OBJECT_ID + ORDER BY [INVOICE_HEAD].[IDB_OBJECT_ID] + FOR JSON PATH, INCLUDE_NULL_VALUES + ) + , '[]' + ) + ) AS purchaseDocuments + FOR JSON PATH, WITHOUT_ARRAY_WRAPPER + ) + , N'\', N'\\'), N'"', N'\"') + N'"}' + ----------------------------------------------------------------------------------------------------------------------------------- + END + AS NVARCHAR(MAX)) + + FROM (VALUES (1)) AS src(x) + + CROSS APPLY ( + --====================================================-- Validate head input --===================================================-- + SELECT HEAD_STATUS = CASE + WHEN NOT EXISTS (SELECT 1 FROM [dbo].[FNCUST_GET_INVOICE_HEAD_TRANSFER](@pMANDATOR,@pIDB_OBJECT_ID,@pORDER_NR,@pWD_IDX_POSTING_DESCRIPTION,@pWD_VKR_POSTING_DESCRIPTION) WHERE [IDB_OBJECT_ID] = @pIDB_OBJECT_ID) + THEN 1 + ELSE 0 + END + ----------------------------------------------------------------------------------------------------------------------------------- + ) AS HEAD + + CROSS APPLY ( + --====================================================-- Validate pos input --====================================================-- + SELECT POS_STATUS = CASE + WHEN NOT EXISTS (SELECT 1 FROM [dbo].[FNCUST_GET_INVOICE_POS_TRANSFER](@pMANDATOR,@pIDB_OBJECT_ID,@pORDER_NR,@pDATA_SEPERATOR,@pDATA_SEPERATOR_TAX,@pWD_VKR_ACCOUNTING) WHERE [IDB_OBJECT_ID] = @pIDB_OBJECT_ID AND ISNULL([quantity],0) > 0) + THEN 1 + ELSE 0 + END + ----------------------------------------------------------------------------------------------------------------------------------- + ) AS POS + +); +GO + +/*** +-- Test: + + SELECT * FROM dbo.FNCUST_GET_INVOICE_DATA_AS_JSON('SWE',9208855,'EB00020596','~',' - ','Vektor String 054','Beschreibung','Vektor String 422') + SELECT * FROM dbo.FNCUST_GET_INVOICE_DATA_AS_JSON('SWE',9209044,'EB00021040','~',' - ','Vektor String 054','Beschreibung','Vektor String 422') + + SELECT * FROM dbo.FNCUST_GET_INVOICE_DATA_AS_JSON('SWE',9229975,'EB00021129','~',' - ','Vektor String 054','Beschreibung','Vektor String 422') + + SELECT * FROM dbo.FNCUST_GET_INVOICE_DATA_AS_JSON('SWE',9209045,'EB9999999','~',' - ','Vektor String 054','Beschreibung','Vektor String 422') + +***/ \ No newline at end of file diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_HEAD_TRANSFER].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_HEAD_TRANSFER].sql new file mode 100644 index 0000000..8599164 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_HEAD_TRANSFER].sql @@ -0,0 +1,552 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- HE, MK // 23.03.2026 +-- 23.03.2026 HE, MK Initial + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_INVOICE_HEAD_TRANSFER] ( + @pMANDATOR NVARCHAR(5), + @pIDB_OBJECT_ID BIGINT, + @pORDER_NR NVARCHAR(25), + @pWD_IDX_POSTING_DESCRIPTION NVARCHAR(25), -- = 'Beschreibung'; + @pWD_VKR_POSTING_DESCRIPTION NVARCHAR(25) -- = 'Vektor String 054'; +) +RETURNS @vTB_INVOICE_HEAD_TRANSFER TABLE ([GUID] [BIGINT] IDENTITY(1,1) NOT NULL, + [IDB_OBJECT_ID] [BIGINT] NOT NULL, + [documentType] [INT] NOT NULL, + [no] [NVARCHAR](20) NULL, + [noSeries] [NVARCHAR](20) NOT NULL, + [processIDTransfer] [NVARCHAR](25) NOT NULL, + [buyFromVendorNo] [NVARCHAR](20) NOT NULL, + [payToVendorNo] [NVARCHAR](20) NOT NULL, + [postingDate] [NVARCHAR](10) NULL, + [paymentTermsCode] [NVARCHAR](10) NULL, + [paymentTermsCodeIR] [NVARCHAR](10) NULL, + [dueDate] [DATE] NULL, + [pmtDiscountDate] [DATE] NULL, + [paymentDiscount] [DECIMAL](38,2) NULL, + [paymentDiscountIR] [DECIMAL](38,2) NULL, + [currencyCode] [NVARCHAR](10) NULL, + [invoiceDiscCode] [NVARCHAR](20) NULL, + [postingDescription] [NVARCHAR](100) NULL, + [paymentMethodCode] [NVARCHAR](10) NULL, + [vendorInvoiceNo] [NVARCHAR](35) NOT NULL, + [vendorCrMemoNo] [NVARCHAR](35) NULL, + [phrVendorBankAccountCode] [NVARCHAR](20) NULL, + [phrBankBranchNo] [NVARCHAR](20) NULL, + [phrBankAccountNo] [NVARCHAR](30) NULL, + [phrIBAN] [NVARCHAR](50) NULL, + [phrSWIFTCode] [NVARCHAR](20) NULL, + [phrBankName] [NVARCHAR](100) NULL, + [phrBankAccountEntryPriority] [BIT] NULL, + [phrRMCashDiscountReceived] [BIT] NULL, + [phrRMAmountIncludingVAT] [DECIMAL](38,2) NULL, + [phrRMAmountLessDiscount] [DECIMAL](38,2) NULL) +AS +BEGIN + + -- declare new vars because of parameter sniffing + DECLARE @MANDATOR NVARCHAR(5) = UPPER(LTRIM(RTRIM(@pMANDATOR))), + @IDB_OBJECT_ID BIGINT = @pIDB_OBJECT_ID, + @ORDER_NR NVARCHAR(25) = LTRIM(RTRIM(@pORDER_NR)), + @WD_IDX_POSTING_DESCRIPTION NVARCHAR(25) = LTRIM(RTRIM(@pWD_IDX_POSTING_DESCRIPTION)), + @WD_VKR_POSTING_DESCRIPTION NVARCHAR(25) = LTRIM(RTRIM(@pWD_VKR_POSTING_DESCRIPTION)); + + -- declare runtime vars + DECLARE @MY_FUNCTION_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID), + @POSTING_DESCRIPTION NVARCHAR(1000) = NULL; + + + SET @POSTING_DESCRIPTION = (SELECT TOP 1 LTRIM(RTRIM([VALUE])) FROM [FNDD_GET_WINDREAM_INDEX_VALUES](@IDB_OBJECT_ID,@WD_IDX_POSTING_DESCRIPTION,'; ',0,0)); + + IF (LEN(@POSTING_DESCRIPTION) > 0) BEGIN + + SET @POSTING_DESCRIPTION += '; '; + SET @POSTING_DESCRIPTION += (SELECT TOP 1 LTRIM(RTRIM([VALUE])) FROM [FNDD_GET_WINDREAM_INDEX_VALUES](@IDB_OBJECT_ID,@WD_VKR_POSTING_DESCRIPTION,'; ',0,0)); + + END ELSE BEGIN + + SET @POSTING_DESCRIPTION = (SELECT TOP 1 LTRIM(RTRIM([VALUE])) FROM [FNDD_GET_WINDREAM_INDEX_VALUES](@IDB_OBJECT_ID,@WD_VKR_POSTING_DESCRIPTION,'; ',0,0)); + + END; + + + -------------------------- Nav Feld ist nur 100 Zeichen groß -------------------------- + IF (LEN(@POSTING_DESCRIPTION) > 0) BEGIN + SET @POSTING_DESCRIPTION = Replace(@POSTING_DESCRIPTION,' ',' '); + SET @POSTING_DESCRIPTION = Replace(@POSTING_DESCRIPTION,char(13),' '); + SET @POSTING_DESCRIPTION = LEFT(@POSTING_DESCRIPTION,100); + END; + --------------------------------------------------------------------------------------- + + + IF ((@MANDATOR = 'SWE') AND ((@ORDER_NR <> 'EB9999999') AND (@ORDER_NR IS NOT NULL))) BEGIN -- Mit Bestelldaten aus NAV + + INSERT INTO @vTB_INVOICE_HEAD_TRANSFER ([IDB_OBJECT_ID], + [documentType], + [no], + [noSeries], + [processIDTransfer], + [buyFromVendorNo], + [payToVendorNo], + [postingDate], + [paymentTermsCode], + [paymentTermsCodeIR], + [dueDate], + [pmtDiscountDate], + [paymentDiscount], + [paymentDiscountIR], + [currencyCode], + [invoiceDiscCode], + [postingDescription], + [paymentMethodCode], + [vendorInvoiceNo], + [vendorCrMemoNo], + [phrVendorBankAccountCode], + [phrBankBranchNo], + [phrBankAccountNo], + [phrIBAN], + [phrSWIFTCode], + [phrBankName], + [phrBankAccountEntryPriority], + [phrRMCashDiscountReceived], + [phrRMAmountIncludingVAT], + [phrRMAmountLessDiscount]) + + SELECT @pIDB_OBJECT_ID as 'IDB_OBJECT_ID', + + CASE + WHEN 1=1 + THEN 2 + ELSE 0 + END as 'documentType', + + CASE + WHEN 1=1 + THEN '' + ELSE 'dummy' + END as 'no', + + CASE + WHEN 1=1 + THEN 'E-RE' + ELSE '' + END as 'noSeries', + + CASE + WHEN 1=1 + THEN 'TEST' + ELSE '' + END as 'processIDTransfer', + + CASE + WHEN LEN(LTRIM(RTRIM([BaseAttributes].[szText35]))) > 0 + THEN LTRIM(RTRIM([BaseAttributes].[szText35])) + ELSE '' + END as 'buyFromVendorNo', + + CASE + WHEN LEN(LTRIM(RTRIM([BaseAttributes].[szText35]))) > 0 + THEN LTRIM(RTRIM([BaseAttributes].[szText35])) + ELSE '' + END as 'payToVendorNo', + + CASE + WHEN LEN(CONVERT(nvarchar(25), LEFT([BaseAttributes].[dwDate08],8))) > 0 + THEN CONVERT(date, LEFT([BaseAttributes].[dwDate08], 8), 112) + ELSE convert(date,(getdate())) + END as 'postingDate', + + CASE + WHEN LEN([PurchaseHeader].[Payment Terms Code]) > 0 + THEN [PurchaseHeader].[Payment Terms Code] + ELSE '' + END as 'paymentTermsCode', + + CASE + WHEN 1=1 + THEN '' + ELSE 'dummy' + END as 'paymentTermsCodeIR', + + CASE + WHEN LEN(CONVERT(nvarchar(25), LEFT([BaseAttributes].[dwDate06],8))) > 0 + THEN CONVERT(date, LEFT([BaseAttributes].[dwDate06], 8), 112) + ELSE NULL + END as 'dueDate', + + CASE + WHEN [BaseAttributes].[dwInteger23] > 0 + THEN DATEADD(day,-[BaseAttributes].[dwInteger23],CONVERT(date, LEFT([BaseAttributes].[decCreationTime], 8), 112)) + ELSE '' + END as 'pmtDiscountDate', + + CASE + WHEN [BaseAttributes].[lfFloat09] > 0 -- Skonto Prozent + THEN [BaseAttributes].[lfFloat09] + ELSE 0 + END as 'paymentDiscount', + + --CASE + -- WHEN (([BaseAttributes].[dwInteger23] > 0) AND ([BaseAttributes].[lfFloat09] > 0) AND ([BaseAttributes].[lfFloat08] > 0)) -- Skontotage | Skonto Prozent | Skontierbare Betrag + -- THEN [BaseAttributes].[lfFloat08] / 100 * ([BaseAttributes].[lfFloat09]) + -- ELSE 0 + --END as 'paymentDiscount', + + CASE + WHEN 1=1 + THEN 0 + ELSE 'dummy' + END as 'paymentDiscountIR', + + CASE + WHEN LEN([PurchaseHeader].[Currency Code]) > 0 + THEN [PurchaseHeader].[Currency Code] + ELSE '' + END as 'currencyCode', + + CASE + WHEN LEN([PurchaseHeader].[Invoice Disc_ Code]) > 0 + THEN [PurchaseHeader].[Invoice Disc_ Code] + ELSE '' + END as 'invoiceDiscCode', + + CASE + WHEN LEN(@POSTING_DESCRIPTION) > 0 + THEN @POSTING_DESCRIPTION + ELSE '' + END as 'postingDescription', + + CASE + WHEN LEN([PurchaseHeader].[Payment Method Code]) > 0 + THEN [PurchaseHeader].[Payment Method Code] + ELSE '' + END as 'paymentMethodCode', + + CASE + WHEN LEN([BaseAttributes].[szText37]) > 0 + THEN LTRIM(RTRIM([BaseAttributes].[szText37])) + ELSE '' + END as 'vendorInvoiceNo', + + CASE + WHEN LEN([PurchaseHeader].[Vendor Cr_ Memo No_]) > 0 + THEN [PurchaseHeader].[Vendor Cr_ Memo No_] + ELSE '' + END as 'vendorCrMemoNo', + + CASE + WHEN LEN([VendorBankAccount].[Code]) > 0 + THEN [VendorBankAccount].[Code] + ELSE '' + END as 'phrVendorBankAccountCode', + + CASE + WHEN LEN([VendorBankAccount].[Bank Branch No_]) > 0 + THEN [VendorBankAccount].[Bank Branch No_] + ELSE '' + END as 'phrBankBranchNo', + + CASE + WHEN LEN([VendorBankAccount].[Bank Account No_]) > 0 + THEN [VendorBankAccount].[Bank Account No_] + ELSE '' + END as 'phrBankAccountNo', + + CASE + WHEN LEN([VendorBankAccount].[IBAN]) > 0 + THEN [VendorBankAccount].[IBAN] + ELSE '' + END as 'phrIBAN', + + CASE + WHEN LEN([VendorBankAccount].[SWIFT Code]) > 0 + THEN [VendorBankAccount].[SWIFT Code] + ELSE '' + END as 'phrSWIFTCode', + + CASE + WHEN LEN([VendorBankAccount].[Name]) > 0 + THEN [VendorBankAccount].[Name] + ELSE '' + END as 'phrBankName', + + CASE + WHEN 1=1 + THEN 0 + ELSE 1 + END as 'phrBankAccountEntryPriority', + + CASE + WHEN 1=1 + THEN 0 + ELSE 1 + END as 'phrRMCashDiscountReceived', + + CASE + WHEN LEN(convert(NVARCHAR(25),[BaseAttributes].[lfFloat13])) > 0 + THEN convert(decimal(38,2),replace(convert(NVARCHAR(25),[BaseAttributes].[lfFloat13]),',','.')) + ELSE 0 + END as 'phrRMAmountIncludingVAT', + + CASE + WHEN LEN(convert(NVARCHAR(25),[BaseAttributes].[lfFloat12])) > 0 + THEN convert(decimal(38,2),replace(convert(NVARCHAR(25),[BaseAttributes].[lfFloat12]),',','.')) + ELSE 0 + END as 'phrRMAmountLessDiscount' + + FROM [windreamDB].[dbo].[BaseAttributes] as [BaseAttributes] WITH (NOLOCK) + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PurchaseHeader] ON [BaseAttributes].[szText36] COLLATE DATABASE_DEFAULT = [PurchaseHeader].[No_] COLLATE DATABASE_DEFAULT + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor$437dbf0e-84ff-417a-965d-ed2bb9650972] as [Vendor] ON [PurchaseHeader].[Pay-to Vendor No_] = [Vendor].[No_] + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] as [VendorExt] ON [Vendor].[No_] = [VendorExt].[No_] + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] as [VendorBankAccountExt] ON [Vendor].[No_] = [VendorBankAccountExt].[Vendor No_] AND [WLK Clearing$408c5b32-694e-47bb-96d5-dad7fc8111a7] = 1 + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972] as [VendorBankAccount] ON [Vendor].[No_] = [VendorBankAccount].[Vendor No_] AND [VendorBankAccount].[Code] = [VendorBankAccountExt].[Code] + + WHERE [BaseAttributes].[dwDocID] = @IDB_OBJECT_ID; -- test mit 9174258 + + END ELSE IF (@MANDATOR = 'SWE') BEGIN -- Ohne Bestelldaten aus NAV + + INSERT INTO @vTB_INVOICE_HEAD_TRANSFER ([IDB_OBJECT_ID], + [documentType], + [no], + [noSeries], + [processIDTransfer], + [buyFromVendorNo], + [payToVendorNo], + [postingDate], + [paymentTermsCode], + [paymentTermsCodeIR], + [dueDate], + [pmtDiscountDate], + [paymentDiscount], + [paymentDiscountIR], + [currencyCode], + [invoiceDiscCode], + [postingDescription], + [paymentMethodCode], + [vendorInvoiceNo], + [vendorCrMemoNo], + [phrVendorBankAccountCode], + [phrBankBranchNo], + [phrBankAccountNo], + [phrIBAN], + [phrSWIFTCode], + [phrBankName], + [phrBankAccountEntryPriority], + [phrRMCashDiscountReceived], + [phrRMAmountIncludingVAT], + [phrRMAmountLessDiscount]) + + SELECT @pIDB_OBJECT_ID as 'IDB_OBJECT_ID', + + CASE + WHEN 1=1 + THEN 2 + ELSE 0 + END as 'documentType', + + CASE + WHEN 1=1 + THEN '' + ELSE 'dummy' + END as 'no', + + CASE + WHEN 1=1 + THEN 'E-RE' + ELSE '' + END as 'noSeries', + + CASE + WHEN 1=1 + THEN 'TEST' + ELSE '' + END as 'processIDTransfer', + + CASE + WHEN LEN(LTRIM(RTRIM([BaseAttributes].[szText35]))) > 0 + THEN LTRIM(RTRIM([BaseAttributes].[szText35])) + ELSE '' + END as 'buyFromVendorNo', + + CASE + WHEN LEN(LTRIM(RTRIM([BaseAttributes].[szText35]))) > 0 + THEN LTRIM(RTRIM([BaseAttributes].[szText35])) + ELSE '' + END as 'payToVendorNo', + + CASE + WHEN LEN(CONVERT(nvarchar(25), LEFT([BaseAttributes].[dwDate08],8))) > 0 + THEN CONVERT(date, LEFT([BaseAttributes].[dwDate08], 8), 112) + ELSE convert(date,(getdate())) + END as 'postingDate', + + CASE + WHEN 1=1 + THEN '' + ELSE 'dummy' + END as 'paymentTermsCode', + + CASE + WHEN 1=1 + THEN '' + ELSE 'dummy' + END as 'paymentTermsCodeIR', + + CASE + WHEN LEN(CONVERT(nvarchar(25), LEFT([BaseAttributes].[dwDate06],8))) > 0 + THEN CONVERT(date, LEFT([BaseAttributes].[dwDate06], 8), 112) + ELSE '' + END as 'dueDate', + + CASE + WHEN [BaseAttributes].[dwInteger23] > 0 + THEN DATEADD(day,-[BaseAttributes].[dwInteger23],CONVERT(date, LEFT([BaseAttributes].[decCreationTime], 8), 112)) + ELSE '' + END as 'pmtDiscountDate', + + CASE + WHEN [BaseAttributes].[lfFloat09] > 0 -- Skonto Prozent + THEN [BaseAttributes].[lfFloat09] + ELSE 0 + END as 'paymentDiscount', + + --CASE + -- WHEN (([BaseAttributes].[dwInteger23] > 0) AND ([BaseAttributes].[lfFloat09] > 0) AND ([BaseAttributes].[lfFloat08] > 0)) -- Skontotage | Skonto Prozent | Skontierbare Betrag + -- THEN [BaseAttributes].[lfFloat08] / 100 * ([BaseAttributes].[lfFloat09]) + -- ELSE 0 + --END as 'paymentDiscount', + + CASE + WHEN 1=1 + THEN 0 + ELSE 'dummy' + END as 'paymentDiscountIR', + + CASE + WHEN 1=1 + THEN '' + ELSE 'dummy' + END as 'currencyCode', + + CASE + WHEN 1=1 + THEN '' + ELSE 'dummy' + END as 'invoiceDiscCode', + + CASE + WHEN LEN(@POSTING_DESCRIPTION) > 0 + THEN @POSTING_DESCRIPTION + ELSE '' + END as 'postingDescription', + + CASE + WHEN 1=1 + THEN '' + ELSE 'dummy' + END as 'paymentMethodCode', + + CASE + WHEN LEN([BaseAttributes].[szText37]) > 0 + THEN LTRIM(RTRIM([BaseAttributes].[szText37])) + ELSE '' + END as 'vendorInvoiceNo', + + CASE + WHEN 1=1 + THEN '' + ELSE 'dummy' + END as 'vendorCrMemoNo', + + CASE + WHEN LEN([VendorBankAccount].[Code]) > 0 + THEN [VendorBankAccount].[Code] + ELSE '' + END as 'phrVendorBankAccountCode', + + CASE + WHEN LEN([VendorBankAccount].[Bank Branch No_]) > 0 + THEN [VendorBankAccount].[Bank Branch No_] + ELSE '' + END as 'phrBankBranchNo', + + CASE + WHEN LEN([VendorBankAccount].[Bank Account No_]) > 0 + THEN [VendorBankAccount].[Bank Account No_] + ELSE '' + END as 'phrBankAccountNo', + + CASE + WHEN LEN([VendorBankAccount].[IBAN]) > 0 + THEN [VendorBankAccount].[IBAN] + ELSE '' + END as 'phrIBAN', + + CASE + WHEN LEN([VendorBankAccount].[SWIFT Code]) > 0 + THEN [VendorBankAccount].[SWIFT Code] + ELSE '' + END as 'phrSWIFTCode', + + CASE + WHEN LEN([VendorBankAccount].[Name]) > 0 + THEN [VendorBankAccount].[Name] + ELSE '' + END as 'phrBankName', + + CASE + WHEN 1=1 + THEN 0 + ELSE 1 + END as 'phrBankAccountEntryPriority', + + CASE + WHEN 1=1 + THEN 0 + ELSE 1 + END as 'phrRMCashDiscountReceived', + + CASE + WHEN LEN(convert(NVARCHAR(25),[BaseAttributes].[lfFloat13])) > 0 + THEN convert(decimal(38,2),replace(convert(NVARCHAR(25),[BaseAttributes].[lfFloat13]),',','.')) + ELSE 0 + END as 'phrRMAmountIncludingVAT', + + CASE + WHEN LEN(convert(NVARCHAR(25),[BaseAttributes].[lfFloat12])) > 0 + THEN convert(decimal(38,2),replace(convert(NVARCHAR(25),[BaseAttributes].[lfFloat12]),',','.')) + ELSE 0 + END as 'phrRMAmountLessDiscount' + + FROM [windreamDB].[dbo].[BaseAttributes] as [BaseAttributes] WITH (NOLOCK) + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor$437dbf0e-84ff-417a-965d-ed2bb9650972] as [Vendor] ON [BaseAttributes].[szText35] COLLATE DATABASE_DEFAULT = [Vendor].[No_] COLLATE DATABASE_DEFAULT + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] as [VendorExt] ON [Vendor].[No_] = [VendorExt].[No_] + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] as [VendorBankAccountExt] ON [Vendor].[No_] = [VendorBankAccountExt].[Vendor No_] AND [WLK Clearing$408c5b32-694e-47bb-96d5-dad7fc8111a7] = 1 + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972] as [VendorBankAccount] ON [Vendor].[No_] = [VendorBankAccount].[Vendor No_] AND [VendorBankAccount].[Code] = [VendorBankAccountExt].[Code] + + WHERE [BaseAttributes].[dwDocID] = @IDB_OBJECT_ID; -- test mit 9174258 + + END; + + RETURN; + +END; + +/*** + -- TEST mit: + select * from [FNCUST_GET_INVOICE_HEAD_TRANSFER]('SWE',9208424,'EB00020596','Beschreibung','Vektor String 054') -- mit bestellnr + select * from [FNCUST_GET_INVOICE_HEAD_TRANSFER]('SWE',9209045,'EB9999999','Beschreibung','Vektor String 054') -- ohne bestellnr + select * from [FNCUST_GET_INVOICE_HEAD_TRANSFER]('SWE',9208424,NULL,'Beschreibung','Vektor String 054') -- ohne bestellnr + + select * from [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header$437dbf0e-84ff-417a-965d-ed2bb9650972] where [No_] = 'EB00020596' + select * from windreamDB.dbo.BaseAttributes where dwdocid = 9174258; + select * from [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor$437dbf0e-84ff-417a-965d-ed2bb9650972] where [No_] = 232102 + select * from [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972] where [Vendor No_] = 232102 +***/ +GO \ No newline at end of file diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_POS].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_POS].sql new file mode 100644 index 0000000..9dfd739 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_POS].sql @@ -0,0 +1,195 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- TSQL Table function for "Kontierungstabelle" + +-- MK // 24.02.2025 +-- 24.02.2025 Initial + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_INVOICE_POS] ( + @pEMAIL_MESSAGE_ID NVARCHAR(900), + @pDATA_SEPERATOR NVARCHAR(1) = '~', + @pDATA_SEPERATOR_TAX NVARCHAR(3) = ' - ' +) +RETURNS @vTB_INVOICE_POS TABLE ([GUID] INT IDENTITY(1,1) NOT NULL, + [CONTENT_CONCAT] NVARCHAR(max) NOT NULL, + [ORDER_POSITION_ARTICLE] NVARCHAR(50) NULL, + [INVOICE_POSITION_ARTICLE] NVARCHAR(50) NULL) +AS +BEGIN + + -- declare new vars because of parameter sniffing + DECLARE @MandatorShortName NVARCHAR(5) = 'SWE', + @EMAIL_MESSAGE_ID NVARCHAR(900) = UPPER(LTRIM(RTRIM(@pEMAIL_MESSAGE_ID))), + @DATA_SEPERATOR NVARCHAR(1) = UPPER(LTRIM(RTRIM(@pDATA_SEPERATOR))), + @DATA_SEPERATOR_TAX NVARCHAR(3) = ISNULL(@pDATA_SEPERATOR_TAX,' - '); + + DECLARE @INVOICE_POS_COUNTER INT, + @REFERENCE_GUID NVARCHAR(900), + @ITEM_DESCRIPTION NVARCHAR(900), + @ITEM_VALUE NVARCHAR(900), + @GROUP_COUNTER INT, + @COUNTER INT = 0, + @ACCOUNTING VARCHAR(900), + @ARTICLE_NR_EXT NVARCHAR(50), + @POS_AMOUNT DECIMAL(20,2), + @POS_SUM_NETTO DECIMAL(20,2), + @POS_TAX_CODE NVARCHAR(25), + @POS_TAX_RATE DECIMAL(20,2), + @POS_SUM_BRUTTO DECIMAL(20,2); + + DECLARE @ARTICLE_NR NVARCHAR(50), + @ORDER_NR NVARCHAR(50), + @ORDER_NR_FALLBACK NVARCHAR(50) = 'EB9999999', -- Dummy nr für Rechnungen ohne Bestellung + @WORK_ORDER_NR NVARCHAR(25), + @WORK_ORDER_NR_FALLBACK NVARCHAR(25) = 'A-99999999', -- Dummy nr für Lagerbestellungen + @POS_TAX_CODE_NAV_VAT19 NVARCHAR(25) = '19 - INL - 19.00%'; -- Standardwert aus NAV für 19% MwSt Inland + + SET @INVOICE_POS_COUNTER = (SELECT (MAX([GROUP_COUNTER])-1) as 'INVOICE_POS_COUNTER' FROM [TBEDMI_ITEM_VALUE] (NOLOCK) WHERE [REFERENCE_GUID] = LTRIM(RTRIM(@EMAIL_MESSAGE_ID))) + IF (@INVOICE_POS_COUNTER > 0) BEGIN + + SELECT @ORDER_NR = ITEM_VALUE + FROM dbo.TBEDMI_ITEM_VALUE (NOLOCK) + WHERE [SPEC_NAME] = 'INVOICE_REFERENCE' + AND [REFERENCE_GUID] = @EMAIL_MESSAGE_ID; + + DECLARE CURSOR_INVOICE_POS CURSOR + LOCAL FAST_FORWARD FOR + SELECT DISTINCT [REFERENCE_GUID], [GROUP_COUNTER] + FROM [TBEDMI_ITEM_VALUE] (NOLOCK) + WHERE [SPEC_NAME] IN ('INVOICE_POSITION_ARTICLE','INVOICE_POSITION_AMOUNT','INVOICE_POSITION_TAX_AMOUNT','INVOICE_TAXPOS_TAX_RATE') + AND [GROUP_COUNTER] > 1 + AND [REFERENCE_GUID] = @EMAIL_MESSAGE_ID; + -- OR [REFERENCE_GUID] = 'ERw202512091413384620257svcdigitaldata' -- TEST + + OPEN CURSOR_INVOICE_POS; + FETCH NEXT FROM CURSOR_INVOICE_POS INTO @REFERENCE_GUID, @GROUP_COUNTER; + WHILE @@FETCH_STATUS = 0 + BEGIN + + ----------------------------------------------------------------------------------------------------------------------------- + SET @COUNTER += 1 + SET @ACCOUNTING = NULL; + SET @POS_AMOUNT = NULL; + SET @POS_SUM_NETTO = NULL; + SET @POS_TAX_CODE = NULL; + SET @POS_SUM_BRUTTO = NULL; + + SET @ARTICLE_NR = NULL; + SET @WORK_ORDER_NR = NULL; + ----------------------------------------------------------------------------------------------------------------------------- + + --==================================================-- PositionsArtikel --==================================================-- + SET @ARTICLE_NR_EXT = ISNULL((SELECT CASE WHEN LEN(LTRIM(RTRIM(convert(nvarchar(200),[ITEM_VALUE])))) = 0 + THEN '' + ELSE CAST([ITEM_VALUE] AS NVARCHAR(50)) + END as 'ITEM_VALUE' + FROM [TBEDMI_ITEM_VALUE] (NOLOCK) + WHERE [REFERENCE_GUID] = @REFERENCE_GUID + AND [GROUP_COUNTER] = @GROUP_COUNTER + AND [SPEC_NAME] = 'INVOICE_POSITION_ARTICLE'),''); + ----------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- PositionsMenge --===================================================-- + SET @POS_AMOUNT = ISNULL((SELECT CASE WHEN LEN(LTRIM(RTRIM(convert(nvarchar(200),[ITEM_VALUE])))) = 0 + THEN 0 + ELSE CAST(REPLACE([ITEM_VALUE],',','.') AS DECIMAL(20,2)) + END as 'ITEM_VALUE' + FROM [TBEDMI_ITEM_VALUE] (NOLOCK) + WHERE [REFERENCE_GUID] = @REFERENCE_GUID + AND [GROUP_COUNTER] = @GROUP_COUNTER + AND [SPEC_NAME] = 'INVOICE_POSITION_AMOUNT'),0); + ----------------------------------------------------------------------------------------------------------------------------- + + --===================================================-- PositionsSumme --===================================================-- + SET @POS_SUM_NETTO = ISNULL((SELECT CASE WHEN LEN(LTRIM(RTRIM(convert(nvarchar(200),[ITEM_VALUE])))) = 0 + THEN 0 + ELSE CAST(REPLACE([ITEM_VALUE],',','.') AS DECIMAL(20,2)) + END as 'ITEM_VALUE' + FROM [TBEDMI_ITEM_VALUE] (NOLOCK) + WHERE [REFERENCE_GUID] = @REFERENCE_GUID + AND [GROUP_COUNTER] = @GROUP_COUNTER + AND [SPEC_NAME] = 'INVOICE_POSITION_TAX_AMOUNT'),0); + ----------------------------------------------------------------------------------------------------------------------------- + + --=================================================-- PositionsSteuersatz --================================================-- + SET @POS_TAX_RATE = ISNULL((SELECT CASE WHEN LEN(LTRIM(RTRIM(convert(NVARCHAR(200),[ITEM_VALUE])))) = 0 + THEN 0 + ELSE CAST(REPLACE([ITEM_VALUE],',','.') AS DECIMAL(20,2)) + END as 'ITEM_VALUE' + FROM [TBEDMI_ITEM_VALUE] (NOLOCK) + WHERE [REFERENCE_GUID] = @REFERENCE_GUID + AND [GROUP_COUNTER] = @GROUP_COUNTER + AND [SPEC_NAME] = 'INVOICE_TAXPOS_TAX_RATE'),0); + + SET @POS_TAX_CODE = CASE WHEN @POS_TAX_RATE = 19.00 + THEN @POS_TAX_CODE_NAV_VAT19 + + ELSE '0' + + END; + ----------------------------------------------------------------------------------------------------------------------------- + + --======================================================-- ERP Daten --=====================================================-- + SELECT TOP 1 @ARTICLE_NR = [No_], + @WORK_ORDER_NR = [Work Order No_] + FROM [dbo].[FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MandatorShortName,@ORDER_NR,@DATA_SEPERATOR) + WHERE [GUID] = @COUNTER + AND ([Description] IS NOT NULL OR [Description 2] IS NOT NULL) + OR (UPPER([Description]) = @ARTICLE_NR_EXT + OR UPPER([Description]) like '%' + @ARTICLE_NR_EXT + '%' + OR UPPER([Description 2]) = @ARTICLE_NR_EXT + OR UPPER([Description 2]) like '%' + @ARTICLE_NR_EXT + '%'); + --TEST: select * from [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS]('SWE','EB00017529','~') + + + SELECT TOP 1 @POS_TAX_RATE = [VAT _] + FROM [dbo].[FNCUST_GET_MS-DYN365BC_VAT_LIST](@MandatorShortName,@ORDER_NR,@DATA_SEPERATOR_TAX) + WHERE [CONTENT_CONCAT] = @POS_TAX_CODE; + SET @POS_TAX_RATE = ISNULL(@POS_TAX_RATE,0); -- Failsafe + ----------------------------------------------------------------------------------------------------------------------------- + + ----------------------------------------------------------------------------------------------------------------- + SET @POS_SUM_BRUTTO = @POS_SUM_NETTO * (100.00 + @POS_TAX_RATE) / 100; + SET @ACCOUNTING = concat(@COUNTER, @DATA_SEPERATOR, + ISNULL(@WORK_ORDER_NR,@WORK_ORDER_NR_FALLBACK), @DATA_SEPERATOR, + NULL, @DATA_SEPERATOR, + REPLACE(@POS_AMOUNT,',','.'), @DATA_SEPERATOR, + REPLACE(@POS_SUM_NETTO,',','.'), @DATA_SEPERATOR, + @POS_TAX_CODE, @DATA_SEPERATOR, + REPLACE(@POS_SUM_BRUTTO,',','.'), @DATA_SEPERATOR, + 'false', @DATA_SEPERATOR, + @ARTICLE_NR); + + IF ((@POS_AMOUNT > 0) AND (@POS_SUM_NETTO > 0)) BEGIN + + INSERT INTO @vTB_INVOICE_POS([CONTENT_CONCAT],[ORDER_POSITION_ARTICLE],[INVOICE_POSITION_ARTICLE]) + VALUES (@ACCOUNTING, @ARTICLE_NR, @ARTICLE_NR_EXT) + + END; + ----------------------------------------------------------------------------------------------------------------- + + FETCH NEXT FROM CURSOR_INVOICE_POS INTO @REFERENCE_GUID, @GROUP_COUNTER; + END; + CLOSE CURSOR_INVOICE_POS; + DEALLOCATE CURSOR_INVOICE_POS; + + END; + + RETURN; + +END; + +/*** +-- Test + + SELECT * FROM [FNCUST_GET_INVOICE_POS]('ERw202603031419486748168lfelsburg','~',' - ') --WHERE + SELECT * FROM [FNCUST_GET_INVOICE_POS]('ERw202603121044356088460lfelsburg','~',' - ') --WHERE + +***/ +GO \ No newline at end of file diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_POS_ACCOUNTING].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_POS_ACCOUNTING].sql new file mode 100644 index 0000000..d34f50b --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_POS_ACCOUNTING].sql @@ -0,0 +1,492 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- HE, MK // 23.03.2026 +-- 23.03.2026 HE, MK Initial + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_INVOICE_POS_TRANSFER] ( + @pMANDATOR NVARCHAR(5), + @pIDB_OBJECT_ID BIGINT, + @pORDER_NR NVARCHAR(25), + @pSEPERATOR NVARCHAR(1), + @pWD_VKR_ACCOUNTING NVARCHAR(25) -- = 'Vektor String 422' +) +RETURNS @vTB_INVOICE_POS_TRANSFER TABLE ([GUID] [BIGINT] IDENTITY(1,1) NOT NULL, + [IDB_OBJECT_ID] [BIGINT] NOT NULL, + [LineNo] [INT] NULL, + [attachedToLineNo] [TINYINT] NULL, + [type] [INT] NULL, + [no] [NVARCHAR](15) NULL, + [description] [NVARCHAR](100) NULL, + [description2] [NVARCHAR](50) NULL, + [locationCode] [NVARCHAR](10) NULL, + [variantCode] [NVARCHAR](10) NULL, + [quantity] [DECIMAL](38,2) NULL, + [unitOfMeasureCode] [NVARCHAR](50) NULL, + [directUnitCost] [DECIMAL](38,2) NULL, + [lineDiscount] [DECIMAL](38,2) NULL, + [ableToDiscount] [BIT] NULL, + [discountCalculated] [BIT] NULL, + [workOrderNo] [NVARCHAR](20) NULL, + [genBusPostingGroup] [NVARCHAR](20) NULL, + [genProdPostingGroup] [NVARCHAR](20) NULL, + [vatBusPostingGroup] [NVARCHAR](20) NULL, + [vatProdPostingGroup] [NVARCHAR](20) NULL, + [applToItemEntry] [INT] NULL, + [postingWithoutApply] [BIT] NULL, + [anticipatedPayment] [INT] NULL, + [receiptNo] [NVARCHAR](20) NULL, + [receiptLineNo] [INT] NULL, + [irOrderNo] [NVARCHAR](20) NULL, + [irOrderLineNo] [INT] NULL) + +AS +BEGIN + + -- declare new vars because of parameter sniffing + DECLARE @MANDATOR NVARCHAR(5) = UPPER(LTRIM(RTRIM(@pMANDATOR))), + @IDB_OBJECT_ID BIGINT = @pIDB_OBJECT_ID, + @ORDER_NR NVARCHAR(25) = LTRIM(RTRIM(@pORDER_NR)), + @SEPERATOR NVARCHAR(1) = ISNULL(LTRIM(RTRIM(@pSEPERATOR)),'~'), + @WD_VKR_ACCOUNTING NVARCHAR(25) = LTRIM(RTRIM(@pWD_VKR_ACCOUNTING)); + + -- declare runtime vars + DECLARE @MY_FUNCTION_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @VALUE VARCHAR(max) = NULL, + @LineNo INT = NULL, + @attachedToLineNo TINYINT = NULL, + @type INT = NULL, + @no NVARCHAR(15) = NULL, + @description NVARCHAR(100) = NULL, + @description2 NVARCHAR(50) = NULL, + @locationCode NVARCHAR(10) = NULL, + @variantCode NVARCHAR(10) = NULL, + @quantity DECIMAL(38,2) = NULL, + @unitOfMeasureCode NVARCHAR(50) = NULL, + @directUnitCost DECIMAL(38,2) = NULL, + @lineDiscount DECIMAL(38,2) = NULL, + @ableToDiscount BIT = NULL, + @discountCalculated BIT = NULL, + @workOrderNo NVARCHAR(20) = NULL, + @genBusPostingGroup NVARCHAR(20) = NULL, + @genProdPostingGroup NVARCHAR(20) = NULL, + @vatBusPostingGroup NVARCHAR(20) = NULL, + @vatProdPostingGroup NVARCHAR(20) = NULL, + @applToItemEntry INT = NULL, + @postingWithoutApply BIT = NULL, + @anticipatedPayment INT = NULL, + @receiptNo NVARCHAR(20) = NULL, + @receiptLineNo INT = NULL, + @irOrderNo NVARCHAR(20) = NULL, + @irOrderLineNo INT = NULL; + + IF ((@MANDATOR = 'SWE') AND ((@ORDER_NR <> 'EB9999999') AND (@ORDER_NR IS NOT NULL))) BEGIN -- Mit Bestelldaten aus NAV + + DECLARE CURSOR_ACCOUNTING_POS CURSOR + LOCAL FAST_FORWARD FOR + SELECT [VALUE] FROM [dbo].[FNDD_GET_WINDREAM_INDEX_VALUES](@IDB_OBJECT_ID,@WD_VKR_ACCOUNTING,'; ',0,0); + + OPEN CURSOR_ACCOUNTING_POS + FETCH NEXT FROM CURSOR_ACCOUNTING_POS INTO @VALUE + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @LineNo = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 1); + SET @LineNo = ISNULL(@LineNo,0); + + SET @attachedToLineNo = 0; + SET @attachedToLineNo = ISNULL(@attachedToLineNo,0); + + SET @type = (CASE + WHEN (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) WHERE [GUID] = 2) = 'Artikel' + THEN 2 + ELSE (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) WHERE [GUID] = 2) + END); + SET @type = ISNULL(@type,0); + + SET @no = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 3); + SET @no = ISNULL(@no,''); + + SET @description = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 6); + SET @description = ISNULL(@description,''); + + SET @description2 = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 7); + SET @description2 = ISNULL(@description2,''); + + SET @locationCode = (SELECT [Location Code] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @locationCode = ISNULL(@locationCode,''); + + SET @variantCode = (SELECT [Variant Code] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @variantCode = ISNULL(@variantCode,''); + + SET @quantity = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 9); + SET @quantity = ISNULL(@quantity,0.0); + + SET @unitOfMeasureCode = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 10); + SET @unitOfMeasureCode = ISNULL(@unitOfMeasureCode,''); + + SET @directUnitCost = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 11); + SET @directUnitCost = ISNULL(@directUnitCost,0.0); + + SET @lineDiscount = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 16); + SET @lineDiscount = ISNULL(@lineDiscount,0); + + SET @ableToDiscount = (SELECT [Able to Discount] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @ableToDiscount = ISNULL(@ableToDiscount,0); + + SET @discountCalculated = (CASE + WHEN (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) WHERE [GUID] = 16) <> 0.0 + THEN 1 + ELSE 0 + END); + SET @discountCalculated = ISNULL(@discountCalculated,0); + + SET @workOrderNo = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) WHERE [GUID] = 5); + SET @workOrderNo = ISNULL(@workOrderNo,''); + + SET @genBusPostingGroup = (SELECT [Gen_ Bus_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @genBusPostingGroup = ISNULL(@genBusPostingGroup,''); + + SET @genProdPostingGroup = (SELECT [Gen_ Prod_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @genProdPostingGroup = ISNULL(@genProdPostingGroup,''); + + SET @vatBusPostingGroup = (SELECT [VAT Bus_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @vatBusPostingGroup = ISNULL(@vatBusPostingGroup,''); + + SET @vatProdPostingGroup = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 14); + SET @vatProdPostingGroup = (SELECT [VAT Prod_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @vatProdPostingGroup = ISNULL(@vatProdPostingGroup,''); + + SET @applToItemEntry = (SELECT [Appl_-to Item Entry] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @applToItemEntry = ISNULL(@applToItemEntry,0); + + SET @postingWithoutApply = (SELECT [Posting Without Apply] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @postingWithoutApply = ISNULL(@postingWithoutApply,0); + + SET @anticipatedPayment = (SELECT [Anticipated Payment] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @anticipatedPayment = ISNULL(@anticipatedPayment,0); + + SET @receiptNo = (SELECT [Receipt No_] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @receiptNo = ISNULL(@receiptNo,''); + + SET @receiptLineNo = (SELECT [Receipt Line No_] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @receiptLineNo = ISNULL(@receiptLineNo,0); + + SET @irOrderNo = (SELECT [IR Order No_] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @irOrderNo = ISNULL(@irOrderNo,''); + + SET @irOrderLineNo = (SELECT [IR Order Line No_] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @irOrderLineNo = ISNULL(@irOrderLineNo,0); + + INSERT INTO @vTB_INVOICE_POS_TRANSFER ([IDB_OBJECT_ID], + [LineNo], + [attachedToLineNo], + [type], + [no], + [description], + [description2], + [locationCode], + [variantCode], + [quantity], + [unitOfMeasureCode], + [directUnitCost], + [lineDiscount], + [ableToDiscount], + [discountCalculated], + [workOrderNo], + [genBusPostingGroup], + [genProdPostingGroup], + [vatBusPostingGroup], + [vatProdPostingGroup], + [applToItemEntry], + [postingWithoutApply], + [anticipatedPayment], + [receiptNo], + [receiptLineNo], + [irOrderNo], + [irOrderLineNo]) + VALUES (@IDB_OBJECT_ID, + @LineNo, + @attachedToLineNo, + @type, + @no, + @description, + @description2, + @locationCode, + @variantCode, + @quantity, + @unitOfMeasureCode, + @directUnitCost, + @lineDiscount, + @ableToDiscount, + @discountCalculated, + @workOrderNo, + @genBusPostingGroup, + @genProdPostingGroup, + @vatBusPostingGroup, + @vatProdPostingGroup, + @applToItemEntry, + @postingWithoutApply, + @anticipatedPayment, + @receiptNo, + @receiptLineNo, + @irOrderNo, + @irOrderLineNo) + + FETCH NEXT FROM CURSOR_ACCOUNTING_POS INTO @VALUE + END + CLOSE CURSOR_ACCOUNTING_POS + DEALLOCATE CURSOR_ACCOUNTING_POS + + + END ELSE IF (@MANDATOR = 'SWE') BEGIN -- Ohne Bestelldaten aus NAV + + DECLARE CURSOR_ACCOUNTING_POS CURSOR + LOCAL FAST_FORWARD FOR + SELECT [VALUE] FROM [dbo].[FNDD_GET_WINDREAM_INDEX_VALUES](@IDB_OBJECT_ID,@WD_VKR_ACCOUNTING,'; ',0,0); + + OPEN CURSOR_ACCOUNTING_POS + FETCH NEXT FROM CURSOR_ACCOUNTING_POS INTO @VALUE + WHILE @@FETCH_STATUS = 0 + BEGIN + + SET @LineNo = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 1); + SET @LineNo = ISNULL(@LineNo,0); + + SET @attachedToLineNo = 0; + SET @attachedToLineNo = ISNULL(@attachedToLineNo,0); + + SET @type = (CASE + WHEN (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) WHERE [GUID] = 2) = 'Artikel' + THEN 2 + ELSE (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) WHERE [GUID] = 2) + END); + SET @type = ISNULL(@type,0); + + SET @no = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 3); + SET @no = ISNULL(@no,''); + + SET @description = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 6); + SET @description = ISNULL(@description,''); + + SET @description2 = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 7); + SET @description2 = ISNULL(@description2,''); + + SET @locationCode = NULL; + SET @locationCode = ISNULL(@locationCode,''); + + SET @variantCode = NULL; + SET @variantCode = ISNULL(@variantCode,''); + + SET @quantity = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 9); + SET @quantity = ISNULL(@quantity,0.0); + + SET @unitOfMeasureCode = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 10); + SET @unitOfMeasureCode = ISNULL(@unitOfMeasureCode,''); + + SET @directUnitCost = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 11); + SET @directUnitCost = ISNULL(@directUnitCost,0.0); + + SET @lineDiscount = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 16); + SET @lineDiscount = ISNULL(@lineDiscount,0); + + SET @ableToDiscount = NULL; + SET @ableToDiscount = ISNULL(@ableToDiscount,0); + + SET @discountCalculated = (CASE + WHEN (SELECT REPLACE([Item],',','.') FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) WHERE [GUID] = 16) <> 0.0 + THEN 1 + ELSE 0 + END); + SET @discountCalculated = ISNULL(@discountCalculated,0); + + SET @workOrderNo = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 5); + SET @workOrderNo = ISNULL(@workOrderNo,''); + + SET @genBusPostingGroup = NULL; + SET @genBusPostingGroup = ISNULL(@genBusPostingGroup,''); + + SET @genProdPostingGroup = NULL; + SET @genProdPostingGroup = ISNULL(@genProdPostingGroup,''); + + SET @vatBusPostingGroup = NULL; + SET @vatBusPostingGroup = ISNULL(@vatBusPostingGroup,''); + + SET @vatProdPostingGroup = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@SEPERATOR) + WHERE [GUID] = 14); + SET @vatProdPostingGroup = ISNULL(@vatProdPostingGroup,''); + + SET @applToItemEntry = NULL; + SET @applToItemEntry = ISNULL(@applToItemEntry,0); + + SET @postingWithoutApply = NULL; + SET @postingWithoutApply = ISNULL(@postingWithoutApply,0); + + SET @anticipatedPayment = NULL; + SET @anticipatedPayment = ISNULL(@anticipatedPayment,0); + + SET @receiptNo = NULL; + SET @receiptNo = ISNULL(@receiptNo,''); + + SET @receiptLineNo = NULL; + SET @receiptLineNo = ISNULL(@receiptLineNo,0); + + SET @irOrderNo = NULL; + SET @irOrderNo = ISNULL(@irOrderNo,''); + + SET @irOrderLineNo = NULL; + SET @irOrderLineNo = ISNULL(@irOrderLineNo,0); + + INSERT INTO @vTB_INVOICE_POS_TRANSFER ([IDB_OBJECT_ID], + [LineNo], + [attachedToLineNo], + [type], + [no], + [description], + [description2], + [locationCode], + [variantCode], + [quantity], + [unitOfMeasureCode], + [directUnitCost], + [lineDiscount], + [ableToDiscount], + [discountCalculated], + [workOrderNo], + [genBusPostingGroup], + [genProdPostingGroup], + [vatBusPostingGroup], + [vatProdPostingGroup], + [applToItemEntry], + [postingWithoutApply], + [anticipatedPayment], + [receiptNo], + [receiptLineNo], + [irOrderNo], + [irOrderLineNo]) + VALUES (@IDB_OBJECT_ID, + @LineNo, + @attachedToLineNo, + @type, + @no, + @description, + @description2, + @locationCode, + @variantCode, + @quantity, + @unitOfMeasureCode, + @directUnitCost, + @lineDiscount, + @ableToDiscount, + @discountCalculated, + @workOrderNo, + @genBusPostingGroup, + @genProdPostingGroup, + @vatBusPostingGroup, + @vatProdPostingGroup, + @applToItemEntry, + @postingWithoutApply, + @anticipatedPayment, + @receiptNo, + @receiptLineNo, + @irOrderNo, + @irOrderLineNo) + + FETCH NEXT FROM CURSOR_ACCOUNTING_POS INTO @VALUE + END + CLOSE CURSOR_ACCOUNTING_POS + DEALLOCATE CURSOR_ACCOUNTING_POS + + END; + + RETURN; + +END; + +/*** + + -- TEST mit: + select * from [FNCUST_GET_INVOICE_POS_TRANSFER]('SWE',9209946,'EB00021129','~','Vektor String 422') -- mit bestellnr + select * from [FNCUST_GET_INVOICE_POS_TRANSFER]('SWE',9208424,'EB9999999','~','Vektor String 422') -- ohne bestellnr + + SELECT [VALUE] FROM [dbo].[FNDD_GET_WINDREAM_INDEX_VALUES](9209044,'Vektor String 422','; ',0,0); + select * from [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header$437dbf0e-84ff-417a-965d-ed2bb9650972] WHERE [No_] = 'EB00020596' + select * from windreamDB.dbo.BaseAttributes WHERE dwdocid = 9174258; + select * from [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor$437dbf0e-84ff-417a-965d-ed2bb9650972] WHERE [No_] = 232102 + select * from [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972] WHERE [Vendor No_] = 232102 + SELECT * FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS]('SWE','EB00020596','~') WHERE [Line No_] = @attachedToLineNo + (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] ((SELECT [VALUE] FROM [dbo].[FNDD_GET_WINDREAM_INDEX_VALUES](9174258,'Vektor String 422','; ',0,0)),'~') WHERE [GUID] = 1); + +***/ +GO \ No newline at end of file diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_POS_TRANSFER].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_POS_TRANSFER].sql new file mode 100644 index 0000000..93de1d4 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_INVOICE_POS_TRANSFER].sql @@ -0,0 +1,628 @@ +USE [DD_ECM] +GO + +/****** Object: UserDefinedFunction [dbo].[FNCUST_GET_INVOICE_POS_TRANSFER] Script Date: 27.03.2026 14:12:03 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + +-- HE, MK // 23.03.2026 +-- 23.03.2026 HE, MK Initial + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_INVOICE_POS_TRANSFER] ( + @pMANDATOR NVARCHAR(5), + @pIDB_OBJECT_ID BIGINT, + @pORDER_NR NVARCHAR(25), + @pDATA_SEPERATOR NVARCHAR(1) = '~', + @pDATA_SEPERATOR_TAX NVARCHAR(3) = ' - ', + @pWD_VKR_ACCOUNTING NVARCHAR(25) -- = 'Vektor String 422' +) +RETURNS @vTB_INVOICE_POS_TRANSFER TABLE ([GUID] [BIGINT] IDENTITY(1,1) NOT NULL, + [IDB_OBJECT_ID] [BIGINT] NOT NULL, + [LineNo] [INT] NULL, + [attachedToLineNo] [TINYINT] NULL, + [type] [INT] NULL, + [no] [NVARCHAR](15) NULL, + [description] [NVARCHAR](100) NULL, + [description2] [NVARCHAR](50) NULL, + [locationCode] [NVARCHAR](10) NULL, + [variantCode] [NVARCHAR](10) NULL, + [quantity] [DECIMAL](38,2) NULL, + [unitOfMeasureCode] [NVARCHAR](50) NULL, + [directUnitCost] [DECIMAL](38,2) NULL, + [lineDiscount] [DECIMAL](38,2) NULL, + [ableToDiscount] [BIT] NULL, + [discountCalculated] [BIT] NULL, + [workOrderNo] [NVARCHAR](20) NULL, + [genBusPostingGroup] [NVARCHAR](20) NULL, + [genProdPostingGroup] [NVARCHAR](20) NULL, + [vatBusPostingGroup] [NVARCHAR](20) NULL, + [vatProdPostingGroup] [NVARCHAR](20) NULL, + [applToItemEntry] [INT] NULL, + [postingWithoutApply] [BIT] NULL, + [anticipatedPayment] [INT] NULL, + [receiptNo] [NVARCHAR](20) NULL, + [receiptLineNo] [INT] NULL, + [irOrderNo] [NVARCHAR](20) NULL, + [irOrderLineNo] [INT] NULL) + +AS +BEGIN + + DECLARE @MANDATOR_SHORT_NAME_FALLBACK NVARCHAR(25) = 'SWE', + @DATA_SEPERATOR_TAX_FALLBACK NVARCHAR(3) = ' - '; + + -- declare new vars because of parameter sniffing + DECLARE @MANDATOR NVARCHAR(5) = UPPER(LTRIM(RTRIM(@pMANDATOR))), + @IDB_OBJECT_ID BIGINT = @pIDB_OBJECT_ID, + @ORDER_NR NVARCHAR(25) = LTRIM(RTRIM(@pORDER_NR)), + @DATA_SEPERATOR NVARCHAR(1) = ISNULL(LTRIM(RTRIM(@pDATA_SEPERATOR)),'~'), + @DATA_SEPERATOR_TAX NVARCHAR(3) = UPPER(ISNULL(@pDATA_SEPERATOR_TAX,@DATA_SEPERATOR_TAX_FALLBACK)), + @WD_VKR_ACCOUNTING NVARCHAR(25) = LTRIM(RTRIM(@pWD_VKR_ACCOUNTING)); + + -- declare runtime vars + DECLARE @MY_FUNCTION_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @VALUE VARCHAR(max) = NULL, + @POS_TAX_CODE NVARCHAR(25) = NULL, + @POS_TAX_RATE DECIMAL(20,2) = 0.0; + + DECLARE @LineNo INT = NULL, + @attachedToLineNo TINYINT = NULL, + @type INT = NULL, + @no NVARCHAR(15) = NULL, + @description NVARCHAR(100) = NULL, + @description2 NVARCHAR(50) = NULL, + @locationCode NVARCHAR(10) = NULL, + @variantCode NVARCHAR(10) = NULL, + @quantity DECIMAL(38,2) = NULL, + @unitOfMeasureCode NVARCHAR(50) = NULL, + @directUnitCost DECIMAL(38,2) = NULL, + @lineDiscount DECIMAL(38,2) = NULL, + @ableToDiscount BIT = NULL, + @discountCalculated BIT = NULL, + @workOrderNo NVARCHAR(20) = NULL, + @genBusPostingGroup NVARCHAR(20) = NULL, + @genProdPostingGroup NVARCHAR(20) = NULL, + @vatBusPostingGroup NVARCHAR(20) = NULL, + @vatProdPostingGroup NVARCHAR(20) = NULL, + @applToItemEntry INT = NULL, + @postingWithoutApply BIT = NULL, + @anticipatedPayment INT = NULL, + @receiptNo NVARCHAR(20) = NULL, + @receiptLineNo INT = NULL, + @irOrderNo NVARCHAR(20) = NULL, + @irOrderLineNo INT = NULL; + + IF ((@MANDATOR = 'SWE') AND ((@ORDER_NR <> 'EB9999999') AND (@ORDER_NR IS NOT NULL))) BEGIN -- Mit Bestelldaten aus NAV + + DECLARE CURSOR_ACCOUNTING_POS CURSOR + LOCAL FAST_FORWARD FOR + SELECT [VALUE] FROM [dbo].[FNDD_GET_WINDREAM_INDEX_VALUES](@IDB_OBJECT_ID,@WD_VKR_ACCOUNTING,'; ',0,0); + + OPEN CURSOR_ACCOUNTING_POS + FETCH NEXT FROM CURSOR_ACCOUNTING_POS INTO @VALUE + WHILE @@FETCH_STATUS = 0 + BEGIN + + ------------------------------------------------------------------------------------------------------------------- + SET @LineNo = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 1); + SET @LineNo = ISNULL(@LineNo,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @attachedToLineNo = 0; + SET @attachedToLineNo = ISNULL(@attachedToLineNo,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @type = (CASE + WHEN (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) WHERE [GUID] = 2) = 'Artikel' + THEN 2 + ELSE (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) WHERE [GUID] = 2) + END); + SET @type = ISNULL(@type,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @no = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 3); + SET @no = ISNULL(@no,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @description = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 6); + SET @description = ISNULL(@description,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @description2 = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 7); + SET @description2 = ISNULL(@description2,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @locationCode = (SELECT [Location Code] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @locationCode = ISNULL(@locationCode,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @variantCode = (SELECT [Variant Code] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @variantCode = ISNULL(@variantCode,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @quantity = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 9); + SET @quantity = ISNULL(@quantity,0.0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @unitOfMeasureCode = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 10); + SET @unitOfMeasureCode = ISNULL(@unitOfMeasureCode,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @directUnitCost = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 11); + SET @directUnitCost = ISNULL(@directUnitCost,0.0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @lineDiscount = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 16); + SET @lineDiscount = ISNULL(@lineDiscount,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @ableToDiscount = (SELECT [Able to Discount] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @ableToDiscount = ISNULL(@ableToDiscount,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @discountCalculated = (CASE + WHEN (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) WHERE [GUID] = 16) <> 0.0 + THEN 1 + ELSE 0 + END); + SET @discountCalculated = ISNULL(@discountCalculated,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @workOrderNo = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) WHERE [GUID] = 5); + SET @workOrderNo = ISNULL(@workOrderNo,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @POS_TAX_CODE = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 14); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @genBusPostingGroup = (SELECT [Gen_ Bus_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @genBusPostingGroup = ISNULL(@genBusPostingGroup,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @genProdPostingGroup = (SELECT [Gen_ Prod_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @genProdPostingGroup = ISNULL(@genProdPostingGroup,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @vatBusPostingGroup = (SELECT [VAT Bus_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_VAT_LIST](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR_TAX) + WHERE [CONTENT_CONCAT] = @POS_TAX_CODE); + SET @vatBusPostingGroup = ISNULL(@vatBusPostingGroup,(SELECT [VAT Bus_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no)); + SET @vatBusPostingGroup = ISNULL(@vatBusPostingGroup,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @vatProdPostingGroup = (SELECT [VAT Prod_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_VAT_LIST](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR_TAX) + WHERE [CONTENT_CONCAT] = @POS_TAX_CODE); + SET @vatProdPostingGroup = ISNULL(@vatProdPostingGroup,(SELECT [VAT Prod_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no)); + SET @vatProdPostingGroup = ISNULL(@vatProdPostingGroup,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @applToItemEntry = (SELECT [Appl_-to Item Entry] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @applToItemEntry = ISNULL(@applToItemEntry,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @postingWithoutApply = (SELECT [Posting Without Apply] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @postingWithoutApply = ISNULL(@postingWithoutApply,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @anticipatedPayment = (SELECT [Anticipated Payment] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @receiptNo = (SELECT [Receipt No_] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @receiptNo = ISNULL(@receiptNo,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @receiptLineNo = (SELECT [Receipt Line No_] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @receiptLineNo = ISNULL(@receiptLineNo,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @irOrderNo = (SELECT [IR Order No_] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @irOrderNo = ISNULL(@irOrderNo,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @irOrderLineNo = (SELECT [IR Order Line No_] + FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR) + WHERE [Line No_] = @LineNo AND [No_] = @no); + SET @irOrderLineNo = ISNULL(@irOrderLineNo,0); + ------------------------------------------------------------------------------------------------------------------- + + + INSERT INTO @vTB_INVOICE_POS_TRANSFER ([IDB_OBJECT_ID], + [LineNo], + [attachedToLineNo], + [type], + [no], + [description], + [description2], + [locationCode], + [variantCode], + [quantity], + [unitOfMeasureCode], + [directUnitCost], + [lineDiscount], + [ableToDiscount], + [discountCalculated], + [workOrderNo], + [genBusPostingGroup], + [genProdPostingGroup], + [vatBusPostingGroup], + [vatProdPostingGroup], + [applToItemEntry], + [postingWithoutApply], + [anticipatedPayment], + [receiptNo], + [receiptLineNo], + [irOrderNo], + [irOrderLineNo]) + VALUES (@IDB_OBJECT_ID, + @LineNo, + @attachedToLineNo, + @type, + @no, + @description, + @description2, + @locationCode, + @variantCode, + @quantity, + @unitOfMeasureCode, + @directUnitCost, + @lineDiscount, + @ableToDiscount, + @discountCalculated, + @workOrderNo, + @genBusPostingGroup, + @genProdPostingGroup, + @vatBusPostingGroup, + @vatProdPostingGroup, + @applToItemEntry, + @postingWithoutApply, + @anticipatedPayment, + @receiptNo, + @receiptLineNo, + @irOrderNo, + @irOrderLineNo) + + FETCH NEXT FROM CURSOR_ACCOUNTING_POS INTO @VALUE + END + CLOSE CURSOR_ACCOUNTING_POS + DEALLOCATE CURSOR_ACCOUNTING_POS + + + END ELSE IF (@MANDATOR = 'SWE') BEGIN -- Ohne Bestelldaten aus NAV + + DECLARE CURSOR_ACCOUNTING_POS CURSOR + LOCAL FAST_FORWARD FOR + SELECT [VALUE] FROM [dbo].[FNDD_GET_WINDREAM_INDEX_VALUES](@IDB_OBJECT_ID,@WD_VKR_ACCOUNTING,'; ',0,0); + + OPEN CURSOR_ACCOUNTING_POS + FETCH NEXT FROM CURSOR_ACCOUNTING_POS INTO @VALUE + WHILE @@FETCH_STATUS = 0 + BEGIN + + ------------------------------------------------------------------------------------------------------------------- + SET @LineNo = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 1); + SET @LineNo = ISNULL(@LineNo,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @attachedToLineNo = 0; + SET @attachedToLineNo = ISNULL(@attachedToLineNo,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @type = (CASE + WHEN (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) WHERE [GUID] = 2) = 'Artikel' + THEN 2 + ELSE (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) WHERE [GUID] = 2) + END); + SET @type = ISNULL(@type,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @no = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 3); + SET @no = ISNULL(@no,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @description = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 6); + SET @description = ISNULL(@description,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @description2 = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 7); + SET @description2 = ISNULL(@description2,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @locationCode = NULL; + SET @locationCode = ISNULL(@locationCode,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @variantCode = NULL; + SET @variantCode = ISNULL(@variantCode,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @quantity = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 9); + SET @quantity = ISNULL(@quantity,0.0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @unitOfMeasureCode = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 10); + SET @unitOfMeasureCode = ISNULL(@unitOfMeasureCode,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @directUnitCost = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 11); + SET @directUnitCost = ISNULL(@directUnitCost,0.0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @lineDiscount = (SELECT CONVERT(DECIMAL(38,2),(REPLACE([Item],',','.'))) + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 16); + SET @lineDiscount = ISNULL(@lineDiscount,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @ableToDiscount = NULL; + SET @ableToDiscount = ISNULL(@ableToDiscount,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @discountCalculated = (CASE + WHEN (SELECT REPLACE([Item],',','.') FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) WHERE [GUID] = 16) <> 0.0 + THEN 1 + ELSE 0 + END); + SET @discountCalculated = ISNULL(@discountCalculated,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @workOrderNo = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 5); + SET @workOrderNo = ISNULL(@workOrderNo,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @POS_TAX_CODE = (SELECT [Item] + FROM [FNCUST_SPLIT_STRING_WITH_GUID] (@VALUE,@DATA_SEPERATOR) + WHERE [GUID] = 14); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @genBusPostingGroup = NULL; + SET @genBusPostingGroup = ISNULL(@genBusPostingGroup,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @genProdPostingGroup = NULL; + SET @genProdPostingGroup = ISNULL(@genProdPostingGroup,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @vatBusPostingGroup = (SELECT [VAT Bus_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_VAT_LIST](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR_TAX) + WHERE [CONTENT_CONCAT] = @POS_TAX_CODE); + SET @vatBusPostingGroup = ISNULL(@vatBusPostingGroup,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @vatProdPostingGroup = (SELECT [VAT Prod_ Posting Group] + FROM [FNCUST_GET_MS-DYN365BC_VAT_LIST](@MANDATOR,@ORDER_NR,@DATA_SEPERATOR_TAX) + WHERE [CONTENT_CONCAT] = @POS_TAX_CODE); + SET @vatProdPostingGroup = ISNULL(@vatProdPostingGroup,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @applToItemEntry = NULL; + SET @applToItemEntry = ISNULL(@applToItemEntry,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @postingWithoutApply = NULL; + SET @postingWithoutApply = ISNULL(@postingWithoutApply,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @anticipatedPayment = NULL; + SET @anticipatedPayment = ISNULL(@anticipatedPayment,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @receiptNo = NULL; + SET @receiptNo = ISNULL(@receiptNo,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @receiptLineNo = NULL; + SET @receiptLineNo = ISNULL(@receiptLineNo,0); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @irOrderNo = NULL; + SET @irOrderNo = ISNULL(@irOrderNo,''); + ------------------------------------------------------------------------------------------------------------------- + + ------------------------------------------------------------------------------------------------------------------- + SET @irOrderLineNo = NULL; + SET @irOrderLineNo = ISNULL(@irOrderLineNo,0); + ------------------------------------------------------------------------------------------------------------------- + + + INSERT INTO @vTB_INVOICE_POS_TRANSFER ([IDB_OBJECT_ID], + [LineNo], + [attachedToLineNo], + [type], + [no], + [description], + [description2], + [locationCode], + [variantCode], + [quantity], + [unitOfMeasureCode], + [directUnitCost], + [lineDiscount], + [ableToDiscount], + [discountCalculated], + [workOrderNo], + [genBusPostingGroup], + [genProdPostingGroup], + [vatBusPostingGroup], + [vatProdPostingGroup], + [applToItemEntry], + [postingWithoutApply], + [anticipatedPayment], + [receiptNo], + [receiptLineNo], + [irOrderNo], + [irOrderLineNo]) + VALUES (@IDB_OBJECT_ID, + @LineNo, + @attachedToLineNo, + @type, + @no, + @description, + @description2, + @locationCode, + @variantCode, + @quantity, + @unitOfMeasureCode, + @directUnitCost, + @lineDiscount, + @ableToDiscount, + @discountCalculated, + @workOrderNo, + @genBusPostingGroup, + @genProdPostingGroup, + @vatBusPostingGroup, + @vatProdPostingGroup, + @applToItemEntry, + @postingWithoutApply, + @anticipatedPayment, + @receiptNo, + @receiptLineNo, + @irOrderNo, + @irOrderLineNo) + + FETCH NEXT FROM CURSOR_ACCOUNTING_POS INTO @VALUE + END + CLOSE CURSOR_ACCOUNTING_POS + DEALLOCATE CURSOR_ACCOUNTING_POS + + END; + + RETURN; + +END; + +/*** + + -- TEST mit: + select * from [FNCUST_GET_INVOICE_POS_TRANSFER]('SWE',9229975,'EB00021129','~',' - ','Vektor String 422') -- mit bestellnr + SELECT * FROM [FNCUST_GET_MS-DYN365BC_VAT_LIST]('SWE','EB00021129',' - ') -- mit bestellnr + select * from [FNCUST_GET_INVOICE_POS_TRANSFER]('SWE',9229975,'EB9999999','~',' - ','Vektor String 422') -- ohne bestellnr + + SELECT [VALUE] FROM [dbo].[FNDD_GET_WINDREAM_INDEX_VALUES](9209044,'Vektor String 422','; ',0,0); + select * from [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header$437dbf0e-84ff-417a-965d-ed2bb9650972] WHERE [No_] = 'EB00020596' + select * from windreamDB.dbo.BaseAttributes WHERE dwdocid = 9174258; + select * from [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor$437dbf0e-84ff-417a-965d-ed2bb9650972] WHERE [No_] = 232102 + select * from [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972] WHERE [Vendor No_] = 232102 + SELECT * FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS]('SWE','EB00020596','~') WHERE [Line No_] = @attachedToLineNo + (SELECT [Item] FROM [FNCUST_SPLIT_STRING_WITH_GUID] ((SELECT [VALUE] FROM [dbo].[FNDD_GET_WINDREAM_INDEX_VALUES](9174258,'Vektor String 422','; ',0,0)),'~') WHERE [GUID] = 1); + +***/ +GO + + diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_ITEM_LIST].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_ITEM_LIST].sql new file mode 100644 index 0000000..feea230 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_ITEM_LIST].sql @@ -0,0 +1,101 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- HE, MK // 16.03.2026 +-- 16.03.2026 MK Initial + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_MS-DYN365BC_ITEM_LIST] ( + @pMANDATOR_SHORT_NAME NVARCHAR(25), -- Default SWE + @pORDER_NR NVARCHAR(100), + @pDATA_SEPERATOR NVARCHAR(1) = '~' +) +RETURNS @ITEM_LIST TABLE ([GUID] [INT] IDENTITY(1,1) NOT NULL, + [MandantenKurzname] [NVARCHAR](25) NOT NULL, + [Artikelnummer] [NVARCHAR](20) NOT NULL, + [Fremd-Artikelnummer] [NVARCHAR](100) NULL, + [Beschreibung] [NVARCHAR](100) NULL, + [Beschreibung 2] [NVARCHAR](50) NULL, + [Einheitscode] [NVARCHAR](10) NULL, + [EK] [DECIMAL](38,2) NULL, + [VK] [DECIMAL](38,2) NULL) +AS +BEGIN + + DECLARE @MANDATOR_SHORT_NAME_FALLBACK NVARCHAR(25) = 'SWE', + @ORDER_NR_FALLBACK NVARCHAR(50) = 'EB9999999', -- Dummy nr für Rechnungen ohne Bestellung + @WORK_ORDER_NR_FALLBACK NVARCHAR(25) = 'A-99999999', -- Dummy nr für Lagerbestellungen + @DATA_SEPERATOR_FALLBACK NVARCHAR(1) = '~'; + + -- declare new vars because of parameter sniffing + DECLARE @MANDATOR_SHORT_NAME NVARCHAR(25) = UPPER(LTRIM(RTRIM(ISNULL(@pMANDATOR_SHORT_NAME,@MANDATOR_SHORT_NAME_FALLBACK)))), + @ORDER_NR NVARCHAR(100) = UPPER(LTRIM(RTRIM(ISNULL(@pORDER_NR,@ORDER_NR_FALLBACK)))), + @DATA_SEPERATOR NVARCHAR(1) = UPPER(LTRIM(RTRIM(ISNULL(@pDATA_SEPERATOR,@DATA_SEPERATOR_FALLBACK)))); + + IF (@MANDATOR_SHORT_NAME = 'SWE') BEGIN + + IF (@ORDER_NR IN ('0',@ORDER_NR_FALLBACK)) BEGIN -- Bei dummy bestellnr oder nicht aufgelöster variable + + INSERT INTO @ITEM_LIST([MandantenKurzname],[Artikelnummer],[Fremd-Artikelnummer],[Beschreibung],[Beschreibung 2],[Einheitscode],[EK],[VK]) + + SELECT TOP 100 PERCENT + @MANDATOR_SHORT_NAME as 'MandantenKurzname', + REPLACE(LTRIM(RTRIM([Item].[No_])),@DATA_SEPERATOR,'-') as 'Artikelnummer', + REPLACE(LTRIM(RTRIM([Item].[Vendor Item No_])),@DATA_SEPERATOR,'-') as 'Fremd-Artikelnummer', + REPLACE(LTRIM(RTRIM([Item].[Description])),@DATA_SEPERATOR,'-') as 'Beschreibung', + REPLACE(LTRIM(RTRIM([Item].[Description 2])),@DATA_SEPERATOR,'-') as 'Beschreibung 2', + REPLACE(LTRIM(RTRIM([Item].[Base Unit of Measure])),@DATA_SEPERATOR,'-') as 'Einheitscode', + ROUND([Item].[Unit Cost],10) as 'EK', + ROUND([Item].[Unit Price],10) as 'VK' + FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Item$437dbf0e-84ff-417a-965d-ed2bb9650972] as [Item] + + WHERE [Item].[Type] <> 1 + + ORDER BY [Item].[No_] ASC; + + + END ELSE BEGIN + + INSERT INTO @ITEM_LIST([MandantenKurzname],[Artikelnummer],[Fremd-Artikelnummer],[Beschreibung],[Beschreibung 2],[Einheitscode],[EK],[VK]) + + SELECT TOP 100 PERCENT + @MANDATOR_SHORT_NAME as 'MandantenKurzname', + REPLACE(LTRIM(RTRIM([PurchaseLine].[No_])),@DATA_SEPERATOR,'-') as 'Artikelnummer', + REPLACE(LTRIM(RTRIM([PurchaseLine].[Vendor Item No_])),@DATA_SEPERATOR,'-') as 'Fremd-Artikelnummer', + REPLACE(LTRIM(RTRIM([PurchaseLine].[Description])),@DATA_SEPERATOR,'-') as 'Beschreibung', + REPLACE(LTRIM(RTRIM([PurchaseLine].[Description 2])),@DATA_SEPERATOR,'-') as 'Beschreibung 2', + REPLACE(LTRIM(RTRIM([PurchaseLine].[Unit of Measure])),@DATA_SEPERATOR,'-') as 'Einheitscode', + ROUND([PurchaseLine].[Direct Unit Cost],10) as 'EK', + ROUND([PurchaseLine].[Unit Price (LCY)],10) as 'VK' + + FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Line$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PurchaseLine] + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Line$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] as [PurchaseLine$ext] ON [PurchaseLine].[Document Type] = [PurchaseLine$ext].[Document Type] + AND [PurchaseLine].[Document No_] = [PurchaseLine$ext].[Document No_] + AND [PurchaseLine].[Line No_] = [PurchaseLine$ext].[Line No_] + WHERE convert(NVARCHAR(20),[PurchaseLine].[Type]) = '2' + AND UPPER(LTRIM(RTRIM([PurchaseLine].[Document No_]))) = @ORDER_NR + + ORDER BY [PurchaseLine].[Line No_] ASC; + + END; + + END; + + RETURN; + +END; + +GO + +/*** +-- Test + + SELECT * FROM [FNCUST_GET_MS-DYN365BC_ITEM_LIST]('SWE','0','~') -- ohne bestellnr + + SELECT * FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Item$437dbf0e-84ff-417a-965d-ed2bb9650972] as [Item] WHERE [Item].[No_] = 'F60510'; + +***/ \ No newline at end of file diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_ORDER_DATA].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_ORDER_DATA].sql new file mode 100644 index 0000000..118b0e5 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_ORDER_DATA].sql @@ -0,0 +1,173 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- HE, MK // 05.11.2025 +-- 05.03.2025 HE, MK Initial +-- 05.11.2025 HE, MK Anpassungen wegen NAV Update + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_MS-DYN365BC_ORDER_DATA] ( + @pMandatorShortName NVARCHAR(250), -- Default SWE + @pOrderNr NVARCHAR(100)) + +RETURNS @ORDER_DATA TABLE ([GUID] [INT] IDENTITY(1,1) NOT NULL, + [MandantenKurzname] [NVARCHAR](25) NOT NULL, + [Version] [TINYINT] NOT NULL, + [BestellNr] [NVARCHAR](100) NOT NULL, + [LieferantenNr] [NVARCHAR](50) NOT NULL, + [LieferantenName] [NVARCHAR](100) NOT NULL, + [BestellReferenz] [NVARCHAR](100) NULL, + [BestellDatum] [datetime2] NULL, + [Buchungstext] [NVARCHAR](200) NULL, + [Zlg.-Bedingung] [NVARCHAR](200) NULL, + [BestellerName_DMSSync] [NVARCHAR](50) NULL, + [SkontoProzent] [FLOAT] NULL, + [SkontoTage] [TINYINT] NULL, + [BestellWertNetto] [DECIMAL](20,2) NULL, + [BestellWertBrutto] [DECIMAL](20,2) NULL) +AS +BEGIN + + -- declare new vars because of parameter sniffing + DECLARE @MandatorShortName NVARCHAR(250) = UPPER(LTRIM(RTRIM(@pMandatorShortName))), + @OrderNr NVARCHAR(100) = UPPER(LTRIM(RTRIM(@pOrderNr))), + @VersionNo TINYINT = 0; + + IF (@MandatorShortName like 'SWE%') OR (@MandatorShortName like '%SWE%') OR (@MandatorShortName like '%SWE') BEGIN + + INSERT INTO @ORDER_DATA([MandantenKurzname],[Version],[BestellNr],[LieferantenNr],[LieferantenName],[BestellReferenz],[BestellDatum],[Buchungstext],[Zlg.-Bedingung],[BestellerName_DMSSync],[SkontoProzent],[SkontoTage],[BestellWertNetto],[BestellWertBrutto]) + + SELECT TOP 10000 + @MandatorShortName as 'MandantenKurzname', + 0 as 'Version', + UPPER([PurchaseHeader].[No_]) as 'BestellNr', + LTRIM(RTRIM([PurchaseHeader].[Buy-from Vendor No_])) as 'LieferantenNr', + CASE WHEN LEN(LTRIM(RTRIM([PurchaseHeader].[Buy-from Vendor Name 2]))) > 0 + THEN CONCAT((LTRIM(RTRIM([PurchaseHeader].[Buy-from Vendor Name]))),', ',(LTRIM(RTRIM([PurchaseHeader].[Buy-from Vendor Name 2])))) + ELSE (LTRIM(RTRIM([PurchaseHeader].[Buy-from Vendor Name]))) + END as 'LieferantenName', + CASE WHEN LEN(TRIM([PurchaseHeader].[Your Reference])) > 0 + THEN TRIM([PurchaseHeader].[Your Reference]) + ELSE NULL + END as 'BestellReferenz', + [PurchaseHeader].[Order Date] as 'BestellDatum', + LTRIM(RTRIM([PurchaseHeader].[Posting Description])) as 'Buchungstext', + LTRIM(RTRIM([PaymentTerms].[Description])) as 'Zlg.-Bedingung', + CASE WHEN (SELECT count([USERNAME]) FROM [TBDD_USER] WHERE [USERNAME] IN (SELECT [USER_NAME] FROM [FNCUST_GET_MS-DYN365BC_USER_DATA](@MandatorShortName,[PurchaseHeader$ext].[WLK Resource Requester$408c5b32-694e-47bb-96d5-dad7fc8111a7]))) > 0 + THEN (SELECT [USER_NAME] FROM [FNCUST_GET_MS-DYN365BC_USER_DATA](@MandatorShortName,[PurchaseHeader$ext].[WLK Resource Requester$408c5b32-694e-47bb-96d5-dad7fc8111a7])) + ELSE NULL + END as 'BestellerName_DMSSync', + convert(FLOAT,[PurchaseHeader].[Payment Discount _]) as 'SkontoProzent', + --CASE WHEN ((DATEDIFF(DAY,[PurchaseHeader].[Posting Date],[PurchaseHeader].[Pmt_ Discount Date])) > 0) and ((DATEDIFF(DAY,[PurchaseHeader].[Posting Date],[PurchaseHeader].[Pmt_ Discount Date])) < 100) + -- THEN DATEDIFF(DAY,[PurchaseHeader].[Posting Date],[PurchaseHeader].[Pmt_ Discount Date]) + -- ELSE 0 + --END as 'SkontoTage', + CASE WHEN [PurchaseHeader].[Prepmt_ Payment Terms Code] like '%/%/%' + THEN PARSENAME(REPLACE([PurchaseHeader].[Prepmt_ Payment Terms Code], '/', '.'), 2) + ELSE 0 + END as 'SkontoTage', + + convert(decimal(20,2),SUM([PurchaseLine].[Amount])) as 'BestellWertNetto', + convert(decimal(20,2),SUM([PurchaseLine].[Amount Including VAT])) as 'BestellWertBrutto' + + FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PurchaseHeader] + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] as [PurchaseHeader$ext] ON [PurchaseHeader].[Document Type] = [PurchaseHeader$ext].[Document Type] + AND [PurchaseHeader].[No_] = [PurchaseHeader$ext].[No_] + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Line$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PurchaseLine] ON [PurchaseHeader].[Document Type] = [PurchaseLine].[Document Type] + AND [PurchaseHeader].[No_] = [PurchaseLine].[Document No_] + AND [PurchaseLine].[Type] = 2 -- = Artikel + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Payment Terms$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PaymentTerms] ON [PurchaseHeader].[Payment Terms Code] = [PaymentTerms].[Code] + + WHERE [PurchaseHeader].[No_ Series] IN ('EK-BED','EK-BESTELL') + AND UPPER([PurchaseHeader].[No_]) = @OrderNr + + GROUP BY UPPER([PurchaseHeader].[No_]), LTRIM(RTRIM([PurchaseHeader].[Buy-from Vendor No_])), LTRIM(RTRIM([PurchaseHeader].[Buy-from Vendor Name])), LTRIM(RTRIM([PurchaseHeader].[Buy-from Vendor Name 2])), + TRIM([PurchaseHeader].[Your Reference]), [PurchaseHeader].[Order Date], LTRIM(RTRIM([PurchaseHeader].[Posting Description])), LTRIM(RTRIM([PaymentTerms].[Description])), [PurchaseHeader$ext].[WLK Resource Requester$408c5b32-694e-47bb-96d5-dad7fc8111a7], + convert(FLOAT,[PurchaseHeader].[Payment Discount _]), [PurchaseHeader].[Posting Date], [PurchaseHeader].[Prepmt_ Payment Terms Code] + + IF ((SELECT count(*) FROM @ORDER_DATA) = 0 ) BEGIN + + SET @VersionNo = (SELECT MAX([Version No_]) FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header Archive$437dbf0e-84ff-417a-965d-ed2bb9650972] WHERE [No_ Series] IN ('EK-BED','EK-BESTELL') AND UPPER([No_]) = @OrderNr); + + INSERT INTO @ORDER_DATA([MandantenKurzname],[Version],[BestellNr],[LieferantenNr],[LieferantenName],[BestellReferenz],[BestellDatum],[Buchungstext],[Zlg.-Bedingung],[BestellerName_DMSSync],[SkontoProzent],[SkontoTage],[BestellWertNetto],[BestellWertBrutto]) + + SELECT TOP 10000 + @MandatorShortName as 'MandantenKurzname', + [PurchaseHeaderArchive].[Version No_] as 'Version', + UPPER([PurchaseHeaderArchive].[No_]) as 'BestellNr', + LTRIM(RTRIM([PurchaseHeaderArchive].[Buy-from Vendor No_])) as 'LieferantenNr', + CASE WHEN LEN(LTRIM(RTRIM([PurchaseHeaderArchive].[Buy-from Vendor Name 2]))) > 0 + THEN CONCAT((LTRIM(RTRIM([PurchaseHeaderArchive].[Buy-from Vendor Name]))),', ',(LTRIM(RTRIM([PurchaseHeaderArchive].[Buy-from Vendor Name 2])))) + ELSE (LTRIM(RTRIM([PurchaseHeaderArchive].[Buy-from Vendor Name]))) + END as 'LieferantenName', + CASE WHEN LEN(TRIM([PurchaseHeaderArchive].[Your Reference])) > 0 + THEN TRIM([PurchaseHeaderArchive].[Your Reference]) + ELSE NULL + END as 'BestellReferenz', + [PurchaseHeaderArchive].[Order Date] as 'BestellDatum', + LTRIM(RTRIM([PurchaseHeaderArchive].[Posting Description])) as 'Buchungstext', + LTRIM(RTRIM([PaymentTerms].[Description])) as 'Zlg.-Bedingung', + CASE WHEN (SELECT count([USERNAME]) FROM [TBDD_USER] WHERE [USERNAME] IN (SELECT [USER_NAME] FROM [FNCUST_GET_MS-DYN365BC_USER_DATA](@MandatorShortName,[PurchaseHeaderArchive$ext].[WLK Resource Requester$408c5b32-694e-47bb-96d5-dad7fc8111a7]))) > 0 + THEN (SELECT [USER_NAME] FROM [FNCUST_GET_MS-DYN365BC_USER_DATA](@MandatorShortName,[PurchaseHeaderArchive$ext].[WLK Resource Requester$408c5b32-694e-47bb-96d5-dad7fc8111a7])) + ELSE NULL + END as 'BestellerName_DMSSync', + convert(FLOAT,[PurchaseHeaderArchive].[Payment Discount _]) as 'SkontoProzent', + --CASE WHEN ((DATEDIFF(DAY,[PurchaseHeaderArchive].[Posting Date],[PurchaseHeaderArchive].[Pmt_ Discount Date])) > 0) and ((DATEDIFF(DAY,[PurchaseHeaderArchive].[Posting Date],[PurchaseHeaderArchive].[Pmt_ Discount Date])) < 100) + -- THEN DATEDIFF(DAY,[PurchaseHeaderArchive].[Posting Date],[PurchaseHeaderArchive].[Pmt_ Discount Date]) + -- ELSE 0 + --END as 'SkontoTage', + CASE WHEN [PurchaseHeaderArchive].[Payment Terms Code] like '%/%/%' + THEN PARSENAME(REPLACE([PurchaseHeaderArchive].[Payment Terms Code], '/', '.'), 2) + ELSE 0 + END as 'SkontoTage', + convert(decimal(20,2),SUM([PurchaseLineArchive].[Amount])) as 'BestellWertNetto', + convert(decimal(20,2),SUM([PurchaseLineArchive].[Amount Including VAT])) as 'BestellWertBrutto' + + FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header Archive$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PurchaseHeaderArchive] + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header Archive$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] as [PurchaseHeaderArchive$ext] ON [PurchaseHeaderArchive].[Document Type] = [PurchaseHeaderArchive$ext].[Document Type] + AND [PurchaseHeaderArchive].[No_] = [PurchaseHeaderArchive$ext].[No_] + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Line Archive$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PurchaseLineArchive] ON [PurchaseHeaderArchive].[Document Type] = [PurchaseLineArchive].[Document Type] + AND [PurchaseHeaderArchive].[No_] = [PurchaseLineArchive].[Document No_] + AND [PurchaseLineArchive].[Type] = 2 + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Payment Terms$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PaymentTerms] ON [PurchaseHeaderArchive].[Payment Terms Code] = [PaymentTerms].[Code] + + WHERE [PurchaseHeaderArchive].[No_ Series] IN ('EK-BED','EK-BESTELL') + AND UPPER([PurchaseHeaderArchive].[No_]) = @OrderNr + AND [PurchaseHeaderArchive].[Version No_] = @VersionNo + + GROUP BY [PurchaseHeaderArchive].[Version No_], UPPER([PurchaseHeaderArchive].[No_]), LTRIM(RTRIM([PurchaseHeaderArchive].[Buy-from Vendor No_])), LTRIM(RTRIM([PurchaseHeaderArchive].[Buy-from Vendor Name])), LTRIM(RTRIM([PurchaseHeaderArchive].[Buy-from Vendor Name 2])), + TRIM([PurchaseHeaderArchive].[Your Reference]), [PurchaseHeaderArchive].[Order Date], LTRIM(RTRIM([PurchaseHeaderArchive].[Posting Description])), LTRIM(RTRIM([PaymentTerms].[Description])), [PurchaseHeaderArchive$ext].[WLK Resource Requester$408c5b32-694e-47bb-96d5-dad7fc8111a7], + convert(FLOAT,[PurchaseHeaderArchive].[Payment Discount _]), [PurchaseHeaderArchive].[Posting Date], [PurchaseHeaderArchive].[Payment Terms Code] + + END; + + --IF (@UserID > 0) BEGIN + -- SELECT @BestellerName = CASE WHEN LTRIM(RTRIM([User Name])) like '%\%' + -- THEN SUBSTRING(LTRIM(RTRIM([User Name])), CHARINDEX('\', LTRIM(RTRIM([User Name]))) + 1, LEN(LTRIM(RTRIM([User Name]))) - CHARINDEX('\', LTRIM(RTRIM([User Name])))) + -- ELSE LTRIM(RTRIM([User Name])) + -- END + -- FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Employee$437dbf0e-84ff-417a-965d-ed2bb9650972] as [Employee] + -- INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[User] as [User] ON [Employee].[$systemId] = [User].[$systemId] + -- WHERE [Employee].[no_] = @UserID + --END; ELSE BEGIN + -- SET @BestellerName = NULL + --END; + + END; + + RETURN; + +END; + +GO + +/*** +-- Test + + select * FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Header$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PurchaseHeader] where [PurchaseHeader].[No_] in ('ERM0000052','ERM0000053') + +***/ \ No newline at end of file diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS].sql new file mode 100644 index 0000000..bd4b1c4 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS].sql @@ -0,0 +1,191 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- MK // 05.11.2025 +-- 21.03.2025 MK Initial +-- 05.11.2025 HE, MK Anpassungen wegen NAV Update + +-- Verwendet in: +-- ToolCollection NI: SWE_NI-DB_Bestelldaten-anhand-MS-DYN365BC + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS] ( + @pMandatorShortName NVARCHAR(250), -- Default SWE + @pOrderNr NVARCHAR(100), + @pDATA_SEPERATOR NVARCHAR(1) = '~' +) +RETURNS @ORDER_DATA_POS TABLE ([GUID] [BIGINT] IDENTITY(1,1) NOT NULL, + [CONTENT_CONCAT] [NVARCHAR](512) NOT NULL, + [MandantenKurzname] [NVARCHAR](25) NOT NULL, + [Version] [TINYINT] NOT NULL, + [Document No_] [NVARCHAR](100) NOT NULL, + [Line No_] [INT] NOT NULL, + [Buy-from Vendor No_] [NVARCHAR](50) NOT NULL, + [Vendor Item No_] [NVARCHAR](50) NULL, + [Type] [NVARCHAR](20) NOT NULL, + [No_] [NVARCHAR](20) NULL, + [Work Order No_] [NVARCHAR](20) NULL, + [Description] [NVARCHAR](100) NULL, + [Description 2] [NVARCHAR](50) NULL, + [Quantity] [NVARCHAR](50) NULL, + [Quantity Received] [NVARCHAR](50) NULL, + [Unit of Measure] [NVARCHAR](50) NULL, + [Direct Unit Cost] [NVARCHAR](50) NULL, + [Line Amount] [NVARCHAR](50) NULL, + [Amount Including VAT] [NVARCHAR](50) NULL, + [VAT Identifier] [NVARCHAR](50) NULL, + [Line Discount _] [NVARCHAR](50) NULL, + [Line Discount Amount] [NVARCHAR](50) NULL, + [Location Code] [NVARCHAR](10) NULL, + [Variant Code] [NVARCHAR](10) NULL, + [Able to Discount] [NVARCHAR](20) NULL, + [Gen_ Bus_ Posting Group] [NVARCHAR](20) NULL, + [Gen_ Prod_ Posting Group] [NVARCHAR](20) NULL, + [VAT Bus_ Posting Group] [NVARCHAR](20) NULL, + [VAT Prod_ Posting Group] [NVARCHAR](20) NULL, + [Appl_-to Item Entry] [INT] NULL, + [Posting Without Apply] [TINYINT] NULL, + [Anticipated Payment] [INT] NULL, + [Receipt No_] [NVARCHAR](20) NULL, + [Receipt Line No_] [INT] NULL, + [IR Order No_] [NVARCHAR](20) NULL, + [IR Order Line No_] [INT] NULL) +AS +BEGIN + + DECLARE @ORDER_NR_FALLBACK NVARCHAR(50) = 'EB9999999', -- Dummy nr für Rechnungen ohne Bestellung + @WORK_ORDER_NR_FALLBACK NVARCHAR(25) = 'A-99999999'; -- Dummy nr für Lagerbestellungen + + -- declare new vars because of parameter sniffing + DECLARE @MandatorShortName NVARCHAR(250) = UPPER(LTRIM(RTRIM(@pMandatorShortName))), + @OrderNr NVARCHAR(100) = UPPER(LTRIM(RTRIM(@pOrderNr))), + @DATA_SEPERATOR NVARCHAR(1) = UPPER(LTRIM(RTRIM(@pDATA_SEPERATOR))); + + DECLARE @ArticleTypeNr TINYINT = 2; + + IF (@MandatorShortName like 'SWE%') OR (@MandatorShortName like '%SWE%') OR (@MandatorShortName like '%SWE') BEGIN + + INSERT INTO @ORDER_DATA_POS([CONTENT_CONCAT], + [MandantenKurzname], + [Version], + [Document No_], + [Line No_], + [Buy-from Vendor No_], + [Vendor Item No_], + [Type],[No_], + [Work Order No_], + [Description], + [Description 2], + [Quantity], + [Quantity Received], + [Unit of Measure], + [Direct Unit Cost], + [Line Amount], + [Amount Including VAT], + [VAT Identifier], + [Line Discount _], + [Line Discount Amount], + [Location Code], + [Variant Code], + [Able to Discount], + [Gen_ Bus_ Posting Group], + [Gen_ Prod_ Posting Group], + [VAT Bus_ Posting Group], + [VAT Prod_ Posting Group], + [Appl_-to Item Entry], + [Posting Without Apply], + [Anticipated Payment], + [Receipt No_], + [Receipt Line No_], + [IR Order No_], + [IR Order Line No_]) + + SELECT TOP 10000 + CONCAT((CASE WHEN convert(NVARCHAR(20),[PurchaseLine].[Type]) = '2' THEN 'Artikel' ELSE convert(NVARCHAR(20),[PurchaseLine].[Type]) END),@DATA_SEPERATOR, + LTRIM(RTRIM([PurchaseLine].[No_])),@DATA_SEPERATOR, + LTRIM(RTRIM([PurchaseLine].[Vendor Item No_])),@DATA_SEPERATOR, + LTRIM(RTRIM([PurchaseLine$ext].[WLK Work Order No_$408c5b32-694e-47bb-96d5-dad7fc8111a7])),@DATA_SEPERATOR, + REPLACE(LTRIM(RTRIM([PurchaseLine].[Description])),@DATA_SEPERATOR,'-'),@DATA_SEPERATOR, + REPLACE(LTRIM(RTRIM([PurchaseLine].[Description 2])),@DATA_SEPERATOR,'-'),@DATA_SEPERATOR, + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Quantity])),'.',','),@DATA_SEPERATOR, + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[Quantity Received])),'.',','),@DATA_SEPERATOR, + LTRIM(RTRIM([PurchaseLine].[Unit of Measure])),@DATA_SEPERATOR, + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Direct Unit Cost])),'.',','),@DATA_SEPERATOR, + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Line Amount])),'.',','),@DATA_SEPERATOR, + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Amount Including VAT])),'.',','),@DATA_SEPERATOR, + REPLACE(CONVERT(VARCHAR,LTRIM(RTRIM([PurchaseLine].[VAT Identifier]))),'.',','),@DATA_SEPERATOR, + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Line Discount _])),'.',','),@DATA_SEPERATOR, + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Line Discount Amount])),'.',',')) as 'CONTENT_CONCAT', + @MandatorShortName, -- 'MandantenKurzname' + 0, -- 'Version' + LTRIM(RTRIM([PurchaseLine].[Document No_])), -- Document No_ / 'BestellNr' + [PurchaseLine].[Line No_], -- Positionsnummer aus Bestellung + LTRIM(RTRIM([PurchaseLine].[Buy-from Vendor No_])), -- 'LieferantenNr' + LTRIM(RTRIM([PurchaseLine].[Vendor Item No_])), -- 'Kred.-Artikelnr.' + CASE WHEN convert(NVARCHAR(20),[PurchaseLine].[Type]) = @ArticleTypeNr -- + THEN 'Artikel' -- + ELSE convert(NVARCHAR(20),[PurchaseLine].[Type]) -- + END, -- 'Art' + LTRIM(RTRIM([PurchaseLine].[No_])), -- 'Artikelnummer' + LTRIM(RTRIM([PurchaseLine$ext].[WLK Work Order No_$408c5b32-694e-47bb-96d5-dad7fc8111a7])), -- 'Arbeitsauftragsnummer' + REPLACE(LTRIM(RTRIM([PurchaseLine].[Description])),@DATA_SEPERATOR,'-'), -- 'Beschreibung' + REPLACE(LTRIM(RTRIM([PurchaseLine].[Description 2])),@DATA_SEPERATOR,'-'), -- 'Beschreibung 2' + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Quantity])),'.',','), -- 'Menge bestellt' + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[Quantity Received])),'.',','), -- 'Menge geliefert' + LTRIM(RTRIM([PurchaseLine].[Unit of Measure])), -- 'Einheitencode' + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Direct Unit Cost])),'.',','), -- 'EK-Preis ohne MwSt' + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Line Amount])),'.',','), -- 'Zeilenbetrag ohne MwSt' + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Amount Including VAT])),'.',','), -- 'Betrag inkl. MwSt' + REPLACE(CONVERT(VARCHAR,LTRIM(RTRIM([PurchaseLine].[VAT Identifier]))),'.',','), -- 'MwSt.-Produktbuchungsgruppe' + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Line Discount _])),'.',','), -- 'Zeilenrabatt Prozent' + REPLACE(CONVERT(VARCHAR,CONVERT(DECIMAL(38,2),[PurchaseLine].[Line Discount Amount])),'.',','), -- 'Zeilenrabattbetrag' + + LTRIM(RTRIM([PurchaseLine].[Location Code])), -- 'locationCode' + LTRIM(RTRIM([PurchaseLine].[Variant Code])), -- 'variantCode' + LTRIM(RTRIM([PurchaseLine$ext].[WLK Able to Discount$408c5b32-694e-47bb-96d5-dad7fc8111a7])), -- 'ableToDiscount' + LTRIM(RTRIM([PurchaseLine].[Gen_ Bus_ Posting Group])), -- 'genBusPostingGroup' + LTRIM(RTRIM([PurchaseLine].[Gen_ Prod_ Posting Group])), -- 'genProdPostingGroup' + LTRIM(RTRIM([PurchaseLine].[VAT Bus_ Posting Group])), -- 'vatBusPostingGroup' + LTRIM(RTRIM([PurchaseLine].[VAT Prod_ Posting Group])), -- 'vatProdPostingGroup' + [PurchaseLine].[Appl_-to Item Entry], -- 'applToItemEntry' + [PurchaseLine$ext].[WLK Posting Without Apply$408c5b32-694e-47bb-96d5-dad7fc8111a7], -- 'postingWithoutApply' + [PurchaseLine$ext].[WLK Anticipated Payment$408c5b32-694e-47bb-96d5-dad7fc8111a7], -- 'anticipatedPayment' + LTRIM(RTRIM([PurchaseLine$ext].[WLK Receipt No_ DMS$408c5b32-694e-47bb-96d5-dad7fc8111a7])), -- 'receiptNo' + [PurchaseLine$ext].[WLK Line No_ (EP)$408c5b32-694e-47bb-96d5-dad7fc8111a7], -- 'receiptLineNo' + LTRIM(RTRIM([PurchaseLine$ext].[WLK IR Order No_$408c5b32-694e-47bb-96d5-dad7fc8111a7])), -- 'irOrderNo' + [PurchaseLine$ext].[WLK IR Order Line No_$408c5b32-694e-47bb-96d5-dad7fc8111a7] -- 'irOrderLineNo' + + FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Line$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PurchaseLine] + INNER JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Line$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] as [PurchaseLine$ext] ON [PurchaseLine].[Document Type] = [PurchaseLine$ext].[Document Type] + AND [PurchaseLine].[Document No_] = [PurchaseLine$ext].[Document No_] + AND [PurchaseLine].[Line No_] = [PurchaseLine$ext].[Line No_] + WHERE convert(NVARCHAR(20),[PurchaseLine].[Type]) = @ArticleTypeNr + AND UPPER(LTRIM(RTRIM([PurchaseLine].[Document No_]))) = @OrderNr + + ORDER BY [PurchaseLine].[Line No_] ASC; + + -- UNION ALL + + -- FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Purchase Line Archive$437dbf0e-84ff-417a-965d-ed2bb9650972] + -- where [Type] = 2 and [Document No_] = 'EB00015129' + --order by [Version No_],[Line No_] asc + + END; + + RETURN; + +END; + +/*** +-- Test mit + + SELECT * FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS]('SWE','EB00021129','~') + SELECT * FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS]('SWE','EB00015129','~') + SELECT * FROM [FNCUST_GET_MS-DYN365BC_ORDER_DATA_POS]('SWE','EB00020596','~') + +***/ + diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_VAT_LIST].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_VAT_LIST].sql new file mode 100644 index 0000000..133d370 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_VAT_LIST].sql @@ -0,0 +1,106 @@ +USE [DD_ECM] +GO + +/****** Object: UserDefinedFunction [dbo].[FNCUST_GET_MS-DYN365BC_VAT_LIST] Script Date: 27.03.2026 14:28:00 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + +-- MK // 18.03.2026 +-- 18.03.2026 MK Initial + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_MS-DYN365BC_VAT_LIST] ( + @pMANDATOR_SHORT_NAME NVARCHAR(25), -- Default SWE + @pORDER_NR NVARCHAR(25), + @pDATA_SEPERATOR_TAX NVARCHAR(3) = ' - ' +) +RETURNS @VAT_LIST TABLE ([GUID] [BIGINT] IDENTITY(1,1) NOT NULL, + [MANDATOR_SHORT_NAME] [NVARCHAR](25) NULL, + [CONTENT_CONCAT] [NVARCHAR](512) NOT NULL, + [VAT Prod_ Posting Group] [NVARCHAR](20) NOT NULL, + [VAT Bus_ Posting Group] [NVARCHAR](20) NOT NULL, + [Description] [NVARCHAR](100) NULL, + [VAT _] [DECIMAL](5,2) NOT NULL) +AS +BEGIN + + DECLARE @MANDATOR_SHORT_NAME_FALLBACK NVARCHAR(25) = 'SWE', + @ORDER_NR_FALLBACK NVARCHAR(50) = 'EB9999999', -- Dummy nr für Rechnungen ohne Bestellung + @WORK_ORDER_NR_FALLBACK NVARCHAR(25) = 'A-99999999', -- Dummy nr für Lagerbestellungen + @DATA_SEPERATOR_TAX_FALLBACK NVARCHAR(3) = ' - '; + + -- declare new vars because of parameter sniffing + DECLARE @MANDATOR_SHORT_NAME NVARCHAR(25) = UPPER(LTRIM(RTRIM(ISNULL(@pMANDATOR_SHORT_NAME,@MANDATOR_SHORT_NAME_FALLBACK)))), + @ORDER_NR NVARCHAR(100) = UPPER(LTRIM(RTRIM(ISNULL(@pORDER_NR,@ORDER_NR_FALLBACK)))), + @DATA_SEPERATOR_TAX NVARCHAR(3) = UPPER(ISNULL(@pDATA_SEPERATOR_TAX,@DATA_SEPERATOR_TAX_FALLBACK)); + + IF ((@MANDATOR_SHORT_NAME = 'SWE') AND (@ORDER_NR IN ('0',@ORDER_NR_FALLBACK))) BEGIN + + INSERT INTO @VAT_LIST([MANDATOR_SHORT_NAME], + [CONTENT_CONCAT], + [VAT Prod_ Posting Group], + [VAT Bus_ Posting Group], + [Description], + [VAT _]) + + SELECT TOP 1000 @MANDATOR_SHORT_NAME as 'MANDATOR_SHORT_NAME', + concat([VAT Prod_ Posting Group], + @DATA_SEPERATOR_TAX, + [VAT Bus_ Posting Group], + @DATA_SEPERATOR_TAX, + convert(decimal(5,2),[VAT _]),'%') as 'CONTENT_CONCAT', + [VAT Prod_ Posting Group] as 'VAT Prod_ Posting Group', + [VAT Bus_ Posting Group] as 'VAT Bus_ Posting Group', + [Description] as 'Description', + convert(decimal(5,2),[VAT _]) as 'VAT _' + + FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$VAT Posting Setup$437dbf0e-84ff-417a-965d-ed2bb9650972] + WHERE LEN([VAT Identifier]) > 0 + ORDER BY [VAT Bus_ Posting Group] ASC, [VAT _] DESC; + + + END; ELSE BEGIN + + -- Später ersetzen durch Abfrage auf Purchase Line-- + INSERT INTO @VAT_LIST([MANDATOR_SHORT_NAME], + [CONTENT_CONCAT], + [VAT Prod_ Posting Group], + [VAT Bus_ Posting Group], + [Description], + [VAT _]) + + SELECT TOP 1000 @MANDATOR_SHORT_NAME as 'MANDATOR_SHORT_NAME', + concat([VAT Prod_ Posting Group], + @DATA_SEPERATOR_TAX, + [VAT Bus_ Posting Group], + @DATA_SEPERATOR_TAX, + convert(decimal(5,2),[VAT _]),'%') as 'CONTENT_CONCAT', + [VAT Prod_ Posting Group] as 'VAT Prod_ Posting Group', + [VAT Bus_ Posting Group] as 'VAT Bus_ Posting Group', + [Description] as 'Description', + convert(decimal(5,2),[VAT _]) as 'VAT _' + + FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$VAT Posting Setup$437dbf0e-84ff-417a-965d-ed2bb9650972] + WHERE LEN([VAT Identifier]) > 0 + ORDER BY [VAT Bus_ Posting Group] ASC, [VAT _] DESC; + + END; + + + RETURN; + +END; + +/*** +-- Test mit + + SELECT * FROM [FNCUST_GET_MS-DYN365BC_VAT_LIST]('SWE','EB00021129',' - ') -- mit bestellnr + SELECT * FROM [FNCUST_GET_MS-DYN365BC_VAT_LIST]('SWE','EB9999999',' - ') -- ohne bestellnr + +***/ +GO + + diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_VENDOR_INFO].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_VENDOR_INFO].sql new file mode 100644 index 0000000..18780ea --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_MS-DYN365BC_VENDOR_INFO].sql @@ -0,0 +1,282 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- HE, MK // 04.03.2026 +-- 04.03.2026 HE, MK Initial + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_MS-DYN365BC_VENDOR_INFO] ( + @pMANDATOR NVARCHAR(15), + @pUSE_LIKE_SEARCH BIT, + @pVENDOR_NUMBER NVARCHAR(20), + @pVENDOR_NAME NVARCHAR(100), + @pVENDOR_SEARCH_NAME NVARCHAR(100), + @pVENDOR_NAME2 NVARCHAR(50), + @pVAT_REGISTRATION_NUMBER NVARCHAR(50), + @pIBAN NVARCHAR(50) +) +RETURNS @vTB_VENDOR_INFO TABLE ([GUID] [BIGINT] IDENTITY(1,1) NOT NULL, + [No_] [NVARCHAR](20) NOT NULL, + [Name] [NVARCHAR](100) NOT NULL, + [Search Name] [NVARCHAR](100) NULL, + [Name 2] [NVARCHAR](50) NULL, + [Address] [NVARCHAR](100) NULL, + [Address 2] [NVARCHAR](50) NULL, + [City] [NVARCHAR](30) NULL, + [Contact] [NVARCHAR](100) NULL, + [Phone No_] [NVARCHAR](30) NULL, + [Our Account No_] [NVARCHAR](20) NULL, + [Vendor Posting Group] [NVARCHAR](20) NULL, + [Payment Terms Code] [NVARCHAR](10) NULL, + [Purchaser Code] [NVARCHAR](20) NULL, + [Invoice Disc_ Code] [NVARCHAR](20) NULL, + [Country_Region Code] [NVARCHAR](10) NULL, + [Blocked] [INT] NOT NULL, + [Pay-to Vendor No_] [NVARCHAR](20) NULL, + [Payment Method Code] [NVARCHAR](10) NULL, + [Prices Including VAT] [TINYINT] NULL, + [Fax No_] [NVARCHAR](30) NULL, + [VAT Registration No_] [NVARCHAR](20) NULL, + [Gen_ Bus_ Posting Group] [NVARCHAR](20) NULL, + [GLN] [NVARCHAR](13) NULL, + [Post Code] [NVARCHAR](20) NULL, + [County] [NVARCHAR](30) NULL, + [E-Mail] [NVARCHAR](80) NULL, + [Home Page] [NVARCHAR](80) NULL, + [No_ Series] [NVARCHAR](20) NULL, + [VAT Bus_ Posting Group] [NVARCHAR](20) NULL, + [Primary Contact No_] [NVARCHAR](20) NULL, + [Document Sending Profile] [NVARCHAR](20) NULL, + [IBAN] [NVARCHAR](50) NULL, + [Payment Terms Due Date Calculation] [VARCHAR](32) NULL, + [Payment Terms Discount Date Calculation] [VARCHAR](32) NULL, + [Payment Terms Discount _] [FLOAT] NULL, + [Payment Terms Description] [NVARCHAR](100) NULL) +AS +BEGIN + + -- declare new vars because of parameter sniffing + DECLARE @MANDATOR NVARCHAR(15) = UPPER(LTRIM(RTRIM(@pMANDATOR))), + @USE_LIKE_SEARCH BIT = ISNULL(@pUSE_LIKE_SEARCH,0), + @VENDOR_NUMBER NVARCHAR(20) = LTRIM(RTRIM(@pVENDOR_NUMBER)), + @VENDOR_NAME NVARCHAR(100) = LTRIM(RTRIM(@pVENDOR_NAME)), + @VENDOR_SEARCH_NAME NVARCHAR(100) = LTRIM(RTRIM(@pVENDOR_SEARCH_NAME)), + @VENDOR_NAME2 NVARCHAR(50) = LTRIM(RTRIM(@pVENDOR_NAME2)), + @VAT_REGISTRATION_NUMBER NVARCHAR(50) = LTRIM(RTRIM(@pVAT_REGISTRATION_NUMBER)), + @IBAN NVARCHAR(50) = REPLACE(@pIBAN,' ',''); + + -- declare runtime vars + DECLARE @MY_FUNCTION_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID); + DECLARE @FUNCTIONAL_CHARACTER NVARCHAR(1) = char(2); + + IF ((@MANDATOR = 'SWE') AND (@USE_LIKE_SEARCH = 0)) BEGIN + + INSERT INTO @vTB_VENDOR_INFO([No_], + [Name], + [Search Name], + [Name 2], + [Address], + [Address 2], + [City], + [Contact], + [Phone No_], + [Our Account No_], + [Vendor Posting Group], + [Payment Terms Code], + [Purchaser Code], + [Invoice Disc_ Code], + [Country_Region Code], + [Blocked], + [Pay-to Vendor No_], + [Payment Method Code], + [Prices Including VAT], + [Fax No_], + [VAT Registration No_], + [Gen_ Bus_ Posting Group], + [GLN], + [Post Code], + [County], + [E-Mail], + [Home Page], + [No_ Series], + [VAT Bus_ Posting Group], + [Primary Contact No_], + [Document Sending Profile], + [IBAN], + [Payment Terms Due Date Calculation], + [Payment Terms Discount Date Calculation], + [Payment Terms Discount _], + [Payment Terms Description]) + + SELECT DISTINCT [Vendor].[No_] + ,[Vendor].[Name] + ,[Vendor].[Search Name] + ,[Vendor].[Name 2] + ,[Vendor].[Address] + ,[Vendor].[Address 2] + ,[Vendor].[City] + ,[Vendor].[Contact] + ,[Vendor].[Phone No_] + ,[Vendor].[Our Account No_] + ,[Vendor].[Vendor Posting Group] + ,[Vendor].[Payment Terms Code] + ,[Vendor].[Purchaser Code] + ,[Vendor].[Invoice Disc_ Code] + ,[Vendor].[Country_Region Code] + ,[Vendor].[Blocked] + ,[Vendor].[Pay-to Vendor No_] + ,[Vendor].[Payment Method Code] + ,[Vendor].[Prices Including VAT] + ,[Vendor].[Fax No_] + ,[Vendor].[VAT Registration No_] + ,[Vendor].[Gen_ Bus_ Posting Group] + ,[Vendor].[GLN] + ,[Vendor].[Post Code] + ,[Vendor].[County] + ,[Vendor].[E-Mail] + ,[Vendor].[Home Page] + ,[Vendor].[No_ Series] + ,[Vendor].[VAT Bus_ Posting Group] + ,[Vendor].[Primary Contact No_] + ,[Vendor].[Document Sending Profile] + ,CASE + WHEN (SELECT COUNT(*) FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] + WHERE [Vendor No_] = [Vendor].[No_] AND [WLK Clearing$408c5b32-694e-47bb-96d5-dad7fc8111a7] = 1) = 1 + + THEN (SELECT [IBAN] FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972] + WHERE [Vendor No_] = [Vendor].[No_] AND [CODE] = (SELECT [Code] FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] + WHERE [Vendor No_] = [Vendor].[No_] AND [WLK Clearing$408c5b32-694e-47bb-96d5-dad7fc8111a7] = 1)) + ELSE @IBAN + END + ,REPLACE([PaymentTerms].[Due Date Calculation],@FUNCTIONAL_CHARACTER,'') + ,REPLACE([PaymentTerms].[Discount Date Calculation],@FUNCTIONAL_CHARACTER,'') + ,CONVERT(FLOAT,(CONVERT(DECIMAL(3,2),[PaymentTerms].[Discount _]))) + ,[PaymentTerms].[Description] + + FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor$437dbf0e-84ff-417a-965d-ed2bb9650972] as [Vendor] + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972] as [VendorBankAccount] ON [Vendor].[No_] = [VendorBankAccount].[Vendor No_] + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Payment Terms$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PaymentTerms] ON [Vendor].[Payment Terms Code] = [PaymentTerms].[Code] + + WHERE (@VENDOR_NUMBER IS NULL OR [Vendor].[No_] = @VENDOR_NUMBER) + AND (@VENDOR_NAME IS NULL OR [Vendor].[Name] = @VENDOR_NAME) + AND (@VENDOR_SEARCH_NAME IS NULL OR [Vendor].[Search Name] = @VENDOR_SEARCH_NAME) + AND (@VENDOR_NAME2 IS NULL OR [Vendor].[Name 2] = @VENDOR_NAME2) + AND (@VAT_REGISTRATION_NUMBER IS NULL OR [Vendor].[VAT Registration No_] = @VAT_REGISTRATION_NUMBER) + AND (@IBAN IS NULL OR REPLACE([VendorBankAccount].[IBAN],' ','') = @IBAN); + + + END ELSE IF ((@MANDATOR = 'SWE') AND (@USE_LIKE_SEARCH = 1)) BEGIN + + INSERT INTO @vTB_VENDOR_INFO([No_], + [Name], + [Search Name], + [Name 2], + [Address], + [Address 2], + [City], + [Contact], + [Phone No_], + [Our Account No_], + [Vendor Posting Group], + [Payment Terms Code], + [Purchaser Code], + [Invoice Disc_ Code], + [Country_Region Code], + [Blocked], + [Pay-to Vendor No_], + [Payment Method Code], + [Prices Including VAT], + [Fax No_], + [VAT Registration No_], + [Gen_ Bus_ Posting Group], + [GLN], + [Post Code], + [County], + [E-Mail], + [Home Page], + [No_ Series], + [VAT Bus_ Posting Group], + [Primary Contact No_], + [Document Sending Profile], + [IBAN], + [Payment Terms Due Date Calculation], + [Payment Terms Discount Date Calculation], + [Payment Terms Discount _], + [Payment Terms Description]) + + SELECT DISTINCT [Vendor].[No_] + ,[Vendor].[Name] + ,[Vendor].[Search Name] + ,[Vendor].[Name 2] + ,[Vendor].[Address] + ,[Vendor].[Address 2] + ,[Vendor].[City] + ,[Vendor].[Contact] + ,[Vendor].[Phone No_] + ,[Vendor].[Our Account No_] + ,[Vendor].[Vendor Posting Group] + ,[Vendor].[Payment Terms Code] + ,[Vendor].[Purchaser Code] + ,[Vendor].[Invoice Disc_ Code] + ,[Vendor].[Country_Region Code] + ,[Vendor].[Blocked] + ,[Vendor].[Pay-to Vendor No_] + ,[Vendor].[Payment Method Code] + ,[Vendor].[Prices Including VAT] + ,[Vendor].[Fax No_] + ,[Vendor].[VAT Registration No_] + ,[Vendor].[Gen_ Bus_ Posting Group] + ,[Vendor].[GLN] + ,[Vendor].[Post Code] + ,[Vendor].[County] + ,[Vendor].[E-Mail] + ,[Vendor].[Home Page] + ,[Vendor].[No_ Series] + ,[Vendor].[VAT Bus_ Posting Group] + ,[Vendor].[Primary Contact No_] + ,[Vendor].[Document Sending Profile] + ,CASE + WHEN (SELECT COUNT(*) FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] + WHERE [Vendor No_] = [Vendor].[No_] AND [WLK Clearing$408c5b32-694e-47bb-96d5-dad7fc8111a7] = 1) = 1 + + THEN (SELECT [IBAN] FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972] + WHERE [Vendor No_] = [Vendor].[No_] AND [CODE] = (SELECT [Code] FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972$ext] + WHERE [Vendor No_] = [Vendor].[No_] AND [WLK Clearing$408c5b32-694e-47bb-96d5-dad7fc8111a7] = 1)) + ELSE @IBAN + END + ,REPLACE([PaymentTerms].[Due Date Calculation],@FUNCTIONAL_CHARACTER,'') + ,REPLACE([PaymentTerms].[Discount Date Calculation],@FUNCTIONAL_CHARACTER,'') + ,CONVERT(FLOAT,(CONVERT(DECIMAL(3,2),[PaymentTerms].[Discount _]))) + ,[PaymentTerms].[Description] + + FROM [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor$437dbf0e-84ff-417a-965d-ed2bb9650972] as [Vendor] + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Vendor Bank Account$437dbf0e-84ff-417a-965d-ed2bb9650972] as [VendorBankAccount] ON [Vendor].[No_] = [VendorBankAccount].[Vendor No_] + LEFT JOIN [SWENAVSQL\NTSSUITE].[NTSsuite].[dbo].[SWE$Payment Terms$437dbf0e-84ff-417a-965d-ed2bb9650972] as [PaymentTerms] ON [Vendor].[Payment Terms Code] = [PaymentTerms].[Code] + + WHERE (@VENDOR_NUMBER IS NULL OR [Vendor].[No_] LIKE CONCAT('%',@VENDOR_NUMBER,'%')) + AND (@VENDOR_NAME IS NULL OR [Vendor].[Name] LIKE CONCAT('%',@VENDOR_NAME,'%')) + AND (@VENDOR_SEARCH_NAME IS NULL OR [Vendor].[Search Name] LIKE CONCAT('%',@VENDOR_SEARCH_NAME,'%')) + AND (@VENDOR_NAME2 IS NULL OR [Vendor].[Name 2] LIKE CONCAT('%',@VENDOR_NAME2,'%')) + AND (@VAT_REGISTRATION_NUMBER IS NULL OR [Vendor].[VAT Registration No_] LIKE CONCAT('%',@VAT_REGISTRATION_NUMBER,'%')) + AND (@IBAN IS NULL OR REPLACE([VendorBankAccount].[IBAN],' ','') LIKE CONCAT('%',@IBAN,'%')); + + END; + + ------------------------------------------------------------------------------------------------------------------- + + RETURN; + +END; + +/** TEST + +SELECT * FROM [dbo].[FNCUST_GET_MS-DYN365BC_VENDOR_INFO]('SWE',1,NULL,'Digital Data',NULL,NULL,NULL,NULL) -- mit like +SELECT * FROM [dbo].[FNCUST_GET_MS-DYN365BC_VENDOR_INFO]('SWE',1,NULL,NULL,NULL,NULL,NULL,' DE4 45135 002502230 ') -- mit like +SELECT * FROM [dbo].[FNCUST_GET_MS-DYN365BC_VENDOR_INFO]('SWE',0,NULL,NULL,NULL,NULL,NULL,'DE 44513500250223017760') -- ohne like +SELECT * FROM [dbo].[FNCUST_GET_MS-DYN365BC_VENDOR_INFO]('SWE',0,NULL,'Digital Data GmbH',NULL,NULL,NULL,NULL) -- ohne like +SELECT * FROM [dbo].[FNCUST_GET_MS-DYN365BC_VENDOR_INFO]('SWE',0,NULL,NULL,NULL,NULL,NULL,'DE22840550500000026980') +**/ \ No newline at end of file diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_TF_OVERVIEW].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_TF_OVERVIEW].sql new file mode 100644 index 0000000..b780786 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_TF_OVERVIEW].sql @@ -0,0 +1,69 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- MK // 11.12.2025 + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_TF_OVERVIEW] ( + @pUSER_ID BIGINT +) +RETURNS TABLE +AS +RETURN ( + + /*## Following Columns need to be part of sql ## + TL_STATE Returns the TrafficLight-State for each doc (1=Red;2=Orange;3=Green) + PROFILE_ID TITLE Profile-Title used for default-grouping + DOC_ID + FULL_FILE_PATH + LAST USE + LAST EDITED */ + + SELECT T.GUID, + DATEDIFF(DAY, [T].[DMS_ERSTELLT_DATE],GETDATE()) AS [Days in], + CASE + WHEN DATEDIFF(DAY, [T].[DMS_ERSTELLT_DATE],GETDATE()) < 4 + THEN 3 + WHEN DATEDIFF(DAY, [T].[DMS_ERSTELLT_DATE],GETDATE()) = 6 + THEN 2 + ELSE 1 END AS TL_STATE, + [T].[PROFIL_ID] AS PROFILE_ID, + [T].[DOC_ID] AS DocID, + [T].[FILE_PATH] AS FULL_FILE_PATH, + [TWM_BA].[szLongName] AS Dateiname, + [TWM_BA].[szText39] AS [Dokumentart], + CONVERT(DATETIME, convert(varchar(8),[TWM_BA].[dwdate08])) AS [Belegdatum], + [TWM_BA].[szText25] AS [Mandant], + [TWM_BA].[szText36] AS [Nr.Intern], + [TWM_BA].[szText37] AS [Nr.Extern], + [TWM_BA].[szText20] AS [Prüfer], + [TWM_BA].[szText35] AS [Personennummer], + [TWM_BA].[szText34] AS [Name], + CONVERT(DATETIME, convert(varchar(8),[TWM_BA].[dwdate06])) AS [Fällig am], + CASE WHEN (([TWM_BA].[lfFloat09] > 0) OR ([TWM_BA].[dwInteger23] > 0)) + THEN concat([TWM_BA].[lfFloat09],'% / ',[TWM_BA].[dwInteger23],' Tage') + ELSE '---' + END AS [Skonto], + --CASE WHEN LEN([TWM_BA].[szText18]) > 0 + -- THEN [TWM_BA].[szText18] + -- ELSE '---' + --END AS [Zlg.Bedingung], + [T].[DMS_ERSTELLT_DATE] AS [Erhalten wann], + [dbo].[FNPM_PROFILE_GROUP_COLOR] (T.PROFIL_ID) AS 'GROUP_COLOR', + [dbo].[FNPM_PROFILE_GROUP_TEXT] (T.PROFIL_ID) AS 'GROUP_TEXT' + + FROM [TBPM_PROFILE_FILES] (NOLOCK) [T] + INNER JOIN [TBPM_PROFILE] (NOLOCK) [T1] ON [T].[PROFIL_ID] = [T1].[GUID] + INNER JOIN [windreamDB].[dbo].[BaseAttributes] (NOLOCK) [TWM_BA] ON [T].[DOC_ID] = [TWM_BA].[dwDocID] + + WHERE [T].[EDIT] = 0 + AND [T].[IN_WORK] = 0 + AND [T1].[ACTIVE] = 1 + AND [T1].[GUID] in (SELECT [PROFILE_ID] FROM [dbo].[FNPM_GET_ACTIVE_PROFILES_USER] (@pUSER_ID)) + +); +GO \ No newline at end of file diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_USER_USERNAME_LIST_INCL_DUMMY_USER].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_USER_USERNAME_LIST_INCL_DUMMY_USER].sql new file mode 100644 index 0000000..4411040 --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_GET_USER_USERNAME_LIST_INCL_DUMMY_USER].sql @@ -0,0 +1,36 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- HE,MK // 14.01.2025 +-- Funktion sollte erweitert werden um die Mandanten Abfrage + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_GET_USER_USERNAME_LIST_INCL_DUMMY_USER] ( + @Mandant VARCHAR(8) -- Default SWE +) +RETURNS TABLE +AS +RETURN + + SELECT '_LIEFERBUCHUNG_' as 'Benutzername', + '' as 'Vorname', + '' as 'Nachname', + '' as 'E-Mail Adresse' + + UNION ALL + + SELECT TOP 10000 [USERNAME] as 'Benutzername', + [PRENAME] as 'Vorname', + [NAME] as 'Nachname', + [EMAIL] as 'E-Mail Adresse' + + FROM [DD_ECM].[dbo].[TBDD_USER] + + WHERE [EMAIL] LIKE '%@%' + + ORDER BY [Benutzername] ASC + diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_TEST_TF_USER_INPUT_PROFILEID_44].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_TEST_TF_USER_INPUT_PROFILEID_44].sql new file mode 100644 index 0000000..474969d --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_TEST_TF_USER_INPUT_PROFILEID_44].sql @@ -0,0 +1,80 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- T-SQL Tabellenfunktion: Prüfung diverser Werte und Eingaben bei Betätigung das Abschluss Buttons +-- MK // 07.03.2025 + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_TEST_TF_USER_INPUT_PROFILEID_44]( + @pIDB_OBJECT_ID BIGINT, -- = '{#INT#WMDocID}' + @Status_Detail NVARCHAR(20), -- = '{#CTRL#LU_Status-Detail}' + @Status_Detail_Text NVARCHAR(200), -- = '{#CTRL#TXT_Entscheidungs-Beschreibung}' + @pExaminersJustification BIT, -- = '{#CTRL#CHK_Prüfer-Begründung}' + @pLUPerson NVARCHAR(50) -- = '{#CTRL#LU_Person}' +) +RETURNS @vTB_TEST_RESULT TABLE ([MSGTYPE] [VARCHAR](max) NULL, + [QUESTION] [VARCHAR](max) NULL, + [TITLE] [VARCHAR](max) NULL) +AS +BEGIN + + -- declare new vars because of parameter sniffing + DECLARE @IDB_OBJECT_ID BIGINT = @pIDB_OBJECT_ID; + + DECLARE @MSGTYPE VARCHAR(100) = 'Continue', + @QUESTION VARCHAR(300) = '', + @TITLE VARCHAR(100) = 'Bitte prüfen Sie Ihre Eingaben!'; + + DECLARE @Fremdreferenz1Count INT = 0, + @NrExtern NVARCHAR(64) = NULL, + @NrExternCount SMALLINT = 0; + + SET @NrExtern = (SELECT [szText37] FROM [windreamDB].[dbo].[BaseAttributes] WITH (NOLOCK) WHERE [dwDocID] = @IDB_OBJECT_ID); + SET @NrExternCount = (SELECT count(*) FROM [windreamDB].[dbo].[BaseAttributes] WITH (NOLOCK) WHERE [dwDocID] <> @IDB_OBJECT_ID AND [szText39] = 'Rechnung' and [szText38] = 'Kreditor' and [szText37] = @NrExtern); + + ---------------------------------------------------------------------------------------------------------------------------------- + + IF (@Status_Detail <> 'Bestätigt') and (LEN(LTRIM(RTRIM(@Status_Detail_Text))) < 1) BEGIN -- Stop + + SET @MSGTYPE = 'MsgBoxStop'; + SET @QUESTION = 'Bitte tragen Sie eine Begründung ein!'; + + END; ELSE IF (@Status_Detail not in (SELECT * from [FNCUST_SET_TF_DECISION_LIST_PROFILEID_44]())) BEGIN -- Stop + + SET @MSGTYPE = 'MsgBoxStop'; + SET @QUESTION = 'Bitte wählen Sie eine andere Entscheidung aus!'; + + END; ELSE IF ((@pExaminersJustification = 1) and (@pLUPerson = '_LIEFERBUCHUNG_')) BEGIN -- Stop + + SET @MSGTYPE = 'MsgBoxStop'; + SET @QUESTION = 'Bei Lieferbuchungen kann keine Prüfer Begründung bei Summenabweichung erfolgen!'; + + END; ELSE IF LEN(@NrExtern) >= 3 AND (@NrExternCount >= 1) BEGIN -- Question + + SET @MSGTYPE = 'MsgboxResult'; + SET @QUESTION = concat('Die Rechnungsnummer: "',@NrExtern,'" wurde bereits ',@NrExternCount, ' mal abgelegt. Möchten Sie fortfahren?'); + + END; ELSE BEGIN -- Continue + + SET @MSGTYPE = 'Continue'; + SET @QUESTION = ''; + + END; + + ---------------------------------------------------------------------------------------------------------------------------------- + + INSERT INTO @vTB_TEST_RESULT ([MSGTYPE], [QUESTION], [TITLE]) + VALUES (@MsgType, @QUESTION, @TITLE) + + RETURN; + +END + +GO + +-- Test +-- SELECT * FROM [windreamDB].[dbo].[BaseAttributes] WITH (NOLOCK) WHERE [szText39] = 'Rechnung' and [szText38] = 'Kreditor' and [szText37] = '2026-10413' diff --git a/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_TEST_TF_USER_INPUT_PROFILEID_48].sql b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_TEST_TF_USER_INPUT_PROFILEID_48].sql new file mode 100644 index 0000000..b31f9ce --- /dev/null +++ b/SWESQL/SQL-Server/Tabellenwertfunktionen/[FNCUST_TEST_TF_USER_INPUT_PROFILEID_48].sql @@ -0,0 +1,74 @@ +USE [DD_ECM] +GO + +/****** Object: UserDefinedFunction [dbo].[FNCUST_TEST_TF_USER_INPUT_PROFILEID_48] Script Date: 11.03.2026 11:06:27 ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + + +-- T-SQL Tabellenfunktion: Prüfung diverser Werte und Eingaben bei Betätigung das Abschluss Buttons +-- MK // 07.03.2025 + +CREATE OR ALTER FUNCTION [dbo].[FNCUST_TEST_TF_USER_INPUT_PROFILEID_48]( + @pIDB_OBJECT_ID BIGINT, -- = '{#INT#WMDocID}' + @Status_Detail NVARCHAR(20), -- = '{#CTRL#LU_Status-Detail}' + @Status_Detail_Text NVARCHAR(200), -- = '{#CTRL#TXT_Entscheidungs-Beschreibung}' + @pExaminersJustification BIT, -- = '{#CTRL#CHK_Prüfer-Begründung}' + @pTXT_Beschreibung NVARCHAR(500), -- = '{#CTRL#TXT_Beschreibung}' + @pTXT_Buchungstext NVARCHAR(500) -- = '{#CTRL#TXT_Buchungstext}' +) +RETURNS @vTB_TEST_RESULT TABLE ([MSGTYPE] [VARCHAR](max) NULL, + [QUESTION] [VARCHAR](max) NULL, + [TITLE] [VARCHAR](max) NULL) +AS +BEGIN + + -- declare new vars because of parameter sniffing + DECLARE @IDB_OBJECT_ID BIGINT = @pIDB_OBJECT_ID, + @TXT_Beschreibung NVARCHAR(500) = REPLACE(LTRIM(RTRIM(@pTXT_Beschreibung)),'Buchungsbeschreibung',''), + @TXT_Buchungstext NVARCHAR(500) = REPLACE(LTRIM(RTRIM(@pTXT_Buchungstext)),'Buchungsbeschreibung',''); + + DECLARE @MSGTYPE VARCHAR(100) = 'Continue', + @QUESTION VARCHAR(300) = '', + @TITLE VARCHAR(100) = 'Bitte prüfen Sie Ihre Eingaben!'; + + ---------------------------------------------------------------------------------------------------------------------------------- + + IF (@Status_Detail <> 'Bestätigt') and (LEN(LTRIM(RTRIM(@Status_Detail_Text))) < 1) BEGIN -- Stop Grund + + SET @MSGTYPE = 'MsgBoxStop' + SET @QUESTION = 'Bitte tragen Sie eine Begründung ein!' + + END; ELSE IF (@Status_Detail not in (SELECT * from [FNCUST_SET_TF_DECISION_LIST_PROFILEID_48]())) BEGIN -- Stop Grund + + SET @MSGTYPE = 'MsgBoxStop' + SET @QUESTION = 'Bitte wählen Sie eine andere Entscheidung aus!' + + END; ELSE IF ((LEN(@TXT_Beschreibung) <= 1) AND (LEN(@TXT_Buchungstext) <= 1)) BEGIN -- Stop Grund + + SET @MSGTYPE = 'MsgBoxStop'; + SET @QUESTION = 'Bitte tragen Sie eine gültige Buchungsbeschreibung ein!'; + + END; ELSE BEGIN + + SET @MSGTYPE = 'Continue' + SET @QUESTION = '' + + END; + + ---------------------------------------------------------------------------------------------------------------------------------- + + INSERT INTO @vTB_TEST_RESULT ([MSGTYPE], [QUESTION], [TITLE]) + VALUES (@MsgType, @QUESTION, @TITLE) + + RETURN; + +END + +GO + +