Neue Struktur implementiert für Prozedur und Funktionsaufrufe
This commit is contained in:
parent
8247ebd39d
commit
40199558a7
@ -7,13 +7,19 @@
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
DD MD/MK 06/03/2024
|
||||
DD MD/MK 27/03/2024
|
||||
******************************************************************************/
|
||||
|
||||
FUNCTION OnAnalyserFinishDocument() {
|
||||
|
||||
// Hole Nummer des Analyse-Durchlaufs anhand gesetzter smartBlocks
|
||||
documentnumber := NUM_DOCS();
|
||||
|
||||
// Setzte Dateinamen als primären Schlüssel
|
||||
uid := DOC_ID();
|
||||
|
||||
IF (documentnumber = 1) THEN {
|
||||
|
||||
// Kopfdaten
|
||||
Head := DICT();
|
||||
Head['AA'] := uid;
|
||||
@ -153,6 +159,12 @@ FUNCTION OnAnalyserFinishDocument() {
|
||||
//IF [#AMOUNT_LEARN] = [INV_AMOUNT] THEN
|
||||
// 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
|
||||
/******************************************************************************
|
||||
FNo 14/03/2022
|
||||
|
||||
@ -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
|
||||
@ -1,91 +1,96 @@
|
||||
USE [SmartFix_Export_DB_Invoice]
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[PRDD_INSERT_ANALYZER_RESULT] Script Date: 06.03.2024 16:20:47 ******/
|
||||
/****** Object: StoredProcedure [dbo].[PRDD_INSERT_ANALYZER_RESULT] Script Date: 08.04.2024 13:37:51 ******/
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- =============================================
|
||||
-- Author: Digital Data GmbH MD/MK
|
||||
-- Create date: 06.03.2024
|
||||
-- Create date: 11.04.2024
|
||||
-- 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),
|
||||
@pAdded_who NVARCHAR(50)
|
||||
@pADDED_WHO NVARCHAR(50)
|
||||
AS
|
||||
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
|
||||
DECLARE @STATUS NVARCHAR(50),
|
||||
----------------------------------------------------------------------------------------------
|
||||
|
||||
DECLARE @REFERENCE_ID NVARCHAR(100),
|
||||
@ADDED_WHO NVARCHAR(50),
|
||||
@STATUS NVARCHAR(50),
|
||||
@STATUS_DETAIL NVARCHAR(MAX);
|
||||
|
||||
SET @REFERENCE_ID = @pREFERENCE_ID;
|
||||
SET @ADDED_WHO = @pADDED_WHO;
|
||||
SET @STATUS = 'UNDEFINED';
|
||||
SET @STATUS_DETAIL = '';
|
||||
|
||||
-- Temp vars for calculation
|
||||
DECLARE @HEAD_SUM FLOAT,
|
||||
@ITEMS_SUM FLOAT;
|
||||
----------------------------------------------------------------------------------------------
|
||||
-- Ermittle, ob es zu verarbeitende Zeilen für die ReferenzID gibt
|
||||
----------------------------------------------------------------------------------------------
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
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')
|
||||
IF @WORKING_MODE in (1,2)
|
||||
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
|
||||
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)
|
||||
PRINT 'WORKING_MODE = 1 or 2'
|
||||
|
||||
END
|
||||
|
||||
----------------------------------------------------------------------------------------------
|
||||
-- 3 Kopf&Fuß&Positionen ohne Matching; 4 Kopf&Fuß&Positionen mit Matching
|
||||
----------------------------------------------------------------------------------------------
|
||||
|
||||
INSERT INTO [TBDD_ANALYZER_RESULT] ([REFERENCE_ID],
|
||||
[STATUS],
|
||||
[STATUS_DETAIL],
|
||||
[ADDED_WHO])
|
||||
ELSE IF @WORKING_MODE in (3,4)
|
||||
BEGIN
|
||||
|
||||
VALUES (@pREFERENCE_ID,
|
||||
@STATUS,
|
||||
@STATUS_DETAIL,
|
||||
@pAdded_who);
|
||||
PRINT 'WORKING_MODE = 3 or 4'
|
||||
|
||||
-- Compare Head with Item sum
|
||||
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]
|
||||
SET [STATUS] = 'processed'
|
||||
WHERE [REFERENCE_ID] = @pREFERENCE_ID
|
||||
WHERE [REFERENCE_ID] = @REFERENCE_ID
|
||||
|
||||
UPDATE [SmartFix_Export_DB_Invoice].[dbo].[TBDD_ANALYZER_ITEMS]
|
||||
SET [STATUS] = 'processed'
|
||||
WHERE [REFERENCE_ID] = @pREFERENCE_ID
|
||||
WHERE [REFERENCE_ID] = @REFERENCE_ID
|
||||
|
||||
----------------------------------------------------------------------------------------------
|
||||
-- Rückmeldung an insiders DB geben
|
||||
----------------------------------------------------------------------------------------------
|
||||
|
||||
IF (@STATUS = 'SUCCESS')
|
||||
@ -94,6 +99,20 @@ BEGIN
|
||||
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
|
||||
|
||||
@ -101,18 +120,17 @@ BEGIN
|
||||
|
||||
BEGIN
|
||||
|
||||
SET @STATUS = 'UNREFERENCED';
|
||||
SET @STATUS_DETAIL = 'Insufficient rows in DB!'
|
||||
PRINT 'Inappropriate rows in DB!'
|
||||
|
||||
INSERT INTO [TBDD_ANALYZER_RESULT] ([REFERENCE_ID],
|
||||
[STATUS],
|
||||
[STATUS_DETAIL],
|
||||
[ADDED_WHO])
|
||||
|
||||
VALUES (@pREFERENCE_ID,
|
||||
@STATUS,
|
||||
@STATUS_DETAIL,
|
||||
@pAdded_who);
|
||||
VALUES (@REFERENCE_ID,
|
||||
'UNREFERENCED',
|
||||
'Inappropriate rows in DB!',
|
||||
@ADDED_WHO);
|
||||
END
|
||||
|
||||
END
|
||||
GO
|
||||
Loading…
x
Reference in New Issue
Block a user