Projektstand 30.03.2026

This commit is contained in:
2026-03-31 10:55:23 +02:00
parent 3c0b3dbbd0
commit 8c1b6c3c51
16 changed files with 3420 additions and 190 deletions

View File

@@ -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

View File

@@ -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')
***/

View File

@@ -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')
***/

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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';
***/

View File

@@ -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')
***/

View File

@@ -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','~')
***/

View File

@@ -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

View File

@@ -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')
**/

View File

@@ -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

View File

@@ -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

View File

@@ -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'

View File

@@ -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