pour déploiement auto v2 via gitlab
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

50 lines
1.1 KiB

return: integer
lang: plpgsql
parameters:
p0:
type: text
name: i_matricule
p1:
type: text
name: i_cle
src: |
DECLARE
o_code_erreur integer;
matricule_a text;
matricule_n numeric;
cle_n numeric;
BEGIN
o_code_erreur = 0;
-- longueur matricule
IF (length(i_matricule) <> 13) THEN
o_code_erreur = 1;
RETURN o_code_erreur;
END IF;
-- longueur clé
IF (length(i_cle) <> 2) THEN
o_code_erreur = 2;
RETURN o_code_erreur;
END IF;
-- Remplacement 2A, 2B (corse)
matricule_a = replace(i_matricule, '2A', '19');
matricule_a = replace(matricule_a, '2B', '18');
-- Matricule numerique
matricule_n = to_number(matricule_a || '0','99999999999999') / 10;
if (trim(to_char(matricule_n,'9999999999999')) <> matricule_a) THEN
o_code_erreur = 3;
RETURN o_code_erreur;
END IF;
-- calcul cle
cle_n = 97 - (matricule_n % 97);
if (cle_n > 100 OR cle_n < 0) THEN
o_code_erreur = 4;
RETURN o_code_erreur;
END IF;
if (trim(to_char(cle_n,'00')) <> i_cle) THEN
o_code_erreur = 5;
RETURN o_code_erreur;
END IF;
RETURN o_code_erreur;
END;