Files
Database/_UP/312TO320.SRC
2000-05-15 12:07:30 +00:00

4365 lines
172 KiB
Plaintext

SET TERMOUT ON
SET FEEDBACK OFF
SET ECHO OFF
--
-- Update script van Facilitor 3.1 versie 3.12 naar 3.20
--
/*
* Dit script wordt geprecompileerd dus is het mogelijk (verplicht)
* om #ifdef's te gebruiken voor de diverse modules.
*
* Gebruik daar waar in de *.SQL-variant geen commentaar-tekst moet komen de
* C-style van uitcommentarieren. Daar waar WEL tekst in de uitvoer moet komen
* moet -- gebruikt worden.
*
*
*/
#include "modules.h"
#include "comsql.h"
#include "INS\inssql.h"
/*
* Test eerst of de vorige versie van module FAC zoals genoemd in tabel
* fac_module wel het te verwachten versienummer heeft
* als dat niet zo is dient de gebruiker het script ZELF af te breken middels
* control-c.
* Als dat wel zo is vervolgt het script en zal aan het einde van het script
* het interne versienummer en de datum worden bijgewerkt.
*/
#ifdef MASTER
SPOOL OFF
set heading off
clear screen
PROMPT ***********************************************************************
PROMPT
PROMPT UPGRADE SCRIPT van Facilitor 3.1 versie 03.12 naar 03.20
PROMPT
SELECT 'De huidige versie van Facilitor zou moeten zijn 03.12 en is: '
|| fac_module_version
FROM fac_module
WHERE fac_module_name='FAC';
PROMPT
PROMPT Indien de huidige versie NIET de verwachte versie is mag dit script
PROMPT niet worden gerund! In dit geval dient het script nu middels
PROMPT CONTROL-C te worden afgebroken.
PROMPT
PROMPT Indien de versies overeenkomen dient nu ENTER te worden gedrukt...
PROMPT
PROMPT ***********************************************************************
ACCEPT nix PROMPT ''
PROMPT
PROMPT De upgrade wordt vervolgd. Even geduld a.u.b...
PROMPT
SET TERMOUT OFF
SET HEADING OFF
SET FEEDBACK OFF
SET ECHO OFF
SET VERIFY OFF
SET LINESIZE 110
SET SERVEROUTPUT ON;
SPOOL $312TO320.SQL
PROMPT SPOOL $312TO320.LST;
UPDMOD(FAC,312TO320)
UPDMOD(ALG,312TO320)
UPDMOD(INS,312TO320)
UPDMOD(PRS,312TO320)
UPDMOD(MLD,312TO320)
UPDMOD(CAD,312TO320)
UPDMOD(AKZ,312TO320)
UPDMOD(PRJ,312TO320)
UPDMOD(SCH,312TO320)
UPDMOD(SLE,312TO320)
UPDATE_VERSION('03.20');
COMMIT;
PROMPT SPOOL OFF;
SPOOL OFF
START $312TO320.SQL
#endif // MASTER
/* denk aan #ifdef constructies! */
/* PLAATS HIERONDER DE UPDATES */
/* Weer op de oude manier dus bijvoorbeeld :
#ifdef ALG
bla bla
#endif // ALG
etc.
*/
#ifdef ALG
ALTER TABLE alg_terreinsector
MODIFY (alg_terreinsector_oppervlak NUMBER(12,2))
MODIFY (alg_terreinsector_omtrek NUMBER(12,2));
ALTER TABLE alg_gebouw
MODIFY (alg_gebouw_bruto_vloeropp NUMBER(12,2))
MODIFY (alg_gebouw_omtrek NUMBER(12,2))
MODIFY (alg_gebouw_inhoud NUMBER(12,2));
DEF_FAC_MESSAGE ('ALG_M246', 'Bij kenmerktype ''Referentie'' moet een domein worden opgegeven.');
DELETE FROM fac_entity_name
WHERE fac_entity_system_name = 'ALG_TERREINSECTOR_B';
COMMIT;
DEF_FAC_ENTITY ('ALG_TERREINSECTOR_B', 'Terreinvak', 'Terreinvakken', 'de');
CREATE_TRIGGER(alg_t_alg_ruimte_B_IU)
BEFORE INSERT OR UPDATE ON alg_ruimte
FOR EACH ROW
BEGIN
-- Deze trigger is ook gedefinieerd in RES !!
UPDATE_PRIMARY_KEY(alg_ruimte_key, alg_s_alg_onroerendgoed_keys);
UPDATE_UPPER(alg_ruimte_nr, alg_ruimte_upper_nr);
UPDATE_AANMAAKDATUM(alg_ruimte, alg_ruimte_aanmaak);
CHECK_CADMUTATIE(alg_ruimte_verwijder, alg_ruimte_getekend, 'alg_m245');
/* Als de soort ruimte veranderd wordt en er zijn werkplekken in de ruimte
* dan moet het veld PRS_BEVAT_WERKPLEKKEN de waarde 1 bevatten in de
* nieuwe soort ruimte.
*/
IF :old.alg_ruimte_key IS NOT NULL
AND :new.alg_ruimte_verwijder IS NULL
AND :old.alg_srtruimte_key <> :new.alg_srtruimte_key
THEN
DECLARE
dummy CHAR;
BEGIN
SELECT 'x'
INTO dummy
FROM alg_srtruimte ALG_SR_1,
alg_srtruimte ALG_SR_2,
all_v_aanwezigwerkplek PRS_W
WHERE ALG_SR_1.alg_srtruimte_key = :old.alg_srtruimte_key
AND ALG_SR_1.prs_bevat_werkplek = 1
AND ALG_SR_2.alg_srtruimte_key = :new.alg_srtruimte_key
AND ALG_SR_2.prs_bevat_werkplek IS NULL
AND PRS_W.prs_alg_ruimte_key = :new.alg_ruimte_key;
APPLICATION_ERROR(-20000, 'prs_m034');
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS
THEN APPLICATION_ERROR(-20000, 'prs_m034');
END;
END IF;
#ifdef INV
/* Als er een INV-deel bestaat in de te verwijderen ruimte
* dan mag de ruimte niet verwijderd worden.
*/
IF :new.alg_ruimte_verwijder IS NOT NULL
THEN
DECLARE
dummy CHAR;
BEGIN
SELECT 'x'
INTO dummy
FROM inv_v_aanwezigdeel
WHERE ins_alg_ruimte_key = :new.alg_ruimte_key
AND ins_alg_ruimte_type = 'R';
APPLICATION_ERROR(-20000, 'prs_m055');
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS
THEN APPLICATION_ERROR(-20000, 'prs_m055');
END;
END IF;
#endif
/* Als de ruimte verwijderd wordt, dan moeten ook de bijbehorende
* werkplekken/slaapplaatsen verwijderd worden.
*/
IF :new.alg_ruimte_verwijder IS NOT NULL OR
(:new.alg_ruimte_verwijder IS NULL AND :old.alg_ruimte_verwijder IS NOT NULL)
THEN
UPDATE prs_werkplek
SET prs_werkplek_verwijder = :new.alg_ruimte_verwijder
, prs_werkplek_getekend = :new.alg_ruimte_getekend
WHERE prs_werkplek.prs_alg_ruimte_key = :new.alg_ruimte_key
AND prs_werkplek_verwijder IS NULL;
UPDATE ins_deel
SET ins_deel_verwijder = :new.alg_ruimte_verwijder
, ins_deel_getekend = :new.alg_ruimte_getekend
WHERE ins_deel.ins_alg_ruimte_key = :new.alg_ruimte_key
AND ins_deel_verwijder IS NULL
AND ins_alg_ruimte_type <> 'W';
END IF;
#ifdef SCH
IF :new.alg_ruimte_verwijder IS NOT NULL
THEN
BEGIN
DELETE FROM sch_nivo_og
WHERE sch_alg_og_key = :new.alg_ruimte_key;
END;
END IF;
#endif // SCH
END;
/
#endif // ALG
#ifdef FAC
DEF_FAC_MESSAGE ('FAC_M039', 'Verwijderen uit gebruikerstabel');
DEF_FAC_MESSAGE ('FAC_M040', 'Verwijderen van %1% uit gebruikerstabel %2% ?');
DEF_FAC_MESSAGE ('FAC_M041', '%1% wordt nog gebruikt. Verwijderen is niet mogelijk.');
CREATE OR REPLACE FUNCTION FAC_F_FAC_GET_DESCRIPTION(LPNName IN VARCHAR2
,CondKey IN NUMBER
,Prefix IN VARCHAR2
,PrefixKey IN NUMBER) RETURN VARCHAR2 IS
NextVolgNr VARCHAR2(20);
DeelUpper ins_deel.ins_deel_omschrijving%TYPE;
ReturnString VARCHAR2(30);
BEGIN
IF LPNName = 'LPN_INS_DEEL'
THEN
FOR i IN 3..10
LOOP
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_upper, LENGTH(ins_deel_upper)-(i-1)))+1)), '***')
INTO NextVolgNr
FROM all_v_aanwezigdeel
WHERE LTRIM(SUBSTR(ins_deel_upper, LENGTH(ins_deel_upper)-(i-1))) BETWEEN '0' AND LPAD('9',i,'9')
AND ins_deel_upper LIKE Prefix||'%'
AND (LENGTH(ins_deel_upper) = LENGTH(Prefix)+i
OR (LENGTH(ins_deel_upper) > LENGTH(Prefix)+i
AND SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix)-i) =
LPAD('0',LENGTH(ins_deel_upper)-LENGTH(Prefix)-i ,'0')))
AND ins_alg_locatie_key = CondKey
AND ins_srtdeel_key = PrefixKey;
IF NextVolgNr = '***'
THEN
IF i = 3
THEN
NextVolgNr := '001';
ELSE
NextVolgNr := POWER(10, (i-1));
END IF;
EXIT;
ELSE
IF LENGTH(NextVolgNr) <= i
THEN
SELECT ins_deel_upper
INTO DeelUpper
FROM all_v_aanwezigdeel
WHERE LTRIM(SUBSTR(ins_deel_upper, LENGTH(ins_deel_upper)-(i-1))) BETWEEN '0' AND LPAD('9',i,'9')
AND ins_deel_upper LIKE Prefix||'%'||TO_CHAR(NextvolgNr-1)
AND (LENGTH(ins_deel_upper) = LENGTH(Prefix)+i
OR (LENGTH(ins_deel_upper) > LENGTH(Prefix)+i
AND SUBSTR(ins_deel_upper, LENGTH(Prefix)+1,LENGTH(ins_deel_upper)-LENGTH(Prefix)-i) =
LPAD('0',LENGTH(ins_deel_upper)-LENGTH(Prefix)-i ,'0')))
AND ins_alg_locatie_key = CondKey
AND ins_srtdeel_key = PrefixKey;
NextVolgNr:= SUBSTR(DeelUpper, LENGTH(Prefix)+1,LENGTH(DeelUpper)-LENGTH(Prefix)-i)||LPAD(NextVolgNr,i,'0');
EXIT;
END IF;
END IF;
END LOOP;
ELSIF LPNName = 'LPN_INS_ONDERDEEL'
THEN
FOR i IN 3..10
LOOP
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_upper, LENGTH(ins_deel_upper)-(i-1)))+1)), '***')
INTO NextVolgNr
FROM ins_deel
WHERE LTRIM(SUBSTR(ins_deel_upper, LENGTH(ins_deel_upper)-(i-1))) BETWEEN '0' AND LPAD('9',i,'9')
AND ins_alg_locatie_key = CondKey
AND ins_deel_verwijder IS NULL
AND ins_deel_parent_key IS NOT NULL
AND ins_deel_upper LIKE Prefix||'%'
AND LENGTH(ins_deel_upper) <= LENGTH(Prefix)+i
AND ins_srtdeel_key = PrefixKey;
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_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)))+1)), '***')
INTO NextVolgNr
FROM alg_v_aanwezigterreinsector
WHERE LTRIM(SUBSTR(alg_terreinsector_code, LENGTH(alg_terreinsector_code)-(i-1))) 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)))+1)), '***')
INTO NextVolgNr
FROM alg_v_aanweziggebouw
WHERE LTRIM(SUBSTR(alg_gebouw_code, LENGTH(alg_gebouw_code)-(i-1))) 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)))+1)), '***')
INTO NextVolgNr
FROM alg_v_aanwezigruimte
WHERE LTRIM(SUBSTR(alg_ruimte_nr, LENGTH(alg_ruimte_nr)-(i-1))) 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;
/
ALTER TABLE fac_usrdata
DROP CONSTRAINT fac_u_fac_usrdata_upper;
ALTER TABLE fac_usrdata
ADD CONSTRAINT fac_u_fac_usrdata_upper UNIQUE(fac_usrdata_upper, fac_usrtab_key, fac_usrdata_verwijder);
COMMIT;
#endif //FAC
#ifdef CAD
DEF_FAC_MESSAGE ('CAD_M011' , 'Symbool %1% niet gevonden.');
DEF_FAC_MESSAGE ('CAD_M012' , 'Geen symbool gevonden voor objectsoort %1%.');
ALTER TABLE cad_tekening
DROP CONSTRAINT cad_u_cad_tekening;
ALTER TABLE cad_tekening
ADD CONSTRAINT cad_u_cad_tekening UNIQUE(alg_locatie_key,alg_verdieping_key,cad_tekening_type,ins_discipline_key,cad_tekening_verwijder);
CREATE_VIEW(cad_v_cad_aanwezigtekening, FAC_NORMAAL_PRIVILEGE) AS
SELECT * FROM cad_tekening C_T
WHERE cad_tekening_verwijder IS NULL
AND C_T.ins_discipline_key IN (SELECT ins_discipline_key
FROM ins_discipline)
OR C_T.ins_discipline_key IS NULL;
CREATE_VIEW(cad_v_cad_tekening_gegevens, FAC_NORMAAL_PRIVILEGE)
(cad_tekening_key,
alg_locatie_key,
alg_locatie_code,
alg_gebouw_key,
alg_gebouw_code,
alg_verdieping_key,
alg_verdieping_omschrijving,
ins_discipline_key,
ins_discipline_omschrijving) AS
SELECT C_T.cad_tekening_key,
C_T.alg_locatie_key,
ALG_L.alg_locatie_code,
ALG_G.alg_gebouw_key,
ALG_G.alg_gebouw_code,
C_T.alg_verdieping_key,
ALG_V.alg_verdieping_omschrijving,
C_T.ins_discipline_key,
INS_D.ins_discipline_omschrijving
FROM alg_locatie ALG_L,
alg_verdieping ALG_V,
alg_gebouw ALG_G,
ins_discipline INS_D,
cad_v_cad_aanwezigtekening C_T
WHERE C_T.alg_locatie_key = ALG_L.alg_locatie_key
AND C_T.alg_verdieping_key = ALG_V.alg_verdieping_key (+)
AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key (+)
AND C_T.ins_discipline_key = INS_D.ins_discipline_key (+);
CREATE_VIEW(cad_v_plattegrond, FAC_NORMAAL_PRIVILEGE) AS
SELECT * FROM cad_tekening
WHERE cad_tekening_verwijder IS NULL
AND UPPER(cad_tekening_type) = 'P';
CREATE_VIEW(cad_v_contour, FAC_NORMAAL_PRIVILEGE) AS
SELECT * FROM cad_tekening
WHERE cad_tekening_verwijder IS NULL
AND UPPER(cad_tekening_type) = 'C';
CREATE_VIEW(cad_v_discipline, FAC_NORMAAL_PRIVILEGE) AS
SELECT * FROM cad_tekening
WHERE cad_tekening_verwijder IS NULL
AND UPPER(cad_tekening_type) = 'D';
/* View met ALLE tekeningen, ongeacht de autorisatie; minimale kolommen, gebruikt in CAD_PAC.SRC */
CREATE_VIEW(cad_v_cad_tekening, FAC_NORMAAL_PRIVILEGE) AS
SELECT ins_discipline_key,
alg_locatie_key,
alg_verdieping_key,
cad_tekening_type,
cad_tekening_filenaam
FROM cad_tekening C_T
WHERE cad_tekening_verwijder IS NULL;
CREATE_VIEW(cad_v_ins_deel, FAC_NORMAAL_PRIVILEGE)
(ins_deel_key,
ins_deel_cadlabel,
ins_srtdeel_omschrijving,
ins_deel_oppervlak,
ins_deel_omtrek
) AS
SELECT D.ins_deel_key,
D.ins_deel_omschrijving,
SD.ins_srtdeel_omschrijving,
NVL(TO_CHAR(D.ins_deel_oppervlak),'-')||' m2',
NVL(TO_CHAR(D.ins_deel_omtrek),'-')||' m'
FROM all_v_aanwezigdeel D, ins_srtdeel SD
WHERE SD.ins_srtdeel_key=D.ins_srtdeel_key;
/
/* Kleine wijzigingen in cad-package i.v.m. performance */
CREATE OR REPLACE PACKAGE cad AS
FUNCTION cad_f_deel_get_locatie(key IN NUMBER) RETURN NUMBER;
FUNCTION cad_f_deel_get_verdieping(key IN NUMBER) RETURN NUMBER;
FUNCTION cad_f_deel_get_discipline(key IN NUMBER) RETURN NUMBER;
FUNCTION cad_f_deel_get_tekeningnaam(key IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_f_ruimte_get_tekeningnaam(key IN NUMBER) RETURN VARCHAR2;
PROCEDURE cad_SLNKSTRUCTinsertVALINT(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER);
PROCEDURE cad_SLNKSTRUCTinsertVALSTR(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value VARCHAR2, ClrEntry NUMBER);
PROCEDURE cad_SLNKSTRUCTinsertVALREAL(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER);
PROCEDURE cad_SLNKSTRUCTinsertVALDATE(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value DATE, ClrEntry NUMBER);
FUNCTION cad_SLNKSTRUCTreadVALINT(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER;
FUNCTION cad_SLNKSTRUCTreadVALSTR(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN VARCHAR2;
FUNCTION cad_SLNKSTRUCTreadVALREAL(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER;
FUNCTION cad_SLNKSTRUCTreadVALDATE(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN DATE;
PROCEDURE cad_SLNKSTRUCTclear(Session_Id NUMBER);
PROCEDURE cad_SLNKSTRUCTshift(Session_Id NUMBER);
PROCEDURE cad_SLNKpostDraw(Session_Id NUMBER);
PROCEDURE cad_SLNKpostErase(Session_Id NUMBER);
PROCEDURE cad_SLNKpostModify(Session_Id NUMBER);
PROCEDURE cad_SLNKSTRUCTclearAll(Session_Id NUMBER);
PROCEDURE cad_SLNKSTRUCTdelete(Session_Id NUMBER, Entry IN VARCHAR2);
PROCEDURE cad_SLNKgetDrawing(Session_Id NUMBER);
PROCEDURE cad_SLNKPreDraw(Session_Id NUMBER);
PROCEDURE cad_SLNKPrePostDraw(Session_Id NUMBER);
PROCEDURE cad_SLNKDelenbijWerkplek(Session_Id NUMBER);
PROCEDURE cad_getSymboolInfo(Session_Id NUMBER, Entry VARCHAR2);
PROCEDURE cad_SLNKgetBinnenBuiten(Session_Id NUMBER, LoadDwg VARCHAR2);
PROCEDURE cad_GetSrcDwgOfEntity2(Session_Id NUMBER, LPNAliasINSO VARCHAR2, LPNKey NUMBER);
PROCEDURE cad_SetKenmerkWaarde(DeelKey IN NUMBER, KenmerkKey IN NUMBER, KenmerkWaarde IN VARCHAR2);
PROCEDURE cad_GetKenmerkWaarde(Session_Id IN NUMBER, DeelKey IN NUMBER, KenmerkKey IN NUMBER);
/* Deze procedure is slechts eenmaal gebruikt t.b.v. grafische conversie BIS ...
* PROCEDURE cad_SLNKConvPreDraw(Session_Id NUMBER, LOC_X_COORD NUMBER, LOC_Y_COORD NUMBER);
*/
FUNCTION cad_getDisciplinetekening(Locatie_key IN NUMBER, Discipline_key IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_getPlattegrondtekening(Locatie_key IN NUMBER)RETURN VARCHAR2;
FUNCTION cad_getContourtekening(Locatie_key IN NUMBER)RETURN VARCHAR2;
FUNCTION cad_getVerdiepPlgrnd_tekening(Locatiekey IN NUMBER, Verdiepingkey IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_getVerdiepCntr_tekening(Locatiekey IN NUMBER, Verdiepingkey IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_getLocatieCode_Tekening(TekeningNaam IN VARCHAR2) RETURN VARCHAR2;
FUNCTION cad_getTekeningNaam_LoadDwg(LoadDwg IN VARCHAR2) RETURN VARCHAR2;
FUNCTION cad_GetSrcDwgOfEntity(Session_Id NUMBER, LPNAliasINSO VARCHAR2, LPNKey NUMBER) RETURN VARCHAR2;
FUNCTION Bepaal_locatiecode(locatie_key IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_getLayerColor(Entry IN VARCHAR2) RETURN NUMBER;
FUNCTION cad_getLayerLinetype(Entry IN VARCHAR2) RETURN VARCHAR2;
FUNCTION cad_getLayerName(Entry IN VARCHAR2) RETURN VARCHAR2;
FUNCTION cad_SLNKSTRUCTreadVALSTR2(Session_Id IN NUMBER, Entry IN VARCHAR2, SeqNr IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_SLNKSTRUCTreadVALINT2(Session_Id IN NUMBER, Entry IN VARCHAR2, SeqNr IN NUMBER) RETURN NUMBER;
/* garandeer dat de functies de database-state en package-state niet beinvloeden
* (anders kunnen ze niet zondermeer in een view worden gebruikt)
*/
PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_locatie, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_verdieping, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_discipline, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_tekeningnaam, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_f_ruimte_get_tekeningnaam, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_getDisciplinetekening, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_getPlattegrondtekening, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_getContourtekening, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_getVerdiepPlgrnd_tekening, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_getVerdiepCntr_tekening, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_getLocatieCode_Tekening, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_getTekeningNaam_LoadDwg, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (Bepaal_locatiecode, WNDS, WNPS);
END cad;
/
CREATE OR REPLACE PACKAGE BODY cad AS
FUNCTION cad_f_deel_get_locatie(Key IN NUMBER) RETURN NUMBER IS
locatie_key NUMBER(10);
BEGIN
SELECT ins_alg_locatie_key
INTO locatie_key
FROM all_v_aanwezigdeel
/* FROM ins_deel -- de tabel i.o.m. PF view gebruiken */
WHERE ins_deel_key = Key;
RETURN locatie_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END cad_f_deel_get_locatie;
FUNCTION cad_f_deel_get_verdieping(Key IN NUMBER) RETURN NUMBER IS
verdieping_key NUMBER(10);
PlaatsDeel VARCHAR2(1);
WerkplekKey NUMBER(10);
BEGIN
/* Functie aangepast t.b.v. Facilitor 3 i.v.m. mogelijkheid deel te plaatsen op een werkplek */
SELECT ins_alg_ruimte_type INTO PlaatsDeel
FROM ins_deel
WHERE ins_deel_key = Key;
IF PlaatsDeel = 'W' THEN
SELECT ins_alg_ruimte_key INTO WerkplekKey
FROM ins_deel
WHERE ins_deel_key = Key;
/* Bepaal ruimte waarin werkplek zich bevindt en vervolgens de verdieping */
BEGIN
SELECT alg_verdieping_key INTO verdieping_key
FROM alg_ruimte
WHERE alg_ruimte_key =
(SELECT prs_alg_ruimte_key FROM PRS_WERKPLEK
WHERE prs_werkplek_key = WerkplekKey);
RETURN verdieping_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
ELSE
BEGIN
SELECT ALG_G.alg_verdieping_key
INTO verdieping_key
FROM alg_ruimte ALG_G, ins_deel INS_D /* de tabel! */
WHERE INS_D.ins_deel_key = Key
AND INS_D.ins_alg_ruimte_key = ALG_G.alg_ruimte_key;
RETURN verdieping_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END IF;
END cad_f_deel_get_verdieping;
FUNCTION cad_f_deel_get_discipline(Key IN NUMBER) RETURN NUMBER IS
discipline_key NUMBER(10);
BEGIN
SELECT ins_discipline_key
INTO discipline_key
FROM all_v_aanwezigdeel
/* FROM ins_deel -- de tabel! */
WHERE ins_deel_key = Key;
RETURN discipline_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END cad_f_deel_get_discipline;
FUNCTION cad_f_deel_get_tekeningnaam(Key IN NUMBER) RETURN VARCHAR2 IS
tekeningnaam VARCHAR2(256);
locatie_key NUMBER(10);
verdieping_key NUMBER(10);
discipline_key NUMBER(10);
BEGIN
locatie_key := cad_f_deel_get_locatie(Key);
verdieping_key := cad_f_deel_get_verdieping(Key);
discipline_key := cad_f_deel_get_discipline(Key);
IF (locatie_key IS NOT NULL AND
verdieping_key IS NOT NULL AND
discipline_key IS NOT NULL) THEN
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_v_cad_tekening
WHERE alg_locatie_key = locatie_key
AND alg_verdieping_key = verdieping_key
AND ins_discipline_key = discipline_key;
RETURN tekeningnaam;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
ELSIF (locatie_key IS NOT NULL AND
verdieping_key IS NULL AND
discipline_key IS NOT NULL) THEN
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_v_cad_tekening
WHERE alg_locatie_key = locatie_key
AND alg_verdieping_key IS NULL
AND ins_discipline_key = discipline_key;
RETURN tekeningnaam;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END IF;
END cad_f_deel_get_tekeningnaam;
FUNCTION cad_f_ruimte_get_tekeningnaam(Key IN NUMBER) RETURN VARCHAR2 IS
tekeningnaam VARCHAR2(256);
locatie_key NUMBER(10);
verdieping_key NUMBER(10);
BEGIN
SELECT alg_locatie_key, alg_verdieping_key
INTO locatie_key, verdieping_key
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key = Key;
IF (locatie_key IS NOT NULL AND
verdieping_key IS NOT NULL) THEN
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_v_cad_tekening /* ja deze! */
WHERE alg_locatie_key = locatie_key
AND alg_verdieping_key = verdieping_key
AND cad_tekening_type = 'C';
RETURN tekeningnaam;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* raise_application_error(-20000, 'ins_m166'); */
RETURN NULL;
END;
ELSE
RETURN NULL;
END IF;
END cad_f_ruimte_get_tekeningnaam;
FUNCTION Bepaal_locatiecode(locatie_key IN NUMBER) RETURN VARCHAR2 IS
locatie_code VARCHAR2(5);
BEGIN
BEGIN
SELECT alg_locatie_code INTO locatie_code
FROM alg_locatie
WHERE alg_locatie_key = Locatie_key;
RETURN locatie_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END Bepaal_locatiecode;
FUNCTION cad_getLocatieCode_Tekening(TekeningNaam IN VARCHAR2) RETURN VARCHAR2 IS
locatieCode VARCHAR2(25);
SlashPositie NUMBER(2);
BEGIN
SlashPositie := INSTR(TekeningNaam,'\');
LocatieCode := SUBSTR(TekeningNaam,1, SlashPositie-1);
RETURN LocatieCode;
END cad_getLocatieCode_Tekening;
FUNCTION cad_getTekeningNaam_LoadDwg(LoadDwg IN VARCHAR2) RETURN VARCHAR2 IS
Teller NUMBER;
OneChar VARCHAR2(1);
Tekening VARCHAR2(256);
SlashFound BOOLEAN := FALSE;
BEGIN
Teller:= LENGTH(LoadDwg);
WHILE (teller>0) LOOP
OneChar:=SUBSTR(LoadDwg,Teller,1);
IF OneChar='\' THEN
EXIT;
END IF;
teller :=teller-1;
END LOOP;
IF teller = 0 THEN
/* geen '\' gevonden */
RETURN LoadDwg;
ELSE
/* return tekeningnaam zonder pad terug */
RETURN SUBSTR(LoadDwg,teller+1,LENGTH(LoadDwg)-teller);
END IF;
END cad_getTekeningNaam_LoadDwg;
FUNCTION cad_getDisciplinetekening(Locatie_key IN NUMBER, Discipline_key IN NUMBER)RETURN VARCHAR2 IS
locatie_code VARCHAR2(5);
tekening VARCHAR2(256);
Disciplinetekening VARCHAR2(256);
BEGIN
BEGIN
locatie_code := bepaal_locatiecode(Locatie_key);
SELECT cad_tekening_filenaam INTO tekening
FROM cad_v_discipline
WHERE alg_locatie_key = Locatie_key
AND ins_discipline_key = Discipline_key;
Disciplinetekening := locatie_code||'\'||tekening;
RETURN Disciplinetekening;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_getDisciplinetekening;
FUNCTION cad_getPlattegrondtekening(Locatie_key IN NUMBER)RETURN VARCHAR2 IS
locatie_code VARCHAR2(5);
tekening VARCHAR2(256);
Plattegrondtekening VARCHAR2(256);
BEGIN
BEGIN
locatie_code := bepaal_locatiecode(Locatie_key);
SELECT cad_tekening_filenaam INTO tekening
FROM cad_v_plattegrond
WHERE alg_locatie_key = Locatie_key
AND alg_verdieping_key IS NULL;
plattegrondtekening := locatie_code||'\'||tekening;
RETURN plattegrondtekening;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_getPlattegrondtekening;
FUNCTION cad_getVerdiepPlgrnd_tekening(Locatiekey IN NUMBER, Verdiepingkey IN NUMBER) RETURN VARCHAR2 IS
locatie_code VARCHAR2(5);
tekening VARCHAR2(256);
Plattegrondtekening VARCHAR2(256);
BEGIN
BEGIN
locatie_code := bepaal_locatiecode(Locatiekey);
SELECT cad_tekening_filenaam INTO tekening
FROM cad_v_plattegrond
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key = Verdiepingkey;
plattegrondtekening := locatie_code||'\'||tekening;
RETURN plattegrondtekening;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_getVerdiepPlgrnd_tekening;
FUNCTION cad_getContourtekening(Locatie_key IN NUMBER)RETURN VARCHAR2 IS
locatie_code VARCHAR2(5);
tekening VARCHAR2(256);
Contourtekening VARCHAR2(256);
BEGIN
locatie_code := bepaal_locatiecode(Locatie_key);
BEGIN
SELECT cad_tekening_filenaam INTO tekening
FROM cad_v_contour
WHERE alg_locatie_key = Locatie_key
AND alg_verdieping_key IS NULL;
Contourtekening := locatie_code||'\'||tekening;
RETURN Contourtekening;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_getContourtekening;
FUNCTION cad_getVerdiepCntr_tekening(Locatiekey IN NUMBER, Verdiepingkey IN NUMBER) RETURN VARCHAR2 IS
locatie_code VARCHAR2(5);
tekening VARCHAR2(256);
Contourtekening VARCHAR2(256);
BEGIN
locatie_code := bepaal_locatiecode(LocatieKey);
BEGIN
SELECT cad_tekening_filenaam INTO tekening
FROM cad_v_contour
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key = Verdiepingkey;
Contourtekening := locatie_code||'\'||tekening;
RETURN Contourtekening;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_getVerdiepCntr_tekening;
PROCEDURE cad_SLNKgetBinnenBuiten(Session_Id IN NUMBER, LoadDwg IN VARCHAR2) IS
/* Bepaal a.h.v. de LoadDwg of het hier gaat om een buitentekening(terreinsector) of binnentekening */
TekeningNaam VARCHAR2(256);
LocatieCode VARCHAR2(5);
LocatieKey NUMBER(10);
VerdiepingKey NUMBER(10);
Plaats NUMBER;
BEGIN
TekeningNaam := cad_getTekeningNaam_LoadDwg(LoadDwg);
LocatieCode := cad_getLocatieCode_Tekening(LoadDwg);
SELECT alg_locatie_key INTO LocatieKey
FROM alg_locatie
WHERE UPPER(alg_locatie_code) = UPPER(LocatieCode);
BEGIN
SELECT alg_verdieping_key INTO VerdiepingKey
FROM cad_v_plattegrond
WHERE alg_locatie_key = LocatieKey
AND cad_tekening_filenaam = TekeningNaam;
IF VerdiepingKey IS NOT NULL THEN
Plaats := 0;
ELSE
Plaats := 1;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
Plaats := 1;
END;
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, Plaats, 1);
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKgetBinnenBuiten;
PROCEDURE cad_SLNKSTRUCTdelete(Session_Id NUMBER, Entry VARCHAR2) IS
BEGIN
BEGIN
DELETE FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = entry;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END cad_SLNKSTRUCTdelete;
PROCEDURE cad_SLNKSTRUCTinsertVALINT(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER) IS
BEGIN
IF ClrEntry = 1 AND seqnr = 1 THEN
cad_SLNKSTRUCTdelete(Session_Id, Entry);
END IF;
BEGIN
INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valint)
VALUES(Session_Id, entry, seqnr, value);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END cad_SLNKSTRUCTinsertVALINT;
PROCEDURE cad_SLNKSTRUCTinsertVALSTR(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value VARCHAR2, ClrEntry NUMBER) IS
BEGIN
IF ClrEntry = 1 AND seqnr = 1 THEN
cad_SLNKSTRUCTdelete(Session_Id, Entry);
END IF;
BEGIN
INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valstr)
VALUES(Session_Id, entry, seqnr, value);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END cad_SLNKSTRUCTinsertVALSTR;
PROCEDURE cad_SLNKSTRUCTinsertVALREAL(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER) IS
BEGIN
IF ClrEntry = 1 AND seqnr = 1 THEN
cad_SLNKSTRUCTdelete(Session_Id, Entry);
END IF;
BEGIN
INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valreal)
VALUES(Session_Id, entry, seqnr, value);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END cad_SLNKSTRUCTinsertVALREAL;
PROCEDURE cad_SLNKSTRUCTinsertVALDATE(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value DATE, ClrEntry NUMBER) IS
BEGIN
IF ClrEntry = 1 AND seqnr = 1 THEN
cad_SLNKSTRUCTdelete(Session_Id, Entry);
END IF;
BEGIN
INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valdate)
VALUES(Session_Id, entry, seqnr, value);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END cad_SLNKSTRUCTinsertVALDATE;
PROCEDURE cad_SLNKSTRUCTclear(Session_Id NUMBER) IS
BEGIN
BEGIN
DELETE FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry <> 'FAC_MODULE'
AND cad_slnkstruct_entry <> 'SYNC'
AND cad_slnkstruct_entry <> 'PROJECTKEY';
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END cad_SLNKSTRUCTclear;
PROCEDURE cad_SLNKSTRUCTclearAll(Session_Id NUMBER) IS
BEGIN
BEGIN
DELETE FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END cad_SLNKSTRUCTclearAll;
PROCEDURE cad_SLNKSTRUCTshift(Session_Id NUMBER) IS
aantal NUMBER(10);
BEGIN
BEGIN
SELECT max(cad_slnkstruct_seqnr)
INTO aantal
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry <> 'FAC_MODULE'
AND cad_slnkstruct_entry <> 'SYNC';
IF aantal > 1
THEN
DELETE
FROM cad_slnkstruct
WHERE cad_slnkstruct_seqnr = 1
AND cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry <> 'FAC_MODULE'
AND cad_slnkstruct_entry <> 'SYNC'
AND cad_slnkstruct_entry <> 'PROJECTKEY';
COMMIT;
UPDATE cad_slnkstruct
SET cad_slnkstruct_seqnr = cad_slnkstruct_seqnr - 1
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_seqnr > 1
AND cad_slnkstruct_entry <> 'FAC_MODULE'
AND cad_slnkstruct_entry <> 'SYNC'
AND cad_slnkstruct_entry <> 'PROJECTKEY';
COMMIT;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
END;
END cad_SLNKSTRUCTshift;
FUNCTION cad_SLNKSTRUCTreadVALINT(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER IS
Value NUMBER;
BEGIN
BEGIN
SELECT cad_slnkstruct_valint INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = 1;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALINT;
FUNCTION cad_SLNKSTRUCTreadVALINT2(Session_Id IN NUMBER, Entry IN VARCHAR2, SeqNr IN NUMBER) RETURN NUMBER IS
Value NUMBER;
BEGIN
BEGIN
SELECT cad_slnkstruct_valint INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = SeqNr;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALINT2;
FUNCTION cad_SLNKSTRUCTreadVALSTR(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN VARCHAR2 IS
Value VARCHAR2(128);
BEGIN
BEGIN
SELECT cad_slnkstruct_valstr INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = 1;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALSTR;
FUNCTION cad_SLNKSTRUCTreadVALSTR2(Session_Id IN NUMBER, Entry IN VARCHAR2, SeqNr IN NUMBER) RETURN VARCHAR2 IS
Value VARCHAR2(128);
BEGIN
BEGIN
SELECT cad_slnkstruct_valstr INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = SeqNr;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALSTR2;
FUNCTION cad_SLNKSTRUCTreadVALREAL(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER IS
Value NUMBER;
BEGIN
BEGIN
SELECT cad_slnkstruct_valreal INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = 1;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALREAL;
FUNCTION cad_SLNKSTRUCTreadVALDATE(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN DATE IS
Value DATE;
BEGIN
BEGIN
SELECT cad_slnkstruct_valdate INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = 1;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALDATE;
PROCEDURE cad_SLNKgetDrawing(Session_Id NUMBER) IS
LPNName VARCHAR2(128);
tekeningnaam VARCHAR2(256);
locatie_key NUMBER(10);
locCode VARCHAR2(5);
DwgString VARCHAR2(261);
BEGIN
LocCode := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'INFOS', 1);
LPNName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'INFOS', 2);
SELECT alg_locatie_key INTO locatie_key
FROM alg_v_aanweziglocatie
WHERE alg_locatie_code = LocCode;
IF LPNName = 'LPN_BIS_BORING' THEN
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_v_cad_tekening
WHERE alg_locatie_key = locatie_key
AND cad_tekening_type = 'D'
AND ins_discipline_key =
(SELECT ins_discipline_key
FROM ins_tab_discipline
WHERE UPPER(ins_discipline_omschrijving) = 'MILIEU');
EXCEPTION
WHEN NO_DATA_FOUND THEN
tekeningnaam := NULL;
END;
ELSE
/* Later misschien verder uitwerken voor LPN_ALG_TERREINSECTOR, LPN_BIS_PROJECT en LPN_BIS_ONTGRAVINGSVAK.
* Voorlopig voor al deze LPN's dezelfde acties.
*/
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_v_cad_tekening
WHERE alg_locatie_key = locatie_key
AND cad_tekening_type = 'C';
EXCEPTION
WHEN NO_DATA_FOUND THEN
tekeningnaam := NULL;
END;
END IF;
DwgString := LocCode||'\'||tekeningnaam;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SRCDWG', 1, DwgString, 1);
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKgetDrawing;
FUNCTION cad_getLayerColor(Entry IN VARCHAR2) RETURN NUMBER IS
LayerColor NUMBER(3);
BEGIN
BEGIN
SELECT cad_symbool_kleur INTO LayerColor
FROM cad_symbool
WHERE cad_symbool_entry = Entry;
RETURN LayerColor;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_getLayerColor;
FUNCTION cad_getLayerLinetype(Entry IN VARCHAR2) RETURN VARCHAR2 IS
LayerLinetype VARCHAR2(256);
BEGIN
BEGIN
SELECT cad_symbool_linetype INTO LayerLinetype
FROM cad_symbool
WHERE cad_symbool_entry = Entry;
RETURN LayerLinetype;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_getLayerLinetype;
FUNCTION cad_getLayerName(Entry IN VARCHAR2) RETURN VARCHAR2 IS
LayerName VARCHAR2(256);
BEGIN
BEGIN
SELECT cad_symbool_layer INTO LayerName
FROM cad_symbool
WHERE cad_symbool_entry = Entry;
RETURN LayerName;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_getLayerName;
#ifdef BIS
PROCEDURE cad_KILLtrajecten(Session_Id NUMBER, Diepte NUMBER, Datum DATE) IS
Eerste BOOLEAN;
BEGIN
DECLARE
CURSOR EindTrajectGroter IS
SELECT DISTINCT(BIS_BT1.bis_boring_key), BIS_BT1.bis_boring_key
FROM cad_slnkstruct CAD_S, bis_v_boring_trajecten BIS_BT1
WHERE CAD_S.cad_slnkstruct_sessionid = 114866
AND CAD_S.cad_slnkstruct_entry = 'LPNKEYDELO'
AND CAD_S.cad_slnkstruct_valint = BIS_BT1.bis_boring_key
AND Diepte >=
(SELECT MAX(BIS_BT2.bis_traject_einddiepte)
FROM bis_v_boring_trajecten BIS_BT2
WHERE BIS_BT2.bis_boring_key = BIS_BT1.bis_boring_key);
/* Als Diepte > einddiepte laatste traject v/e boring -> verwijder hele boring */
BEGIN
Eerste := TRUE;
FOR TrajectRec IN EindTrajectGroter LOOP
UPDATE bis_boring
SET bis_boring_verwijderdatum = Datum
WHERE bis_boring_key = TrajectRec.bis_boring_key
AND bis_boring_verwijderdatum IS NULL;
COMMIT;
IF Eerste THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, TrajectRec.bis_boring_key, 1);
Eerste := FALSE;
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 0);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, TrajectRec.bis_boring_key, 0);
END IF;
END LOOP;
END;
DECLARE
CURSOR TrajectKleinerDiepte IS
SELECT CAD_S.cad_slnkstruct_valint, bis_traject_key
FROM cad_slnkstruct CAD_S, bis_v_boring_trajecten BIS_BT
WHERE CAD_S.cad_slnkstruct_sessionid = Session_Id
AND CAD_S.cad_slnkstruct_entry = 'LPNKEYDELO'
AND CAD_S.cad_slnkstruct_valint = BIS_BT.bis_boring_key
AND BIS_BT.bis_traject_einddiepte < Diepte;
/* Hele traject valt binnen het ontgravingsvak */
BEGIN
FOR TrajectRec IN TrajectKleinerDiepte LOOP
UPDATE bis_traject
SET bis_traject_einddatum = Datum
WHERE bis_traject_key = TrajectRec.bis_traject_key
AND bis_traject_einddatum IS NULL;
/* Als een traject wordt verwijderd dan moet het ook uit het mengmonster verwijderd worden */
DELETE FROM bis_traject_mengmonster
WHERE bis_traject_mengmonster_key = TrajectRec.bis_traject_key;
COMMIT;
END LOOP;
END;
DECLARE
CURSOR TrajectOverlap IS
SELECT CAD_S.cad_slnkstruct_valint, BIS_BT.bis_traject_key
FROM cad_slnkstruct CAD_S, bis_v_boring_trajecten BIS_BT
WHERE CAD_S.cad_slnkstruct_sessionid = Session_Id
AND CAD_S.cad_slnkstruct_entry = 'LPNKEYDELO'
AND CAD_S.cad_slnkstruct_valint = BIS_BT.bis_boring_key
AND BIS_BT.bis_traject_begindiepte < Diepte
AND BIS_BT.bis_traject_einddiepte > Diepte;
/* Het traject valt gedeeltelijk binnen het ontgravingsvak */
BEGIN
FOR TrajectRec IN TrajectOverlap LOOP
UPDATE bis_traject
SET bis_traject_begindiepte = Diepte
WHERE bis_traject_key = TrajectRec.bis_traject_key;
COMMIT;
END LOOP;
END;
END cad_KILLtrajecten;
FUNCTION cad_GETBoringSymbolName(Boring_key IN NUMBER) RETURN VARCHAR2 IS
SymboolNaam VARCHAR2(128);
GrondBoring VARCHAR2(1) := 0;
GrondwaterBoring VARCHAR2(1) := 0;
AantalPeilbuizen VARCHAR2(1) := 0;
Sondering VARCHAR2(1) := 0;
Cursor BoringCursor IS
SELECT bis_boring_key, bis_grond_key, bis_grondwater_key, bis_sondering_key
FROM bis_v_aanwezigbor_boringtype
WHERE bis_boring_key = Boring_Key;
BEGIN
SELECT count(*) INTO AantalPeilbuizen
FROM bis_v_aanwezigbor_boringtype
WHERE bis_boring_key = Boring_Key
AND bis_grondwater_key IS NOT NULL;
FOR BoringRec IN BoringCursor LOOP
IF BoringRec.bis_sondering_key IS NOT NULL AND Sondering = 0 THEN
Sondering := 1;
END IF;
IF BoringRec.bis_grond_key IS NOT NULL AND Grondboring = 0 THEN
Grondboring := 1;
END IF;
IF BoringRec.bis_grondwater_key IS NOT NULL AND Grondwaterboring = 0 THEN
Grondwaterboring := 1;
END IF;
END LOOP;
IF Grondboring = 1 AND Grondwaterboring = 1 AND Sondering = 0 AND AantalPeilbuizen = 0 THEN
Grondboring := 0;
ELSIF Grondwaterboring = 1 AND Sondering = 1 THEN
AantalPeilbuizen := 1;
Grondboring := 0;
ELSIF Grondwaterboring = 1 AND AantalPeilbuizen > 1 THEN
AantalPeilbuizen := 2;
Grondboring := 0;
Sondering := 0;
ELSIF Grondwaterboring = 1 AND AantalPeilbuizen = 1 THEN
Grondboring := 0;
ELSE
Grondboring := 1;
Grondwaterboring := 0;
Sondering := 0;
END IF;
BEGIN
SELECT bis_boringblk_symbool INTO SymboolNaam
FROM bis_boringblk
WHERE bis_boringblk_grond = GrondBoring AND bis_boringblk_grondwater = GrondwaterBoring
AND bis_boringblk_aantalpb = Aantalpeilbuizen AND bis_boringblk_sondering = Sondering;
EXCEPTION
WHEN NO_DATA_FOUND THEN
SymboolNaam := NULL;
END;
Return SymboolNaam;
END cad_GETBoringSymbolName;
/* Eenmalige procedure t.b.v. Grafische conversie BIS */
PROCEDURE cad_SLNKConvPreDraw(Session_Id NUMBER, loc_x_coord NUMBER, loc_y_coord NUMBER) IS
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
LPNKeyCond NUMBER(10);
Diepte NUMBER(8,2);
Veld_Key NUMBER(10);
Subloc_Code VARCHAR2(10);
Boring_nummer VARCHAR2(5);
Punt_boring BOOLEAN;
Boring_Symbol VARCHAR2(128);
Valint NUMBER;
SeqNr NUMBER(10);
Datum DATE;
BEGIN
LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASPREDRAW');
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYPREDRAW');
SeqNr := cad_SLNKSTRUCTreadVALINT(Session_id, 'SEQNR');
IF SeqNr IS NULL THEN
SeqNr := 1;
END IF;
/* Bepaal of er sprake is van een veld(contour) of van een puntboring */
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_BIS_BORING', 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1);
SELECT bis_veld_key, bis_boring_nummer INTO veld_key, boring_nummer
FROM bis_v_aanwezigboring
WHERE bis_boring_key = LPNKey;
IF veld_key IS NULL THEN
Valint := 0;
Punt_boring := TRUE; /* Er moet een boring getekend worden */
ELSE
Valint := 2; /* Er moet een contour getekend worden */
Punt_boring := FALSE;
END IF;
cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, Valint, 1);
IF Punt_boring THEN
/* Zoek juiste boringsymbool bij Boringnummer */
Boring_Symbol := cad_GETBoringSymbolName(LPNKey);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', SeqNr, Boring_Symbol, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, 'BORING', 1);
END IF;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'BIS_BORING_KEY', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_TERREINSECTOR', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_TERREINSECTOR_KEY', 1);
SELECT alg_terreinsector_key INTO LPNKeyCond
FROM bis_v_aanwezigboring
WHERE bis_boring_key = LPNKey;
cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1);
IF Punt_boring THEN
cad.cad_SLNKstructinsertVALREAL(Session_Id,'INSPOINTX', SeqNr, loc_x_coord, 1);
cad.cad_SLNKstructinsertVALREAL(Session_Id,'INSPOINTY', SeqNr, loc_y_coord, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'INSPOINTCODE', SeqNr, 1, 1);
END IF;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'BIS_BORING_NUMMER', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, boring_nummer, 1);
END cad_SLNKConvPreDraw;
#endif // BIS
FUNCTION CheckLPNCondKey(LPNCondName IN VARCHAR2, LPNCondKey IN NUMBER) RETURN BOOLEAN IS
Dummy NUMBER(10);
BEGIN
IF LPNCondName = 'LPN_ALG_TERREINSECTOR' THEN
BEGIN
SELECT alg_terreinsector_key INTO Dummy
FROM alg_terreinsector
WHERE alg_terreinsector_key = LPNCondKey;
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN FALSE;
END;
ELSIF LPNCondName = 'LPN_ALG_RUIMTE' THEN
BEGIN
SELECT alg_ruimte_key INTO Dummy
FROM alg_ruimte
WHERE alg_ruimte_key = LPNCondKey;
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN FALSE;
END;
ELSIF LPNCondName = 'LPN_PRS_WERKPLEK' THEN
BEGIN
SELECT prs_werkplek_key INTO Dummy
FROM prs_werkplek
WHERE prs_werkplek_key = LPNCondKey;
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN FALSE;
END;
ELSE
RETURN FALSE;
END IF;
END CheckLPNCondKey;
/*
FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
VolgnrTxt VARCHAR2(10);
Volgnummer NUMBER(3);
Numeriek BOOLEAN := TRUE;
SeqNr NUMBER(10);
StreepPos NUMBER(2);
VoorDeStreep VARCHAR2(20);
ReturnString VARCHAR2(30);
BEGIN
IF Omschrijving IS NULL THEN
ReturnString := '01';
RETURN ReturnString;
ELSE
StreepPos := INSTR(Omschrijving, '-');
IF StreepPos = 0 THEN
VolgnrTxt := Omschrijving;
ELSE
VoorDeStreep := SUBSTR(Omschrijving,1, StreepPos-1);
VolgnrTxt := SUBSTR(Omschrijving, StreepPos+1, LENGTH(omschrijving)-StreepPos);
END IF;
FOR i IN 1.. LENGTH(VolgnrTxt) LOOP
IF SUBSTR(VolgnrTxt,i,1) BETWEEN '0' AND '9' OR SUBSTR(VolgnrTxt,i,1) = ' ' THEN
Numeriek := TRUE;
ELSE
Numeriek := FALSE;
EXIT;
END IF;
END LOOP;
IF Numeriek THEN
Volgnummer := TO_NUMBER(VolgnrTxt);
Volgnummer := Volgnummer + 1;
VolgnrTxt := TO_CHAR(Volgnummer);
IF StreepPos <> 0 THEN
VolgnrTxt := '- 0'||VolgnrTxt;
ELSE
VolgnrTxt := '0'||VolgnrTxt;
END IF;
ELSE
Volgnummer := 1;
VolgnrTxt := VolgnrTxt||'- 01';
END IF;
IF VoorDeStreep IS NOT NULL THEN
ReturnString := VoorDeStreep||VolgnrTxt;
ELSE
ReturnString := VolgnrTxt;
END IF;
RETURN ReturnString;
END IF;
END Bepaal_VolgnummerTxt;
*/
FUNCTION AddDeel(Session_Id IN NUMBER, SrtdeelKey IN NUMBER, LoadDwg IN VARCHAR2, LPNCondName IN VARCHAR2,
LPNCondKey IN NUMBER) RETURN NUMBER IS
Plaatsdeel ins_deel.ins_alg_ruimte_type%TYPE;
LocatieCode alg_locatie.alg_locatie_code%TYPE;
LocatieKey alg_locatie.alg_locatie_key%TYPE;
DisciplineKey ins_discipline.ins_discipline_key%TYPE;
Volgnummer NUMBER(3);
SrtgroepKey ins_srtgroep.ins_srtgroep_key%TYPE;
SrtDeelCode ins_srtdeel.ins_srtdeel_code%TYPE;
Omschrijving VARCHAR2(30);
ZoekString VARCHAR2(20);
AntiString VARCHAR2(20);
VolgNrTxt VARCHAR2(30);
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
MaxLengte NUMBER(10);
Dummy NUMBER(10);
LabelSymbool VARCHAR2(256);
LabelOK BOOLEAN;
BEGIN
LocatieCode := cad_getLocatieCode_Tekening(LoadDwg);
BEGIN
SELECT alg_locatie_key INTO LocatieKey
FROM alg_locatie
WHERE UPPER(alg_locatie_code) = UPPER(LocatieCode);
EXCEPTION
WHEN NO_DATA_FOUND THEN
LocatieKey := NULL;
END;
SELECT ins_discipline_key INTO DisciplineKey
FROM ins_srtgroep
WHERE ins_srtgroep_key =
(SELECT ins_srtgroep_key FROM ins_srtdeel
WHERE ins_srtdeel_key = SrtDeelKey);
IF LPNCondName = 'LPN_ALG_TERREINSECTOR' THEN
PlaatsDeel := 'T';
ELSIF LPNCondName = 'LPN_ALG_RUIMTE' THEN
PlaatsDeel := 'R';
ELSIF LPNCondName = 'LPN_PRS_WERKPLEK' THEN
PlaatsDeel := 'W';
END IF;
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,10);
BEGIN
SELECT ins_deel_key INTO Dummy
FROM all_v_aanwezigdeel
WHERE ins_deel_upper = LabelSymbool;
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LabelOK := TRUE;
Omschrijving := LabelSymbool;
END;
ELSE
LabelOK := FALSE;
END IF;
IF NOT LabelOK THEN
SELECT RTRIM(ins_srtdeel_code_upper) INTO SrtDeelCode
FROM ins_srtdeel
WHERE ins_srtdeel_key = SrtdeelKey;
/* vervangen door nieuwe functie in FAC_PAC.SRC
Zoekstring := RTRIM(SrtDeelCode)||' - 0%';
Antistring := RTRIM(SrtDeelCode)||' - 00%';
BEGIN
SELECT MAX(LENGTH(ins_deel_omschrijving)) INTO MaxLengte
FROM all_v_aanwezigdeel
WHERE ins_srtdeel_key = SrtdeelKey
AND ins_alg_locatie_key = LocatieKey
AND ins_deel_parent_key IS NULL
AND ins_deel_omschrijving LIKE Zoekstring
AND ins_deel_omschrijving NOT LIKE AntiString;
SELECT max(ins_deel_omschrijving) INTO Omschrijving
FROM all_v_aanwezigdeel
WHERE ins_srtdeel_key = SrtdeelKey
AND ins_alg_locatie_key = LocatieKey
AND ins_deel_parent_key IS NULL
AND ins_deel_omschrijving LIKE Zoekstring
AND ins_deel_omschrijving NOT LIKE AntiString
AND LENGTH(ins_deel_omschrijving) = MaxLengte;
IF Omschrijving IS NOT NULL THEN
VolgnrTxt := Bepaal_VolgnummerTxt(Omschrijving);
ELSE
VolgnrTxt := RTRIM(SrtdeelCode)||' - 01';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
VolgnrTxt := RTRIM(SrtdeelCode)||' - 01';
END;
Omschrijving := VolgnrTxt;
*/
Omschrijving := FAC_F_FAC_GET_DESCRIPTION('LPN_INS_DEEL', LocatieKey, SrtDeelCode, SrtdeelKey);
END IF;
INSERT INTO ins_deel(ins_srtdeel_key, ins_alg_ruimte_key, ins_alg_ruimte_type, ins_deel_aantal,
ins_deel_omschrijving, ins_alg_locatie_key, ins_discipline_key)
VALUES(SrtdeelKey, LPNCondKey, PlaatsDeel, 1, Omschrijving, LocatieKey, DisciplineKey);
COMMIT;
BEGIN
SELECT ins_deel_key INTO LPNKey
FROM all_v_aanwezigdeel
WHERE ins_srtdeel_key = SrtdeelKey
AND ins_deel_omschrijving = omschrijving
AND ins_alg_ruimte_key = LPNCondKey
AND ins_alg_ruimte_type = PlaatsDeel;
RETURN LPNKey;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END AddDeel;
FUNCTION cad_MaakCadTekening(LPNALIAS IN VARCHAR2, LPNKEY IN VARCHAR2, SrtTekening IN CHAR) RETURN VARCHAR2 IS
LocatieKey alg_locatie.alg_locatie_key%TYPE;
LocatieCode alg_locatie.alg_locatie_code%TYPE;
VerdiepingKey alg_ruimte.alg_verdieping_key%TYPE;
DisciplineKey ins_discipline.ins_discipline_key%TYPE;
TekeningNaam cad_tekening.cad_tekening_filenaam%TYPE;
TekeningKey cad_tekening.cad_tekening_key%TYPE;
PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE;
BEGIN
IF LPNALIAS = 'LPN_ALG_TERREINSECTOR' THEN
SELECT alg_locatie_key,alg_locatie_code INTO LocatieKey, LocatieCode
FROM alg_locatie
WHERE alg_locatie_key =
(SELECT alg_locatie_key FROM alg_terreinsector
WHERE alg_terreinsector_key = LPNKey);
/* Tekening bestaat nog NIET, dus aanmaken ...
* Naam v.d. tekening is waarde v.d. toe te voegen key v.d. tabel cad_tekening + '.DWG'
*/
SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL;
TekeningNaam := TO_CHAR(TekeningKey)||'.DWG';
VerdiepingKey := NULL;
DisciplineKey := NULL;
ELSIF LPNALIAS = 'LPN_ALG_GEBOUW' THEN
SELECT alg_locatie_key,alg_locatie_code INTO LocatieKey, LocatieCode
FROM alg_locatie
WHERE alg_locatie_key =
(SELECT alg_locatie_key FROM alg_gebouw
WHERE alg_gebouw_key = LPNKey);
SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL;
TekeningNaam := TO_CHAR(TekeningKey)||'.DWG';
VerdiepingKey := NULL;
DisciplineKey := NULL;
ELSIF LPNALIAS = 'LPN_ALG_RUIMTE' THEN
SELECT alg_locatie_key,alg_locatie_code, alg_verdieping_key INTO LocatieKey, LocatieCode, VerdiepingKey
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key = LPNKey;
SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL;
TekeningNaam := TO_CHAR(TekeningKey)||'.DWG';
DisciplineKey := NULL;
ELSIF LPNALIAS = 'LPN_INS_DEEL' THEN
SELECT ins_alg_locatie_key, ins_alg_ruimte_type INTO LocatieKey, PlaatsDeel
FROM ins_deel
WHERE ins_deel_key = LPNKey;
LocatieCode := Bepaal_LocatieCode(LocatieKey);
IF SrtTekening = 'D' THEN
DisciplineKey := cad_f_deel_get_discipline(LPNKey);
ELSE
DisciplineKey := NULL;
END IF;
IF PlaatsDeel = 'T' THEN /* Deel bevindt zich buiten */
VerdiepingKey := NULL;
ELSE
VerdiepingKey := cad_f_deel_get_verdieping(LPNKey);
END IF;
SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL;
TekeningNaam := TO_CHAR(TekeningKey)||'.DWG';
ELSIF LPNALIAS = 'LPN_PRS_WERKPLEK' THEN
SELECT alg_locatie_key, alg_verdieping_key INTO LocatieKey, VerdiepingKey
FROM prs_v_werkplek_gegevens
WHERE prs_werkplek_key = LPNKey;
LocatieCode := Bepaal_LocatieCode(LocatieKey);
SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL;
TekeningNaam := TO_CHAR(TekeningKey)||'.DWG';
DisciplineKey := NULL;
END IF;
INSERT INTO cad_tekening(cad_tekening_key, alg_locatie_key, alg_verdieping_key, ins_discipline_key,
cad_tekening_filenaam, cad_tekening_type)
VALUES(TekeningKey, LocatieKey, VerdiepingKey, DisciplineKey, TekeningNaam, SrtTekening);
COMMIT;
Tekeningnaam := LocatieCode||'\'||TekeningNaam;
RETURN TekeningNaam;
END cad_MaakCadTekening;
FUNCTION cad_GetSrcDwgOfEntity(Session_Id NUMBER, LPNAliasINSO VARCHAR2, LPNKey NUMBER) RETURN VARCHAR2 IS
SrcDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LocatieCode alg_locatie.alg_locatie_code%TYPE;
LocatieKey alg_locatie.alg_locatie_key%TYPE;
VerdiepingKey alg_verdieping.alg_verdieping_key%TYPE;
BEGIN
IF LPNAliasINSO = 'LPN_INS_DEEL' THEN
/* Bepaal Disciplinetekening */
SrcDwg := cad_f_deel_get_tekeningnaam(LPNKey);
SELECT ins_alg_locatie_key INTO LocatieKey
FROM ins_deel
WHERE ins_deel_key = LPNKey;
Locatiecode := Bepaal_locatiecode(LocatieKey);
IF SrcDwg IS NOT NULL THEN
SrcDwg := Locatiecode||'\'||SrcDwg;
ELSE
SrcDwg := cad_MaakCadTekening('LPN_INS_DEEL', LPNKey, 'D');
END IF;
ELSIF LPNAliasINSO = 'LPN_ALG_TERREINSECTOR' THEN
SELECT alg_locatie_key INTO Locatiekey
FROM alg_terreinsector
WHERE alg_terreinsector_key = LPNKey;
SrcDwg := cad_getContourtekening(LocatieKey);
IF SrcDwg IS NULL THEN
SrcDwg := cad_MaakCadTekening('LPN_ALG_TERREINSECTOR', LPNKey, 'C');
END IF;
ELSIF LPNAliasINSO = 'LPN_ALG_GEBOUW' THEN
SELECT alg_locatie_key INTO Locatiekey
FROM alg_gebouw
WHERE alg_gebouw_key = LPNKey;
SrcDwg := cad_getContourtekening(LocatieKey);
IF SrcDwg IS NULL THEN
SrcDwg := cad_MaakCadTekening('LPN_ALG_GEBOUW', LPNKey, 'C');
END IF;
ELSIF LPNAliasINSO = 'LPN_ALG_RUIMTE' THEN
SELECT alg_locatie_key, alg_verdieping_key
INTO locatiekey, verdiepingkey
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key = LPNKey;
SrcDwg := cad_getVerdiepCntr_tekening(Locatiekey, Verdiepingkey);
IF SrcDwg IS NULL THEN
SrcDwg := cad_MaakCadTekening('LPN_ALG_RUIMTE', LPNKey, 'C');
END IF;
ELSIF LPNAliasINSO = 'LPN_PRS_WERKPLEK' THEN
SELECT alg_locatie_key, alg_verdieping_key
INTO Locatiekey, Verdiepingkey
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key =
(SELECT prs_alg_ruimte_key FROM prs_werkplek
WHERE prs_werkplek_key = LPNKey);
SrcDwg := cad_getVerdiepCntr_tekening(LocatieKey, Verdiepingkey); /* Contourtekening verdieping */
IF SrcDwg IS NULL THEN
SrcDwg := cad_MaakCadTekening('LPN_PRS_WERKPLEK', LPNKey, 'C');
END IF;
ELSE
/* Komt hier in de toekomst een ERROR-melding ? */
NULL;
END IF;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'INFOS', 1, srcdwg, 1);
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
RETURN SrcDwg;
END cad_GetSrcDwgOfEntity;
PROCEDURE cad_GetSrcDwgOfEntity2(Session_Id NUMBER, LPNAliasINSO VARCHAR2, LPNKey NUMBER) IS
SrcDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
BEGIN
IF LPNAliasINSO = 'LPN_INS_DEEL' THEN
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id, 'LPN_INS_DEEL', LPNKey);
ELSIF LPNAliasINSO = 'LPN_ALG_TERREINSECTOR' THEN
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id, 'LPN_ALG_TERREINSECTOR', LPNKey);
ELSIF LPNAliasINSO = 'LPN_ALG_GEBOUW' THEN
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id,'LPN_ALG_GEBOUW', LPNKey);
ELSIF LPNAliasINSO = 'LPN_ALG_RUIMTE' THEN
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id, 'LPN_ALG_RUIMTE', LPNKey);
ELSIF LPNAliasINSO = 'LPN_PRS_WERKPLEK' THEN
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id, 'LPN_PRS_WERKPLEK', LPNKey);
ELSE
/* Komt hier in de toekomst een ERROR-melding ? */
NULL;
END IF;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'INFOS', 1, srcdwg, 1);
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_GetSrcDwgOfEntity2;
PROCEDURE cad_SLNKPreDraw(Session_Id NUMBER) IS
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNKeyCond cad_slnkstruct.cad_slnkstruct_valint%TYPE;
#ifdef BIS
Diepte NUMBER(8,2);
Veld_Key NUMBER(10);
Boring_nummer VARCHAR2(5);
Projectnr VARCHAR2(8);
Ontgraafvak_Naam VARCHAR2(32);
Punt_boring BOOLEAN;
Boring_Symbol VARCHAR2(128);
#endif //BIS
LocatieKey alg_locatie.alg_locatie_key%TYPE;
VerdiepingKey alg_verdieping.alg_verdieping_key%TYPE;
DisciplineKey ins_discipline.ins_discipline_key%TYPE;
locatiecode alg_locatie.alg_locatie_code%TYPE;
Subloc_Code alg_terreinsector.alg_terreinsector_code%TYPE;
RuimteNr alg_ruimte.alg_ruimte_nr%TYPE;
WerkplekNr prs_werkplek.prs_werkplek_volgnr%TYPE;
gebouwcode alg_gebouw.alg_gebouw_code%TYPE;
SrcDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
AttachDwg1 cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
AttachDwg2 cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
Valint cad_slnkstruct.cad_slnkstruct_valint%TYPE;
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Datum DATE;
Eerste BOOLEAN;
LayerNaam ins_srtdeel.ins_srtdeel_cadlayer%TYPE;
LayerColor ins_srtdeel.ins_srtdeel_cadlaycolor%TYPE;
LayerLineType ins_srtdeel.ins_srtdeel_cadlaylinetype%TYPE;
Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
Opmaat ins_srtdeel.ins_srtdeel_opmaat%TYPE;
SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE;
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE;
Omschrijving VARCHAR2(30);
SrtTekening VARCHAR2(20);
BEGIN
LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASPREDRAW');
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYPREDRAW');
SeqNr := cad_SLNKSTRUCTreadVALINT(Session_id, 'SEQNR');
IF SeqNr IS NULL THEN
SeqNr := 1;
END IF;
IF LPNName = 'LPN_INS_DEEL' THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_INS_DEEL', 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1);
/* Bepaal soortdeelkey */
SELECT ins_srtdeel_key INTO SrtdeelKey
FROM ins_deel
WHERE ins_deel_key = LPNKey;
/* Lees de grafische gegevens uit tabel ins_srtdeel */
SELECT ins_srtdeel_cadlaycolor, ins_srtdeel_cadlaylinetype,ins_srtdeel_cadlayer, ins_srtdeel_acadsymbol,
ins_srtdeel_opmaat, ins_srtdeel_dimensie
INTO LayerColor, LayerLineType, LayerNaam, Symbool, Opmaat, Dimensie
FROM ins_srtdeel
WHERE ins_srtdeel_key = SrtdeelKey;
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'DIMENSION', SeqNr, Dimensie, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'INS_DEEL_KEY', 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', SeqNr, Symbool, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'SCALE', SeqNr, Opmaat, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'INSPOINTCODE', SeqNr, 0, 1);
/* Bepaal of een deel geplaatst is op een T(erreinsector) of in een R(uimte)/W(erkplek)... */
SELECT ins_alg_ruimte_type INTO PlaatsDeel
FROM ins_deel
WHERE ins_deel_key = LPNKey;
IF PlaatsDeel = 'T' THEN /* Terreinsector */
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_TERREINSECTOR', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_TERREINSECTOR_KEY', 1);
ELSE /* Ruimte of Werkplek */
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_RUIMTE', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_RUIMTE_KEY', 1);
END IF;
IF PlaatsDeel = 'W' THEN /* Bepaal ruimte waarin werkplek zich bevindt en geef ruimtekey ervan door */
SELECT prs_alg_ruimte_key INTO LPNKeyCond
FROM prs_werkplek
WHERE prs_werkplek_key =
(SELECT ins_alg_ruimte_key FROM ins_deel
WHERE ins_deel_key = LPNKey);
ELSE
SELECT ins_alg_ruimte_key INTO LPNKeyCond
FROM ins_deel
WHERE ins_deel_key = LPNKey;
END IF;
cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1);
SELECT ins_alg_locatie_key INTO LocatieKey
FROM ins_deel
WHERE ins_deel_key = LPNKey;
Locatiecode := Bepaal_locatiecode(LocatieKey);
/*
SrcDwg := cad_f_deel_get_tekeningnaam(LPNKey);
IF SrcDwg IS NOT NULL THEN
SrcDwg := Locatiecode||'\'||SrcDwg;
ELSE
SrcDwg := cad_MaakCadTekening('LPN_INS_DEEL', LPNKey, 'D');
END IF;
*/
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id, 'LPN_INS_DEEL', LPNKey);
/* Bepaal LoadDwg */
IF PlaatsDeel = 'T' THEN /* Terreinsector */
LoadDwg := cad_getPlattegrondtekening(Locatiekey);
ELSE /* Ruimte of Werkplek */
SELECT alg_verdieping_key INTO VerdiepingKey
FROM alg_ruimte
WHERE alg_ruimte_key = LPNKeyCond;
LoadDwg := cad_getVerdiepPlgrnd_tekening(LocatieKey, Verdiepingkey);
END IF;
IF LoadDwg IS NULL THEN
LoadDwg := cad_MaakCadTekening('LPN_INS_DEEL', LPNKey, 'P');
END IF;
/* Bepaal Attachdwg's */
IF PlaatsDeel = 'T' THEN /* Terreinsector */
AttachDwg1 := cad_getContourtekening(LocatieKey); /* Contourtekening locatie */
ELSE /* Ruimte of Werkplek */
AttachDwg1 := cad_getVerdiepCntr_tekening(LocatieKey, Verdiepingkey); /* Contourtekening verdieping */
END IF;
IF AttachDwg1 IS NULL THEN
AttachDwg1 := cad_MaakCadTekening('LPN_INS_DEEL', LPNKey, 'C');
END IF;
AttachDwg2 := SrcDwg;
cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', SeqNr, SrcDwg, 1);
cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', SeqNr, LoadDwg, 1);
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, AttachDwg1, 1);
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, Attachdwg2, 0);
IF PlaatsDeel = 'T' THEN
DECLARE Cursor D_tekeningen IS
SELECT cad_tekening_filenaam
FROM cad_v_discipline
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key IS NULL
AND ins_discipline_key IN
(SELECT ins_discipline_key
FROM INS_v_aanwezigdiscipline);
BEGIN
FOR TekenRec IN D_tekeningen LOOP
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0);
END LOOP;
END;
ELSE
DECLARE Cursor D_tekeningen IS
SELECT cad_tekening_filenaam
FROM cad_v_discipline
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key = VerdiepingKey
AND ins_discipline_key IN
(SELECT ins_discipline_key
FROM INS_v_aanwezigdiscipline);
BEGIN
FOR TekenRec IN D_tekeningen LOOP
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0);
END LOOP;
END;
END IF;
cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL', SeqNr, 'INS_DEEL_CADLABEL', 1);
SELECT ins_deel_omschrijving INTO Omschrijving
FROM ins_deel
WHERE ins_deel_key = LPNKey;
cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, Omschrijving, 1);
ELSIF LPNName = 'LPN_ALG_GEBOUW' THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_ALG_GEBOUW', 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'ALG_GEBOUW_KEY', 1);
LayerColor := cad_getLayercolor('ALG_GEBOUW');
LayerLineType := cad_getLayerlinetype('ALG_GEBOUW');
LayerNaam := cad_getLayername('ALG_GEBOUW');
cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1);
SELECT alg_locatie_key INTO Locatiekey
FROM alg_gebouw
WHERE alg_gebouw_key = LPNKey;
Locatiecode := Bepaal_locatiecode(LocatieKey);
LoadDwg := cad_getPlattegrondtekening(LocatieKey);
IF LoadDwg IS NULL THEN
LoadDwg := cad_MaakCadTekening('LPN_ALG_GEBOUW', LPNKey, 'P');
END IF;
/*
SrcDwg := cad_getContourtekening(LocatieKey);
IF SrcDwg IS NULL THEN
SrcDwg := cad_MaakCadTekening('LPN_ALG_GEBOUW', LPNKey, 'C');
END IF;
*/
/* Schrijf SrcDwg weg in cad_slnkstruct */
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id, 'LPN_ALG_GEBOUW', LPNKey);
AttachDwg1 := SrcDwg;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', 1, SrcDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', 1, LoadDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', 1, AttachDwg1, 1);
DECLARE Cursor D_tekeningen IS
SELECT cad_tekening_filenaam
FROM cad_v_discipline
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key IS NULL
AND ins_discipline_key IN
(SELECT ins_discipline_key
FROM INS_v_aanwezigdiscipline);
BEGIN
FOR TekenRec IN D_tekeningen LOOP
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0);
END LOOP;
END;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'ALG_GEBOUW_CADLABEL', 1);
SELECT alg_gebouw_code INTO gebouwcode
FROM alg_v_aanweziggebouw
WHERE alg_gebouw_key = LPNKey;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, gebouwcode, 1);
ELSIF LPNName = 'LPN_ALG_RUIMTE' THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_ALG_RUIMTE', 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'ALG_RUIMTE_KEY', 1);
LayerColor := cad_getLayercolor('ALG_RUIMTE');
LayerLineType := cad_getLayerlinetype('ALG_RUIMTE');
LayerNaam := cad_getLayername('ALG_RUIMTE');
cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1);
SELECT alg_locatie_key, alg_verdieping_key
INTO locatiekey, verdiepingkey
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key = LPNKey;
LocatieCode := Bepaal_locatiecode(LocatieKey);
LoadDwg := cad_getVerdiepPlgrnd_tekening(Locatiekey, Verdiepingkey);
IF LoadDwg IS NULL THEN
LoadDwg := cad_MaakCadTekening('LPN_ALG_RUIMTE', LPNKey, 'P');
END IF;
/*
SrcDwg := cad_getVerdiepCntr_tekening(Locatiekey, Verdiepingkey);
IF SrcDwg IS NULL THEN
SrcDwg := cad_MaakCadTekening('LPN_ALG_RUIMTE', LPNKey, 'C');
END IF;
*/
/* Schrijf SrcDwg weg in cad_slnkstruct */
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id, 'LPN_ALG_RUIMTE', LPNKey);
AttachDwg1 := SrcDwg;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', SeqNr, SrcDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', SeqNr, LoadDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, AttachDwg1, 1);
DECLARE Cursor D_tekeningen IS
SELECT cad_tekening_filenaam
FROM cad_v_discipline
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key = VerdiepingKey
AND ins_discipline_key IN
(SELECT ins_discipline_key
FROM INS_v_aanwezigdiscipline);
BEGIN
FOR TekenRec IN D_tekeningen LOOP
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0);
END LOOP;
END;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL', SeqNr, 'ALG_RUIMTE_CADLABEL', 1);
SELECT alg_ruimte_nr INTO RuimteNr
FROM alg_ruimte
WHERE alg_ruimte_key = LPNKey;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, RuimteNr, 1);
ELSIF LPNNAME = 'LPN_PRS_WERKPLEK' THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_PRS_WERKPLEK', 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 0, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'PRS_WERKPLEK_KEY', 1);
LayerColor := cad_getLayercolor('PRS_WERKPLEK');
LayerLineType := cad_getLayerlinetype('PRS_WERKPLEK');
LayerNaam := cad_getLayername('PRS_WERKPLEK');
cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1);
SELECT cad_symbool_symbool INTO symbool
FROM cad_symbool
WHERE cad_symbool_entry = 'PRS_WERKPLEK';
cad.cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', SeqNr, Symbool, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'SCALE', SeqNr, 1, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'INSPOINTCODE', SeqNr, 0, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_RUIMTE', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_RUIMTE_KEY', 1);
SELECT prs_alg_ruimte_key INTO LPNKeyCond
FROM prs_werkplek
WHERE prs_werkplek_key = LPNKey;
cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1);
/* Bepaal de bijbehorende tekeningen */
SELECT alg_locatie_key, alg_verdieping_key
INTO locatiekey, verdiepingkey
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key =
(SELECT prs_alg_ruimte_key FROM prs_werkplek
WHERE prs_werkplek_key = LPNKey);
LocatieCode := Bepaal_locatiecode(LocatieKey);
/*
SrcDwg := cad_getVerdiepCntr_tekening(LocatieKey, Verdiepingkey); -- Contourtekening verdieping
IF SrcDwg IS NULL THEN
SrcDwg := cad_MaakCadTekening('LPN_PRS_WERKPLEK', LPNKey, 'C');
END IF;
*/
/* Schrijf SrcDwg weg in cad_slnkstruct */
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id, 'LPN_PRS_WERKPLEK', LPNKey);
LoadDwg := cad_getVerdiepPlgrnd_tekening(LocatieKey, Verdiepingkey); -- Plattegrondtekening verdieping
IF LoadDwg IS NULL THEN
LoadDwg := cad_MaakCadTekening('LPN_PRS_WERKPLEK', LPNKey, 'P');
END IF;
AttachDwg1 := SrcDwg;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', SeqNr, SrcDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', SeqNr, LoadDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, AttachDwg1, 1);
DECLARE Cursor D_tekeningen IS
SELECT cad_tekening_filenaam
FROM cad_v_discipline
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key = VerdiepingKey
AND ins_discipline_key IN
(SELECT ins_discipline_key
FROM INS_v_aanwezigdiscipline);
BEGIN
FOR TekenRec IN D_tekeningen LOOP
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0);
END LOOP;
END;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'PRS_WERKPLEK_CADLABEL', 1);
SELECT prs_werkplek_volgnr INTO WerkplekNr
FROM prs_werkplek
WHERE prs_werkplek_key = LPNKey;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, WerkplekNr, 1);
ELSIF LPNNAME = 'LPN_ALG_TERREINSECTOR' THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_ALG_TERREINSECTOR', 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1);
#ifdef BIS
LayerNaam := 'SUBLOCATIE';
#else
LayerColor := cad_getLayercolor('ALG_TERREINSECTOR');
LayerLineType := cad_getLayerlinetype('ALG_TERREINSECTOR');
LayerNaam := cad_getLayername('ALG_TERREINSECTOR');
cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1);
#endif //NONBIS
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'ALG_TERREINSECTOR_KEY', 1);
SELECT alg_locatie_key INTO Locatiekey
FROM alg_terreinsector
WHERE alg_terreinsector_key = LPNKey;
LocatieCode := Bepaal_locatiecode(LocatieKey);
LoadDwg := cad_getPlattegrondtekening(LocatieKey);
IF LoadDwg IS NULL THEN
LoadDwg := cad_MaakCadTekening('LPN_ALG_TERREINSECTOR', LPNKey, 'P');
END IF;
/*
SrcDwg := cad_getContourtekening(LocatieKey);
IF SrcDwg IS NULL THEN
SrcDwg := cad_MaakCadTekening('LPN_ALG_TERREINSECTOR', LPNKey, 'C');
END IF;
*/
/* Schrijf SrcDwg weg in cad_slnkstruct */
SrcDwg := cad_GetSrcDwgOfEntity(Session_Id, 'LPN_ALG_TERREINSECTOR', LPNKey);
AttachDwg1 := SrcDwg;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', 1, SrcDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', 1, LoadDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', 1, AttachDwg1, 1);
DECLARE Cursor D_tekeningen IS
SELECT cad_tekening_filenaam
FROM cad_v_discipline
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key IS NULL
AND ins_discipline_key IN
(SELECT ins_discipline_key
FROM INS_v_aanwezigdiscipline);
BEGIN
FOR TekenRec IN D_tekeningen LOOP
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0);
END LOOP;
END;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'ALG_TERREINSECTOR_CADLABEL', 1);
SELECT alg_terreinsector_code INTO Subloc_code
FROM alg_v_aanwezigterreinsector
WHERE alg_terreinsector_key = LPNKey;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, Subloc_code, 1);
#ifdef BIS
/* Zet alle boringen die binnen deze sublocatie vallen in de tabel cad_slnkstruct */
DECLARE
CURSOR Sectorboring IS
SELECT bis_boring_key
FROM bis_v_aanwezigboring
WHERE alg_terreinsector_key = LPNKey;
BEGIN
Eerste := TRUE;
FOR BoringRec IN Sectorboring LOOP
IF Eerste THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASCONDAOUTER', 1,'LPN_BIS_BORING', 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYCONDAOUTER', 1, BoringRec.bis_boring_key, 1);
Eerste := FALSE;
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASCONDAOUTER', 1,'LPN_BIS_BORING', 0);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYCONDAOUTER', 1, BoringRec.bis_boring_key, 0);
END IF;
END LOOP;
END;
ELSIF LPNNAME = 'LPN_BIS_BORING' THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_BIS_BORING', 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1);
/* Bepaal of er sprake is van een veld(contour) of van een puntboring */
SELECT bis_veld_key, bis_boring_nummer INTO veld_key, boring_nummer
FROM bis_v_aanwezigboring
WHERE bis_boring_key = LPNKey;
IF veld_key IS NULL THEN
Valint := 0;
Punt_boring := TRUE; /* Er moet een boring getekend worden */
ELSE
Valint := 2; /* Er moet een contour getekend worden */
Punt_boring := FALSE;
END IF;
cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, Valint, 1);
/* Zoek de juiste tekeningen bij de boring */
BEGIN
SELECT ins_discipline_key INTO DisciplineKey
FROM ins_discipline
WHERE ins_discipline_omschrijving = 'Milieu';
EXCEPTION
WHEN NO_DATA_FOUND THEN
DisciplineKey := NULL;
END;
Locatiekey := bis.bis_boring_get_locatie(LPNKey);
SrcDwg := cad_getDisciplinetekening(LocatieKey, DisciplineKey);
LoadDwg := cad_getPlattegrondtekening(LocatieKey);
AttachDwg1 := cad_getContourtekening(LocatieKey);
AttachDwg2 := SrcDwg;
cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', SeqNr, SrcDwg, 1);
cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', SeqNr, LoadDwg, 1);
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, AttachDwg1, 1);
cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, Attachdwg2, 0);
IF Punt_boring THEN
/* Zoek juiste boringsymbool bij Boringnummer */
Boring_Symbol := cad_GETBoringSymbolName(LPNKey);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', SeqNr, Boring_Symbol, 1);
END IF;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, 'BORING', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'BIS_BORING_KEY', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_TERREINSECTOR', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_TERREINSECTOR_KEY', 1);
SELECT alg_terreinsector_key INTO LPNKeyCond
FROM bis_v_aanwezigboring
WHERE bis_boring_key = LPNKey;
cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1);
IF Punt_boring THEN
cad.cad_SLNKstructinsertVALINT(Session_Id,'INSPOINTCODE', SeqNr, 0, 1);
END IF;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'BIS_BORING_NUMMER', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, boring_nummer, 1);
ELSIF LPNNAME = 'LPN_BIS_PROJECT' THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_BIS_PROJECT', 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, 'PROJECT', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'BIS_PROJECT_KEY', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'BIS_PROJECT_NR', 1);
SELECT alg_locatie_key INTO Locatiekey
FROM bis_project
WHERE bis_project_key = LPNKey;
SrcDwg := cad_getContourtekening(LocatieKey);
LoadDwg := cad_getPlattegrondtekening(LocatieKey);
AttachDwg1 := SrcDwg;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', 1, SrcDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', 1, LoadDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', 1, AttachDwg1, 1);
SELECT bis_project_nr INTO ProjectNr
FROM bis_v_aanwezigproject
WHERE bis_project_key = LPNKey;
ProjectNr := SUBSTR(ProjectNr,1,2)||'-'||SUBSTR(ProjectNr,3,6);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, ProjectNr, 1);
ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_BIS_ONTGRAVINGSVAK', 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1);
cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, 'ONTGRAVINSVAK', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'BIS_ONTGRAVINGSVAK_KEY', 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'BIS_ONTGRAVINGSVAK_NAAM', 1);
SELECT bis_ontgravingsvak_naam INTO Ontgraafvak_naam
FROM bis_ontgravingsvak
WHERE bis_ontgravingsvak_key = LPNKey;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, Ontgraafvak_naam, 1);
SELECT alg_locatie_key INTO LocatieKey
FROM bis_ontgravingsvak
WHERE bis_ontgravingsvak_key = LPNKey;
SrcDwg := cad_getContourtekening(LocatieKey);
LoadDwg := cad_getPlattegrondtekening(LocatieKey);
AttachDwg1 := SrcDwg;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', 1, SrcDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', 1, LoadDwg, 1);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', 1, AttachDwg1, 1);
SELECT bis_ontgravingsvak_diepte INTO Diepte
FROM bis_ontgravingsvak
WHERE bis_ontgravingsvak_key = LPNKey;
cad.cad_SLNKstructinsertVALREAL(Session_Id,'DEPTH', SeqNr, Diepte, 1);
SELECT bis_ontgravingsvak_aanmaak INTO Datum
FROM bis_ontgravingsvak
WHERE bis_ontgravingsvak_key = LPNKey;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'DATE', SeqNr, TO_CHAR(Datum), 1);
#endif //BIS
END IF;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKPreDraw;
FUNCTION cad_SLNKPrePostUndo(Session_id NUMBER) RETURN BOOLEAN IS
LPNAliasINSO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyINSO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Code VARCHAR2(10);
RuimteKey alg_ruimte.alg_ruimte_key%TYPE;
WerkplekNr prs_werkplek.prs_werkplek_volgnr%TYPE;
VerdiepingKey alg_ruimte.alg_verdieping_key%TYPE;
LocatieKey alg_locatie.alg_locatie_key%TYPE;
SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE;
Omschrijving VARCHAR2(30);
Dummy NUMBER(10);
RetValue BOOLEAN;
BEGIN
LPNAliasINSO := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASINSO');
LPNKeyINSO := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYINSO');
IF LPNKeyINSO IS NOT NULL THEN
BEGIN
IF LPNAliasINSO = 'LPN_ALG_TERREINSECTOR' THEN
SELECT alg_locatie_key, alg_terreinsector_code INTO LocatieKey, Code
FROM alg_terreinsector
WHERE alg_terreinsector_key = LPNKeyINSO;
BEGIN
SELECT alg_terreinsector_key INTO Dummy
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND alg_terreinsector_code = Code;
RetValue := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* Verwijderdatum wordt NULL */
UPDATE alg_terreinsector
SET alg_terreinsector_verwijder = NULL,
alg_terreinsector_getekend = SYSDATE /* It's CAD */
WHERE alg_terreinsector_key = LPNKeyINSO;
RetValue := TRUE;
END;
ELSIF LPNAliasINSO = 'LPN_ALG_GEBOUW' THEN
SELECT alg_locatie_key, alg_gebouw_code INTO LocatieKey, Code
FROM alg_gebouw
WHERE alg_gebouw_key = LPNKeyINSO;
BEGIN
SELECT alg_gebouw_key INTO Dummy
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND alg_gebouw_code = Code;
RetValue := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* Verwijderdatum wordt NULL */
UPDATE alg_gebouw
SET alg_gebouw_verwijder = NULL,
alg_gebouw_getekend = SYSDATE /* It's CAD */
WHERE alg_gebouw_key = LPNKeyINSO;
RetValue := TRUE;
END;
ELSIF LPNAliasINSO = 'LPN_ALG_RUIMTE' THEN
SELECT alg_verdieping_key, alg_ruimte_upper_nr INTO VerdiepingKey, Code
FROM alg_ruimte
WHERE alg_ruimte_key = LPNKeyINSO;
BEGIN
SELECT alg_ruimte_key INTO Dummy
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = VerdiepingKey
AND alg_ruimte_upper_nr = Code;
RetValue := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* Verwijderdatum wordt NULL */
UPDATE alg_ruimte
SET alg_ruimte_verwijder = NULL,
alg_ruimte_getekend = SYSDATE /* It's CAD */
WHERE alg_ruimte_key = LPNKeyINSO;
RetValue := TRUE;
END;
ELSIF LPNAliasINSO = 'LPN_PRS_WERKPLEK' THEN
SELECT prs_alg_ruimte_key, prs_werkplek_volgnr INTO RuimteKey, Werkpleknr
FROM prs_werkplek
WHERE prs_werkplek_key = LPNKeyINSO;
BEGIN
SELECT prs_werkplek_key INTO Dummy
FROM prs_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = RuimteKey
AND prs_werkplek_volgnr = WerkplekNr;
RetValue := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* Verwijderdatum wordt NULL */
UPDATE prs_werkplek
SET prs_werkplek_verwijder = NULL,
prs_werkplek_getekend = SYSDATE /* IT's CAD */
WHERE prs_werkplek_key = LPNKeyINSO;
RetValue := TRUE;
END;
ELSIF LPNAliasINSO = 'LPN_INS_DEEL' THEN
SELECT ins_alg_locatie_key, ins_srtdeel_key, ins_deel_upper INTO LocatieKey, SrtdeelKey, Omschrijving
FROM ins_deel
WHERE ins_deel_key = LPNKeyINSO;
BEGIN
SELECT ins_deel_key INTO dummy
FROM all_v_aanwezigdeel
WHERE ins_alg_locatie_key = LocatieKey
AND ins_srtdeel_key = SrtDeelKey
AND ins_deel_parent_key IS NULL
AND ins_deel_upper = Omschrijving;
RetValue := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
UPDATE ins_deel
SET ins_deel_verwijder = NULL,
ins_deel_getekend = SYSDATE /* It's CAD */
WHERE ins_deel_key = LPNKeyINSO;
RetValue := TRUE;
END;
ELSE
RETURN FALSE;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RetValue := FALSE;
END;
ELSE
RetValue := FALSE; /* Geen undo gegevens vanuit AutoCAD - gewoon toevoegen via PrePostDraw */
END IF;
IF RetValue THEN
cad_SLNKSTRUCTclear(Session_Id);
cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNAliasINSO, 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW', 1, LPNKeyINSO, 1);
cad_SLNKPreDraw(Session_Id);
END IF;
RETURN RetValue;
END cad_SLNKPrePostUndo;
PROCEDURE cad_SLNKPrePostDimensie0(Session_Id NUMBER) IS
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
LayerNaam ins_srtdeel.ins_srtdeel_cadlayer%TYPE;
Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
SymboolLayer ins_srtdeel.ins_srtdeel_cadlayer%TYPE;
LabelSymbool VARCHAR2(256);
SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE;
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
BlockNaam ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
LPNCondKeyOK BOOLEAN;
RecordAdded BOOLEAN;
RuimteNr alg_ruimte.alg_ruimte_nr%TYPE;
RuimteKey alg_ruimte.alg_ruimte_key%TYPE;
WerkplekNr prs_werkplek.prs_werkplek_volgnr%TYPE;
LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Omschrijving VARCHAR2(30);
Dummy NUMBER(10);
LabelOK BOOLEAN;
LPNAliasINSO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyINSO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
BEGIN
Dimensie := 0;
LayerNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER');
LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
BlockNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'BLOCK');
LoadDwg := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LOADDWG');
IF LPNCondKey IS NOT NULL THEN
SELECT cad_symbool_symbool, cad_symbool_layer INTO Symbool, SymboolLayer
FROM cad_symbool
WHERE cad_symbool_entry = 'PRS_WERKPLEK';
IF BlockNaam = Symbool -- i.o.v. mb AND LayerNaam = SymboolLayer
THEN
/* Het is een werkplek - Check eerst of LPNCondkey wel ruimtekey is */
IF LPNCondName = 'LPN_ALG_RUIMTE' THEN
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
IF NOT LPNCondKeyOK THEN
SeqNr := 2;
LOOP
LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', SeqNr);
LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', SeqNr);
IF LPNCondKey IS NULL THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
EXIT WHEN LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE';
LPNCondKeyOK := FALSE;
SeqNr := SeqNr + 1;
END LOOP;
END IF;
ELSE
LPNCondKeyOK := FALSE;
END IF;
IF LPNCondKeyOK THEN
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,3);
/* Vanuit AutoCAD voorstel voor een label binnengekregen */
BEGIN
SELECT prs_werkplek_key INTO Dummy
FROM all_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNCondKey
AND prs_werkplek_volgnr = TO_NUMBER(LabelSymbool);
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* Label bestaat nog niet */
LabelOK := TRUE;
WerkplekNr := TO_NUMBER(LabelSymbool);
Omschrijving := LabelSymbool;
END;
ELSE
LabelOK := FALSE;
END IF;
IF NOT LabelOK THEN
/* Bepaal het volgnummer v/d toe te voegen werkplek */
BEGIN
SELECT MAX(prs_werkplek_volgnr) + 1
INTO WerkplekNr
FROM all_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNCondKey
AND prs_werkplek_module = 'PRR';
IF WerkplekNr IS NULL THEN
WerkplekNr := 1;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
werkplekNr := 1;
END;
/* Omschrijving */
SELECT alg_ruimte_nr INTO RuimteNr
FROM alg_ruimte
WHERE alg_ruimte_key = LPNCondKey;
Omschrijving := RuimteNr||' - '||TO_CHAR(WerkplekNr);
END IF;
INSERT INTO prs_werkplek(prs_werkplek_module, prs_werkplek_volgnr, prs_werkplek_omschrijving,
prs_alg_ruimte_key, prs_werkplek_getekend)
VALUES ('PRR', WerkplekNr, Omschrijving, LPNCondKey, SYSDATE);
RecordAdded := TRUE;
/* Bepaal sleutel van zojuist toegevoegde werkplek i.v.m. aanroep Predraw */
LPNName := 'LPN_PRS_WERKPLEK';
BEGIN
SELECT prs_werkplek_key INTO LPNKey
FROM prs_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNCondKey
AND prs_werkplek_volgnr = WerkplekNr;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LPNKey := NULL;
END;
ELSE
RecordAdded := FALSE;
END IF;
ELSE
/* Het is geen WERKPLEK - check of het een srtdeel is */
/* gebruik in dit geval geen MIN() ....
SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_cadlayer = UPPER(LayerNaam)
AND ins_srtdeel_acadsymbol = UPPER(BlockNaam)
AND ins_srtdeel_verwijder IS NULL;
... maar gebruik hiervoor in de plaats rownum = 1 */
BEGIN
SELECT ins_srtdeel_key INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_cadlayer = UPPER(LayerNaam)
AND ins_srtdeel_acadsymbol = UPPER(BlockNaam)
AND ins_srtdeel_verwijder IS NULL
AND rownum = 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
SrtDeelKey := NULL;
END;
IF SrtDeelKey IS NOT NULL THEN
/* Het is een srtdeel, dus voeg een deel toe */
IF LPNCondName = 'LPN_ALG_TERREINSECTOR' OR LPNCondName = 'LPN_ALG_RUIMTE' OR
LPNCondName = 'LPN_PRS_WERKPLEK'
THEN
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
IF NOT LPNCondKeyOK THEN
Seqnr := 2;
LOOP
LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr);
LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
EXIT WHEN (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_TERREINSECTOR')
OR (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE')
OR (LPNCondKeyOK AND LPNCondName = 'LPN_PRS_WERKPLEK');
LPNCondKeyOK := FALSE;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
ELSE
LPNCondKeyOK := FALSE;
END IF;
IF LPNCondKeyOK THEN
LPNName := 'LPN_INS_DEEL';
LPNKey := AddDeel(Session_id, SrtdeelKey, LoadDwg, LPNCondName, LPNCondKey);
RecordAdded:= TRUE;
ELSE
RecordAdded:= FALSE;
END IF;
ELSE
/*
SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_acadsymbol = UPPER(BlockNaam)
AND ins_srtdeel_verwijder IS NULL;
*/
BEGIN
SELECT ins_srtdeel_key INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_acadsymbol = UPPER(BlockNaam)
AND ins_srtdeel_verwijder IS NULL
AND rownum = 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
SrtDeelKey := NULL;
END;
IF SrtDeelKey IS NOT NULL THEN
/* Het is een srtdeel */
IF LPNCondName = 'LPN_ALG_TERREINSECTOR' OR LPNCondName = 'LPN_ALG_RUIMTE' OR
LPNCondName = 'LPN_PRS_WERKPLEK'
THEN
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
IF NOT LPNCondKeyOK THEN
Seqnr := 2;
LOOP
LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr);
LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
EXIT WHEN (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_TERREINSECTOR')
OR (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE')
OR (LPNCondKeyOK AND LPNCondName = 'LPN_PRS_WERKPLEK');
LPNCondKeyOK := FALSE;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
ELSE
LPNCondKeyOK := FALSE;
END IF;
IF LPNCondKeyOK THEN
LPNName := 'LPN_INS_DEEL';
LPNKey := AddDeel(Session_id,SrtdeelKey, LoadDwg, LPNCondName, LPNCondKey);
RecordAdded:= TRUE;
ELSE
RecordAdded:= FALSE;
END IF;
ELSE
RecordAdded:= FALSE;
END IF;
END IF;
END IF;
END IF;
cad_SLNKSTRUCTclear(Session_Id);
IF RecordAdded THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNName, 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW', 1, LPNKey, 1);
cad_SLNKPreDraw(Session_Id);
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END IF;
END cad_SLNKPrePostDimensie0;
PROCEDURE cad_SLNKPrePostDimensie1(Session_Id NUMBER) IS
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
LayerNaam ins_srtdeel.ins_srtdeel_cadlayer%TYPE;
Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE;
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
BlockNaam ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
LPNCondKeyOK BOOLEAN;
RecordAdded BOOLEAN;
LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Omschrijving VARCHAR2(30);
BEGIN
Dimensie := 1;
LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
LayerNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER');
LoadDwg := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LOADDWG');
/* Check of het een soortdeel is... */
/*
SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_cadlayer = UPPER(LayerNaam)
AND ins_srtdeel_verwijder IS NULL;
*/
BEGIN
SELECT ins_srtdeel_key INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_cadlayer = UPPER(LayerNaam)
AND ins_srtdeel_verwijder IS NULL
AND rownum = 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
SrtDeelKey := NULL;
END;
IF SrtDeelKey IS NOT NULL THEN
/* Het is een srtdeel */
IF LPNCondName = 'LPN_ALG_TERREINSECTOR' OR LPNCondName = 'LPN_ALG_RUIMTE' OR
LPNCondName = 'LPN_PRS_WERKPLEK'
THEN
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
IF NOT LPNCondKeyOK THEN
Seqnr := 2;
LOOP
LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr);
LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
EXIT WHEN (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_TERREINSECTOR')
OR (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE')
OR (LPNCondKeyOK AND LPNCondName = 'LPN_PRS_WERKPLEK');
LPNCondKeyOK := FALSE;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
ELSE
LPNCondKeyOK := FALSE;
END IF;
IF LPNCondKeyOK THEN
LPNName := 'LPN_INS_DEEL';
LPNKey := AddDeel(Session_id, SrtdeelKey, LoadDwg, LPNCondName, LPNCondKey);
RecordAdded:= TRUE;
ELSE
RecordAdded:= FALSE;
END IF;
ELSE
RecordAdded:= FALSE;
END IF;
cad_SLNKSTRUCTclear(Session_Id);
IF RecordAdded THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNName, 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW', 1, LPNKey, 1);
cad_SLNKPreDraw(Session_Id);
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END IF;
END cad_SLNKPrePostDimensie1;
PROCEDURE cad_SLNKPrePostDimensie2(Session_Id NUMBER) IS
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
LayerNaam ins_srtdeel.ins_srtdeel_cadlayer%TYPE;
LocatieKey alg_locatie.alg_locatie_key%TYPE;
VerdiepingKey alg_verdieping.alg_verdieping_key%TYPE;
VerdiepingNr alg_verdieping.alg_verdieping_volgnr%TYPE;
DisciplineKey ins_discipline.ins_discipline_key%TYPE;
locatiecode alg_locatie.alg_locatie_code%TYPE;
Sectorcode alg_terreinsector.alg_terreinsector_code%TYPE;
Gebouwcode alg_gebouw.alg_gebouw_code%TYPE;
RuimteNr alg_ruimte.alg_ruimte_nr%TYPE;
Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
SymboolLayer ins_srtdeel.ins_srtdeel_cadlayer%TYPE;
TekeningNaam cad_tekening.cad_tekening_filenaam%TYPE;
SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE;
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
BlockNaam ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
LPNCondKeyOK BOOLEAN;
RecordAdded BOOLEAN:= FALSE;
LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Omschrijving VARCHAR2(30);
VolgnrTxt VARCHAR2(3);
ZoekString VARCHAR2(20);
StreepPos NUMBER(2);
MaxLengte NUMBER(10);
Dummy NUMBER(10);
LabelSymbool VARCHAR2(256);
LabelOK BOOLEAN;
BEGIN
Dimensie := 2;
LayerNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER');
LoadDwg := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LOADDWG');
BlockNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'BLOCK');
LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
SELECT cad_symbool_layer INTO SymboolLayer
FROM cad_symbool
WHERE cad_symbool_entry = 'ALG_TERREINSECTOR';
IF LayerNaam = SymboolLayer THEN
/* Het is een terrein ... */
LocatieCode := cad_getLocatieCode_Tekening(LoadDwg);
SELECT alg_locatie_key INTO LocatieKey
FROM alg_locatie
WHERE alg_locatie_code = LocatieCode;
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,10);
BEGIN
/* Check of label reeds bestaat */
SELECT alg_terreinsector_key INTO Dummy
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND UPPER(alg_terreinsector_code) = LabelSymbool;
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LabelOK := TRUE;
SectorCode := LabelSymbool;
END;
ELSE
LabelOK:= FALSE;
END IF;
IF NOT LabelOK THEN
/* De terreinsectorcode = locatiecode + volgnummer */
/* BEGIN
SELECT MAX(LENGTH(alg_terreinsector_code)) INTO MaxLengte
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND alg_terreinsector_code BETWEEN '0' AND '9999999999'
AND alg_terreinsector_code like '0%'
AND alg_terreinsector_code NOT LIKE '00%';
SELECT max(alg_terreinsector_code) INTO Omschrijving
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND alg_terreinsector_code BETWEEN '0' AND '9999999999'
AND alg_terreinsector_code like '0%'
AND alg_terreinsector_code NOT LIKE '00%'
AND LENGTH(alg_terreinsector_code) = MaxLengte;
SectorCode := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
SectorCode := '01';
END;
*/
SectorCode := FAC_F_FAC_GET_DESCRIPTION('LPN_ALG_TERREINSECTOR', LocatieKey, NULL, NULL);
END IF;
INSERT INTO alg_terreinsector(alg_locatie_key, alg_terreinsector_code, alg_terreinsector_naam)
VALUES (LocatieKey, SectorCode, SectorCode);
RecordAdded := TRUE;
COMMIT;
/* Bepaal sleutel van zojuist toegevoegde terreinsector i.v.m. aanroep Predraw */
LPNName := 'LPN_ALG_TERREINSECTOR';
BEGIN
SELECT alg_terreinsector_key INTO LPNKey
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND alg_terreinsector_code = SectorCode;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LPNKey := NULL;
END;
ELSE
/* Het is geen terreinsector, is het een gebouw ? */
SELECT cad_symbool_Layer INTO SymboolLayer
FROM cad_symbool
WHERE cad_symbool_entry = 'ALG_GEBOUW';
IF LayerNaam = SymboolLayer THEN
/* Het is een gebouw ... */
LocatieCode := cad_getLocatieCode_Tekening(LoadDwg);
SELECT alg_locatie_key INTO LocatieKey
FROM alg_locatie
WHERE alg_locatie_code = LocatieCode;
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,10);
BEGIN
SELECT alg_gebouw_key INTO Dummy
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND UPPER(alg_gebouw_code) = UPPER(LabelSymbool);
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LabelOK := TRUE;
GebouwCode := LabelSymbool;
END;
ELSE
LabelOK := FALSE;
END IF;
IF NOT labelOK THEN
/*
BEGIN
SELECT MAX(LENGTH(alg_gebouw_code)) INTO MaxLengte
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND alg_gebouw_code BETWEEN '0' AND '9999999999'
AND alg_gebouw_code like '0%'
AND alg_gebouw_code NOT LIKE '00%';
SELECT MAX(alg_gebouw_code) INTO omschrijving
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND alg_gebouw_code BETWEEN '0' AND '9999999999'
AND alg_gebouw_code like '0%'
AND alg_gebouw_code NOT LIKE '00%'
AND LENGTH(alg_gebouw_code) = MaxLengte;
GebouwCode := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
GebouwCode := '01';
END;
*/
GebouwCode := FAC_F_FAC_GET_DESCRIPTION('LPN_ALG_GEBOUW', LocatieKey, NULL, NULL);
END IF;
INSERT INTO alg_gebouw(alg_locatie_key,alg_srtgebouw_key,alg_gebouw_code,alg_gebouw_naam,
alg_gebouw_omschrijving) VALUES(LocatieKey, NULL, GebouwCode, GebouwCode, GebouwCode);
COMMIT;
RecordAdded := TRUE;
/* Bepaal sleutel van zojuist toegevoegde gebouw i.v.m. aanroep Predraw... */
LPNName := 'LPN_ALG_GEBOUW';
BEGIN
SELECT alg_gebouw_key INTO LPNKey
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND UPPER(alg_gebouw_code) = UPPER(GebouwCode);
EXCEPTION
WHEN NO_DATA_FOUND THEN
LPNKey := NULL;
END;
ELSE
/* Het is geen gebouw, is het dan een ruimte ??? */
SELECT cad_symbool_layer INTO SymboolLayer
FROM cad_symbool
WHERE cad_symbool_entry = 'ALG_RUIMTE';
IF LayerNaam = SymboolLayer THEN
/* Het is een ruimte ... */
LocatieCode := cad_getLocatieCode_Tekening(LoadDwg);
SELECT alg_locatie_key INTO LocatieKey
FROM alg_locatie
WHERE alg_locatie_code = LocatieCode;
/* Bepaal verdieping -> bepaal eerst tekeningnaam zonder toevoeging Locatiecode... */
TekeningNaam := cad_getTekeningNaam_LoadDwg(LoadDwg);
BEGIN
SELECT alg_verdieping_key INTO VerdiepingKey
FROM cad_v_plattegrond
WHERE alg_locatie_key = LocatieKey
AND cad_tekening_filenaam = TekeningNaam
AND alg_verdieping_key IS NOT NULL;
SELECT alg_verdieping_volgNr INTO VerdiepingNr
FROM alg_verdieping
WHERE alg_verdieping_key = VerdiepingKey;
EXCEPTION
WHEN NO_DATA_FOUND THEN
VerdiepingNr := NULL;
END;
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,10);
BEGIN
SELECT alg_ruimte_key INTO Dummy
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = VerdiepingKey
AND alg_ruimte_upper_nr = UPPER(LabelSymbool);
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LabelOK := TRUE;
RuimteNr := LabelSymbool;
END;
ELSE
LabelOK := FALSE;
END IF;
IF VerdiepingNr IS NOT NULL THEN
IF NOT LabelOK THEN
/*
BEGIN
SELECT MAX(LENGTH(alg_ruimte_nr)) INTO MaxLengte
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_Key = VerdiepingKey
AND alg_ruimte_nr BETWEEN '0' AND '9999999999'
AND alg_ruimte_nr like '0%'
AND alg_ruimte_nr NOT LIKE '00%';
SELECT MAX(alg_ruimte_nr) INTO Omschrijving
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_Key = VerdiepingKey
AND alg_ruimte_nr BETWEEN '0' AND '9999999999'
AND alg_ruimte_nr like '0%'
AND alg_ruimte_nr NOT LIKE '00%'
AND LENGTH(alg_ruimte_nr) = MaxLengte;
RuimteNr := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
RuimteNr := '01';
END;
*/
RuimteNr := FAC_F_FAC_GET_DESCRIPTION('LPN_ALG_RUIMTE', VerdiepingKey, NULL, NULL);
END IF;
INSERT INTO alg_ruimte(alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr)
VALUES (VerdiepingKey, NULL, RuimteNr);
RecordAdded := TRUE;
/* Bepaal sleutel van zojuist toegevoegde ruimte i.v.m. aanroep Predraw */
LPNName := 'LPN_ALG_RUIMTE';
BEGIN
SELECT alg_ruimte_key INTO LPNKey
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = VerdiepingKey
AND alg_ruimte_nr = RuimteNr;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LPNKey := NULL;
END;
END IF;
ELSE
/* Het is ook geen ruimte, check of het dan een srtdeel is...*/
/*
SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_cadlayer = UPPER(LayerNaam)
AND ins_srtdeel_verwijder IS NULL;
*/
BEGIN
SELECT ins_srtdeel_key INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_cadlayer = UPPER(LayerNaam)
AND ins_srtdeel_verwijder IS NULL
AND rownum = 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
SrtDeelKey := NULL;
END;
-- SM44 Fix #79 AND ins_srtdeel_acadsymbol = UPPER(BlockNaam);
IF SrtDeelKey IS NOT NULL THEN
/* Het is een srtdeel... */
IF LPNCondName = 'LPN_ALG_TERREINSECTOR' OR LPNCondName = 'LPN_ALG_RUIMTE' OR
LPNCondName = 'LPN_PRS_WERKPLEK'
THEN
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
IF NOT LPNCondKeyOK THEN
Seqnr := 2;
LOOP
LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr);
LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
EXIT WHEN (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_TERREINSECTOR')
OR (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE')
OR (LPNCondKeyOK AND LPNCondName = 'LPN_PRS_WERKPLEK');
LPNCondKeyOK := FALSE;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
ELSE
LPNCondKeyOK := FALSE;
END IF;
IF LPNCondKeyOK THEN
LPNName := 'LPN_INS_DEEL';
LPNKey := AddDeel(Session_id, SrtdeelKey, LoadDwg, LPNCondName, LPNCondKey);
RecordAdded:= TRUE;
ELSE
RecordAdded:= FALSE;
END IF;
ELSE
/* Het is een onbekend object... */
RecordAdded:= FALSE;
END IF;
END IF;
END IF;
END IF;
cad_SLNKSTRUCTclear(Session_Id);
IF RecordAdded THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNName, 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW', 1, LPNKey, 1);
cad_SLNKPreDraw(Session_Id);
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END IF;
END cad_SLNKPrePostDimensie2;
PROCEDURE cad_SLNKPrePostDraw(Session_Id NUMBER) IS
Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
SymboolLayer ins_srtdeel.ins_srtdeel_cadlayer%TYPE;
SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE;
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE;
Omschrijving VARCHAR2(30);
UndoOK BOOLEAN;
BEGIN
UndoOK:= cad_SLNKPrePostUndo(Session_Id);
IF NOT UndoOK THEN
Dimensie := cad_SLNKSTRUCTreadVALINT(Session_id, 'DIMENSION');
IF Dimensie = 0 THEN
cad_SLNKPrePostDimensie0(Session_Id);
ELSIF Dimensie = 1 THEN
cad_SLNKPrePostDimensie1(Session_Id);
ELSIF Dimensie = 2 THEN
cad_SLNKPrePostDimensie2(Session_Id);
ELSE
NULL;
END IF;
END IF;
END cad_SLNKPrePostDraw;
PROCEDURE cad_SLNKpostdraw(Session_Id NUMBER) IS
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
VeldKey NUMBER(10);
Oppervlak NUMBER(13,3);
Omtrek NUMBER(13,3);
Diepte NUMBER(8,2);
Volume NUMBER(12,4);
Datum DATE;
CheckDatum VARCHAR2(11);
LPNAliasLinkO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyLinkO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE;
PlaatsKey NUMBER(10);
RuimteKey prs_werkplek.prs_alg_ruimte_key%TYPE;
RuimteType VARCHAR2(1);
DoDeelUpdate BOOLEAN;
LinkToRoom NUMBER;
LPNCondKeyOk BOOLEAN;
BEGIN
LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASINSO');
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYINSO');
LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
IF LPNNAME = 'LPN_INS_DEEL' THEN
LPNAliasLinkO := cad_SLNKSTRUCTreadVALSTR(Session_Id, 'LPNALIASLINKO');
IF LPNAliasLinkO IS NOT NULL THEN
/* Aanmaken ins_deelkoppeling record voor elke LPNKEYLINKO */
LPNKeyLinkO := 1; /* NOT NULL */
SeqNr := 1;
WHILE (LPNKeyLinkO IS NOT NULL) LOOP
LPNKeyLinkO := cad_SLNKSTRUCTreadVALINT2(Session_Id, 'LPNKEYLINKO', SeqNr);
IF LPNKeyLinkO IS NOT NULL THEN
INSERT INTO ins_deelkoppeling(ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key)
VALUES (LPNKey, LPNKeyLinkO);
COMMIT;
SeqNr := SeqNr+1;
END IF;
END LOOP;
END IF;
BEGIN
SELECT ins_srtdeel_dimensie INTO Dimensie
FROM ins_srtdeel
WHERE ins_srtdeel_key =
(SELECT ins_srtdeel_key FROM ins_deel
WHERE ins_deel_key = LPNKey);
EXCEPTION
WHEN NO_DATA_FOUND THEN
Dimensie := NULL; /* Dimensie niet gevonden -> doe verder niets */
END;
Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
IF Omtrek IS NOT NULL AND Dimensie <> 0 THEN
UPDATE ins_deel
SET ins_deel_omtrek = Omtrek
WHERE ins_deel_key = LPNKey;
END IF;
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
IF Oppervlak IS NOT NULL AND Dimensie = 2 THEN
UPDATE ins_deel
SET ins_deel_oppervlak = Oppervlak
WHERE ins_deel_key = LPNKey;
END IF;
SELECT ins_alg_ruimte_type, ins_alg_ruimte_key INTO PlaatsDeel, PlaatsKey
FROM all_v_aanwezigdeel
WHERE ins_deel_key = LPNKey;
LinkToRoom := cad_SLNKSTRUCTreadVALINT(Session_id, 'LINKTOROOM');
cad_slnkstructdelete(Session_id, 'LINKTOROOM');
DoDeelUpdate := TRUE;
IF LPNCondName = 'LPN_ALG_RUIMTE' THEN
/* Bij LPN_ALG_RUIMTE checken - of deel gekoppeld is aan een werkplek die zich in dezelfde
ruimte bevindt dan de opgegeven ruimte, zo ja dan GEEN update van de plaats v/h deel */
IF PlaatsDeel = 'W' THEN
IF LinkToRoom = 1 THEN
DoDeelUpdate := TRUE;
ELSE
SELECT prs_alg_ruimte_key INTO RuimteKey
FROM prs_werkplek
WHERE prs_werkplek_key = PlaatsKey;
IF Ruimtekey = LPNCondKey THEN
DoDeelUpdate := FALSE;
ELSE
DoDeelUpdate := TRUE;
END IF;
END IF;
END IF;
END IF;
IF DODeelUpdate THEN
UPDATE ins_deel
SET ins_alg_ruimte_key = LPNCondKey,
ins_alg_ruimte_type = Plaatsdeel,
ins_deel_getekend = SYSDATE /* It's CAD */
WHERE ins_deel_key = LPNKey;
END IF;
ELSIF LPNNAME = 'LPN_ALG_GEBOUW' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE alg_gebouw
SET alg_gebouw_bruto_vloeropp = Oppervlak,
alg_gebouw_omtrek = Omtrek,
alg_gebouw_getekend = SYSDATE
WHERE alg_gebouw_key = LPNKey;
ELSIF LPNNAME = 'LPN_ALG_RUIMTE' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE alg_ruimte
SET alg_ruimte_bruto_vloeropp = Oppervlak,
alg_ruimte_omtrek = Omtrek,
alg_ruimte_getekend = SYSDATE
WHERE alg_ruimte_key = LPNKey;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE alg_terreinsector
SET alg_terreinsector_oppervlak = Oppervlak,
alg_terreinsector_omtrek = Omtrek,
alg_terreinsector_getekend = SYSDATE
WHERE alg_terreinsector_key = LPNKey;
ELSIF LPNName = 'LPN_PRS_WERKPLEK' THEN
/* Bepaal de nieuwe ruimte v/d werkplek */
LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
IF LPNCondKey IS NOT NULL THEN
/* Check of key wel bestaat - kan zijn dat tekening niet helemaal up-to-date is */
LPNCondKeyOk := CheckLPNCondKey(LPNCondName, LPNCondKey);
IF NOT LPNCondKeyOK THEN
Seqnr := 2;
LOOP
LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
EXIT WHEN LPNCondKeyOK;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
IF LPNCondKeyOK THEN
UPDATE prs_werkplek
SET prs_werkplek_getekend = SYSDATE /* IT's CAD */
WHERE prs_werkplek_key = LPNKey;
END IF;
END IF;
#ifdef BIS
ELSIF LPNName = 'LPN_BIS_BORING' THEN
UPDATE bis_boring
SET bis_boring_getekend = 'TRUE'
WHERE bis_boring_key = LPNKey;
/* als het een veld betreft dan oppervlakte aanpassen in tabel bis_veld */
SELECT bis_veld_key INTO VeldKey
FROM bis_boring
WHERE bis_boring_key = LPNKey;
IF VeldKey IS NOT NULL THEN
/* lees oppervlakte uit */
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE bis_veld
SET bis_veld_oppervlakte = Oppervlak
WHERE bis_veld_key = Veldkey;
END IF;
ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Diepte:= cad_SLNKSTRUCTreadVALREAL(Session_id, 'DEPTH');
Volume := Oppervlak * Diepte;
BEGIN
SELECT bis_ontgravingsvak_aanmaak INTO Datum
FROM bis_ontgravingsvak
WHERE bis_ontgravingsvak_key = LPNKey;
EXCEPTION
WHEN NO_DATA_FOUND THEN
Datum := SYSDATE;
END;
UPDATE bis_ontgravingsvak
SET bis_ontgravingsvak_volume = Volume,
bis_ontgravingsvak_diepte = Diepte
WHERE bis_ontgravingsvak_key = LPNKey;
/* "Onthoofden" van trajecten */
cad_KILLtrajecten(Session_Id, Diepte, Datum);
ELSIF LPNName = 'LPN_BIS_PROJECT' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE bis_project
SET bis_project_oppervlakte = Oppervlak
WHERE bis_project_key = LPNKey;
#endif //BIS
END IF;
COMMIT;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); /* ORACLE is klaar */
END cad_SLNKpostdraw;
PROCEDURE cad_SLNKpostErase(Session_Id NUMBER) IS
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
CheckDatum VARCHAR2(10);
Datum DATE;
Eerste BOOLEAN;
WerkPlekFound BOOLEAN;
BEGIN
CheckDatum := cad_SLNKSTRUCTreadVALSTR(Session_id, 'DATE');
Datum := TO_DATE(CheckDatum, 'DD-MM-YYYY');
LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASDELO');
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYDELO');
IF LPNName = 'LPN_INS_DEEL' THEN
UPDATE ins_deel
SET ins_deel_verwijder = SYSDATE,
ins_deel_getekend = NULL /* It's CAD */
WHERE ins_deel_key = LPNKey;
DELETE FROM ins_deelkoppeling
WHERE ins_deelkoppeling_van_key = LPNKEY
OR ins_deelkoppeling_naar_key = LPNKEY;
COMMIT;
ELSIF LPNName = 'LPN_ALG_GEBOUW' THEN
UPDATE alg_gebouw
SET alg_gebouw_verwijder = SYSDATE,
alg_gebouw_getekend = NULL /* It's CAD */
WHERE alg_gebouw_key = LPNKey;
COMMIT;
ELSIF LPNName = 'LPN_ALG_RUIMTE' THEN
/* Geef aan AutoCAD de sleutels door van de werkplekken die zich in de te verwijderen ruimte bevinden */
BEGIN
DECLARE
Cursor RuimteWerkplek IS
SELECT prs_werkplek_key
FROM prs_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNKey;
BEGIN
Eerste := TRUE;
WerkPlekFound := FALSE;
FOR WerkplekRec IN RuimteWerkplek LOOP
IF Eerste THEN
WerkPlekFound := TRUE;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_PRS_WERKPLEK', 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, WerkplekRec.prs_werkplek_key, 1);
Eerste := FALSE;
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_PRS_WERKPLEK', 0);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, WerkplekRec.prs_werkplek_key, 0);
END IF;
END LOOP;
END;
END;
/* Geef aan AutoCAD de sleutels door van de delen die zich in de te verwijderen ruimte bevinden EN
* de delen die zich op werkplekken bevinden binnen de te verwijderen ruimte...
*/
BEGIN
DECLARE
Cursor RuimteDeel IS
SELECT ins_deel_key
FROM all_v_aanwezigdeel
WHERE ins_alg_ruimte_key = LPNKey
AND ins_alg_ruimte_type = 'R'
OR (ins_alg_ruimte_type = 'W' AND
ins_alg_ruimte_key IN
(SELECT prs_werkplek_key from prs_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNKey));
BEGIN
Eerste := TRUE;
FOR DeelRec IN RuimteDeel LOOP
IF Eerste AND NOT WerkPlekFound THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 1);
Eerste := FALSE;
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 0);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 0);
END IF;
END LOOP;
END;
END;
UPDATE alg_ruimte
SET alg_ruimte_verwijder = SYSDATE,
alg_ruimte_getekend = NULL /* It's CAD */
WHERE alg_ruimte_key = LPNKey;
COMMIT;
ELSIF LPNName = 'LPN_PRS_WERKPLEK' THEN
/* Geef aan AutoCAD de sleutels door van de delen die zich op de te verwijderen werkplek bevinden... */
BEGIN
DECLARE
Cursor WerkplekDeel IS
SELECT ins_deel_key
FROM all_v_aanwezigdeel
WHERE ins_alg_ruimte_type = 'W'
AND ins_alg_ruimte_key = LPNKey;
BEGIN
Eerste := TRUE;
FOR DeelRec IN WerkplekDeel LOOP
IF Eerste THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 1);
Eerste := FALSE;
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 0);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 0);
END IF;
END LOOP;
END;
END;
UPDATE prs_werkplek
SET prs_werkplek_verwijder = SYSDATE,
prs_werkplek_getekend = NULL /* It's CAD */
WHERE prs_werkplek_key = LPNKey;
COMMIT;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN
#ifdef BIS
BEGIN
DECLARE
CURSOR Sectorboring IS
SELECT bis_boring_key, alg_terreinsector_key
FROM bis_v_aanwezigboring
WHERE alg_terreinsector_key = LPNKey;
BEGIN
Eerste := TRUE;
FOR BoringRec IN Sectorboring LOOP
IF Eerste THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, BoringRec.bis_boring_key, 1);
Eerste := FALSE;
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 0);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, BoringRec.bis_boring_key, 0);
END IF;
/* Sublocatie grafisch verwijderd zet getekend veld van de boring op 'FALSE' */
UPDATE bis_boring
SET bis_boring_getekend = 'FALSE'
WHERE bis_boring_key = BoringRec.bis_boring_key;
COMMIT;
END LOOP;
END;
END;
UPDATE alg_terreinsector
SET alg_terreinsector_verwijder = Datum,
alg_terreinsector_getekend = NULL /* It's CAD */
WHERE alg_terreinsector_key = LPNKey;
COMMIT;
#else
BEGIN
DECLARE
CURSOR TerreinDeel IS
SELECT ins_deel_key
FROM all_v_aanwezigdeel
WHERE ins_alg_ruimte_key = LPNKey
AND ins_alg_ruimte_type = 'T';
BEGIN
Eerste := TRUE;
FOR DeelRec IN TerreinDeel LOOP
IF Eerste THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 1);
Eerste := FALSE;
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 0);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 0);
END IF;
END LOOP;
END;
END;
UPDATE alg_terreinsector
SET alg_terreinsector_verwijder = SYSDATE,
alg_terreinsector_getekend = NULL /* It's CAD */
WHERE alg_terreinsector_key = LPNKey;
COMMIT;
#endif //NONBIS
#ifdef BIS
ELSIF LPNName = 'LPN_BIS_BORING' THEN
IF CheckDatum IS NOT NULL THEN
UPDATE bis_boring
SET bis_boring_verwijderdatum = Datum
WHERE bis_boring_key = LPNKey;
ELSE
UPDATE bis_boring
SET bis_boring_getekend = 'FALSE'
WHERE bis_boring_key = LPNKey;
UPDATE bis_veld
SET bis_veld_oppervlakte = NULL
WHERE bis_veld_key IN
(SELECT bis_veld_key FROM bis_boring
WHERE bis_boring_key = LPNKey);
END IF;
ELSIF LPNName = 'LPN_BIS_PROJECT' THEN
UPDATE bis_project
SET bis_project_einddatum = Datum
WHERE bis_project_key = LPNKey;
COMMIT;
ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN
UPDATE bis_ontgravingsvak
SET bis_ontgravingsvak_verwijder = Datum
WHERE bis_ontgravingsvak_key = LPNKey;
COMMIT;
#endif //BIS
END IF;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKpostErase;
PROCEDURE cad_SLNKpostModify(Session_Id NUMBER) IS
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
VeldKey NUMBER(10);
Oppervlak NUMBER(13,3);
Diepte NUMBER(8,2);
Omtrek NUMBER(13,3);
Volume NUMBER(12,4);
Datum DATE;
Seqnr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondKeyOK BOOLEAN:= FALSE;
RuimteType VARCHAR2(1);
LPNAliasLinkO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyLinkO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE;
PlaatsKey NUMBER(10);
RuimteKey prs_werkplek.prs_alg_ruimte_key%TYPE;
WerkplekNr prs_werkplek.prs_werkplek_volgnr%TYPE;
DoDeelUpdate BOOLEAN;
LinkToRoom NUMBER;
BEGIN
LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASMODO');
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYMODO');
IF LPNName = 'LPN_INS_DEEL' THEN
/* Bepaal nieuwe plek v/h deel */
LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
IF LPNCondKey IS NOT NULL THEN
/* Check of key wel bestaat - kan zijn dat tekening niet helemaal up-to-date is */
LPNCondKeyOk := CheckLPNCondKey(LPNCondName, LPNCondKey);
IF NOT LPNCondKeyOK THEN
Seqnr := 2;
LOOP
LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
EXIT WHEN LPNCondKeyOK;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
IF LPNCondKeyOK THEN
IF LPNCondName = 'LPN_ALG_TERREINSECTOR' THEN
RuimteType := 'T';
ELSIF LPNCondName = 'LPN_ALG_RUIMTE' THEN
RuimteType := 'R';
ELSIF LPNCondName = 'LPN_PRS_WERKPLEK' THEN
RuimteType := 'W';
END IF;
SELECT ins_alg_ruimte_type, ins_alg_ruimte_key INTO PlaatsDeel, PlaatsKey
FROM all_v_aanwezigdeel
WHERE ins_deel_key = LPNKey;
LinkToRoom := cad_SLNKSTRUCTreadVALINT(Session_id, 'LINKTOROOM');
cad_slnkstructdelete(Session_id, 'LINKTOROOM');
DoDeelUpdate := TRUE;
IF LPNCondName = 'LPN_ALG_RUIMTE' THEN
/* Bij LPN_ALG_RUIMTE checken - of deel gekoppeld is aan een werkplek die zich in dezelfde
ruimte bevindt dan de opgegeven ruimte, zo ja dan GEEN update van de plaats v/h deel */
IF PlaatsDeel = 'W' THEN
IF LinkToRoom = 1 THEN
DoDeelUpdate := TRUE;
ELSE
SELECT prs_alg_ruimte_key INTO RuimteKey
FROM prs_werkplek
WHERE prs_werkplek_key = PlaatsKey;
IF Ruimtekey = LPNCondKey THEN
DoDeelUpdate := FALSE;
ELSE
DoDeelUpdate := TRUE;
END IF;
END IF;
END IF;
END IF;
IF DODeelUpdate THEN
UPDATE ins_deel
SET ins_alg_ruimte_key = LPNCondKey,
ins_alg_ruimte_type = RuimteType,
ins_deel_getekend = SYSDATE /* It's CAD */
WHERE ins_deel_key = LPNKey;
END IF;
END IF;
END IF;
LPNAliasLinkO := cad_SLNKSTRUCTreadVALSTR(Session_Id, 'LPNALIASLINKO');
LPNKeyLinkO := cad_SLNKSTRUCTreadVALINT(Session_Id, 'LPNKEYLINKO');
/* Deelgegevens gewijzigd - deelkoppeling records aanpassen */
DELETE ins_deelkoppeling
WHERE ins_deelkoppeling_van_key = LPNKey
OR ins_deelkoppeling_naar_key = LPNKey;
COMMIT;
IF LPNAliasLinkO IS NOT NULL AND LPNKeyLinkO IS NOT NULL THEN
LPNKeyLinkO := 1; /* NOT NULL */
SeqNr := 1;
WHILE (LPNKeyLinkO IS NOT NULL) LOOP
LPNKeyLinkO := cad_SLNKSTRUCTreadVALINT2(Session_Id, 'LPNKEYLINKO', SeqNr);
IF LPNKeyLinkO IS NOT NULL THEN
BEGIN
INSERT INTO ins_deelkoppeling(ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key)
VALUES (LPNKey, LPNKeyLinkO);
COMMIT;
SeqNr := SeqNr+1;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
SeqNr := SeqNr+1; /* Record bestaat reeds -> ga gewoon verder met volgende */
END;
END IF;
END LOOP;
END IF;
/* Zoek Dimensie van deel op */
BEGIN
SELECT ins_srtdeel_dimensie INTO Dimensie
FROM ins_srtdeel
WHERE ins_srtdeel_key =
(SELECT ins_srtdeel_key FROM ins_deel
WHERE ins_deel_key = LPNKey);
EXCEPTION
WHEN NO_DATA_FOUND THEN
Dimensie := NULL; /* Dimensie niet gevonden -> doe verder niets */
END;
/* Omtrek bijwerken ? */
Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
IF Omtrek IS NOT NULL AND Dimensie = 1 THEN
UPDATE ins_deel
SET ins_deel_omtrek = Omtrek
WHERE ins_deel_key = LPNKey;
END IF;
/* Oppervlak bijwerken */
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
IF Oppervlak IS NOT NULL AND Dimensie = 2 THEN
UPDATE ins_deel
SET ins_deel_oppervlak = Oppervlak
WHERE ins_deel_key = LPNKey;
END IF;
ELSIF LPNName = 'LPN_ALG_GEBOUW' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE alg_gebouw
SET alg_gebouw_bruto_vloeropp = Oppervlak,
alg_gebouw_omtrek = Omtrek,
alg_gebouw_getekend = SYSDATE
WHERE alg_gebouw_key = LPNKey;
ELSIF LPNName = 'LPN_ALG_RUIMTE' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE alg_ruimte
SET alg_ruimte_bruto_vloeropp = Oppervlak,
alg_ruimte_omtrek = Omtrek,
alg_ruimte_getekend = SYSDATE
WHERE alg_ruimte_key = LPNKey;
ELSIF LPNName = 'LPN_PRS_WERKPLEK' THEN
/* Bepaal de nieuwe ruimte v/d werkplek */
LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
IF LPNCondKey IS NOT NULL THEN
/* Check of key wel bestaat - kan zijn dat tekening niet helemaal up-to-date is */
LPNCondKeyOk := CheckLPNCondKey(LPNCondName, LPNCondKey);
IF NOT LPNCondKeyOK THEN
Seqnr := 2;
LOOP
LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey);
EXIT WHEN LPNCondKeyOK;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
IF LPNCondKeyOK THEN
BEGIN
UPDATE prs_werkplek
SET prs_alg_ruimte_key = LPNCondKey,
prs_werkplek_getekend = SYSDATE /* IT's CAD */
WHERE prs_werkplek_key = LPNKey;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
SELECT MAX(prs_werkplek_volgnr) + 1
INTO WerkplekNr
FROM all_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNCondKey;
UPDATE prs_werkplek
SET prs_werkplek_volgnr = WerkplekNr,
prs_alg_ruimte_key = LPNCondKey,
prs_werkplek_getekend = SYSDATE /* It's CAD */
WHERE prs_werkplek_key = LPNKey;
END;
END IF;
END IF;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE alg_terreinsector
SET alg_terreinsector_oppervlak = Oppervlak,
alg_terreinsector_omtrek = Omtrek
WHERE alg_terreinsector_key = LPNKey;
#ifdef BIS
ELSIF LPNName = 'LPN_BIS_BORING' THEN
/* als het een veld betreft dan oppervlakte aanpassen in tabel bis_veld */
SELECT bis_veld_key INTO VeldKey
FROM bis_boring
WHERE bis_boring_key = LPNKey;
IF VeldKey IS NOT NULL THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE bis_veld
SET bis_veld_oppervlakte = Oppervlak
WHERE bis_veld_key = Veldkey;
END IF;
ELSIF LPNName = 'LPN_BIS_PROJECT' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE bis_project
SET bis_project_oppervlakte = Oppervlak
WHERE bis_project_key = LPNKey;
ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Diepte := cad_SLNKSTRUCTreadVALREAL(Session_id, 'DEPTH');
Volume := Oppervlak * Diepte;
UPDATE bis_ontgravingsvak
SET bis_ontgravingsvak_diepte = Diepte,
bis_ontgravingsvak_volume = Volume
WHERE bis_ontgravingsvak_key = LPNKey;
/* "Onthoofden" van trajecten */
Datum := TO_DATE(cad_SLNKSTRUCTreadVALSTR(Session_id, 'DATE'), 'DD-MM-YYYY');
cad_KILLtrajecten(Session_Id, Diepte, Datum);
#endif //BIS
END IF;
COMMIT;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKpostModify;
PROCEDURE cad_SLNKDelenbijWerkplek(Session_Id NUMBER) IS
LPNKey NUMBER(10);
Eerste BOOLEAN;
BEGIN
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'INFOI');
BEGIN
DECLARE
Cursor WerkplekDelen IS
SELECT ins_deel_key
FROM all_v_aanwezigdeel
WHERE ins_alg_ruimte_key = LPNKey
AND ins_alg_ruimte_type = 'W';
BEGIN
Eerste := TRUE;
FOR DelenRec IN WerkplekDelen LOOP
IF Eerste THEN
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, DelenRec.ins_deel_key, 1);
Eerste := FALSE;
ELSE
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, DelenRec.ins_deel_key, 0);
END IF;
END LOOP;
END;
END;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKDelenbijWerkplek;
PROCEDURE cad_getSymboolInfo(Session_Id NUMBER, Entry VARCHAR2) IS
LayerNaam cad_symbool.cad_symbool_layer%TYPE;
LayerColor cad_symbool.cad_symbool_kleur%TYPE;
LayerLineType cad_symbool.cad_symbool_linetype%TYPE;
Symbool cad_symbool.cad_symbool_symbool%TYPE;
BEGIN
BEGIN
SELECT cad_symbool_layer, cad_symbool_kleur, cad_symbool_linetype, cad_symbool_symbool
INTO LayerNaam, LayerColor, LayerLineType, Symbool
FROM cad_symbool
WHERE UPPER(cad_symbool_entry) = UPPER(Entry);
cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', 1, Layernaam, 1);
cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', 1, LayerColor, 1);
cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', 1, LayerLinetype, 1);
cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', 1, Symbool, 1);
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL; /* Entry niet gevonden -> geef AutoCAD niets terug */
END;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_getSymboolInfo;
PROCEDURE cad_SetKenmerkWaarde(DeelKey IN NUMBER, KenmerkKey IN NUMBER, KenmerkWaarde IN VARCHAR2) IS
BEGIN
WriteKenmerkWaarde(DeelKey, KenmerkKey, KenmerkWaarde);
END cad_SetKenmerkWaarde;
PROCEDURE Cad_GetKenmerkWaarde(Session_Id IN NUMBER, DeelKey IN NUMBER, KenmerkKey IN NUMBER) IS
KenmerkWaarde ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE;
BEGIN
KenmerkWaarde := ReadKenmerkWaarde(DeelKey, KenmerkKey);
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'INFOS', 1, KenmerkWaarde, 1);
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_GetKenmerkWaarde;
END cad;
/
#endif //CAD
#ifdef AKZ
CREATE_VIEW(cad_v_ins_deel, FAC_NORMAAL_PRIVILEGE)
(ins_deel_key,
ins_deel_cadlabel,
ins_srtdeel_omschrijving,
ins_deel_oppervlak,
ins_deel_omtrek
) AS
SELECT D.ins_deel_key,
SUBSTR(D.ins_deel_upper, LENGTH(D.ins_deel_upper)-5), /* laatste 5 karakters */
SD.ins_srtdeel_omschrijving,
NVL(TO_CHAR(D.ins_deel_oppervlak),'-')||' m2',
NVL(TO_CHAR(D.ins_deel_omtrek),'-')||' m'
FROM all_v_aanwezigdeel D, ins_srtdeel SD
WHERE SD.ins_srtdeel_key=D.ins_srtdeel_key;
/
#endif //AKZ
#ifdef INS
CREATE INDEX ins_i_ins_srtdeel3 ON ins_srtdeel(ins_srtdeel_cadlayer, ins_srtdeel_acadsymbol, ins_srtdeel_dimensie);
CREATE INDEX ins_i_ins_deelkoppeling3 ON ins_deelkoppeling (ins_deelkoppeling_naar_key, ins_deelkoppeling_van_key);
CREATE OR REPLACE PROCEDURE SchrijfVerbinding(SessionId IN NUMBER, DeelKey IN NUMBER, Niveau IN NUMBER, MaxGrootte IN NUMBER) AS
BEGIN
IF (Niveau <= MaxGrootte OR MaxGrootte = 0) AND Niveau <= 25
THEN
BEGIN
DECLARE
CURSOR Verbindingen IS
SELECT ins_deelkoppeling_naar_key AS ins_deel_key FROM ins_deelkoppeling
WHERE ins_deelkoppeling_van_key = DeelKey
UNION
SELECT ins_deelkoppeling_van_key AS ins_deel_key from ins_deelkoppeling
WHERE ins_deelkoppeling_naar_key = DeelKey
MINUS
SELECT ins_deel_key FROM ins_verbinding
WHERE ins_verbinding_sessionid = SessionId;
BEGIN
FOR VerbindingRec IN Verbindingen LOOP
INSERT INTO ins_verbinding VALUES (Sessionid, VerbindingRec.ins_deel_key, niveau);
COMMIT;
SchrijfVerbinding(SessionId, VerbindingRec.ins_deel_key, Niveau + 1, Maxgrootte);
END LOOP;
END;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN NULL;
END;
END IF;
COMMIT;
END;
/
CREATE_TRIGGER(ins_t_ins_srtdeel_B_IU)
BEFORE INSERT OR UPDATE ON ins_srtdeel
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(ins_srtdeel_key,ins_s_ins_srtinst_keys);
UPDATE_UPPER(ins_srtdeel_omschrijving,ins_srtdeel_upper);
UPDATE_UPPER(ins_srtdeel_code,ins_srtdeel_code_upper);
UPDATE_UPPER(ins_srtdeel_cadlayer, ins_srtdeel_cadlayer);
// 16/04/1998 AH #1593, Speciale CHECK_NOG_REFERENCE, maakt geen gebruik van AANWEZIG-views.
INS_CHECK_NOG_REFERENCES(ins_srtdeel,ins_srtdeel_verwijder,ins_deel, ins_deel_verwijder,
ins_srtdeel_key,'ins_m013');
UPDATE_AANMAAKDATUM(ins_srtdeel, ins_srtdeel_aanmaak);
/* Als een deelsoort verwijderd wordt dan moet ook deze
deelsoort uit desbetreffende configuratie verwijderd worden
IF :new.ins_srtdeel_verwijder IS NOT NULL THEN
UPDATE ins_srtdeel_compositie
SET ins_srtdeel_comp_verwijder = SYSDATE
WHERE ins_srtdeel_key = :new.ins_srtdeel_key;
END IF;
*/
SET_VERWIJDER_CHILDREN(ins_srtdeel_compositie, ins_srtdeel_key, ins_srtdeel_verwijder,
ins_srtdeel_comp_verwijder);
END;
/
/* Veld ins_srtdeel_cadlayer is nu UPPER i.v.m. Performance
in de CAD-package.
*/
UPDATE ins_srtdeel
SET ins_srtdeel_cadlayer = UPPER(ins_srtdeel_cadlayer);
COMMIT;
#endif // INS
#ifdef MLD
ALTER TABLE mld_melding
MODIFY (mld_melding_uitvoertijd NUMBER(3));
ALTER TABLE mld_melding
MODIFY (mld_melding_uitvoertijd2 NUMBER(3));
COMMIT;
#endif // MLD
#ifdef PRJ
ALTER TABLE cad_tekening DROP CONSTRAINT CAD_U_CAD_TEKENING
/
ALTER TABLE cad_tekening ADD CONSTRAINT CAD_U_CAD_TEKENING
UNIQUE (ALG_LOCATIE_KEY
, ALG_VERDIEPING_KEY
, CAD_TEKENING_TYPE
, INS_DISCIPLINE_KEY
, PRJ_PROJECT_KEY
, CAD_TEKENING_VERWIJDER)
/
CREATE_VIEW(PRJ_V_PRJ_PROJECT_DEFINITIE, PRJ_NORMAAL_PRIVILEGE)
( cad_tekening_key
, prj_project_key
, prj_gebouw_key
, prj_locatie_key
, prj_verdieping_key
, prj_discipline_key
, prj_project_nr
, prj_gebouw_omschrijving
, prj_verdieping_omschrijving
, prj_discipline_omschrijving
)
AS
SELECT T.cad_tekening_key
, T.prj_project_key
, O.alg_gebouw_key
, T.alg_locatie_key
, T.alg_verdieping_key
, T.ins_discipline_key
, P.prj_project_nr
, O.alg_gebouw_code||' - '||alg_gebouw_naam
, O.alg_verdieping_volgnr||' - '||O.alg_verdieping_omschrijving
, D.ins_discipline_omschrijving
FROM ins_tab_discipline D
, cad_tekening T
, alg_v_onroerendgoed_gegevens O
, prj_project P
WHERE P.prj_project_key (+) = T.prj_project_key
AND T.ins_discipline_key = D.ins_discipline_key
AND T.alg_verdieping_key = O.alg_onroerendgoed_keys (+)
AND T.cad_tekening_verwijder IS NULL
AND T.cad_tekening_type = 'D';
CREATE_VIEW(prj_v_plattegrond, PRJ_NORMAAL_PRIVILEGE)
AS SELECT *
FROM cad_tekening
WHERE UPPER(cad_tekening_type) = 'P'
AND cad_tekening_verwijder IS NULL
AND prj_project_key IS NOT NULL;
CREATE_VIEW(prj_v_contour, PRJ_NORMAAL_PRIVILEGE)
AS SELECT *
FROM cad_tekening
WHERE UPPER(cad_tekening_type) = 'C'
AND cad_tekening_verwijder IS NULL
AND prj_project_key IS NOT NULL;
CREATE_VIEW(prj_v_discipline, PRJ_NORMAAL_PRIVILEGE)
AS SELECT *
FROM cad_tekening
WHERE UPPER(cad_tekening_type) = 'D'
AND cad_tekening_verwijder IS NULL
AND prj_project_key IS NOT NULL;
CREATE_VIEW(prj_v_verhuis, PRJ_NORMAAL_PRIVILEGE)
AS SELECT *
FROM cad_tekening
WHERE UPPER(cad_tekening_type) = 'V'
AND cad_tekening_verwijder IS NULL
AND prj_project_key IS NOT NULL;
CREATE_VIEW(prj_v_cad_aanwezigtekening, PRJ_NORMAAL_PRIVILEGE)
AS SELECT *
FROM cad_tekening C_T
WHERE prj_project_key IS NOT NULL
AND cad_tekening_verwijder IS NULL
AND ( C_T.ins_discipline_key IN (SELECT ins_discipline_key
FROM ins_discipline)
OR C_T.ins_discipline_key IS NULL);
CREATE_VIEW(prj_v_cad_tekening, PRJ_NORMAAL_PRIVILEGE)
AS SELECT ins_discipline_key
, alg_locatie_key
, alg_verdieping_key
, cad_tekening_type
, cad_tekening_filenaam
, prj_project_key
FROM cad_tekening C_T
WHERE cad_tekening_verwijder IS NULL
AND prj_project_key IS NOT NULL;
CREATE_VIEW(prj_v_cad_tekening_gegevens, PRJ_NORMAAL_PRIVILEGE)
( cad_tekening_key
, alg_locatie_key
, alg_locatie_code
, alg_gebouw_key
, alg_gebouw_code
, alg_verdieping_key
, alg_verdieping_omschrijving
, ins_discipline_key
, ins_discipline_omschrijving)
AS SELECT C_T.cad_tekening_key
, C_T.alg_locatie_key
, ALG_L.alg_locatie_code
, ALG_G.alg_gebouw_key
, ALG_G.alg_gebouw_code
, C_T.alg_verdieping_key
, ALG_V.alg_verdieping_omschrijving
, C_T.ins_discipline_key
, INS_D.ins_discipline_omschrijving
FROM alg_locatie ALG_L
, alg_verdieping ALG_V
, alg_gebouw ALG_G
, ins_discipline INS_D
, cad_v_cad_aanwezigtekening C_T
WHERE C_T.alg_locatie_key = ALG_L.alg_locatie_key
AND C_T.alg_verdieping_key = ALG_V.alg_verdieping_key (+)
AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key (+)
AND C_T.ins_discipline_key = INS_D.ins_discipline_key (+)
AND C_T.cad_tekening_verwijder IS NULL;
/*
** Herdefinitie van de cad-views omdat er een veld aan cad_tekening
** is toegevoegd voor projecten.
*/
CREATE_VIEW(cad_v_cad_aanwezigtekening, PRJ_NORMAAL_PRIVILEGE)
AS SELECT *
FROM cad_tekening C_T
WHERE prj_project_key IS NULL
AND cad_tekening_verwijder IS NULL
AND ( C_T.ins_discipline_key IN (SELECT ins_discipline_key
FROM ins_discipline)
OR C_T.ins_discipline_key IS NULL);
CREATE_VIEW(cad_v_cad_tekening, PRJ_NORMAAL_PRIVILEGE)
AS SELECT ins_discipline_key
, alg_locatie_key
, alg_verdieping_key
, cad_tekening_type
, cad_tekening_filenaam
, prj_project_key
FROM cad_tekening C_T
WHERE cad_tekening_verwijder IS NULL
AND prj_project_key IS NULL;
CREATE_VIEW(cad_v_cad_tekening_gegevens, PRJ_NORMAAL_PRIVILEGE)
( cad_tekening_key
, alg_locatie_key
, alg_locatie_code
, alg_gebouw_key
, alg_gebouw_code
, alg_verdieping_key
, alg_verdieping_omschrijving
, ins_discipline_key
, ins_discipline_omschrijving)
AS SELECT C_T.cad_tekening_key
, C_T.alg_locatie_key
, ALG_L.alg_locatie_code
, ALG_G.alg_gebouw_key
, ALG_G.alg_gebouw_code
, C_T.alg_verdieping_key
, ALG_V.alg_verdieping_omschrijving
, C_T.ins_discipline_key
, INS_D.ins_discipline_omschrijving
FROM alg_locatie ALG_L
, alg_verdieping ALG_V
, alg_gebouw ALG_G
, ins_discipline INS_D
, cad_v_cad_aanwezigtekening C_T
WHERE C_T.alg_locatie_key = ALG_L.alg_locatie_key
AND C_T.alg_verdieping_key = ALG_V.alg_verdieping_key (+)
AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key (+)
AND C_T.ins_discipline_key = INS_D.ins_discipline_key (+)
AND C_T.cad_tekening_verwijder IS NULL;
CREATE_VIEW(cad_v_plattegrond, PRJ_NORMAAL_PRIVILEGE)
AS SELECT *
FROM cad_tekening
WHERE UPPER(cad_tekening_type) = 'P'
AND cad_tekening_verwijder IS NULL
AND prj_project_key IS NULL;
CREATE_VIEW(cad_v_contour, PRJ_NORMAAL_PRIVILEGE)
AS SELECT *
FROM cad_tekening
WHERE UPPER(cad_tekening_type) = 'C'
AND cad_tekening_verwijder IS NULL
AND prj_project_key IS NULL;
CREATE_VIEW(cad_v_discipline, PRJ_NORMAAL_PRIVILEGE)
AS SELECT *
FROM cad_tekening
WHERE UPPER(cad_tekening_type) = 'D'
AND cad_tekening_verwijder IS NULL
AND prj_project_key IS NULL;
-- selecteer alle verdiepingen van een bepaald project
CREATE_VIEW(prj_v_alg_verdiepingen, PRJ_NORMAAL_PRIVILEGE)
AS SELECT DISTINCT
alg_verdieping_key
, prj_project_key
FROM cad_tekening
WHERE alg_verdieping_key IS NOT NULL
AND prj_project_key IS NOT NULL
AND cad_tekening_verwijder IS NULL;
#endif //PRJ
#ifdef PRS
ALTER TABLE prs_afdeling
MODIFY (prs_afdeling_kostenplaats VARCHAR2(10));
COMMIT;
CREATE_VIEW(prs_v_werkplekafdeling_geg,PRS_NORMAAL_PRIVILEGE)
( prs_perslidwerkplek_key,
prs_afdeling_key,
prs_afdeling_naam,
prs_afdeling_upper,
prs_werkplek_key,
prs_werkplek_volgnr,
prs_werkplek_opp,
alg_locatie_key,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_verdieping_volgnr,
alg_verdieping_omschrijving,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_upper_nr,
alg_ruimte_bruto_vloeropp ) AS
SELECT PRS_PW.prs_perslidwerkplek_key,
PRS_A.prs_afdeling_key,
PRS_A.prs_afdeling_naam,
PRS_A.prs_afdeling_upper,
PRS_PW.prs_werkplek_key,
PRS_W.prs_werkplek_volgnr,
PRS_W.prs_werkplek_opp,
PRS_W.alg_locatie_key,
PRS_W.alg_gebouw_omschrijving,
PRS_W.alg_gebouw_upper,
PRS_W.alg_verdieping_volgnr,
PRS_W.alg_verdieping_omschrijving,
PRS_W.alg_ruimte_key,
PRS_W.alg_ruimte_nr,
PRS_W.alg_ruimte_upper_nr,
PRS_W.alg_ruimte_bruto_vloeropp
FROM prs_v_aanwezigperslidwerkplek PRS_PW, PRS_PERSLID PRS_P,
PRS_AFDELING PRS_A, prs_v_werkplek_gegevens PRS_W
WHERE PRS_PW.prs_perslid_key = PRS_P.prs_perslid_key
AND PRS_P.prs_afdeling_key = PRS_A.prs_afdeling_key
AND PRS_PW.prs_werkplek_key = PRS_W.prs_werkplek_key
UNION
SELECT PRS_PW.prs_perslidwerkplek_key,
PRS_A.prs_afdeling_key,
PRS_A.prs_afdeling_naam,
PRS_A.prs_afdeling_upper,
PRS_PW.prs_werkplek_key,
PRS_W.prs_werkplek_volgnr,
PRS_W.prs_werkplek_opp,
PRS_W.alg_locatie_key,
PRS_W.alg_gebouw_omschrijving,
PRS_W.alg_gebouw_upper,
PRS_W.alg_verdieping_volgnr,
PRS_W.alg_verdieping_omschrijving,
PRS_W.alg_ruimte_key,
PRS_W.alg_ruimte_nr,
PRS_W.alg_ruimte_upper_nr,
PRS_W.alg_ruimte_bruto_vloeropp
FROM prs_v_aanwezigperslidwerkplek PRS_PW, PRS_AFDELING PRS_A,
prs_v_werkplek_gegevens PRS_W
WHERE PRS_PW.prs_afdeling_key = PRS_A.prs_afdeling_key
AND PRS_PW.prs_werkplek_key = PRS_W.prs_werkplek_key;
CREATE_VIEW(prs_v_ruimte_afdeling ,PRS_NORMAAL_PRIVILEGE)
(prs_afdeling_key,
prs_afdeling_naam,
prs_werkplek_key,
prs_werkplek_opp,
alg_verdieping_key,
alg_verdieping_volgnr,
alg_gebouw_key) AS
SELECT AF.prs_afdeling_key, -- Werkplekken gekoppeld aan personen
AF.prs_afdeling_naam,
PWP.prs_werkplek_key,
(WP.prs_werkplek_opp*PWP.prs_perslidwerkplek_bezetting)/100,
V.alg_verdieping_key,
V.alg_verdieping_volgnr,
V.alg_gebouw_key
FROM prs_v_aanwezigperslidwerkplek PWP, prs_v_werkplek_gegevens WP,
prs_perslid PL, prs_afdeling AF,
alg_ruimte R, alg_verdieping V
WHERE WP.prs_werkplek_key = PWP.prs_werkplek_key
AND PL.prs_perslid_key = PWP.prs_perslid_key
AND PL.prs_afdeling_key = AF.prs_afdeling_key
AND WP.alg_ruimte_key = R.alg_ruimte_key
AND R.alg_verdieping_key = V.alg_verdieping_key
UNION
SELECT AF.prs_afdeling_key, -- Werkplekken gekoppeld aan afdelingen
AF.prs_afdeling_naam,
PWP.prs_werkplek_key,
(WP.prs_werkplek_opp*PWP.prs_perslidwerkplek_bezetting)/100,
V.alg_verdieping_key,
V.alg_verdieping_volgnr,
V.alg_gebouw_key
FROM prs_v_aanwezigperslidwerkplek PWP, prs_v_werkplek_gegevens WP,
prs_afdeling AF, alg_ruimte R, alg_verdieping V
WHERE WP.prs_werkplek_key = PWP.prs_werkplek_key
AND AF.prs_afdeling_key = PWP.prs_afdeling_key
AND WP.alg_ruimte_key = R.alg_ruimte_key
AND R.alg_verdieping_key = V.alg_verdieping_key;
CREATE_VIEW(prs_v_ruimte_afdeling_total,PRS_NORMAAL_PRIVILEGE)
(prs_afdeling_key,
prs_afdeling_naam,
prs_afdeling_opp,
alg_verdieping_key,
alg_gebouw_key) AS
SELECT DISTINCT(RA.prs_afdeling_key),
RA.prs_afdeling_naam,
SUM(RA.prs_werkplek_opp),
RA.alg_verdieping_key,
RA.alg_gebouw_key
FROM prs_v_ruimte_afdeling RA
GROUP BY prs_afdeling_key,
prs_afdeling_naam,
alg_gebouw_key,
alg_verdieping_key,
prs_werkplek_opp;
DEF_FAC_MESSAGE ('MENU_ABB_OFFICESPACE' ,CHR(38)||'Office Space Distribution');
INSERT INTO fac_functie (fac_functie_code, fac_functie_omschrijving,fac_functie_module,fac_functie_min_level) VALUES('SPACE', 'Office Space Distribution', 'PRS', 1);
COMMIT;
CREATE_VIEW (prs_v_perslid_print,PRS_NORMAAL_PRIVILEGE) AS
SELECT PRS_P.prs_perslid_key
,PRS_P.prs_perslid_naam
,PRS_P.prs_perslid_voorletters
,PRS_P.prs_perslid_voornaam
,PRS_P.prs_perslid_initialen
,PRS_P.prs_perslid_nr
,PRS_A.prs_afdeling_naam
,PRS_P.prs_perslid_telefoonnr
,PRS_SP.prs_srtperslid_omschrijving
,PRS_A.prs_afdeling_eenheid
,PRS_A.prs_afdeling_kostenplaats
FROM prs_v_aanwezigperslid PRS_P
,prs_v_aanwezigafdeling PRS_A
,prs_v_aanwezigsrtperslid PRS_SP
WHERE PRS_P.prs_afdeling_key = PRS_A.prs_afdeling_key (+)
AND PRS_SP.prs_srtperslid_key(+) = PRS_P.prs_srtperslid_key;
#endif // PRS
#ifdef RES
CREATE_VIEW(res_v_res_ruimte_gegevens, RES_BIBLIOTHEEK_PRIVILEGE)
( alg_locatie_key
, alg_gebouw_key
, alg_verdieping_key
, res_ruimte_key
, res_ruimte_nr
, res_ruimte_prijs)
AS SELECT DISTINCT ALG_L.alg_locatie_key
, ALG_G.alg_gebouw_key
, ALG_V.alg_verdieping_key
, RES_R.res_ruimte_key
, RES_R.res_ruimte_nr
, RES_R.res_ruimte_prijs
FROM alg_locatie ALG_L
, alg_gebouw ALG_G
, alg_verdieping ALG_V
, alg_v_aanwezigruimte ALG_R
, res_v_aanwezigruimte RES_R
, res_alg_ruimte RES_RA
WHERE RES_R.res_ruimte_key = RES_RA.res_ruimte_key
AND ALG_R.alg_ruimte_key = RES_RA.alg_ruimte_key
AND ALG_R.alg_verdieping_key = ALG_V.alg_verdieping_key
AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key
AND ALG_G.alg_locatie_key = ALG_L.alg_locatie_key;
#endif // RES