DLLG#79179 -- Aanpassing koppeling met Brivo.
svn path=/Customer/trunk/; revision=61890
This commit is contained in:
154
DLLG/DLLG.sql
154
DLLG/DLLG.sql
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user