Neue Struktur implementiert für Prozedur und Funktionsaufrufe

This commit is contained in:
KammM 2024-04-11 16:19:41 +02:00
parent 8247ebd39d
commit 40199558a7
3 changed files with 288 additions and 180 deletions

View File

@ -7,13 +7,19 @@
******************************************************************************/ ******************************************************************************/
/****************************************************************************** /******************************************************************************
DD MD/MK 06/03/2024 DD MD/MK 27/03/2024
******************************************************************************/ ******************************************************************************/
FUNCTION OnAnalyserFinishDocument() { FUNCTION OnAnalyserFinishDocument() {
// Hole Nummer des Analyse-Durchlaufs anhand gesetzter smartBlocks
documentnumber := NUM_DOCS();
// Setzte Dateinamen als primären Schlüssel // Setzte Dateinamen als primären Schlüssel
uid := DOC_ID(); uid := DOC_ID();
IF (documentnumber = 1) THEN {
// Kopfdaten // Kopfdaten
Head := DICT(); Head := DICT();
Head['AA'] := uid; Head['AA'] := uid;
@ -153,6 +159,12 @@ FUNCTION OnAnalyserFinishDocument() {
//IF [#AMOUNT_LEARN] = [INV_AMOUNT] THEN //IF [#AMOUNT_LEARN] = [INV_AMOUNT] THEN
// stdWriteLog('Message',STRING_FORMAT('DD OnAnalyserFinishDocument - : %1','[#AMOUNT_LEARN] = [INV_AMOUNT]'),''); // stdWriteLog('Message',STRING_FORMAT('DD OnAnalyserFinishDocument - : %1','[#AMOUNT_LEARN] = [INV_AMOUNT]'),'');
} // End IF (documentnumber = 1)
ELSE {
stdWriteLog('Message',STRING_FORMAT('DD Skipping NUM_DOCS: %1',documentnumber),'');
}
} // end OnAnalyserFinishDocument } // end OnAnalyserFinishDocument
/****************************************************************************** /******************************************************************************
FNo 14/03/2022 FNo 14/03/2022

View File

@ -0,0 +1,78 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE OR ALTER FUNCTION [FNDD_ANALYZER_COMPARE_HEAD_SUM_WITH_ITEMS_SUM] (
@pREFERENCE_ID NVARCHAR(100),
@pSTATUS NVARCHAR(50),
@pSTATUS_DETAIL NVARCHAR(MAX)
)
RETURNS @vTB_RESULT TABLE ([REFERENCE_ID] [NVARCHAR](100) NOT NULL,
[STATUS] [NVARCHAR](50) NOT NULL,
[STATUS_DETAIL] [NVARCHAR](max) NOT NULL)
AS
BEGIN
----------------------------------------------------------------------------------------------
-- Define vars
----------------------------------------------------------------------------------------------
DECLARE @REFERENCE_ID NVARCHAR(100),
@STATUS NVARCHAR(50),
@STATUS_DETAIL NVARCHAR(MAX),
@HEAD_SUM FLOAT,
@ITEMS_SUM FLOAT;
SET @REFERENCE_ID = @pREFERENCE_ID
SET @STATUS = @pSTATUS
SET @STATUS_DETAIL = @pSTATUS_DETAIL
----------------------------------------------------------------------------------------------
-- Check sum of Head and Items
----------------------------------------------------------------------------------------------
-- Get sum from head
SELECT @HEAD_SUM = [INV_NET_AMOUNT1]
FROM [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_HEAD]
WHERE [REFERENCE_ID] = @pREFERENCE_ID
-- Get sum from items
SELECT @ITEMS_SUM = SUM(INVI_TOTAL_NET_PRICE)
FROM [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_ITEMS]
WHERE [REFERENCE_ID] = @pREFERENCE_ID
-- Status "failed" must not be overwritten
IF (@STATUS <> 'FAILED')
BEGIN
SET @STATUS = CASE
WHEN (@HEAD_SUM = @ITEMS_SUM) THEN 'SUCCESS'
WHEN (@HEAD_SUM > @ITEMS_SUM) THEN 'FAILED'
WHEN (@HEAD_SUM < @ITEMS_SUM) THEN 'FAILED'
ELSE 'ERROR'
END
END
SET @STATUS_DETAIL = CASE
WHEN (@HEAD_SUM = @ITEMS_SUM) THEN @STATUS_DETAIL + 'Head and Item sum match!' + char(10) + char(13)
WHEN (@HEAD_SUM > @ITEMS_SUM) THEN @STATUS_DETAIL + 'Head sum (' + convert(VARCHAR(100),@HEAD_SUM) +') is bigger then Item sum (' + convert(VARCHAR(100),@ITEMS_SUM) +')!' + char(10) + char(13)
WHEN (@HEAD_SUM < @ITEMS_SUM) THEN @STATUS_DETAIL + 'Head sum (' + convert(VARCHAR(100),@HEAD_SUM) +') is lesser then Item sum (' + convert(VARCHAR(100),@ITEMS_SUM) +')!' + char(10) + char(13)
ELSE @STATUS_DETAIL + 'ERROR in FNDD_ANALYZER_COMPARE_HEAD_SUM_WITH_ITEMS_SUM' + char(10) + char(13)
END
----------------------------------------------------------------------------------------------
-- Set function result Table
----------------------------------------------------------------------------------------------
INSERT INTO @vTB_RESULT ([REFERENCE_ID],
[STATUS],
[STATUS_DETAIL])
VALUES (@REFERENCE_ID,
@STATUS,
@STATUS_DETAIL);
RETURN;
----------------------------------------------------------------------------------------------
END

View File

@ -1,91 +1,96 @@
USE [SmartFix_Export_DB_Invoice] USE [SmartFix_Export_DB_Invoice]
GO GO
/****** Object: StoredProcedure [dbo].[PRDD_INSERT_ANALYZER_RESULT] Script Date: 08.04.2024 13:37:51 ******/
/****** Object: StoredProcedure [dbo].[PRDD_INSERT_ANALYZER_RESULT] Script Date: 06.03.2024 16:20:47 ******/
SET ANSI_NULLS ON SET ANSI_NULLS ON
GO GO
SET QUOTED_IDENTIFIER ON SET QUOTED_IDENTIFIER ON
GO GO
-- ============================================= -- =============================================
-- Author: Digital Data GmbH MD/MK -- Author: Digital Data GmbH MD/MK
-- Create date: 06.03.2024 -- Create date: 11.04.2024
-- Description: Insert row in TBDD_ANALYZER_RESULT -- Description: Insert row in TBDD_ANALYZER_RESULT
-- ============================================= -- =============================================
CREATE OR ALTER PROCEDURE [dbo].[PRDD_INSERT_ANALYZER_RESULT] ALTER PROCEDURE [dbo].[PRDD_INSERT_ANALYZER_RESULT]
@pREFERENCE_ID NVARCHAR(100), @pREFERENCE_ID NVARCHAR(100),
@pAdded_who NVARCHAR(50) @pADDED_WHO NVARCHAR(50)
AS AS
BEGIN BEGIN
----------------------------------------------------------------------------------------------
-- Get Configuration
----------------------------------------------------------------------------------------------
DECLARE @WORKING_MODE TINYINT;
SELECT @WORKING_MODE = [WORKING_MODE] FROM [TBDD_ANALYZER_BASE_CONFIG] WHERE [GUID] = (SELECT max(GUID) FROM [TBDD_ANALYZER_BASE_CONFIG]);
----------------------------------------------------------------------------------------------
-- Final Vars for insert -- Final Vars for insert
DECLARE @STATUS NVARCHAR(50), ----------------------------------------------------------------------------------------------
DECLARE @REFERENCE_ID NVARCHAR(100),
@ADDED_WHO NVARCHAR(50),
@STATUS NVARCHAR(50),
@STATUS_DETAIL NVARCHAR(MAX); @STATUS_DETAIL NVARCHAR(MAX);
SET @REFERENCE_ID = @pREFERENCE_ID;
SET @ADDED_WHO = @pADDED_WHO;
SET @STATUS = 'UNDEFINED'; SET @STATUS = 'UNDEFINED';
SET @STATUS_DETAIL = ''; SET @STATUS_DETAIL = '';
-- Temp vars for calculation ----------------------------------------------------------------------------------------------
DECLARE @HEAD_SUM FLOAT, -- Ermittle, ob es zu verarbeitende Zeilen für die ReferenzID gibt
@ITEMS_SUM FLOAT; ----------------------------------------------------------------------------------------------
IF (((SELECT COUNT(*) FROM [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_HEAD] (NOLOCK) WHERE [REFERENCE_ID] = @pREFERENCE_ID AND [STATUS] = 'unprocessed') = 1) and (SELECT count(*) FROM [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_ITEMS] (NOLOCK) WHERE [REFERENCE_ID] = @pREFERENCE_ID AND [STATUS] = 'unprocessed') >= 1) IF (((SELECT COUNT(*) FROM [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_HEAD] (NOLOCK) WHERE [REFERENCE_ID] = @REFERENCE_ID AND [STATUS] = 'unprocessed') = 1) and (SELECT count(*) FROM [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_ITEMS] (NOLOCK) WHERE [REFERENCE_ID] = @REFERENCE_ID AND [STATUS] = 'unprocessed') >= 1)
BEGIN BEGIN
PRINT 'Unprocessed DB lines rows found, proceeding...'
---------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------
-- 1. Check sum of Head and Items -- 1 = Kopf&Fuß-daten ohne Matching; 2 = Kopf&Fuß-daten mit Matching
---------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------
-- Get sum from head IF @WORKING_MODE in (1,2)
SELECT @HEAD_SUM = [INV_NET_AMOUNT1]
FROM [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_HEAD]
WHERE [REFERENCE_ID] = @pREFERENCE_ID
-- Get sum from items
SELECT @ITEMS_SUM = SUM(INVI_TOTAL_NET_PRICE)
FROM [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_ITEMS]
WHERE [REFERENCE_ID] = @pREFERENCE_ID
-- Status "failed" must not be overwritten
IF (@STATUS <> 'FAILED')
BEGIN BEGIN
SET @STATUS = CASE
WHEN (@HEAD_SUM = @ITEMS_SUM) THEN 'SUCCESS'
WHEN (@HEAD_SUM > @ITEMS_SUM) THEN 'FAILED'
WHEN (@HEAD_SUM < @ITEMS_SUM) THEN 'FAILED'
END
END
SET @STATUS_DETAIL = CASE PRINT 'WORKING_MODE = 1 or 2'
WHEN (@HEAD_SUM = @ITEMS_SUM) THEN @STATUS_DETAIL + 'Head and Item sum match!' + char(10) + char(13)
WHEN (@HEAD_SUM > @ITEMS_SUM) THEN @STATUS_DETAIL + 'Head sum (' + convert(VARCHAR(100),@HEAD_SUM) +') is bigger then Item sum (' + convert(VARCHAR(100),@ITEMS_SUM) +')!' + char(10) + char(13)
WHEN (@HEAD_SUM < @ITEMS_SUM) THEN @STATUS_DETAIL + 'Head sum (' + convert(VARCHAR(100),@HEAD_SUM) +') is lesser then Item sum (' + convert(VARCHAR(100),@ITEMS_SUM) +')!' + char(10) + char(13)
END END
---------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------
-- 3 Kopf&Fuß&Positionen ohne Matching; 4 Kopf&Fuß&Positionen mit Matching
----------------------------------------------------------------------------------------------
INSERT INTO [TBDD_ANALYZER_RESULT] ([REFERENCE_ID], ELSE IF @WORKING_MODE in (3,4)
[STATUS], BEGIN
[STATUS_DETAIL],
[ADDED_WHO])
VALUES (@pREFERENCE_ID, PRINT 'WORKING_MODE = 3 or 4'
@STATUS,
@STATUS_DETAIL, -- Compare Head with Item sum
@pAdded_who); SELECT @STATUS = [STATUS],
@STATUS_DETAIL = [STATUS_DETAIL]
FROM [SmartFix_Export_DB_Invoice].[dbo].[FNDD_ANALYZER_COMPARE_HEAD_SUM_WITH_ITEMS_SUM](@REFERENCE_ID,@STATUS,@STATUS_DETAIL)
END
---------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------
-- Nach erfolgreicher Verarbeitung, die Zeilen als "processed" markieren
----------------------------------------------------------------------------------------------
PRINT 'Setting processed rows in [TBDD_ANALYZER_HEAD] and [TBDD_ANALYZER_ITEMS]'
UPDATE [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_HEAD] UPDATE [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_HEAD]
SET [STATUS] = 'processed' SET [STATUS] = 'processed'
WHERE [REFERENCE_ID] = @pREFERENCE_ID WHERE [REFERENCE_ID] = @REFERENCE_ID
UPDATE [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_ITEMS] UPDATE [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_ITEMS]
SET [STATUS] = 'processed' SET [STATUS] = 'processed'
WHERE [REFERENCE_ID] = @pREFERENCE_ID WHERE [REFERENCE_ID] = @REFERENCE_ID
----------------------------------------------------------------------------------------------
-- Rückmeldung an insiders DB geben
---------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------
IF (@STATUS = 'SUCCESS') IF (@STATUS = 'SUCCESS')
@ -94,6 +99,20 @@ BEGIN
END END
---------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------
-- Ergebnis in Result Tabelle schreiben
----------------------------------------------------------------------------------------------
PRINT 'Inserting Results in [TBDD_ANALYZER_RESULT]'
INSERT INTO [TBDD_ANALYZER_RESULT] ([REFERENCE_ID],
[STATUS],
[STATUS_DETAIL],
[ADDED_WHO])
VALUES (@REFERENCE_ID,
@STATUS,
@STATUS_DETAIL,
@ADDED_WHO);
END END
@ -101,18 +120,17 @@ BEGIN
BEGIN BEGIN
SET @STATUS = 'UNREFERENCED'; PRINT 'Inappropriate rows in DB!'
SET @STATUS_DETAIL = 'Insufficient rows in DB!'
INSERT INTO [TBDD_ANALYZER_RESULT] ([REFERENCE_ID], INSERT INTO [TBDD_ANALYZER_RESULT] ([REFERENCE_ID],
[STATUS], [STATUS],
[STATUS_DETAIL], [STATUS_DETAIL],
[ADDED_WHO]) [ADDED_WHO])
VALUES (@pREFERENCE_ID, VALUES (@REFERENCE_ID,
@STATUS, 'UNREFERENCED',
@STATUS_DETAIL, 'Inappropriate rows in DB!',
@pAdded_who); @ADDED_WHO);
END END
END END
GO