DLLG#79179 -- Aanpassing koppeling met Brivo.

svn path=/Customer/trunk/; revision=61890
This commit is contained in:
Arthur Egberink
2023-09-26 07:09:00 +00:00
parent d1522415ec
commit 3bc9952f6d

View File

@@ -329,125 +329,14 @@ AS
p_facility_code VARCHAR2)
RETURN VARCHAR2
AS
v_card_bin VARCHAR2 (100);
v_facility_bin VARCHAR2 (100);
v_card_hex VARCHAR2 (100);
v_facility_hex VARCHAR2 (100);
v_bin VARCHAR2 (100);
v_bin_str VARCHAR2 (100);
v_result VARCHAR2 (100);
v_length NUMBER;
v_count NUMBER;
v_bit VARCHAR2 (1);
v_dec NUMBER;
FUNCTION OneHex2Bin (p_hex VARCHAR2)
RETURN VARCHAR2
AS
v_result VARCHAR2 (10);
BEGIN
IF p_hex = '0'
THEN
v_result := '0000';
ELSIF p_hex = '1'
THEN
v_result := '0001';
ELSIF p_hex = '2'
THEN
v_result := '0010';
ELSIF p_hex = '3'
THEN
v_result := '0011';
ELSIF p_hex = '4'
THEN
v_result := '0100';
ELSIF p_hex = '5'
THEN
v_result := '0101';
ELSIF p_hex = '6'
THEN
v_result := '0110';
ELSIF p_hex = '7'
THEN
v_result := '0111';
ELSIF p_hex = '8'
THEN
v_result := '1000';
ELSIF p_hex = '9'
THEN
v_result := '1001';
ELSIF p_hex = 'A'
THEN
v_result := '1010';
ELSIF p_hex = 'B'
THEN
v_result := '1011';
ELSIF p_hex = 'C'
THEN
v_result := '1100';
ELSIF p_hex = 'D'
THEN
v_result := '1101';
ELSIF p_hex = 'E'
THEN
v_result := '1110';
ELSIF p_hex = 'F'
THEN
v_result := '1111';
END IF;
RETURN v_result;
END;
v_result VARCHAR2(10);
BEGIN
v_card_hex := p_card_number;
-- transform the hex card data into a binary string
FOR v_index IN 1 .. 4
LOOP
v_card_bin :=
v_card_bin || OneHex2Bin (SUBSTR (v_card_hex, 1, 1));
v_card_hex := SUBSTR (v_card_hex, 2, 4);
END LOOP;
-- add the parity bit
--v_card_bin := set_parity (v_card_bin, 'after', 1);
-- transform the hex facility data into a binary string
v_facility_hex := p_facility_code;
FOR v_index IN 1 .. 2
LOOP
v_facility_bin :=
v_facility_bin || OneHex2Bin (SUBSTR (v_facility_hex, 1, 1));
v_facility_hex := SUBSTR (v_facility_hex, 2, 4);
END LOOP;
-- add the parity bit
-- v_facility_bin := set_parity (v_facility_bin, 'before', 0);
-- combine the facility data and the card data
v_bin := v_facility_bin || v_card_bin;
-- the first 12 bits have an even leading parity bit
-- the last 12 bits have a trailing odd parity bit
-- bij de decimale uitvoering doen we geen parity
--v_bin := set_parity (SUBSTR(v_bin, 1,12), 'before', 0) || set_parity (SUBSTR(v_bin, 13,12), 'after', 1);
-- and convert the binary string into hex
v_dec := 0;
v_count := 0;
WHILE v_bin IS NOT NULL
LOOP
v_bit := SUBSTR(v_bin, LENGTH(v_bin), 1);
IF v_bit = 1
THEN
v_dec := v_dec + POWER(2,v_count);
END IF;
v_bin := SUBSTR(v_bin, 1, LENGTH(v_bin)-1);
v_count := v_count + 1;
END LOOP;
RETURN v_dec;
v_result := to_number (p_facility_code || p_card_number, 'XXXXXX');
RETURN v_result;
EXCEPTION WHEN OTHERS
THEN
RETURN NULL;
END;
PROCEDURE update_bezoeker (p_bezkey IN NUMBER)
@@ -597,36 +486,35 @@ AS
p_bezkey,
'123');
-- Vul het flexveld hex code met de hex waarde die gescant moet worden.
-- We gebruiken hiervoor 'The Standard 26-Bit Format'
FLX.setflex (
'BEZ',
v_hex_code_key,
p_bezkey,
DLLG.get_hex_card_data (
LPAD (TRIM (TO_CHAR (v_code, 'XXXXXX')), 4, '0'),
LPAD (TRIM (TO_CHAR (123, 'XXXXXX')), 2, '0')));
-- Vanaf 1 oktober 2023 gaan we de decimale code gebruiken ipv de hex code (DLLG#79179)
IF UPPER(v_bedrijf) LIKE '%FORTEZZA%'
-- Vanaf 4 oktober 2023 gaan we de nieuwe decimale code gebruiken (DLLG#79179)
-- Dat is de decimale
IF v_date > TO_DATE('20231004', 'yyyymmdd')
THEN
FLX.setflex (
'BEZ',
v_hex_code_key,
v_dec_code_key,
p_bezkey,
DLLG.get_dec_card_data (
LPAD (TRIM (TO_CHAR (v_code, 'XXXXXX')), 4, '0'),
LPAD (TRIM (TO_CHAR (123, 'XXXXXX')), 2, '0')));
ELSE
-- Vul het flexveld hex code met de hex waarde die gescant moet worden.
-- We gebruiken hiervoor 'The Standard 26-Bit Format'
FLX.setflex (
'BEZ',
v_hex_code_key,
v_dec_code_key,
p_bezkey,
DLLG.get_hex_card_data (
LPAD (TRIM (TO_CHAR (v_code, 'XXXXXX')), 4, '0'),
LPAD (TRIM (TO_CHAR (123, 'XXXXXX')), 2, '0')));
'123' || LPAD(TRIM(v_code), 5, '0'));
END IF;
FLX.setflex (
'BEZ',
v_dec_code_key,
p_bezkey,
'123' || LPAD(TRIM(v_code), 5, '0'));
END;
PROCEDURE set_bezoeker_syncdate (p_bezkey IN NUMBER,