198 lines
6.9 KiB
Plaintext
198 lines
6.9 KiB
Plaintext
#ifdef INS
|
|
/*
|
|
* $Revision$
|
|
* $Id$
|
|
*/
|
|
|
|
CREATE OR REPLACE PACKAGE ins AS
|
|
FUNCTION delete_deelkoppeling( DeelKey IN NUMBER ) RETURN BOOLEAN;
|
|
FUNCTION get_description(LPNName IN VARCHAR2, CondKey IN NUMBER, Prefix IN VARCHAR2, PrefixKey IN NUMBER) RETURN VARCHAR2;
|
|
FUNCTION sprintf (ps IN varchar2, pins_deel_key IN number) RETURN varchar2;
|
|
END ins;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY ins AS
|
|
|
|
FUNCTION delete_deelkoppeling( DeelKey IN NUMBER )
|
|
RETURN BOOLEAN
|
|
AS
|
|
BEGIN
|
|
DELETE FROM ins_deelkoppeling
|
|
WHERE ins_deelkoppeling_van_key = DeelKey
|
|
OR ins_deelkoppeling_naar_key = DeelKey;
|
|
RETURN TRUE;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN RETURN FALSE;
|
|
END;
|
|
|
|
-- Was: FAC_F_FAC_GET_DESCRIPTION
|
|
FUNCTION get_description(LPNName IN VARCHAR2
|
|
,CondKey IN NUMBER
|
|
,Prefix IN VARCHAR2
|
|
,PrefixKey IN NUMBER) RETURN VARCHAR2 IS
|
|
NextVolgNr VARCHAR2(30);
|
|
DeelUpper ins_deel.ins_deel_omschrijving%TYPE;
|
|
ReturnString VARCHAR2(30);
|
|
BEGIN
|
|
-- From 4.40 on, CondKey is dummy for ins_deel (object/subobject): uniqueness is assumed over the entire database
|
|
IF LPNName = 'LPN_INS_DEEL'
|
|
THEN
|
|
SELECT NVL(LPAD( TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix))))+1) , MAX(LENGTH(ins_deel_upper)-LENGTH(Prefix)),'0'),'001')
|
|
INTO NextVolgNr
|
|
FROM INS_DEEL
|
|
WHERE ins_deel_upper LIKE Prefix||'%'
|
|
AND fac.safe_to_integer(SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix))) IS NOT NULL
|
|
AND LTRIM(SUBSTR (ins_deel_upper, LENGTH (Prefix) + 1), '0') = TO_CHAR(fac.safe_to_integer ((SUBSTR (ins_deel_upper, LENGTH (Prefix) + 1))))
|
|
AND ins_deel_parent_key IS NULL
|
|
AND ins_deel_verwijder IS NULL;
|
|
ELSIF LPNName = 'LPN_INS_ONDERDEEL'
|
|
THEN
|
|
SELECT NVL(LPAD( TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix))))+1) , MAX(LENGTH(ins_deel_upper)-LENGTH(Prefix)),'0'),'001')
|
|
INTO NextVolgNr
|
|
FROM INS_DEEL
|
|
WHERE ins_deel_upper LIKE Prefix||'%'
|
|
AND fac.safe_to_integer(SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix))) IS NOT NULL
|
|
AND ins_deel_parent_key = CondKey
|
|
AND ins_deel_verwijder IS NULL;
|
|
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR'
|
|
THEN
|
|
FOR i IN 3..10
|
|
LOOP
|
|
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(alg_terreinsector_code,LENGTH(alg_terreinsector_code)-(i-1),LENGTH(alg_terreinsector_code)))+1)), '***')
|
|
INTO NextVolgNr
|
|
FROM alg_v_aanwezigterreinsector
|
|
WHERE LTRIM(SUBSTR(alg_terreinsector_code, LENGTH(alg_terreinsector_code)-(i-1), LENGTH(alg_terreinsector_code))) BETWEEN '0' AND LPAD('9',i,'9')
|
|
AND alg_locatie_key = CondKey
|
|
AND LENGTH(alg_terreinsector_code) <= i;
|
|
IF NextVolgNr = '***'
|
|
THEN
|
|
IF i = 3
|
|
THEN
|
|
NextVolgNr := '001';
|
|
ELSE
|
|
NextVolgNr := POWER(10, (i-1));
|
|
END IF;
|
|
EXIT;
|
|
ELSE
|
|
IF LENGTH(NextVolgNr) <= i
|
|
THEN
|
|
NextVolgNr:= LPAD(NextVolgNr,i,'0');
|
|
EXIT;
|
|
END IF;
|
|
END IF;
|
|
END LOOP;
|
|
ELSIF LPNName = 'LPN_ALG_GEBOUW'
|
|
THEN
|
|
FOR i IN 3..10
|
|
LOOP
|
|
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(alg_gebouw_code, LENGTH(alg_gebouw_code)-(i-1), LENGTH(alg_gebouw_code)))+1)), '***')
|
|
INTO NextVolgNr
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE LTRIM(SUBSTR(alg_gebouw_code, LENGTH(alg_gebouw_code)-(i-1), LENGTH(alg_gebouw_code))) BETWEEN '0' AND LPAD('9',i,'9')
|
|
AND alg_locatie_key = CondKey
|
|
AND LENGTH(alg_gebouw_code) <= i;
|
|
IF NextVolgNr = '***'
|
|
THEN
|
|
IF i = 3
|
|
THEN
|
|
NextVolgNr := '001';
|
|
ELSE
|
|
NextVolgNr := POWER(10, (i-1));
|
|
END IF;
|
|
EXIT;
|
|
ELSE
|
|
IF LENGTH(NextVolgNr) <= i
|
|
THEN
|
|
NextVolgNr:= LPAD(NextVolgNr,i,'0');
|
|
EXIT;
|
|
END IF;
|
|
END IF;
|
|
END LOOP;
|
|
ELSIF LPNName = 'LPN_ALG_RUIMTE'
|
|
THEN
|
|
FOR i IN 3..10
|
|
LOOP
|
|
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(alg_ruimte_nr, LENGTH(alg_ruimte_nr)-(i-1), LENGTH(alg_ruimte_nr)))+1)), '***')
|
|
INTO NextVolgNr
|
|
FROM alg_v_aanwezigruimte
|
|
WHERE LTRIM(SUBSTR(alg_ruimte_nr, LENGTH(alg_ruimte_nr)-(i-1), LENGTH(alg_ruimte_nr))) BETWEEN '0' AND LPAD('9',i,'9')
|
|
AND alg_verdieping_key = CondKey
|
|
AND LENGTH(alg_ruimte_nr) <= i;
|
|
IF NextVolgNr = '***'
|
|
THEN
|
|
IF i = 3
|
|
THEN
|
|
NextVolgNr := '001';
|
|
ELSE
|
|
NextVolgNr := POWER(10, (i-1));
|
|
END IF;
|
|
EXIT;
|
|
ELSE
|
|
IF LENGTH(NextVolgNr) <= i
|
|
THEN
|
|
NextVolgNr:= LPAD(NextVolgNr,i,'0');
|
|
EXIT;
|
|
END IF;
|
|
END IF;
|
|
END LOOP;
|
|
ELSIF LPNName = 'LPN_PRS_WERKPLEK'
|
|
THEN
|
|
BEGIN
|
|
SELECT TO_CHAR(NVL(MAX(prs_werkplek_volgnr),0) +1)
|
|
INTO NextVolgNr
|
|
FROM prs_werkplek
|
|
WHERE prs_alg_ruimte_key = CondKey
|
|
AND prs_werkplek_verwijder IS NULL;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NextVolgNr := '1';
|
|
END;
|
|
/* Omschrijving */
|
|
BEGIN
|
|
SELECT alg_ruimte_nr ||' - '|| NextVolgNr
|
|
INTO NextVolgNr
|
|
FROM alg_ruimte
|
|
WHERE alg_ruimte_key = CondKey;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN NULL;
|
|
END;
|
|
END IF;
|
|
ReturnString := Prefix||NextVolgNr;
|
|
RETURN ReturnString;
|
|
END;
|
|
|
|
FUNCTION sprintf (ps IN varchar2, pins_deel_key IN number)
|
|
RETURN varchar2
|
|
IS
|
|
lins_deel_omschrijving ins_deel.ins_deel_omschrijving%TYPE;
|
|
s varchar2 (2048 CHAR);
|
|
BEGIN
|
|
s := ps;
|
|
-- We support substitution of placeholders in the messages
|
|
-- ##DESC## = ins_deel_omschrijving
|
|
IF INSTR2 (s, '#') > 0
|
|
THEN
|
|
SELECT ins_deel_omschrijving
|
|
INTO lins_deel_omschrijving
|
|
FROM ins_deel
|
|
WHERE ins_deel_key = pins_deel_key;
|
|
s :=
|
|
REPLACE (s,
|
|
'##DESC##',
|
|
lins_deel_omschrijving
|
|
);
|
|
END IF;
|
|
|
|
RETURN s;
|
|
END;
|
|
|
|
END ins;
|
|
/
|
|
|
|
|
|
|
|
REGISTERRUN('$Workfile: INS_PAC.SRC $','$Revision$')
|
|
|
|
#endif // INS
|