Files
Database/_UP/311to312.src
Bert in het Veld f3464ea10a Aanpassingen i.v.m. REServeringen-module
svn path=/Database/trunk/; revision=7294
2000-01-03 08:29:52 +00:00

7735 lines
314 KiB
Plaintext
Raw Blame History

SET TERMOUT ON
SET FEEDBACK OFF
SET ECHO OFF
--
-- Update script van Facilitor 3.0 versie 3.11 naar 3.12
--
/*
* 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.0 versie 03.11 naar 03.12
PROMPT
SELECT 'De huidige versie van Facilitor zou moeten zijn 03.11 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 $311TO312.SQL
PROMPT SPOOL $311TO312.LST;
UPDMOD(FAC,311TO312)
UPDMOD(ALG,311TO312)
UPDMOD(INS,311TO312)
UPDMOD(PRS,311TO312)
UPDMOD(MLD,311TO312)
UPDMOD(CAD,311TO312)
UPDMOD(AKZ,311TO312)
UPDMOD(PRJ,311TO312)
UPDMOD(RES,311TO312)
UPDMOD(SCH,311TO312)
UPDMOD(SLE,311TO312)
UPDATE_VERSION('03.12');
COMMIT;
PROMPT SPOOL OFF;
SPOOL OFF
START $311TO312.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
CREATE_TRIGGER(alg_t_alg_ruimte_B_IU)
BEFORE INSERT OR UPDATE ON alg_ruimte
FOR EACH ROW
BEGIN
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');
#ifdef PRS
/* 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;
#endif
#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
#ifdef PRS
/* 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;
END IF;
#endif
#ifdef INS
SET_VERWIJDER_CHILDREN_DEEL(ins_deel, alg_ruimte_key, alg_ruimte_verwijder, alg_ruimte_getekend,
ins_deel_verwijder, ins_alg_ruimte_key, ins_deel_getekend);
#endif // INS
#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 INS
DROP TRIGGER ins_t_ins_deel_S_B_IU
/
CREATE_TRIGGER(ins_t_ins_deel_S_A_IU)
AFTER UPDATE ON ins_deel
BEGIN
DECLARE
IndexNr NUMBER;
PrimaryKey NUMBER(10);
Dummy BOOLEAN;
lNested NUMBER;
lCount NUMBER;
BEGIN
-- We controleren of we zijn aangeroepen vanuit onszelf. Ook al hebben we daarbij
-- geen keys aan fac_selectie toegevoegd, die van het hoogste niveau staan er, en
-- die moeten we niet weer vanaf nummer 1 gaan behandelen, anders zitten we echt
-- in een oneindige loop.
-- We krijgen hier geen mee, omdat we geen onderdelen van onderdelen kennen.
lNested := fac_p_fac_save_restore.GetPrimaryKey('INS_TRIGGER_BUSY', 1);
IF lNested IS NULL
THEN
IndexNr := 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_VERWIJDER', IndexNr);
WHILE PrimaryKey IS NOT NULL
LOOP
-- Om te voorkomen dat de BEFORE STATEMENT trigger onnodig vuurt, controleren
-- we eerst of het statement wel nodig is, d.i. of er onderdelen zijn die nog
-- verwijderd moeten worden.
-- NB: Van IEDERE discipline, want onderdelen zijn qua autorisatie ondergeschikt
-- aan delen, d.i. diegene die het deel mag verwijderen is de baas.
SELECT COUNT(*)
INTO lCount
FROM ins_deel
WHERE ins_deel.ins_deel_parent_key = PrimaryKey
AND ins_deel.ins_deel_verwijder IS NULL;
IF lCount > 0
THEN
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_TRIGGER_BUSY', 1);
UPDATE ins_deel
SET ins_deel_verwijder = SYSDATE
WHERE ins_deel.ins_deel_parent_key = PrimaryKey
AND ins_deel.ins_deel_verwijder IS NULL;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_TRIGGER_BUSY');
END IF;
IndexNr := IndexNr + 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_VERWIJDER', IndexNr);
END LOOP;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_DEEL_VERWIJDER');
IndexNr := 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_CASCADE', IndexNr);
WHILE PrimaryKey IS NOT NULL
LOOP
-- Om weer te voorkomen dat de BEFORE STATEMENT trigger onnodig vuurt, controleren
-- we eerst of het statement wel nodig is, d.i. of er onderdelen zijn die nog
-- verplaatst moeten worden.
SELECT COUNT(*)
INTO lCount
FROM ins_deel
WHERE ins_deel.ins_deel_parent_key = PrimaryKey
AND ins_deel.ins_deel_verwijder IS NULL;
IF lCount > 0
THEN
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_TRIGGER_BUSY', 1);
UPDATE ins_deel
SET (ins_alg_ruimte_key
, ins_alg_ruimte_type
, ins_alg_locatie_key) = (SELECT ins_alg_ruimte_key
, ins_alg_ruimte_type
, ins_alg_locatie_key
FROM ins_deel
WHERE ins_deel_key = PrimaryKey)
WHERE ins_deel.ins_deel_parent_key = PrimaryKey
AND ins_deel.ins_deel_verwijder IS NULL;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_TRIGGER_BUSY');
END IF;
IndexNr := IndexNr + 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_CASCADE', IndexNr);
END LOOP;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_DEEL_CASCADE');
ELSE
NULL;
END IF; -- lNested
END;
-- Add statements that need execution even when nested here:
--
-- Attentie: Alle koppelingen met delen uit de selectie worden verwijderd. Doordat deze
-- selectie tijdens deze transactie groter kan worden door de bijbehorende onderdelen, wordt
-- mogelijkerwijs vaker ins_p_delete_deelkoppeling() aangeroepen dan strikt nodig is (de reeds
-- aanwezige keys blijven oon staan). Dit is niet echt een probleem in de huidige context, maar
-- kan dat worden als die functie veel tijd kost ook al is er niks te doen.
DECLARE
IndexNr NUMBER;
PrimaryKey NUMBER(10);
Dummy BOOLEAN;
BEGIN
IndexNr := 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_ONTKOPPEL', IndexNr);
WHILE PrimaryKey IS NOT NULL
LOOP
Dummy := ins_p_delete_deelkoppeling(PrimaryKey);
IndexNr := IndexNr + 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_ONTKOPPEL', IndexNr);
END LOOP;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_DEEL_KOPPELING');
END;
END;
/
CREATE_TRIGGER(ins_t_ins_deel_B_IU)
BEFORE INSERT OR UPDATE ON ins_deel
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(ins_deel_key,ins_s_ins_inst_keys);
UPDATE_UPPER(ins_deel_omschrijving,ins_deel_upper);
-- Indien verplaatsing of verwijdering of reincarnatie dan alleen vanuit de
-- CAD-omgeving, d.i. als tegelijk ins_deel_getekend een nieuwe waarde krijgt.
-- Dus een foutmelding als dit niet zo is.
CHECK_CADMUTATIE2(ins_deel_verwijder, ins_deel_getekend, ins_alg_ruimte_key, 'ins_m187');
IF :new.ins_deel_verwijder IS NOT NULL
THEN
DECLARE
Dummy BOOLEAN;
BEGIN
-- Verwijder evt. onderliggende onderdelen alleen als dit geen onderdeel is.
IF :new.ins_deel_parent_key IS NULL
THEN
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_DEEL_VERWIJDER', :new.ins_deel_key);
END IF;
-- Verwijder evt. koppelingen; zowel delen als onderdelen kunnen koppelingen hebben.
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_DEEL_ONTKOPPEL', :new.ins_deel_key);
END;
END IF;
-- Vul het veld INS_DISCIPLINE van het huidige deel.
IF :old.ins_srtdeel_key IS NULL
OR :old.ins_srtdeel_key <> :new.ins_srtdeel_key
OR :old.ins_discipline_key IS NULL
THEN
BEGIN
SELECT INS_D.ins_discipline_key
INTO :new.ins_discipline_key
FROM ins_srtdeel INS_SD
, ins_srtgroep INS_SG
, ins_tab_discipline INS_D
WHERE INS_SD.ins_srtdeel_key = :new.ins_srtdeel_key
AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN :new.ins_discipline_key := NULL;
END;
END IF;
-- Zoek de (redundante) alg_locatie_key erbij indien verplaatst.
IF :old.ins_alg_ruimte_key IS NULL
OR :old.ins_alg_ruimte_key <> :new.ins_alg_ruimte_key
OR :new.ins_alg_locatie_key IS NULL
THEN
BEGIN
SELECT alg_locatie_key
INTO :new.ins_alg_locatie_key
FROM ins_v_alg_overzicht
WHERE alg_onroerendgoed_keys = :new.ins_alg_ruimte_key
AND alg_onroerendgoed_type = :new.ins_alg_ruimte_type;
EXCEPTION
WHEN NO_DATA_FOUND
THEN :new.ins_alg_locatie_key := NULL;
END;
END IF;
/* Bij INS_DEEL in INS-mode moet INS_ALG_RUIMTE_KEY ingevuld zijn
* en wel met ruimte, verdieping, gebouw of terreinsector.
* Daarvoor moet ook het INS_ALG_RUIMTE_TYPE veld goed ingevuld zijn
* (met 'R' of 'V' of 'G' of 'T').
* Dit geldt als INS_ALG_RUIMTE_KEY veranderd is of als er een
* nieuw record geinsert wordt.
*
*
* IN INV-mode hoeft INS_ALG_RUIMTE_KEY niet ingevuld te zijn, maar
* als deze ingevuld is moet INS_ALG_RUIMTE_KEY met ruimte of werkplek
* gevuld zijn, daarvoor moet het veld INS_ALG_RUITMTE_KEY goed
* ingevuld zijn (met 'R' of 'W').
*
* IN INV-mode kan het veld INS_PRS_BEZIT_KEY ook ingevuld zijn, maar
* INS_ALG_RUIMTE_KEY en INS_PRS_BEZIT_KEY kunnen niet beide ingevuld worden.
* INS_PRS_BEZIT_KEY kan de waarde perslid of afdeling bevatten en het
* veld INS_PRS_BEZIT_TYPE moet dan goed ingevuld zijn (met 'P' of 'A').
* AH 05-06-96 Nu kunnen biede velden ingevuld zijn.
*/
IF :new.ins_deel_module = 'INS'
AND (:old.ins_alg_ruimte_key <> :new.ins_alg_ruimte_key
OR :old.ins_alg_ruimte_key IS NULL)
THEN
IF :new.ins_alg_ruimte_type = 'W' /* 990218/BIV - #2251 - Deel kan ook op werkplek worden geplaatst */
THEN
CHECK_KEY_REFERENCE(prs_v_aanwezigwerkplek , prs_werkplek_key , :new.ins_alg_ruimte_key, 'ins_m174');
ELSIF :new.ins_alg_ruimte_type = 'R'
THEN
CHECK_KEY_REFERENCE(alg_v_aanwezigruimte , alg_ruimte_key , :new.ins_alg_ruimte_key, 'ins_m092');
ELSIF :new.ins_alg_ruimte_type = 'T'
THEN
CHECK_KEY_REFERENCE(alg_v_aanwezigterreinsector, alg_terreinsector_key, :new.ins_alg_ruimte_key, 'ins_m095');
ELSE
APPLICATION_ERROR(-20000, 'ins_m84');
END IF;
DECLARE
Dummy BOOLEAN;
BEGIN
-- Alleen bestaande delen hebben mogelijk te verplaatsen onderdelen.
IF :old.ins_deel_aanmaak IS NOT NULL
AND :new.ins_deel_parent_key IS NULL
THEN
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_DEEL_CASCADE', :new.ins_deel_key);
END IF;
END;
END IF;
UPDATE_AANMAAKDATUM(ins_deel, ins_deel_aanmaak);
END;
/
#endif // INS
#ifdef CAD
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 */
SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND UPPER(ins_srtdeel_cadlayer) = UPPER(LayerNaam)
AND UPPER(ins_srtdeel_acadsymbol) = UPPER(BlockNaam)
AND ins_srtdeel_verwijder IS NULL;
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 UPPER(ins_srtdeel_acadsymbol) = UPPER(BlockNaam)
AND ins_srtdeel_verwijder IS NULL;
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 UPPER(ins_srtdeel_cadlayer) = UPPER(LayerNaam)
AND ins_srtdeel_verwijder IS NULL;
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 UPPER(ins_srtdeel_cadlayer) = UPPER(LayerNaam)
AND ins_srtdeel_verwijder IS NULL;
-- SM44 Fix #79 AND UPPER(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 PRJ
CREATE OR REPLACE PACKAGE prj AS
FUNCTION prj_f_fac_get_description (LPNName IN VARCHAR2
,CondKey IN NUMBER
,ProjectKey IN NUMBER
,Prefix IN VARCHAR2
,PrefixKey IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_f_deel_get_locatie (p_project IN NUMBER
,p_deel IN NUMBER) RETURN NUMBER;
FUNCTION cad_f_deel_get_verdieping (p_project IN NUMBER
,p_deel IN NUMBER) RETURN NUMBER;
FUNCTION cad_f_deel_get_discipline (p_project IN NUMBER
,p_deel IN NUMBER) RETURN NUMBER;
FUNCTION cad_f_deel_get_tekeningnaam (p_project IN NUMBER
,p_deel IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_f_ruimte_get_tekeningnaam (p_project IN NUMBER
,p_ruimte IN NUMBER) RETURN VARCHAR2;
PROCEDURE cad_SLNKpostDraw (Session_Id IN NUMBER);
PROCEDURE cad_SLNKpostErase (Session_Id IN NUMBER);
PROCEDURE cad_SLNKpostModify (Session_Id IN NUMBER);
PROCEDURE cad_SLNKPreDraw (Session_Id IN NUMBER);
PROCEDURE cad_SLNKPrePostDraw (Session_Id IN NUMBER);
PROCEDURE cad_SLNKDelenbijWerkplek (Session_Id IN NUMBER);
PROCEDURE cad_SLNKgetBinnenBuiten (Session_Id NUMBER
,LoadDwg VARCHAR2);
FUNCTION cad_getDisciplinetekening (LocatieKey IN NUMBER
,ProjectKey IN NUMBER
,VerdiepingKey IN NUMBER
,DisciplineKey IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_getPlattegrondtekening (LocatieKey IN NUMBER
,ProjectKey IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_getContourtekening (LocatieKey IN NUMBER
,ProjectKey IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_getVerdiepPlgrnd_tekening (LocatieKey IN NUMBER
,ProjectKey IN NUMBER
,VerdiepingKey IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_getVerdiepCntr_tekening (LocatieKey IN NUMBER
,ProjectKey IN NUMBER
,VerdiepingKey IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_getVerhuisTekening (ProjectKey IN NUMBER) RETURN VARCHAR2;
PROCEDURE cad_getVerhuisTekening2 (Session_Id IN NUMBER
,ProjectKey IN NUMBER);
FUNCTION cad_getProjectCode_Tekening (TekeningNaam IN VARCHAR2) RETURN VARCHAR2;
FUNCTION cad_GetSrcDwgOfEntity (Session_Id IN NUMBER
,LPNAlias IN VARCHAR2
,LPNKey IN NUMBER) RETURN VARCHAR2;
PROCEDURE cad_GetSrcDwgOfEntity2 (Session_Id IN NUMBER
,LPNAliasINSO IN VARCHAR2
,LPNKeyINSO IN NUMBER);
PROCEDURE verwerk_log_clear (sessionID IN NUMBER
,ProjectKey IN NUMBER);
PROCEDURE verwerk_log (logmelding IN VARCHAR
,sessionID IN NUMBER
,ProjectKey IN NUMBER);
PROCEDURE verwerk_project (sessionID IN NUMBER
,ProjectKey IN NUMBER
,MergeTekening IN BOOLEAN);
/* 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_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_getProjectCode_Tekening, WNDS, WNPS);
END prj;
/
CREATE OR REPLACE PACKAGE BODY prj AS
/* prj.prj_f_fac_get_description
**
** Maak een default omschrijving voor ruimte, werkplek of deel aan de hand van prj-tabellen.
** Deze functie wordt ook gebruikt bij het verwerken van de project-gegevens. Daar moet WEL gecontroleerd worden
** of de labels en volgnummers in de gewone tabellen al bestaan.
*/
FUNCTION PRJ_F_FAC_GET_DESCRIPTION(LPNName IN VARCHAR2
,CondKey IN NUMBER
,ProjectKey IN NUMBER
,Prefix IN VARCHAR2
,PrefixKey IN NUMBER) RETURN VARCHAR2 IS
NextVolgNr VARCHAR2(30);
NextVolgNr1 VARCHAR2(10);
NextVolgNr2 VARCHAR2(10);
ReturnString VARCHAR2(30);
BEGIN
IF LPNName = 'LPN_INS_DEEL'
THEN
FOR i IN 3..10
LOOP
/* Bepaal het hoogste volgnummer voor het deel in dit project. */
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_omschrijving,LENGTH(ins_deel_omschrijving)-(i-1)))+1)), '***')
INTO NextVolgNr1
FROM prj_v_aanwezigdeel
WHERE LTRIM(SUBSTR(ins_deel_omschrijving, LENGTH(ins_deel_omschrijving)-(i-1)))
BETWEEN '0' AND LPAD('9',i,'9')
AND LENGTH(ins_deel_omschrijving) <= LENGTH(Prefix)+i
AND ins_alg_locatie_key = CondKey
AND prj_project_key = ProjectKey
AND ins_srtdeel_key = PrefixKey
AND ins_deel_omschrijving LIKE Prefix ||'%';
/* Bepaal het hoogste volgnummer voor deel in de gewone tekening. */
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_omschrijving,LENGTH(ins_deel_omschrijving)-(i-1)))+1)), '***')
INTO NextVolgNr2
FROM all_v_aanwezigdeel
WHERE LTRIM(SUBSTR(ins_deel_omschrijving, LENGTH(ins_deel_omschrijving)-(i-1)))
BETWEEN '0' AND LPAD('9',i,'9')
AND LENGTH(ins_deel_omschrijving) <= LENGTH(Prefix)+i
AND ins_alg_locatie_key = CondKey
AND ins_srtdeel_key = PrefixKey
AND ins_deel_omschrijving LIKE Prefix ||'%';
/* Neem de hoogste waarde van beide volgnummers. */
IF NextVolgNr1 = '***' AND NextVolgNr2 = '***'
THEN
NextVolgNr := '***';
ELSIF NextVolgNr1 = '***' AND NextVolgNr2 <> '***'
THEN
NextVolgNr := NextVolgNr2;
ELSIF NextVolgNr2 = '***' AND NextVolgNr1 <> '***'
THEN
NextVolgNr := NextVolgNr1;
ELSE
IF TO_NUMBER(NextVolgNr1) > TO_NUMBER(NextVolgNr2)
THEN
NextVolgNr := NextVolgNr1;
ELSE
NextVolgNr := NextVolgNr2;
END IF;
END IF;
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_INS_ONDERDEEL'
THEN
FOR i IN 3..10
LOOP
/* Bepaal het hoogste volgnummer voor het onderdeel in dit project. */
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_omschrijving,LENGTH(ins_deel_omschrijving)-(i-1)))+1)), '***')
INTO NextVolgNr1
FROM prj_deel
WHERE LTRIM(SUBSTR(ins_deel_omschrijving,LENGTH(ins_deel_omschrijving)-(i-1)))
BETWEEN '0' AND LPAD('9',i,'9')
AND ins_alg_locatie_key = CondKey
AND prj_project_key = ProjectKey
AND ins_srtdeel_key = PrefixKey
AND LENGTH(ins_deel_omschrijving) <= LENGTH(Prefix)+i
AND ins_deel_verwijder IS NULL
AND ins_deel_parent_key IS NOT NULL
AND ins_deel_omschrijving LIKE Prefix ||'%';
/* Bepaal het hoogste volgnummer voor deel in de gewone tekening. */
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(ins_deel_omschrijving,LENGTH(ins_deel_omschrijving)-(i-1)))+1)), '***')
INTO NextVolgNr2
FROM ins_deel
WHERE LTRIM(SUBSTR(ins_deel_omschrijving,LENGTH(ins_deel_omschrijving)-(i-1)))
BETWEEN '0' AND LPAD('9',i,'9')
AND ins_alg_locatie_key = CondKey
AND ins_srtdeel_key = PrefixKey
AND LENGTH(ins_deel_omschrijving) <= LENGTH(Prefix)+i
AND ins_deel_verwijder IS NULL
AND ins_deel_parent_key IS NOT NULL
AND ins_deel_omschrijving LIKE Prefix ||'%';
/* Neem de hoogste waarde van beide volgnummers. */
IF NextVolgNr1 = '***' AND NextVolgNr2 = '***'
THEN
NextVolgNr := '***';
ELSIF NextVolgNr1 = '***' AND NextVolgNr2 <> '***'
THEN
NextVolgNr := NextVolgNr2;
ELSIF NextVolgNr2 = '***' AND NextVolgNr1 <> '***'
THEN
NextVolgNr := NextVolgNr1;
ELSE
IF TO_NUMBER(NextVolgNr1) > TO_NUMBER(NextVolgNr2)
THEN
NextVolgNr := NextVolgNr1;
ELSE
NextVolgNr := NextVolgNr2;
END IF;
END IF;
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
/* Bepaal het hoogste volgnummer van ruimte in dit project. */
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(alg_ruimte_nr, LENGTH(alg_ruimte_nr)-(i-1)))+1)), '***')
INTO NextVolgNr1
FROM prj_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 prj_project_key = ProjectKey
AND LENGTH(alg_ruimte_nr) <= i;
/* Bepaal het hoogste volgnummer van ruimte in de gewone tekening. */
SELECT NVL(TO_CHAR(MAX(TO_NUMBER(SUBSTR(alg_ruimte_nr, LENGTH(alg_ruimte_nr)-(i-1)))+1)), '***')
INTO NextVolgNr2
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;
/* Neem de hoogste waarde van beide volgnummers. */
IF NextVolgNr1 = '***' AND NextVolgNr2 = '***'
THEN
NextVolgNr := '***';
ELSIF NextVolgNr1 = '***' AND NextVolgNr2 <> '***'
THEN
NextVolgNr := NextVolgNr2;
ELSIF NextVolgNr2 = '***' AND NextVolgNr1 <> '***'
THEN
NextVolgNr := NextVolgNr1;
ELSE
IF TO_NUMBER(NextVolgNr1) > TO_NUMBER(NextVolgNr2)
THEN
NextVolgNr := NextVolgNr1;
ELSE
NextVolgNr := NextVolgNr2;
END IF;
END IF;
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
/* Bepaal het volgnummer v/d toe te voegen werkplek */
BEGIN
/* Bepaal eerst het hoogste volgnummer van werkplek in dit project. */
SELECT TO_CHAR(NVL(MAX(prs_werkplek_volgnr),0) + 1)
INTO NextVolgNr1
FROM prj_werkplek
WHERE prs_alg_ruimte_key = CondKey
AND prj_project_key = ProjectKey
AND prs_werkplek_verwijder IS NULL;
NextVolgNr := NextVolgNr1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN NextVolgNr := '1';
END;
/* Omschrijving */
BEGIN
SELECT substr(alg_ruimte_nr ||' - '|| NextVolgNr,1,30)
INTO NextVolgNr
FROM prj_ruimte
WHERE alg_ruimte_key = CondKey
AND prj_project_key = ProjectKey;
EXCEPTION
WHEN OTHERS
THEN NULL;
END;
END IF;
ReturnString := substr(Prefix || NextVolgNr,1,30);
RETURN ReturnString;
END prj_f_fac_get_description;
/* prj.cad_f_deel_get_locatie
**
** Haal de locatie key op aan de hand van de project- en object-key.
*/
FUNCTION cad_f_deel_get_locatie(p_project IN NUMBER
,p_deel IN NUMBER) RETURN NUMBER IS
locatie_key NUMBER(10);
BEGIN
BEGIN
SELECT ins_alg_locatie_key
INTO locatie_key
FROM prj_deel
WHERE ins_deel_verwijder IS NULL
AND prj_project_key = p_project
AND ins_deel_key = p_deel;
EXCEPTION
WHEN NO_DATA_FOUND
THEN locatie_key := NULL;
END;
RETURN locatie_key;
END cad_f_deel_get_locatie;
/* prj.cad_f_deel_get_verdieping
**
** Haal de verdieping key op aan de hand van de project- en object-key.
*/
FUNCTION cad_f_deel_get_verdieping(p_project IN NUMBER
,p_deel IN NUMBER) RETURN NUMBER IS
verdieping_key NUMBER(10);
BEGIN
BEGIN
SELECT alg_verdieping_key
INTO verdieping_key
FROM prj_ruimte
WHERE alg_ruimte_key = (SELECT R.alg_ruimte_key
FROM prj_deel D
, prj_ruimte R
WHERE D.ins_alg_ruimte_key = R.alg_ruimte_key
AND D.ins_alg_ruimte_type = 'R'
AND D.ins_deel_key = p_deel
AND D.prj_project_key = p_project
AND R.prj_project_key = p_project
AND R.alg_ruimte_verwijder IS NULL
AND D.ins_deel_verwijder IS NULL
UNION
SELECT W.prs_alg_ruimte_key
FROM prj_deel D
, prj_werkplek W
WHERE D.ins_alg_ruimte_key = W.prs_werkplek_key
AND D.ins_alg_ruimte_type = 'W'
AND D.ins_deel_key = p_deel
AND D.prj_project_key = p_project
AND W.prj_project_key = p_project
AND W.prs_werkplek_verwijder IS NULL
AND D.ins_deel_verwijder IS NULL
)
AND prj_project_key = p_project
AND alg_ruimte_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN verdieping_key := null;
END;
RETURN verdieping_key;
END cad_f_deel_get_verdieping;
/* prj.cad_f_deel_get_discipline
**
** Haal de discipline key op aan de hand van de project- en object-key.
*/
FUNCTION cad_f_deel_get_discipline(p_project IN NUMBER
,p_deel IN NUMBER) RETURN NUMBER IS
discipline_key NUMBER(10);
BEGIN
BEGIN
SELECT ins_discipline_key
INTO discipline_key
FROM prj_deel
WHERE ins_deel_verwijder IS NULL
AND prj_project_key = p_project
AND ins_deel_key = p_deel;
EXCEPTION
WHEN NO_DATA_FOUND
THEN discipline_key := NULL;
END;
RETURN discipline_key;
END cad_f_deel_get_discipline;
/* prj.cad_f_deel_get_tekeningnaam
**
** Haal de tekeningnaam aan de hand van project- en object-key.
*/
FUNCTION cad_f_deel_get_tekeningnaam(p_project IN NUMBER
,p_deel IN NUMBER) RETURN VARCHAR2 IS
tekeningnaam VARCHAR2(256);
locatie_key NUMBER(10);
verdieping_key NUMBER(10);
discipline_key NUMBER(10);
BEGIN
locatie_key := prj.cad_f_deel_get_locatie(p_project,p_deel);
verdieping_key := prj.cad_f_deel_get_verdieping(p_project,p_deel);
discipline_key := prj.cad_f_deel_get_discipline(p_project,p_deel);
IF (locatie_key IS NOT NULL AND
discipline_key IS NOT NULL)
THEN
IF verdieping_key IS NOT NULL
THEN
IF verdieping_key = 0
THEN
tekeningnaam := cad_getVerhuisTekening(p_project);
ELSE
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_tekening
WHERE alg_locatie_key = locatie_key
AND alg_verdieping_key = verdieping_key
AND ins_discipline_key = discipline_key
AND prj_project_key IS NOT NULL
AND prj_project_key = p_project;
EXCEPTION
WHEN NO_DATA_FOUND
THEN tekeningnaam := NULL;
END;
END IF;
ELSE
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_tekening
WHERE alg_locatie_key = locatie_key
AND alg_verdieping_key IS NULL
AND ins_discipline_key = discipline_key
AND prj_project_key IS NOT NULL
AND prj_project_key = p_project;
EXCEPTION
WHEN NO_DATA_FOUND
THEN tekeningnaam := NULL;
END;
END IF;
ELSE
tekeningnaam := NULL;
END IF;
RETURN tekeningnaam;
END cad_f_deel_get_tekeningnaam;
/* prj.cad_f_ruimte_get_tekeningnaam
**
** Haal de tekeningnaam aan de hand van project- en ruimte-key.
*/
FUNCTION cad_f_ruimte_get_tekeningnaam(p_project IN NUMBER
,p_ruimte IN NUMBER) RETURN VARCHAR2 IS
tekeningnaam VARCHAR2(256);
locatie_key NUMBER(10);
verdieping_key NUMBER(10);
BEGIN
BEGIN
SELECT P.prj_project_locatie_key
, R.alg_verdieping_key
INTO locatie_key
, verdieping_key
FROM prj_ruimte R
, prj_project P
WHERE R.prj_project_key = P.prj_project_key
AND R.alg_ruimte_verwijder IS NULL
AND R.alg_ruimte_key = p_ruimte
AND R.prj_project_key = p_project;
EXCEPTION
WHEN NO_DATA_FOUND
THEN locatie_key := NULL;
verdieping_key := NULL;
END;
IF (locatie_key IS NOT NULL AND
verdieping_key IS NOT NULL)
THEN
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM prj_v_contour
WHERE alg_locatie_key = locatie_key
AND alg_verdieping_key = verdieping_key
AND prj_project_key = p_project;
EXCEPTION
WHEN NO_DATA_FOUND
THEN tekeningnaam := NULL;
END;
ELSE
tekeningnaam := NULL;
END IF;
RETURN tekeningnaam;
END cad_f_ruimte_get_tekeningnaam;
/* prj.bepaal_projectcode
**
** Haal de projectcode op aan de hand van de project-key.
*/
FUNCTION Bepaal_projectcode(project_key IN NUMBER) RETURN VARCHAR2 IS
project_code VARCHAR2(8);
BEGIN
BEGIN
SELECT prj_project_nr
INTO project_code
FROM prj_project
WHERE prj_project_key = project_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN project_code := NULL;
END;
RETURN project_code;
END Bepaal_projectcode;
/* prj.cad_getProjectCode_Tekening
**
** Haal de projectcode op aan de hand van de tekeningnaam.
*/
FUNCTION cad_getProjectCode_Tekening(Tekeningnaam IN VARCHAR2) RETURN VARCHAR2 IS
SlashPositie NUMBER(2);
ProjectCode VARCHAR2(25);
BEGIN
SlashPositie := INSTR(TekeningNaam,'\');
ProjectCode := SUBSTR(TekeningNaam,1, SlashPositie-1);
RETURN ProjectCode;
END cad_getProjectCode_Tekening;
/* prj.cad_getDisciplinetekening
**
** Stel het pad\tekeningnaam vast van de disciplinetekening op de aangegeven afdeling.
*/
FUNCTION cad_getDisciplinetekening(Locatiekey IN NUMBER
,Projectkey IN NUMBER
,Verdiepingkey IN NUMBER
,Disciplinekey IN NUMBER) RETURN VARCHAR2 IS
project_code VARCHAR2(8);
disciplinetekening VARCHAR2(256);
BEGIN
BEGIN
project_code := prj.bepaal_projectcode(Projectkey);
SELECT substr(project_code ||'\'|| cad_tekening_filenaam,1,256)
INTO disciplinetekening
FROM prj_v_discipline
WHERE alg_locatie_key = Locatiekey
AND alg_verdieping_key = Verdiepingkey
AND ins_discipline_key = Disciplinekey
AND prj_project_key = Projectkey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN disciplinetekening := NULL;
END;
RETURN disciplinetekening;
END cad_getDisciplinetekening;
/* prj.cad_getPlattegrondtekening
**
** Stel het pad\tekeningnaam vast van de plattegrondtekening van de terreinsector.
*/
FUNCTION cad_getPlattegrondtekening(Locatiekey IN NUMBER
,Projectkey IN NUMBER) RETURN VARCHAR2 IS
project_code VARCHAR2(8);
plattegrondtekening VARCHAR2(256);
BEGIN
BEGIN
project_code := prj.bepaal_projectcode(Projectkey);
SELECT substr(project_code ||'\'|| cad_tekening_filenaam,1,256)
INTO plattegrondtekening
FROM prj_v_plattegrond
WHERE alg_locatie_key = Locatiekey
AND prj_project_key = Projectkey
AND alg_verdieping_key IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN plattegrondtekening := NULL;
END;
RETURN plattegrondtekening;
END cad_getPlattegrondtekening;
/* prj.cad_getVerdiepPlgrnd_tekening
**
** Stel het pad\tekeningnaam vast van de plattegrondtekening van de verdieping.
*/
FUNCTION cad_getVerdiepPlgrnd_tekening(Locatiekey IN NUMBER
,Projectkey IN NUMBER
,Verdiepingkey IN NUMBER) RETURN VARCHAR2 IS
project_code VARCHAR2(8);
Plattegrondtekening VARCHAR2(256);
BEGIN
BEGIN
project_code := prj.bepaal_projectcode(Projectkey);
SELECT substr(project_code ||'\'|| cad_tekening_filenaam,1,256)
INTO plattegrondtekening
FROM prj_v_plattegrond
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key = Verdiepingkey
AND prj_project_key = Projectkey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN plattegrondtekening := NULL;
END;
RETURN plattegrondtekening;
END cad_getVerdiepPlgrnd_tekening;
/* prj.cad_getContourtekening
**
** Stel het pad\tekeningnaam vast van de contourtekening van de terreinsector.
*/
FUNCTION cad_getContourtekening(Locatiekey IN NUMBER
,Projectkey IN NUMBER) RETURN VARCHAR2 IS
project_code VARCHAR2(8);
contourtekening VARCHAR2(256);
BEGIN
BEGIN
project_code := prj.bepaal_projectcode(Projectkey);
SELECT substr(project_code ||'\'|| cad_tekening_filenaam,1,256)
INTO contourtekening
FROM prj_v_contour
WHERE alg_locatie_key = Locatiekey
AND prj_project_key = Projectkey
AND alg_verdieping_key IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN contourtekening := NULL;
END;
RETURN contourtekening;
END cad_getContourtekening;
/* prj.cad_getVerdiepCntr_tekening
**
** Stel het pad\tekeningnaam vast van de contourtekening van de verdieping.
*/
FUNCTION cad_getVerdiepCntr_tekening(Locatiekey IN NUMBER
,Projectkey IN NUMBER
,Verdiepingkey IN NUMBER) RETURN VARCHAR2 IS
project_code VARCHAR2(8);
contourtekening VARCHAR2(256);
BEGIN
BEGIN
project_code := prj.bepaal_projectcode(Projectkey);
SELECT substr(project_code ||'\'||cad_tekening_filenaam,1,256)
INTO contourtekening
FROM prj_v_contour
WHERE alg_locatie_key = LocatieKey
AND alg_verdieping_key = Verdiepingkey
AND prj_project_key = Projectkey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN contourtekening := NULL;
END;
RETURN contourtekening;
END cad_getVerdiepCntr_tekening;
/* prj.cad_getverhuistekening
**
** Stel het pad\tekeningnaam vast van de verhuistekening.
*/
FUNCTION cad_getVerhuisTekening(Projectkey IN NUMBER) RETURN VARCHAR2 IS
project_code VARCHAR2(8);
verhuistekening VARCHAR2(256);
BEGIN
BEGIN
project_code := prj.bepaal_projectcode(Projectkey);
SELECT substr(project_code ||'\'|| cad_tekening_filenaam,1,256)
INTO verhuistekening
FROM prj_v_verhuis
WHERE prj_project_key = Projectkey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN verhuistekening := NULL;
END;
RETURN verhuistekening;
END cad_getVerhuisTekening;
/* prj.cad_getverhuistekening2
**
** Aanroep van de gelijknamige functie en vervolgens het resultaat (de naam van
** de verhuistekening) in SLNKSTRUCT zet.
*/
PROCEDURE cad_GetVerhuisTekening2(Session_Id IN NUMBER
,ProjectKey IN NUMBER) IS
srcdwg VARCHAR2(256);
BEGIN
srcdwg := cad_GetVerhuisTekening(ProjectKey);
cad.cad_slnkstructinsertvalstr(Session_Id, 'INFOS', 1, srcdwg , 1);
cad.cad_slnkstructinsertvalstr(Session_Id, 'SYNC' , 1, 'AUTOCAD', 1);
END cad_GetVerhuisTekening2;
/* prj.cad_SLNKgetBinnenBuiten
**
** Geef aan CAD_SLNK door of het een plattegrondtekening voor
** terreinsector of een verdieping betreft, aan de hand van de LoadDwg.
*/
PROCEDURE cad_SLNKgetBinnenBuiten(Session_Id IN NUMBER
,LoadDwg IN VARCHAR2) IS
TekeningNaam VARCHAR2(256);
LocatieCode VARCHAR2(5);
ProjectCode VARCHAR2(8);
LocatieKey NUMBER(10);
ProjectKey NUMBER(10);
VerdiepingKey NUMBER(10);
Plaats NUMBER(1);
BEGIN
TekeningNaam := cad.cad_getTekeningNaam_LoadDwg(LoadDwg);
ProjectCode := prj.cad_getProjectCode_Tekening(LoadDwg);
SELECT prj_project_key
, prj_project_locatie_key
INTO ProjectKey
, LocatieKey
FROM prj_project
WHERE prj_project_nr = ProjectCode;
BEGIN
SELECT alg_verdieping_key
INTO VerdiepingKey
FROM prj_v_plattegrond
WHERE alg_locatie_key = LocatieKey
AND prj_project_key = ProjectKey
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.cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, Plaats , 1);
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC' , 1, 'AUTOCAD', 1);
END cad_SLNKgetBinnenBuiten;
/* prj.CheckLPNCondKey
**
** Kijk of de key voor terreinsector, ruimte of werkplek bestaat in de
** werkomgeving of projectomgeving.
*/
FUNCTION CheckLPNCondKey(LPNCondName IN VARCHAR2
,LPNCondKey IN NUMBER
,LPNCondProj IN NUMBER) RETURN BOOLEAN IS
Dummy NUMBER(10);
ReturnVal BOOLEAN;
BEGIN
IF LPNCondName = 'LPN_ALG_TERREINSECTOR'
THEN
BEGIN
SELECT alg_terreinsector_key
INTO Dummy
FROM alg_v_aanwezigterreinsector
WHERE alg_terreinsector_key = LPNCondKey;
ReturnVal := TRUE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN ReturnVal := FALSE;
END;
ELSIF LPNCondName = 'LPN_ALG_RUIMTE'
THEN
BEGIN
SELECT alg_ruimte_key
INTO Dummy
FROM alg_v_aanwezigruimte
WHERE alg_ruimte_key = LPNCondKey;
ReturnVal := TRUE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
SELECT alg_ruimte_key
INTO Dummy
FROM prj_v_aanwezigruimte
WHERE alg_ruimte_key = LPNCondKey
AND prj_project_key = LPNCondProj;
ReturnVal := TRUE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN ReturnVal := FALSE;
END;
END;
ELSIF LPNCondName = 'LPN_PRS_WERKPLEK'
THEN
BEGIN
SELECT prs_werkplek_key
INTO Dummy
FROM prs_v_aanwezigwerkplek
WHERE prs_werkplek_key = LPNCondKey;
ReturnVal := TRUE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
SELECT prs_werkplek_key
INTO Dummy
FROM prj_v_aanwezigwerkplek
WHERE prs_werkplek_key = LPNCondKey
AND prj_project_key = LPNCondProj;
ReturnVal := TRUE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN ReturnVal := FALSE;
END;
END;
ELSE
ReturnVal := FALSE;
END IF;
RETURN ReturnVal;
END CheckLPNCondKey;
/* prj.adddeel
**
** Voeg een object in de projectomgeving toe.
*/
FUNCTION AddDeel(Session_Id IN NUMBER
,SrtdeelKey IN NUMBER
,LPNCondName IN VARCHAR2
,LPNCondKey IN NUMBER
,LPNProjectKey IN NUMBER) RETURN NUMBER IS
Plaatsdeel ins_deel.ins_alg_ruimte_type%TYPE;
ProjectCode prj_project.prj_project_nr%TYPE;
LocatieKey alg_locatie.alg_locatie_key%TYPE;
DisciplineKey ins_discipline.ins_discipline_key%TYPE;
SrtDeelCode ins_srtdeel.ins_srtdeel_code%TYPE;
Omschrijving VARCHAR2(30);
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Dummy NUMBER(10);
LabelSymbool VARCHAR2(256);
LabelOK BOOLEAN;
BEGIN
BEGIN
SELECT prj_project_locatie_key
, prj_project_nr
INTO LocatieKey
, ProjectCode
FROM prj_project
WHERE prj_project_key = LPNProjectKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN LocatieKey := NULL;
ProjectCode := NULL;
END;
BEGIN
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);
EXCEPTION
WHEN NO_DATA_FOUND
THEN DisciplineKey := NULL;
END;
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;
/* Lees de in de tekening opgegeven label in en kijk of deze al bestaat. */
LabelSymbool := cad.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 prj_deel
WHERE upper(ins_deel_omschrijving) = LabelSymbool
AND ins_deel_verwijder IS NULL
AND prj_project_key = LPNProjectKey;
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN LabelOK := TRUE;
Omschrijving := LabelSymbool;
END;
ELSE
LabelOK := FALSE;
END IF;
IF NOT LabelOK
THEN
/* De opgegeven label bestaat al. Bepaal daarom een nieuwe label. */
SELECT RTRIM(ins_srtdeel_code_upper)
INTO SrtDeelCode
FROM ins_srtdeel
WHERE ins_srtdeel_key = SrtdeelKey;
Omschrijving := prj.prj_f_fac_get_description('LPN_INS_DEEL', LocatieKey, LPNProjectKey, SrtDeelCode, SrtdeelKey);
END IF;
/* Voeg het nieuwe deel toe. */
INSERT INTO prj_deel
( prj_project_key
, ins_srtdeel_key
, ins_alg_ruimte_key
, ins_alg_ruimte_type
, ins_alg_locatie_key
, ins_discipline_key
, ins_deel_omschrijving)
VALUES(LPNProjectKey
, SrtdeelKey
, LPNCondKey
, PlaatsDeel
, LocatieKey
, DisciplineKey
, Omschrijving);
COMMIT;
/* Haal de zojuist gegenereerde key voor prj_deel op. */
BEGIN
SELECT ins_deel_key
INTO LPNKey
FROM prj_deel
WHERE ins_srtdeel_key = SrtdeelKey
AND ins_deel_omschrijving = omschrijving
AND ins_alg_ruimte_key = LPNCondKey
AND ins_alg_ruimte_type = PlaatsDeel
AND ins_deel_verwijder IS NULL
AND prj_project_key = LPNProjectKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN LPNKey := NULL;
END;
RETURN LPNKey;
END AddDeel;
/* prj.cad_GetSrcDwgOfEntity
**
** Bepaal de pad\tekeningnaam die behoort bij object, werkplek, ruimte,
** gebouw of terreinsector
*/
FUNCTION cad_GetSrcDwgOfEntity(Session_Id IN NUMBER
,LPNAlias IN VARCHAR2
,LPNKey IN NUMBER) RETURN VARCHAR2 IS
LPNAliasCond cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKEYCond cad_slnkstruct.cad_slnkstruct_valint%TYPE;
ProjectKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
SrcDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LocatieKey alg_locatie.alg_locatie_key%TYPE;
ProjectCode prj_project.prj_project_nr%TYPE;
VerdiepingKey alg_verdieping.alg_verdieping_key%TYPE;
RuimteKey alg_ruimte.alg_ruimte_key%TYPE;
BEGIN
LPNAliasCond := cad.cad_SLNKSTRUCTreadVALSTR(Session_Id,'LPNALIASCONDO');
LPNKeyCond := cad.cad_SLNKSTRUCTreadVALINT(session_id,'LPNKEYCONDO');
ProjectKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id,'PROJECTKEY');
IF ((LPNAliasCond = 'LPN_ALG_RUIMTE') AND (LPNKeyCond = 0))
THEN
SrcDwg := prj.cad_getVerhuisTekening(ProjectKey);
ELSE
SELECT prj_project_locatie_key
, prj_project_nr
INTO LocatieKey
, ProjectCode
FROM prj_project
WHERE prj_project_key = ProjectKey;
IF LPNAlias = 'LPN_INS_DEEL'
THEN
BEGIN
SELECT ins_alg_ruimte_key
INTO RuimteKey
FROM prj_deel
WHERE ins_deel_key = LPNKey
AND prj_project_key = ProjectKey;
IF RuimteKey = 0
THEN
SrcDwg := prj.cad_getVerhuisTekening(ProjectKey);
ELSE
/* Bepaal Disciplinetekening */
SrcDwg := substr(ProjectCode ||'\'|| prj.cad_f_deel_get_tekeningnaam(ProjectKey,LPNKey),1,256);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN SrcDwg := NULL;
END;
ELSIF LPNAlias = 'LPN_ALG_RUIMTE'
THEN
BEGIN
SELECT alg_verdieping_key
INTO VerdiepingKey
FROM prj_ruimte
WHERE alg_ruimte_verwijder IS NULL
AND prj_project_key = ProjectKey
AND alg_ruimte_key = LPNKey;
IF VerdiepingKey IS NULL
THEN
SrcDwg := prj.cad_getVerhuisTekening(ProjectKey);
ELSE
SrcDwg := prj.cad_getVerdiepCntr_tekening(Locatiekey,ProjectKey,Verdiepingkey);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN SrcDwg := NULL;
END;
ELSIF LPNAlias = 'LPN_PRS_WERKPLEK'
THEN
/* Contourtekening verdieping */
BEGIN
SELECT alg_verdieping_key
INTO VerdiepingKey
FROM prj_ruimte
WHERE alg_ruimte_verwijder IS NULL
AND prj_project_key = ProjectKey
AND alg_ruimte_key = (SELECT prs_alg_ruimte_key
FROM prj_werkplek
WHERE prs_werkplek_key = LPNKey
AND prj_project_key = ProjectKey);
IF VerdiepingKey IS NULL
THEN
SrcDwg := prj.cad_getVerhuisTekening(ProjectKey);
ELSE
SrcDwg := prj.cad_getVerdiepCntr_tekening(LocatieKey,ProjectKey,VerdiepingKey);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN SrcDwg := NULL;
END;
ELSE
/* Komt hier in de toekomst een ERROR-melding ? */
SrcDwg := NULL;
END IF;
END IF;
RETURN SrcDwg;
END cad_GetSrcDwgOfEntity;
/* prj.cad_GetSrcDwgOfEntity2
**
** Roep de functie cad_GetSrcDwgOfEntity aan voor LNP_INS_DEEL, LPN_ALG_TERREINSECTOR, LPN_ALG_GEBOUW,
** LPN_ALG_RUIMTE of LPN_PRS_WERKPLEK.
** Hiermee kan de functionaliteit met zowel een functie als een procedure gebruikt worden.
*/
PROCEDURE cad_GetSrcDwgOfEntity2(Session_Id IN NUMBER
,LPNAliasINSO IN VARCHAR2
,LPNKeyINSO IN NUMBER) IS
SrcDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
BEGIN
SrcDwg := prj.cad_GetSrcDwgOfEntity(Session_Id,LPNAliasINSO,LPNKeyINSO);
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'INFOS', 1, srcdwg , 1);
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC' , 1, 'AUTOCAD', 1);
END cad_GetSrcDwgOfEntity2;
/* prj.cad_SLNKPreDraw
**
*/
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;
LPNProjectKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
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;
projectcode prj_project.prj_project_nr%TYPE;
Subloc_Code alg_terreinsector.alg_terreinsector_code%TYPE;
RuimteNr prj_ruimte.alg_ruimte_nr%TYPE;
WerkplekNr prj_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 prj_deel.ins_alg_ruimte_type%TYPE;
KeyDeel prj_deel.ins_alg_ruimte_key%TYPE;
Omschrijving VARCHAR2(30);
SrtTekening VARCHAR2(20);
BEGIN
LPNName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASPREDRAW');
LPNKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYPREDRAW');
SeqNr := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'SEQNR');
LPNProjectKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'PROJECTKEY');
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 prj_deel
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
/* 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
, ins_alg_ruimte_key
INTO PlaatsDeel
, KeyDeel
FROM prj_deel
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
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 prj_werkplek
WHERE prs_werkplek_key = KeyDeel
AND prj_project_key = LPNProjectKey;
ELSE
LPNKeyCond := KeyDeel;
END IF;
cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1);
SELECT ins_alg_locatie_key
INTO LocatieKey
FROM prj_deel
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
Locatiecode := cad.bepaal_locatiecode(LocatieKey);
ProjectCode := prj.bepaal_projectcode(LPNProjectKey);
SrcDwg := prj.cad_GetSrcDwgOfEntity(Session_Id, 'LPN_INS_DEEL', LPNKey);
/* Bepaal LoadDwg */
IF PlaatsDeel = 'T'
THEN /* Terreinsector */
LoadDwg := prj.cad_getPlattegrondtekening(Locatiekey,LPNProjectKey);
ELSE /* Ruimte of Werkplek */
SELECT alg_verdieping_key
INTO VerdiepingKey
FROM prj_ruimte
WHERE alg_ruimte_key = LPNKeyCond
AND prj_project_key = LPNProjectKey;
LoadDwg := prj.cad_getVerdiepPlgrnd_tekening(LocatieKey, LPNProjectKey, Verdiepingkey);
END IF;
/* Bepaal Attachdwg's */
IF PlaatsDeel = 'T'
THEN /* Terreinsector */
/* Contourtekening locatie */
AttachDwg1 := prj.cad_getContourtekening(LocatieKey, LPNProjectKey);
ELSE /* Ruimte of Werkplek */
/* Contourtekening verdieping */
AttachDwg1 := prj.cad_getVerdiepCntr_tekening(LocatieKey, LPNProjectKey,Verdiepingkey);
END IF;
AttachDwg2 := 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);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, Attachdwg2, 0);
IF PlaatsDeel = 'T'
THEN
DECLARE
CURSOR D_tekeningen IS
SELECT cad_tekening_filenaam
FROM prj_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.cad_SLNKstructinsertVALSTR(Session_Id
,'ATTACHDWG'
,SeqNr
,substr(ProjectCode ||'\'|| Tekenrec.cad_tekening_filenaam,1,256)
,0);
END LOOP;
END;
ELSE
DECLARE
CURSOR D_tekeningen IS
SELECT cad_tekening_filenaam
FROM prj_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.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG'
,SeqNr
,substr(ProjectCode ||'\'|| Tekenrec.cad_tekening_filenaam,1,256)
,0);
END LOOP;
END;
END IF;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL', SeqNr, 'INS_DEEL_CADLABEL', 1);
SELECT ins_deel_omschrijving
INTO Omschrijving
FROM prj_deel
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
cad.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.cad_getLayercolor('ALG_GEBOUW');
LayerLineType := cad.cad_getLayerlinetype('ALG_GEBOUW');
LayerNaam := cad.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 := cad.bepaal_locatiecode(LocatieKey);
ProjectCode := prj.bepaal_projectcode(LPNProjectKey);
LoadDwg := prj.cad_getPlattegrondtekening(LocatieKey,LPNProjectKey);
/* Schrijf SrcDwg weg in cad_slnkstruct */
SrcDwg := prj.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 prj_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.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG'
,SeqNr
,substr(ProjectCode ||'\'|| Tekenrec.cad_tekening_filenaam,1,256)
,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.cad_getLayercolor('ALG_RUIMTE');
LayerLineType := cad.cad_getLayerlinetype('ALG_RUIMTE');
LayerNaam := cad.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 prj_project_locatie_key
INTO locatiekey
FROM prj_project
WHERE prj_project_key = LPNProjectKey;
SELECT alg_verdieping_key
INTO verdiepingkey
FROM prj_ruimte
WHERE alg_ruimte_key = LPNKey
AND prj_project_key = LPNProjectKey
AND alg_ruimte_verwijder IS NULL;
LoadDwg := prj.cad_getVerdiepPlgrnd_tekening(Locatiekey, LPNProjectKey, Verdiepingkey);
/* Schrijf SrcDwg weg in cad_slnkstruct */
SrcDwg := prj.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 prj_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.cad_SLNKstructinsertVALSTR(Session_Id
,'ATTACHDWG'
,SeqNr
,substr(ProjectCode ||'\'|| Tekenrec.cad_tekening_filenaam,1,256)
,0);
END LOOP;
END;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL', SeqNr, 'ALG_RUIMTE_CADLABEL', 1);
SELECT alg_ruimte_nr
INTO RuimteNr
FROM prj_ruimte
WHERE alg_ruimte_key = LPNKey
AND prj_project_key = LPNProjectKey;
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.cad_getLayercolor('PRS_WERKPLEK');
LayerLineType := cad.cad_getLayerlinetype('PRS_WERKPLEK');
LayerNaam := cad.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,'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 prj_werkplek
WHERE prs_werkplek_key = LPNKey
AND prj_project_key = LPNProjectKey;
cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1);
/* Bepaal de bijbehorende tekeningen */
SELECT prj_project_locatie_key
INTO locatiekey
FROM prj_project
WHERE prj_project_key = LPNProjectKey;
SELECT alg_verdieping_key
INTO verdiepingkey
FROM prj_ruimte
WHERE alg_ruimte_key = (SELECT prs_alg_ruimte_key
FROM prj_werkplek
WHERE prs_werkplek_key = LPNKey
AND prj_project_key = LPNProjectKey)
AND prj_project_key = LPNProjectKey
AND alg_ruimte_verwijder IS NULL;
LocatieCode := cad.bepaal_locatiecode(LocatieKey);
ProjectCode := prj.bepaal_projectcode(LPNProjectKey);
/* Schrijf SrcDwg weg in cad_slnkstruct */
SrcDwg := prj.cad_GetSrcDwgOfEntity(Session_Id, 'LPN_PRS_WERKPLEK', LPNKey);
LoadDwg := prj.cad_getVerdiepPlgrnd_tekening(LocatieKey, LPNProjectKey, Verdiepingkey);
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 prj_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.cad_SLNKstructinsertVALSTR(Session_Id
,'ATTACHDWG'
,SeqNr
,substr(ProjectCode ||'\'|| Tekenrec.cad_tekening_filenaam,1,256)
,0);
END LOOP;
END;
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'PRS_WERKPLEK_CADLABEL', 1);
SELECT prs_werkplek_volgnr
INTO WerkplekNr
FROM prj_werkplek
WHERE prs_werkplek_key = LPNKey
AND prj_project_key = LPNProjectKey;
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);
LayerColor := cad.cad_getLayercolor('ALG_TERREINSECTOR');
LayerLineType := cad.cad_getLayerlinetype('ALG_TERREINSECTOR');
LayerNaam := cad.cad_getLayername('ALG_TERREINSECTOR');
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,'LPNCOLINSA' , SeqNr, 'ALG_TERREINSECTOR_KEY', 1);
SELECT alg_locatie_key
INTO Locatiekey
FROM alg_terreinsector
WHERE alg_terreinsector_key = LPNKey;
LocatieCode := cad.bepaal_locatiecode(LocatieKey);
ProjectCode := prj.bepaal_projectcode(LPNProjectKey);
LoadDwg := prj.cad_getPlattegrondtekening(LocatieKey,LPNProjectKey);
/* Schrijf SrcDwg weg in cad_slnkstruct */
SrcDwg := prj.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 prj_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.cad_SLNKstructinsertVALSTR(Session_Id
,'ATTACHDWG'
,SeqNr
,substr(ProjectCode ||'\'|| Tekenrec.cad_tekening_filenaam,1,256)
,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);
END IF;
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKPreDraw;
/* prj.cad_SLNKPrePostUndo
**
*/
FUNCTION cad_SLNKPrePostUndo(Session_id IN NUMBER
,ProjectKey IN NUMBER) RETURN BOOLEAN IS
LPNAliasINSO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyINSO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNAliasDELO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyDELO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNAliasMODO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyMODO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNProjectKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LocatieCode alg_locatie.alg_locatie_code%TYPE;
ProjectCode prj_project.prj_project_nr%TYPE;
RuimteKey prj_ruimte.alg_ruimte_key%TYPE;
RuimteNr prj_ruimte.alg_ruimte_nr%TYPE;
WerkplekNr prj_werkplek.prs_werkplek_volgnr%TYPE;
VerdiepingKey prj_ruimte.alg_verdieping_key%TYPE;
LocatieKey alg_locatie.alg_locatie_key%TYPE;
SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE;
Omschrijving prj_deel.ins_deel_omschrijving%TYPE;
Dummy NUMBER(10);
RetValue BOOLEAN;
BEGIN
LPNAliasINSO := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASINSO');
LPNKeyINSO := cad.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
, LocatieCode
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 = LocatieCode;
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
, LocatieCode
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 = LocatieCode;
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
, upper(alg_ruimte_nr)
INTO VerdiepingKey
, RuimteNr
FROM prj_ruimte
WHERE alg_ruimte_key = LPNKeyINSO
AND prj_project_key = ProjectKey;
BEGIN
SELECT alg_ruimte_key
INTO Dummy
FROM prj_ruimte
WHERE alg_verdieping_key = VerdiepingKey
AND upper(alg_ruimte_nr) = RuimteNr
AND alg_ruimte_verwijder IS NULL
AND prj_project_key = ProjectKey;
RetValue := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN /* Verwijderdatum wordt NULL */
UPDATE prj_ruimte
SET alg_ruimte_verwijder = NULL
, alg_ruimte_getekend = SYSDATE /* It's CAD */
WHERE alg_ruimte_key = LPNKeyINSO
AND prj_project_key = ProjectKey;
RetValue := TRUE;
END;
ELSIF LPNAliasINSO = 'LPN_PRS_WERKPLEK'
THEN
SELECT prs_alg_ruimte_key
, prs_werkplek_volgnr
INTO RuimteKey
, Werkpleknr
FROM prj_werkplek
WHERE prs_werkplek_key = LPNKeyINSO
AND prj_project_key = ProjectKey;
BEGIN
SELECT prs_werkplek_key
INTO Dummy
FROM prj_werkplek
WHERE prs_alg_ruimte_key = RuimteKey
AND prs_werkplek_volgnr = WerkplekNr
AND prs_werkplek_verwijder IS NULL
AND prj_project_key = ProjectKey;
RetValue := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN /* Verwijderdatum wordt NULL */
UPDATE prj_werkplek
SET prs_werkplek_verwijder = NULL
, prs_werkplek_getekend = SYSDATE /* IT's CAD */
WHERE prs_werkplek_key = LPNKeyINSO
AND prj_project_key = ProjectKey;
RetValue := TRUE;
END;
ELSIF LPNAliasINSO = 'LPN_INS_DEEL'
THEN
BEGIN
SELECT ins_alg_locatie_key
, ins_srtdeel_key
, upper(ins_deel_omschrijving)
INTO LocatieKey
, SrtdeelKey
, Omschrijving
FROM prj_deel
WHERE ins_deel_key = LPNKeyINSO
AND prj_project_key = ProjectKey;
BEGIN
SELECT ins_deel_key
INTO dummy
FROM prj_deel
WHERE ins_alg_locatie_key = LocatieKey
AND ins_srtdeel_key = SrtDeelKey
AND ins_deel_parent_key IS NULL
AND ins_deel_verwijder IS NULL
AND upper(ins_deel_omschrijving) = Omschrijving
AND prj_project_key = ProjectKey;
RetValue := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
UPDATE prj_deel
SET ins_deel_verwijder = NULL
, ins_deel_getekend = SYSDATE /* It's CAD */
WHERE ins_deel_key = LPNKeyINSO
AND prj_project_key = ProjectKey;
RetValue := TRUE;
EXCEPTION
WHEN OTHERS
THEN NULL;
END;
END;
EXCEPTION
WHEN OTHERS
THEN NULL;
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.cad_SLNKSTRUCTclear(Session_Id);
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNAliasINSO , 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW' , 1, LPNKeyINSO , 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'PROJECTKEY' , 1, ProjectKey , 1);
prj.cad_SLNKPreDraw(Session_Id);
END IF;
RETURN RetValue;
END cad_SLNKPrePostUndo;
/* prj_disciplinetekening_bestaat
**
** Kijk of het geselecteerde object wel op een bijpassende
** discipline-tekening kan worden gezet. Zo niet dan mag het
** object niet toegevoegd worden.
*/
FUNCTION prj_disciplinetekening_bestaat(p_SrtDeelKey IN NUMBER
,p_ProjectKey IN NUMBER) RETURN BOOLEAN IS
dummy VARCHAR2(1);
aanwezig BOOLEAN;
BEGIN
BEGIN
SELECT 'X'
INTO dummy
FROM cad_tekening T
, ins_srtdeel D
, ins_srtgroep G
WHERE D.ins_srtgroep_key = G.ins_srtgroep_key
AND G.ins_discipline_key = T.ins_discipline_key
AND D.ins_srtdeel_key = p_SrtDeelKey
AND T.prj_project_key = p_ProjectKey;
aanwezig := TRUE; /* Discipline-tekening bestaat in het project. */
EXCEPTION
WHEN NO_DATA_FOUND
THEN aanwezig := FALSE; /* Geen geldige discipline voor dit project. */
WHEN TOO_MANY_ROWS
THEN aanwezig := TRUE; /* Er bestaan meerdere discipline-tekeningen. */
END;
RETURN aanwezig;
END;
/* prj.cad_SLNKPrePostDimensie0
**
*/
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 prj_ruimte.alg_ruimte_nr%TYPE;
RuimteKey prj_ruimte.alg_ruimte_key%TYPE;
WerkplekNr prj_werkplek.prs_werkplek_volgnr%TYPE;
LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Omschrijving prs_werkplek.prs_werkplek_omschrijving%TYPE;
Dummy NUMBER(10);
LabelOK BOOLEAN;
LPNAliasINSO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyINSO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNProjectKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
DisciplineKey ins_srtgroep.ins_discipline_key%TYPE;
BEGIN
Dimensie := 0;
LayerNaam := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER');
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
BlockNaam := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'BLOCK');
LoadDwg := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LOADDWG');
LPNProjectKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'PROJECTKEY');
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 := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
IF NOT LPNCondKeyOK
THEN
SeqNr := 2;
LOOP
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', SeqNr);
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO' , SeqNr);
IF LPNCondKey IS NULL
THEN
EXIT;
END IF;
LPNCondKeyOK := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
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.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO');
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 prj_werkplek
WHERE prs_alg_ruimte_key = LPNCondKey
AND prj_project_key = LPNProjectKey
AND prs_werkplek_verwijder IS NULL
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 */
Omschrijving := prj.prj_f_fac_get_description('LPN_PRS_WERKPLEK', LPNCondKey, LPNProjectKey, NULL, NULL);
WerkplekNr := to_number(substr(Omschrijving,instr(Omschrijving,'-',1)+1));
END IF;
INSERT INTO prj_werkplek
( prs_werkplek_volgnr
, prs_werkplek_omschrijving
, prs_alg_ruimte_key
, prs_werkplek_getekend
, prj_project_key)
VALUES(WerkplekNr
, Omschrijving
, LPNCondKey
, SYSDATE
, LPNProjectKey);
COMMIT;
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 prj_werkplek
WHERE prs_alg_ruimte_key = LPNCondKey
AND prs_werkplek_volgnr = WerkplekNr
AND prj_project_key = LPNProjectKey
AND prs_werkplek_verwijder IS NULL;
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.
*/
BEGIN
SELECT MIN(ins_srtdeel_key)
INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND UPPER(ins_srtdeel_cadlayer) = UPPER(LayerNaam)
AND UPPER(ins_srtdeel_acadsymbol) = UPPER(BlockNaam)
AND ins_srtdeel_verwijder IS NULL;
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 IN ('LPN_ALG_TERREINSECTOR','LPN_ALG_RUIMTE','LPN_PRS_WERKPLEK')
THEN
LPNCondKeyOK := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
IF NOT LPNCondKeyOK
THEN
Seqnr := 2;
LOOP
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr);
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO' , Seqnr);
IF LPNCondKey IS NULL
THEN
EXIT;
END IF;
LPNCondKeyOK := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
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 := prj.AddDeel(Session_id, SrtdeelKey, LPNCondName, LPNCondKey, LPNProjectKey);
RecordAdded:= TRUE;
ELSE
RecordAdded:= FALSE;
END IF;
ELSE
SELECT MIN(ins_srtdeel_key)
INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND UPPER(ins_srtdeel_acadsymbol) = UPPER(BlockNaam)
AND ins_srtdeel_verwijder IS NULL;
IF SrtDeelKey IS NOT NULL
THEN
IF LPNCondName IN ('LPN_ALG_TERREINSECTOR','LPN_ALG_RUIMTE','LPN_PRS_WERKPLEK')
THEN
LPNCondKeyOK := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
IF NOT LPNCondKeyOK
THEN
Seqnr := 2;
LOOP
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr);
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO' , Seqnr);
IF LPNCondKey IS NULL
THEN
EXIT;
END IF;
LPNCondKeyOK := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
EXIT WHEN (LPNCondKeyOK AND LPNCondName IN ('LPN_ALG_TERREINSECTOR'
,'LPN_ALG_RUIMTE'
,'LPN_PRS_WERKPLEK'));
LPNCondKeyOK := FALSE;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
ELSE
LPNCondKeyOK := FALSE;
END IF;
--
IF LPNCondKeyOK
THEN
LPNName := 'LPN_INS_DEEL';
IF prj_disciplinetekening_bestaat(SrtDeelKey,LPNProjectKey)
THEN
LPNKey := prj.AddDeel(Session_id,SrtdeelKey, LPNCondName, LPNCondKey, LPNProjectKey);
RecordAdded := TRUE;
ELSE
RecordAdded := FALSE;
END IF;
ELSE
RecordAdded := FALSE;
END IF;
ELSE
RecordAdded := FALSE;
END IF;
END IF;
END IF;
ELSE
NULL;
END IF;
cad.cad_SLNKSTRUCTclear(Session_Id);
IF RecordAdded
THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNName , 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW' , 1, LPNKey , 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'PROJECTKEY' , 1, LPNProjectKey, 1);
prj.cad_SLNKPreDraw(Session_Id);
ELSE
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END IF;
END cad_SLNKPrePostDimensie0;
/* prj.cad_SLNKPrePostDimensie1
**
*/
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;
LPNProjectKey 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;
BEGIN
Dimensie := 1;
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
LPNProjectKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'PROJECTKEY');
LayerNaam := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER');
LoadDwg := cad.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 UPPER(ins_srtdeel_cadlayer) = UPPER(LayerNaam)
AND ins_srtdeel_verwijder IS NULL;
--
IF SrtDeelKey IS NOT NULL
THEN
/* Het is een srtdeel */
IF LPNCondName IN ('LPN_ALG_TERREINSECTOR','LPN_ALG_RUIMTE','LPN_PRS_WERKPLEK')
THEN
LPNCondKeyOK := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
IF NOT LPNCondKeyOK
THEN
Seqnr := 2;
LOOP
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr);
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO' , Seqnr);
IF LPNCondKey IS NULL
THEN
EXIT;
END IF;
LPNCondKeyOK := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
EXIT WHEN (LPNCondKeyOK AND LPNCondName IN ('LPN_ALG_TERREINSECTOR'
,'LPN_ALG_RUIMTE'
,'LPN_PRS_WERKPLEK'));
LPNCondKeyOK := FALSE;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
ELSE
LPNCondKeyOK := FALSE;
END IF;
--
IF LPNCondKeyOK
THEN
LPNName := 'LPN_INS_DEEL';
IF prj_disciplinetekening_bestaat(SrtDeelKey,LPNProjectKey)
THEN
LPNKey := prj.AddDeel(Session_id, SrtdeelKey, LPNCondName, LPNCondKey, LPNProjectKey);
RecordAdded := TRUE;
ELSE
RecordAdded := FALSE;
END IF;
ELSE
RecordAdded:= FALSE;
END IF;
ELSE
RecordAdded:= FALSE;
END IF;
--
cad.cad_SLNKSTRUCTclear(Session_Id);
IF RecordAdded
THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNName , 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW' , 1, LPNKey , 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'PROJECTKEY' , 1, LPNProjectKey, 1);
prj.cad_SLNKPreDraw(Session_Id);
ELSE
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END IF;
END cad_SLNKPrePostDimensie1;
/* prj.cad_SLNKPrePostDimensie2
**
*/
PROCEDURE cad_SLNKPrePostDimensie2(Session_Id NUMBER) IS
LocatieKey alg_locatie.alg_locatie_key%TYPE;
locatiecode alg_locatie.alg_locatie_code%TYPE;
VerdiepingKey alg_verdieping.alg_verdieping_key%TYPE;
VerdiepingNr alg_verdieping.alg_verdieping_volgnr%TYPE;
DisciplineKey ins_discipline.ins_discipline_key%TYPE;
Sectorcode alg_terreinsector.alg_terreinsector_code%TYPE;
Gebouwcode alg_gebouw.alg_gebouw_code%TYPE;
RuimteNr prj_ruimte.alg_ruimte_nr%TYPE;
ProjectCode prj_project.prj_project_nr%TYPE;
TekeningNaam cad_tekening.cad_tekening_filenaam%TYPE;
Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
BlockNaam ins_srtdeel.ins_srtdeel_acadsymbol%TYPE;
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
LayerNaam ins_srtdeel.ins_srtdeel_cadlayer%TYPE;
SymboolLayer ins_srtdeel.ins_srtdeel_cadlayer%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;
LPNProjectKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondKeyOK BOOLEAN;
RecordAdded BOOLEAN:= FALSE;
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.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER');
LoadDwg := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LOADDWG');
BlockNaam := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'BLOCK');
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
LPNProjectKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'PROJECTKEY');
SELECT cad_symbool_layer
INTO SymboolLayer
FROM cad_symbool
WHERE cad_symbool_entry = 'ALG_TERREINSECTOR';
IF LayerNaam = SymboolLayer
THEN
/*
** Het is een terrein ...
*/
ProjectCode := prj.cad_getProjectCode_Tekening(LoadDwg);
SELECT prj_project_locatie_key
INTO LocatieKey
FROM prj_project
WHERE prj_project_nr = ProjectCode;
LabelSymbool := cad.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
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 ...
*/
ProjectCode := prj.cad_getProjectCode_Tekening(LoadDwg);
SELECT prj_project_locatie_key
INTO LocatieKey
FROM prj_project
WHERE prj_project_nr = ProjectCode;
LabelSymbool := cad.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
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 ...
*/
ProjectCode := prj.cad_getProjectCode_Tekening(LoadDwg);
SELECT prj_project_locatie_key
INTO LocatieKey
FROM prj_project
WHERE prj_project_nr = ProjectCode;
/* Bepaal verdieping -> bepaal eerst tekeningnaam zonder toevoeging Locatiecode... */
TekeningNaam := cad.cad_getTekeningNaam_LoadDwg(LoadDwg);
BEGIN
SELECT alg_verdieping_key
INTO VerdiepingKey
FROM prj_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.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 prj_ruimte
WHERE alg_verdieping_key = VerdiepingKey
AND UPPER(alg_ruimte_nr) = UPPER(LabelSymbool)
AND prj_project_key = LPNProjectKey
AND alg_ruimte_verwijder IS NULL;
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
RuimteNr := prj.prj_f_fac_get_description('LPN_ALG_RUIMTE', VerdiepingKey, LPNProjectKey, NULL, NULL);
END IF;
--
INSERT INTO prj_ruimte
( prj_project_key
, alg_verdieping_key
, alg_ruimte_nr)
VALUES(LPNProjectKey
, VerdiepingKey
, substr(RuimteNr,1,10));
COMMIT;
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 prj_ruimte
WHERE alg_verdieping_key = VerdiepingKey
AND alg_ruimte_nr = RuimteNr
AND alg_ruimte_verwijder IS NULL
AND prj_project_key = LPNProjectKey;
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 UPPER(ins_srtdeel_cadlayer) = UPPER(LayerNaam)
AND ins_srtdeel_verwijder IS NULL;
IF SrtDeelKey IS NOT NULL
THEN
/*
** Het is een srtdeel...
*/
IF LPNCondName IN ('LPN_ALG_TERREINSECTOR','LPN_ALG_RUIMTE','LPN_PRS_WERKPLEK')
THEN
LPNCondKeyOK := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
IF NOT LPNCondKeyOK
THEN
Seqnr := 2;
LOOP
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr);
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO' , Seqnr);
IF LPNCondKey IS NULL
THEN
EXIT;
END IF;
LPNCondKeyOK := prj.CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
EXIT WHEN (LPNCondKeyOK AND LPNCondName IN ('LPN_ALG_TERREINSECTOR'
,'LPN_ALG_RUIMTE'
,'LPN_PRS_WERKPLEK'));
LPNCondKeyOK := FALSE;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
ELSE
LPNCondKeyOK := FALSE;
END IF;
--
IF LPNCondKeyOK
THEN
LPNName := 'LPN_INS_DEEL';
IF prj_disciplinetekening_bestaat(SrtDeelKey,LPNProjectKey)
THEN
LPNKey := prj.AddDeel(Session_id, SrtdeelKey, LPNCondName, LPNCondKey, LPNProjectKey);
RecordAdded := TRUE;
ELSE
RecordAdded := FALSE;
END IF;
ELSE
RecordAdded:= FALSE;
END IF;
ELSE
/*
** Het is een onbekend object...
*/
RecordAdded:= FALSE;
END IF;
END IF;
END IF;
END IF;
cad.cad_SLNKSTRUCTclear(Session_Id);
IF RecordAdded
THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNName , 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW' , 1, LPNKey , 1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'PROJECTKEY' , 1, LPNProjectKey, 1);
prj.cad_SLNKPreDraw(Session_Id);
ELSE
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END IF;
END cad_SLNKPrePostDimensie2;
/* prj.cad_slnkprepostdraw
**
*/
PROCEDURE cad_SLNKPrePostDraw(Session_Id IN NUMBER) IS
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
Project_Key cad_slnkstruct.cad_slnkstruct_valint%TYPE;
UndoOK BOOLEAN;
BEGIN
Project_Key := cad.cad_SLNKSTRUCTreadVALINT(Session_id,'PROJECTKEY');
UndoOK:= cad_SLNKPrePostUndo(Session_Id,Project_Key);
IF NOT UndoOK
THEN
Dimensie := cad.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;
ELSE
NULL;
END IF;
END cad_SLNKPrePostDraw;
/* prj.cad_slnkpostdraw
**
*/
PROCEDURE cad_SLNKpostdraw(Session_Id IN NUMBER) IS
LPNAliasLinkO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyLinkO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNProjectKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
RuimteKey prj_werkplek.prs_alg_ruimte_key%TYPE;
PlaatsDeel prj_deel.ins_alg_ruimte_type%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);
PlaatsKey NUMBER(10);
RuimteType VARCHAR2(1);
DoDeelUpdate BOOLEAN;
LinkToRoom NUMBER;
LPNCondKeyOK BOOLEAN;
BEGIN
LPNName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASINSO');
LPNKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYINSO');
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
LPNProjectKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'PROJECTKEY');
IF LPNNAME = 'LPN_INS_DEEL'
THEN
LPNAliasLinkO := cad.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.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 prj_deel
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey);
EXCEPTION
WHEN NO_DATA_FOUND
THEN Dimensie := NULL; /* Dimensie niet gevonden -> doe verder niets */
END;
Omtrek := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
IF Omtrek IS NOT NULL AND Dimensie <> 0
THEN
UPDATE prj_deel
SET ins_deel_omtrek = Omtrek
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
END IF;
Oppervlak := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
IF Oppervlak IS NOT NULL AND Dimensie = 2
THEN
UPDATE prj_deel
SET ins_deel_oppervlak = Oppervlak
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
END IF;
SELECT ins_alg_ruimte_type
, ins_alg_ruimte_key
INTO PlaatsDeel
, PlaatsKey
FROM prj_deel
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey
AND ins_deel_verwijder IS NULL;
LinkToRoom := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'LINKTOROOM');
cad.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 prj_werkplek
WHERE prs_werkplek_key = PlaatsKey
AND prj_project_key = LPNProjectKey;
IF Ruimtekey = LPNCondKey
THEN
DoDeelUpdate := FALSE;
ELSE
DoDeelUpdate := TRUE;
END IF;
END IF;
END IF;
END IF;
IF DODeelUpdate
THEN
UPDATE prj_deel
SET ins_alg_ruimte_key = LPNCondKey
, ins_alg_ruimte_type = Plaatsdeel
, ins_deel_getekend = SYSDATE /* It's CAD */
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
END IF;
ELSIF LPNNAME = 'LPN_ALG_GEBOUW'
THEN
Oppervlak := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad.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.cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE prj_ruimte
SET alg_ruimte_bruto_vloeropp = Oppervlak
, alg_ruimte_omtrek = Omtrek
, alg_ruimte_getekend = SYSDATE
WHERE alg_ruimte_key = LPNKey
AND prj_project_key = LPNProjectKey;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN
Oppervlak := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad.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.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad.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, LPNProjectKey);
IF NOT LPNCondKeyOK
THEN
Seqnr := 2;
LOOP
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL
THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
EXIT WHEN LPNCondKeyOK;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
IF LPNCondKeyOK
THEN
UPDATE prj_werkplek
SET prs_werkplek_getekend = SYSDATE /* IT's CAD */
WHERE prs_werkplek_key = LPNKey
AND prj_project_key = LPNProjectKey;
END IF;
END IF;
END IF;
COMMIT;
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); /* ORACLE is klaar */
END cad_SLNKpostdraw;
/* prj.cad_slnkpostErase
**
*/
PROCEDURE cad_SLNKpostErase(Session_Id IN NUMBER) IS
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNProjectKey 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.cad_SLNKSTRUCTreadVALSTR(Session_id, 'DATE');
Datum := TO_DATE(CheckDatum, 'DD-MM-YYYY');
LPNName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASDELO');
LPNKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYDELO');
LPNProjectKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'PROJECTKEY');
IF LPNName = 'LPN_INS_DEEL'
THEN
UPDATE prj_deel
SET ins_deel_verwijder = SYSDATE
, ins_deel_getekend = NULL /* It's CAD */
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
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 prj_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNKey
AND prj_project_key = LPNProjectKey;
BEGIN
Eerste := TRUE;
WerkPlekFound := FALSE;
FOR WerkplekRec IN RuimteWerkplek
LOOP
IF Eerste
THEN
WerkPlekFound := TRUE;
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASDELA',1,'LPN_PRS_WERKPLEK' ,1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYDELA' ,1,WerkplekRec.prs_werkplek_key,1);
Eerste := FALSE;
ELSE
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASDELA',1,'LPN_PRS_WERKPLEK' ,0);
cad.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 prj_deel
WHERE ins_alg_ruimte_key = LPNKey
AND prj_project_key = LPNProjectKey
AND ins_deel_verwijder IS NULL
AND ins_alg_ruimte_type = 'R'
OR ( ins_alg_ruimte_type = 'W'
AND ins_alg_ruimte_key IN (SELECT prs_werkplek_key
FROM prj_werkplek
WHERE prs_alg_ruimte_key = LPNKey
AND prs_werkplek_verwijder IS NULL
AND prj_project_key = LPNProjectKey));
BEGIN
Eerste := TRUE;
FOR DeelRec IN RuimteDeel
LOOP
IF Eerste AND NOT WerkPlekFound
THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASDELA',1,'LPN_INS_DEEL' ,1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYDELA' ,1,DeelRec.ins_deel_key,1);
Eerste := FALSE;
ELSE
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASDELA',1,'LPN_INS_DEEL' ,0);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYDELA' ,1,DeelRec.ins_deel_key,0);
END IF;
END LOOP;
END;
END;
UPDATE prj_ruimte
SET alg_ruimte_verwijder = SYSDATE
, alg_ruimte_getekend = NULL /* It's CAD */
WHERE alg_ruimte_key = LPNKey
AND prj_project_key = LPNProjectKey;
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 prj_deel
WHERE ins_alg_ruimte_type = 'W'
AND ins_deel_verwijder IS NULL
AND ins_alg_ruimte_key = LPNKey
AND prj_project_key = LPNProjectKey;
BEGIN
Eerste := TRUE;
FOR DeelRec IN WerkplekDeel
LOOP
IF Eerste
THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASDELA',1,'LPN_INS_DEEL' ,1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYDELA' ,1,DeelRec.ins_deel_key,1);
Eerste := FALSE;
ELSE
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASDELA',1,'LPN_INS_DEEL' ,0);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYDELA' ,1,DeelRec.ins_deel_key,0);
END IF;
END LOOP;
END;
END;
UPDATE prj_werkplek
SET prs_werkplek_verwijder = SYSDATE
, prs_werkplek_getekend = NULL /* It's CAD */
WHERE prs_werkplek_key = LPNKey
AND prj_project_key = LPNProjectKey;
COMMIT;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR'
THEN
DECLARE
CURSOR TerreinDeel IS
SELECT ins_deel_key
FROM prj_deel
WHERE ins_alg_ruimte_key = LPNKey
AND prj_project_key = LPNProjectKey
AND ins_alg_ruimte_type = 'T'
AND ins_deel_verwijder IS NULL;
BEGIN
Eerste := TRUE;
FOR DeelRec IN TerreinDeel
LOOP
IF Eerste
THEN
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASDELA',1,'LPN_INS_DEEL' ,1);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYDELA' ,1,DeelRec.ins_deel_key,1);
Eerste := FALSE;
ELSE
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASDELA',1,'LPN_INS_DEEL' ,0);
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYDELA' ,1,DeelRec.ins_deel_key,0);
END IF;
END LOOP;
END;
UPDATE alg_terreinsector
SET alg_terreinsector_verwijder = SYSDATE
, alg_terreinsector_getekend = NULL /* It's CAD */
WHERE alg_terreinsector_key = LPNKey;
COMMIT;
END IF;
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKpostErase;
/* prj.cad_slnkpostmodify
**
*/
PROCEDURE cad_SLNKpostModify(Session_Id IN NUMBER) IS
LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNAliasLinkO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyLinkO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNAliasMODO cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
LPNKeyMODO cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNProjectKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Seqnr cad_slnkstruct.cad_slnkstruct_valint%TYPE;
SrcDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE;
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
WerkplekNr prj_werkplek.prs_werkplek_volgnr%TYPE;
Omschrijving prj_werkplek.prs_werkplek_omschrijving%TYPE;
RuimteKey prj_werkplek.prs_alg_ruimte_key%TYPE;
PlaatsDeel prj_deel.ins_alg_ruimte_type%TYPE;
RuimteType VARCHAR2(1);
Oppervlak NUMBER(13,3);
Omtrek NUMBER(13,3);
Volume NUMBER(12,4);
Diepte NUMBER(8,2);
VeldKey NUMBER(10);
PlaatsKey NUMBER(10);
LinkToRoom NUMBER;
Datum DATE;
LPNCondKeyOK BOOLEAN:= FALSE;
DoDeelUpdate BOOLEAN;
BEGIN
LPNName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id,'LPNALIASMODO');
LPNKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id,'LPNKEYMODO');
LPNProjectKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id,'PROJECTKEY');
LPNAliasMODO := cad.cad_SLNKSTRUCTreadVALSTR(Session_id,'LPNALIASMODO');
LPNKeyMODO := cad.cad_SLNKSTRUCTreadVALINT(Session_id,'LPNKEYMODO');
IF LPNName = 'LPN_INS_DEEL'
THEN
/* Bepaal nieuwe plek v/h deel */
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad.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, LPNProjectKey);
IF NOT LPNCondKeyOK
THEN
Seqnr := 2;
LOOP
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL
THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
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 prj_deel
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey
AND ins_deel_verwijder IS NULL;
LinkToRoom := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'LINKTOROOM');
cad.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 prj_werkplek
WHERE prs_werkplek_key = PlaatsKey
AND prj_project_key = LPNProjectKey;
IF Ruimtekey = LPNCondKey
THEN
DoDeelUpdate := FALSE;
ELSE
DoDeelUpdate := TRUE;
END IF;
END IF;
END IF;
END IF;
IF DODeelUpdate
THEN
UPDATE prj_deel
SET ins_alg_ruimte_key = LPNCondKey
, ins_alg_ruimte_type = RuimteType
, ins_deel_getekend = SYSDATE /* It's CAD */
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
END IF;
END IF;
END IF;
LPNAliasLinkO := cad.cad_SLNKSTRUCTreadVALSTR(Session_Id, 'LPNALIASLINKO');
LPNKeyLinkO := cad.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.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.cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
IF Omtrek IS NOT NULL AND Dimensie = 1
THEN
UPDATE prj_deel
SET ins_deel_omtrek = Omtrek
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
END IF;
/* Oppervlak bijwerken */
Oppervlak := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
IF Oppervlak IS NOT NULL AND Dimensie = 2
THEN
UPDATE prj_deel
SET ins_deel_oppervlak = Oppervlak
WHERE ins_deel_key = LPNKey
AND prj_project_key = LPNProjectKey;
END IF;
ELSIF LPNName = 'LPN_ALG_GEBOUW'
THEN
Oppervlak := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE alg_gebouw
SET alg_gebouw_bruto_vloeropp = Oppervlak
, alg_gebouw_omtrek = Omtrek
WHERE alg_gebouw_key = LPNKey;
ELSIF LPNName = 'LPN_ALG_RUIMTE'
THEN
Oppervlak := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE prj_ruimte
SET alg_ruimte_bruto_vloeropp = Oppervlak
, alg_ruimte_omtrek = Omtrek
WHERE alg_ruimte_key = LPNKey
AND prj_project_key = LPNProjectKey;
ELSIF LPNName = 'LPN_PRS_WERKPLEK'
THEN
/* Bepaal de nieuwe ruimte v/d werkplek */
LPNCondName := cad.cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad.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, LPNProjectKey);
IF NOT LPNCondKeyOK
THEN
Seqnr := 2;
LOOP
LPNCondKey := cad.cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr);
IF LPNCondKey IS NULL
THEN
EXIT;
END IF;
LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey, LPNProjectKey);
EXIT WHEN LPNCondKeyOK;
Seqnr := Seqnr + 1;
END LOOP;
END IF;
IF LPNCondKeyOK
THEN
Omschrijving := prj.prj_f_fac_get_description('LPN_PRS_WERKPLEK', LPNCondKey, LPNProjectKey, NULL, NULL);
WerkplekNr := to_number(substr(Omschrijving,instr(Omschrijving,'-',1)+1));
BEGIN
UPDATE prj_werkplek
SET prs_alg_ruimte_key = LPNCondKey
, prs_werkplek_volgnr = WerkplekNr
, prs_werkplek_omschrijving = Omschrijving
, prs_werkplek_getekend = SYSDATE /* IT's CAD */
WHERE prs_werkplek_key = LPNKey
AND prj_project_key = LPNProjectKey;
EXCEPTION
WHEN DUP_VAL_ON_INDEX
THEN
Omschrijving := prj.prj_f_fac_get_description('LPN_PRS_WERKPLEK', LPNCondKey, LPNProjectKey, NULL, NULL);
WerkplekNr := to_number(substr(Omschrijving,instr(Omschrijving,'-',1)+1));
UPDATE prj_werkplek
SET prs_werkplek_volgnr = WerkplekNr
, prs_werkplek_omschrijving = Omschrijving
, prs_alg_ruimte_key = LPNCondKey
, prs_werkplek_getekend = SYSDATE /* It's CAD */
WHERE prs_werkplek_key = LPNKey
AND prj_project_key = LPNProjectKey;
END;
END IF;
END IF;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR'
THEN
Oppervlak := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
Omtrek := cad.cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH');
UPDATE alg_terreinsector
SET alg_terreinsector_oppervlak = Oppervlak
, alg_terreinsector_omtrek = Omtrek
WHERE alg_terreinsector_key = LPNKey;
END IF;
COMMIT;
srcdwg := prj.cad_GetSrcDwgOfEntity(Session_Id,LPNAliasMODO,LPNKeyMODO);
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SRCDWG', 1, srcdwg , 1);
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKpostModify;
/* prj.cad_SLNKDelenbijWerkplek
**
** Voeg delen toe aan CAD_SLNKSTRUCT.
*/
PROCEDURE cad_SLNKDelenbijWerkplek(Session_Id IN NUMBER) IS
LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
LPNProjectKey cad_slnkstruct.cad_slnkstruct_valint%TYPE;
Eerste BOOLEAN;
CURSOR c_werkplekdelen IS
SELECT ins_deel_key
FROM prj_deel
WHERE ins_alg_ruimte_key = LPNKey
AND ins_alg_ruimte_type = 'W'
AND prj_project_key = LPNProjectKey
AND ins_deel_verwijder IS NULL;
BEGIN
LPNKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'INFOI');
LPNProjectKey := cad.cad_SLNKSTRUCTreadVALINT(Session_id, 'PROJECTKEY');
BEGIN
DECLARE
BEGIN
Eerste := TRUE;
FOR DelenRec IN c_werkplekdelen
LOOP
IF Eerste
THEN
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, DelenRec.ins_deel_key, 1);
Eerste := FALSE;
ELSE
cad.cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, DelenRec.ins_deel_key, 0);
END IF;
END LOOP;
END;
END;
cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKDelenbijWerkplek;
/* prj.verwerk_log_clear
**
** Maak de tabel voor verwerkings log leeg.
*/
PROCEDURE verwerk_log_clear(sessionID IN NUMBER
,projectKEY IN NUMBER) IS
BEGIN
BEGIN
DELETE
FROM prj_verwerk_log
WHERE prj_project_key = projectKEY
AND prj_session_id = sessionID;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
COMMIT;
END verwerk_log_clear;
/* prj.verwerk_log
**
** Schrijf een logmelding in de verwerkings tabel.
*/
PROCEDURE verwerk_log(logmelding IN VARCHAR
,sessionID IN NUMBER
,projectKEY IN NUMBER) IS
BEGIN
BEGIN
INSERT INTO prj_verwerk_log
( prj_project_key
, prj_log
, prj_session_id)
VALUES(projectKEY
, substr(logmelding,1,128)
, sessionID);
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
COMMIT;
END verwerk_log;
/* prj.verwerk_project_description
**
** Bepaal een nieuwe omschrijving of volgnummer van een element als die in de projectsituatie
** al voorkomt in de werkelijke situatie.
*/
FUNCTION verwerk_project_description(element_type IN VARCHAR2
,element_key IN NUMBER
,element_omschrijving IN VARCHAR2
,project_key IN NUMBER
,prefix_key IN NUMBER
,session_id IN NUMBER
) RETURN VARCHAR2 IS
omschrijving VARCHAR2(30);
SrtDeelCode VARCHAR2(30);
dummy VARCHAR2(1);
ruimte_code VARCHAR2(20);
ruimte_nr VARCHAR2(10);
melding prj_verwerk_log.prj_log%TYPE;
BEGIN
IF element_type = 'RUIMTE'
THEN
/* Zoek op de geselecteerde verdieping of het huidige ruimtenummer al voor komt. */
BEGIN
SELECT G.alg_gebouw_code ||' - '|| to_char(V.alg_verdieping_volgnr) ||' - '
INTO ruimte_code
FROM alg_gebouw G
, alg_verdieping V
, alg_ruimte R
WHERE G.alg_gebouw_key = V.alg_gebouw_key
AND V.alg_verdieping_key = R.alg_verdieping_key
AND R.alg_verdieping_key = element_key
AND R.alg_ruimte_nr = element_omschrijving
AND R.alg_ruimte_verwijder IS NULL;
/* Deze ruimtenummer komt al voor, dus een nieuw nummer bepalen. */
omschrijving := fac_f_fac_get_description('LPN_ALG_RUIMTE'
,element_key
,NULL
,NULL);
SELECT SUBSTR(REPLACE(REPLACE(fac_message_text,'%1%',ruimte_code || element_omschrijving)
,'%2%',ruimte_code || omschrijving),1,128)
INTO melding
FROM fac_message
WHERE fac_message_code='PRJ_M063';
prj.verwerk_log(melding,session_id,project_key);
EXCEPTION
WHEN NO_DATA_FOUND
THEN /* Ruimtenummer komt nog niet voor in de echte situatie. */
omschrijving := element_omschrijving;
END;
ELSIF element_type = 'WERKPLEK'
THEN
/* Zoek in de geselecteerde ruimte of het huidige werkpleknummer al voor komt. */
SELECT alg_ruimte_nr
INTO ruimte_nr
FROM alg_ruimte
WHERE alg_ruimte_key = element_key;
BEGIN
SELECT G.alg_gebouw_code ||' - '|| to_char(V.alg_verdieping_volgnr) ||' - '
INTO ruimte_code
FROM prs_werkplek W
, alg_ruimte R
, alg_verdieping V
, alg_gebouw G
WHERE W.prs_alg_ruimte_key = R.alg_ruimte_key
AND R.alg_verdieping_key = V.alg_verdieping_key
AND V.alg_gebouw_key = G.alg_gebouw_key
AND W.prs_werkplek_volgnr = element_omschrijving
AND W.prs_alg_ruimte_key = element_key
AND W.prs_werkplek_verwijder IS NULL;
/* Deze werkpleknummer komt al voor, dus een nieuw nummer bepalen. */
omschrijving := fac_f_fac_get_description('LPN_PRS_WERKPLEK'
,element_key
,NULL
,NULL);
SELECT SUBSTR(REPLACE(REPLACE(fac_message_text,'%1%',ruimte_code || ruimte_nr ||' - '|| element_omschrijving)
,'%2%',ruimte_code || omschrijving),1,128)
INTO melding
FROM fac_message
WHERE fac_message_code='PRJ_M064';
prj.verwerk_log(melding,session_id,project_key);
EXCEPTION
WHEN NO_DATA_FOUND
THEN /* Werkpleknummer komt nog niet voor in de echte situatie. */
omschrijving := substr(ruimte_nr ||' - '|| element_omschrijving,1,30);
END;
ELSIF element_type = 'DEEL'
THEN
/* Zoek of de omschrijving van het huidige object al voor komt. */
BEGIN
SELECT 'x'
INTO dummy
FROM ins_deel
WHERE ins_deel_omschrijving = element_omschrijving
AND ins_alg_locatie_key = element_key
AND ins_srtdeel_key = prefix_key
AND ins_deel_verwijder IS NULL;
/* Deze omschrijving komt al voor, dus een nieuw nummer bepalen. */
BEGIN
SELECT RTRIM(ins_srtdeel_code_upper)
INTO SrtDeelCode
FROM ins_srtdeel
WHERE ins_srtdeel_key = prefix_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN SrtDeelCode := null;
END;
omschrijving := fac_f_fac_get_description('LPN_INS_DEEL'
,element_key
,SrtDeelCode
,prefix_key);
SELECT REPLACE(REPLACE(fac_message_text,'%1%',element_omschrijving)
,'%2%',omschrijving)
INTO melding
FROM fac_message
WHERE fac_message_code='PRJ_M065';
prj.verwerk_log(melding,session_id,project_key);
EXCEPTION
WHEN NO_DATA_FOUND
THEN /* Omschrijving komt nog niet voor in de echte situatie. */
omschrijving := element_omschrijving;
END;
END IF;
RETURN omschrijving;
END verwerk_project_description;
/* prj.verwerk_project_hersteld
**
** Maak de verwijdering van een element in de werkelijke situatie weer ongedaan als deze in de
** projectsituatie niet is verwijderd. Hoewel er fysiek een nieuw element zal zijn geplaatst, is
** deze ter vervanging van een bestaande gekomen.
** Doe dit in de volgorde object, werkplek, ruimte.
*/
PROCEDURE verwerk_project_hersteld(p_session IN NUMBER
,p_projectkey IN NUMBER) IS
CURSOR c_ruimte(p_project IN NUMBER) IS
SELECT p.alg_ruimte_key
, p.alg_ruimte_nr
, p.alg_verdieping_key
, p.alg_ruimte_bruto_vloeropp
, p.alg_ruimte_omtrek
, p.alg_ruimte_getekend
, p.alg_ruimte_verwijder
FROM prj_v_prj_ruimte_herstel c
, prj_ruimte p
WHERE c.alg_ruimte_key = p.alg_ruimte_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND p.alg_ruimte_key <> 0; /* virtueel magazijn */
CURSOR c_werkplek(p_project IN NUMBER) IS
SELECT p.prs_werkplek_key
, p.prs_alg_ruimte_key
, p.prs_werkplek_volgnr
, p.prs_werkplek_getekend
, p.prs_werkplek_verwijder
, p.prs_werkplek_omschrijving
FROM prj_v_prj_werkplek_herstel c
, prj_werkplek p
WHERE c.prs_werkplek_key = p.prs_werkplek_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND p.prs_alg_ruimte_key <> 0; /* virtueel magazijn */
CURSOR c_object(p_project IN NUMBER) IS
SELECT p.ins_deel_key
, p.ins_srtdeel_key
, p.ins_alg_ruimte_key
, p.ins_alg_ruimte_type
, p.ins_alg_locatie_key
, p.ins_discipline_key
, p.ins_deel_omschrijving
, p.ins_deel_parent_key
, p.ins_deel_oppervlak
, p.ins_deel_omtrek
, p.ins_deel_getekend
, p.ins_deel_verwijder
FROM prj_v_prj_deel_herstel c
, prj_deel p
WHERE c.ins_deel_key = p.ins_deel_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND EXISTS (SELECT ''
FROM prj_werkplek
WHERE prs_alg_ruimte_key <> 0
AND prs_werkplek_key = p.ins_alg_ruimte_key
AND p.ins_alg_ruimte_type = 'W'
UNION
SELECT ''
FROM prj_ruimte
WHERE alg_ruimte_key <> 0
AND alg_ruimte_key = p.ins_alg_ruimte_key
AND p.ins_alg_ruimte_type = 'R'); /* virtueel magazijn */
dummy VARCHAR2(1);
alg_verwijder DATE;
prj_verwijder DATE;
omschrijving VARCHAR2(30);
ruimtenr alg_ruimte.alg_ruimte_nr%TYPE;
werkpleknr prs_werkplek.prs_werkplek_volgnr%TYPE;
SrtDeelCode ins_srtdeel.ins_srtdeel_code%TYPE;
aantal_hersteld NUMBER(10);
BEGIN
/*
** OBJECTEN
*/
aantal_hersteld := 0;
FOR v_object IN c_object(p_projectkey)
LOOP
omschrijving := verwerk_project_description('DEEL'
,v_object.ins_alg_locatie_key
,v_object.ins_deel_omschrijving
,p_projectkey
,v_object.ins_srtdeel_key
,p_session);
UPDATE ins_deel
SET ins_srtdeel_key = v_object.ins_srtdeel_key
, ins_alg_ruimte_key = v_object.ins_alg_ruimte_key
, ins_alg_ruimte_type = v_object.ins_alg_ruimte_type
, ins_alg_locatie_key = v_object.ins_alg_locatie_key
, ins_discipline_key = v_object.ins_discipline_key
, ins_deel_omschrijving = omschrijving
, ins_deel_parent_key = v_object.ins_deel_parent_key
, ins_deel_oppervlak = v_object.ins_deel_oppervlak
, ins_deel_omtrek = v_object.ins_deel_omtrek
, ins_deel_getekend = v_object.ins_deel_getekend
, ins_deel_verwijder = v_object.ins_deel_verwijder
WHERE ins_deel_key = v_object.ins_deel_key;
aantal_hersteld := aantal_hersteld + 1;
END LOOP;
COMMIT;
/*
** WERKPLEKKEN
*/
aantal_hersteld := 0;
FOR v_werkplek IN c_werkplek(p_projectkey)
LOOP
omschrijving := verwerk_project_description('WERKPLEK'
,v_werkplek.prs_alg_ruimte_key
,v_werkplek.prs_werkplek_volgnr
,p_projectkey
,NULL
,p_session);
werkpleknr := to_number(substr(Omschrijving,instr(Omschrijving,'-',1)+1));
UPDATE prs_werkplek
SET prs_alg_ruimte_key = v_werkplek.prs_alg_ruimte_key
, prs_werkplek_volgnr = werkpleknr
, prs_werkplek_omschrijving = omschrijving
, prs_werkplek_getekend = v_werkplek.prs_werkplek_getekend
, prs_werkplek_verwijder = v_werkplek.prs_werkplek_verwijder
WHERE prs_werkplek_key = v_werkplek.prs_werkplek_key;
aantal_hersteld := aantal_hersteld + 1;
END LOOP;
COMMIT;
/*
** RUIMTEN
*/
aantal_hersteld := 0;
FOR v_ruimte IN c_ruimte(p_projectkey)
LOOP
omschrijving := verwerk_project_description('RUIMTE'
,v_ruimte.alg_verdieping_key
,v_ruimte.alg_ruimte_nr
,p_projectkey
,NULL
,p_session);
UPDATE alg_ruimte
SET alg_ruimte_nr = omschrijving
, alg_verdieping_key = v_ruimte.alg_verdieping_key
, alg_ruimte_bruto_vloeropp = v_ruimte.alg_ruimte_bruto_vloeropp
, alg_ruimte_omtrek = v_ruimte.alg_ruimte_omtrek
, alg_ruimte_getekend = v_ruimte.alg_ruimte_getekend
, alg_ruimte_verwijder = v_ruimte.alg_ruimte_verwijder
WHERE alg_ruimte_key = v_ruimte.alg_ruimte_key;
aantal_hersteld := aantal_hersteld + 1;
END LOOP;
COMMIT;
END verwerk_project_hersteld;
/* prj.verwerk_project_nieuw
**
** Verwerk van het opgegeven projectnummer alle nieuwe elementen in de bestaande situatie.
** Doe dit in de volgorde ruimte, werkplek, object zodat eventuele koppelingen al kunnen
** worden gelegd.
*/
PROCEDURE verwerk_project_nieuw(p_session IN NUMBER
,p_projectkey IN NUMBER) IS
CURSOR c_ruimte(p_project IN NUMBER) IS
SELECT p.alg_ruimte_key
, p.alg_ruimte_nr
, p.alg_verdieping_key
, p.alg_ruimte_bruto_vloeropp
, p.alg_ruimte_omtrek
, p.alg_ruimte_getekend
, p.alg_ruimte_verwijder
FROM prj_v_prj_ruimte_nieuw c
, prj_ruimte p
WHERE c.alg_ruimte_key = p.alg_ruimte_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND p.alg_ruimte_key <> 0; /* virtueel magazijn */
CURSOR c_werkplek(p_project IN NUMBER) IS
SELECT p.prs_werkplek_key
, p.prs_alg_ruimte_key
, p.prs_werkplek_volgnr
, p.prs_werkplek_getekend
, p.prs_werkplek_verwijder
, p.prs_werkplek_omschrijving
FROM prj_v_prj_werkplek_nieuw c
, prj_werkplek p
WHERE c.prs_werkplek_key = p.prs_werkplek_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND p.prs_alg_ruimte_key <> 0; /* virtueel magazijn */
CURSOR c_object(p_project IN NUMBER) IS
SELECT p.ins_deel_key
, p.ins_srtdeel_key
, p.ins_alg_ruimte_key
, p.ins_alg_ruimte_type
, p.ins_alg_locatie_key
, p.ins_discipline_key
, p.ins_deel_omschrijving
, p.ins_deel_parent_key
, p.ins_deel_oppervlak
, p.ins_deel_omtrek
, p.ins_deel_getekend
, p.ins_deel_verwijder
FROM prj_v_prj_deel_nieuw c
, prj_deel p
WHERE c.ins_deel_key = p.ins_deel_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND EXISTS (SELECT ''
FROM prj_werkplek
WHERE prs_alg_ruimte_key <> 0
AND prs_werkplek_key = p.ins_alg_ruimte_key
AND p.ins_alg_ruimte_type = 'W'
UNION
SELECT ''
FROM prj_ruimte
WHERE alg_ruimte_key <> 0
AND alg_ruimte_key = p.ins_alg_ruimte_key
AND p.ins_alg_ruimte_type = 'R'); /* virtueel magazijn */
omschrijving VARCHAR2(30);
werkpleknr prs_werkplek.prs_werkplek_volgnr%TYPE;
ruimtenr alg_ruimte.alg_ruimte_nr%TYPE;
aantal_toegevoegd NUMBER(10);
BEGIN
/*
** RUIMTEN
*/
aantal_toegevoegd := 0;
FOR v_ruimte IN c_ruimte(p_projectkey)
LOOP
omschrijving := verwerk_project_description('RUIMTE'
,v_ruimte.alg_verdieping_key
,v_ruimte.alg_ruimte_nr
,p_projectkey
,NULL
,p_session);
INSERT INTO alg_ruimte
( alg_ruimte_key
, alg_ruimte_nr
, alg_verdieping_key
, alg_ruimte_bruto_vloeropp
, alg_ruimte_omtrek
, alg_ruimte_getekend
, alg_ruimte_verwijder)
VALUES(v_ruimte.alg_ruimte_key
, omschrijving
, v_ruimte.alg_verdieping_key
, v_ruimte.alg_ruimte_bruto_vloeropp
, v_ruimte.alg_ruimte_omtrek
, v_ruimte.alg_ruimte_getekend
, v_ruimte.alg_ruimte_verwijder);
aantal_toegevoegd := aantal_toegevoegd + 1;
END LOOP;
COMMIT;
/*
** WERKPLEKKEN
*/
aantal_toegevoegd := 0;
FOR v_werkplek IN c_werkplek(p_projectkey)
LOOP
omschrijving := verwerk_project_description('WERKPLEK'
,v_werkplek.prs_alg_ruimte_key
,v_werkplek.prs_werkplek_volgnr
,p_projectkey
,NULL
,p_session);
werkpleknr := to_number(substr(Omschrijving,instr(Omschrijving,'-',1)+1));
INSERT INTO prs_werkplek
( prs_werkplek_key
, prs_werkplek_module
, prs_alg_ruimte_key
, prs_werkplek_volgnr
, prs_werkplek_getekend
, prs_werkplek_verwijder
, prs_werkplek_omschrijving
, prs_werkplek_aanmaak)
VALUES(v_werkplek.prs_werkplek_key
, 'PRR'
, v_werkplek.prs_alg_ruimte_key
, werkpleknr
, v_werkplek.prs_werkplek_getekend
, v_werkplek.prs_werkplek_verwijder
, omschrijving
, v_werkplek.prs_werkplek_getekend);
aantal_toegevoegd := aantal_toegevoegd + 1;
END LOOP;
COMMIT;
/*
** OBJECTEN
*/
aantal_toegevoegd := 0;
FOR v_object IN c_object(p_projectkey)
LOOP
omschrijving := verwerk_project_description('DEEL'
,v_object.ins_alg_locatie_key
,v_object.ins_deel_omschrijving
,p_projectkey
,v_object.ins_srtdeel_key
,p_session);
INSERT INTO ins_deel
( ins_deel_key
, ins_srtdeel_key
, ins_alg_ruimte_key
, ins_alg_ruimte_type
, ins_alg_locatie_key
, ins_discipline_key
, ins_deel_omschrijving
, ins_deel_parent_key
, ins_deel_oppervlak
, ins_deel_omtrek
, ins_deel_getekend
, ins_deel_verwijder)
VALUES(v_object.ins_deel_key
, v_object.ins_srtdeel_key
, v_object.ins_alg_ruimte_key
, v_object.ins_alg_ruimte_type
, v_object.ins_alg_locatie_key
, v_object.ins_discipline_key
, omschrijving
, v_object.ins_deel_parent_key
, v_object.ins_deel_oppervlak
, v_object.ins_deel_omtrek
, v_object.ins_deel_getekend
, v_object.ins_deel_verwijder);
aantal_toegevoegd := aantal_toegevoegd + 1;
END LOOP;
COMMIT;
END verwerk_project_nieuw;
/* prj.verwerk_project_gewijzigd
**
** Verwerk de wijzigingen van bestaande elementen in de huidige situatie.
** Doe dit in de volgorde object, werkplek, ruimte.
*/
PROCEDURE verwerk_project_gewijzigd(p_session IN NUMBER
,p_projectkey IN NUMBER) IS
CURSOR c_ruimte(p_project IN NUMBER) IS
SELECT p.alg_ruimte_key
, p.alg_ruimte_nr
, p.alg_verdieping_key
, p.alg_ruimte_bruto_vloeropp
, p.alg_ruimte_omtrek
, p.alg_ruimte_getekend
, p.alg_ruimte_verwijder
FROM prj_v_ruimte_gewijzigd c
, prj_ruimte p
WHERE c.alg_ruimte_key = p.alg_ruimte_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND p.alg_ruimte_key <> 0; /* virtueel magazijn */
CURSOR c_werkplek(p_project IN NUMBER) IS
SELECT p.prs_werkplek_key
, p.prs_alg_ruimte_key
, p.prs_werkplek_volgnr
, p.prs_werkplek_getekend
, p.prs_werkplek_verwijder
, p.prs_werkplek_omschrijving
FROM prj_v_werkplek_verplaatst c
, prj_werkplek p
WHERE c.prs_werkplek_key = p.prs_werkplek_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND p.prs_alg_ruimte_key <> 0; /* virtueel magazijn */
CURSOR c_object(p_project IN NUMBER) IS
SELECT p.ins_deel_key
, p.ins_srtdeel_key
, p.ins_alg_ruimte_key
, p.ins_alg_ruimte_type
, p.ins_alg_locatie_key
, p.ins_discipline_key
, p.ins_deel_omschrijving
, p.ins_deel_parent_key
, p.ins_deel_oppervlak
, p.ins_deel_omtrek
, p.ins_deel_getekend
, p.ins_deel_verwijder
FROM prj_v_deel_verplaatst c
, prj_deel p
WHERE c.ins_deel_key = p.ins_deel_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND EXISTS (SELECT ''
FROM prj_werkplek
WHERE prs_alg_ruimte_key <> 0
AND prs_werkplek_key = p.ins_alg_ruimte_key
AND p.ins_alg_ruimte_type = 'W'
UNION
SELECT ''
FROM prj_ruimte
WHERE alg_ruimte_key <> 0
AND alg_ruimte_key = p.ins_alg_ruimte_key
AND p.ins_alg_ruimte_type = 'R'); /* virtueel magazijn */
dummy VARCHAR2(1);
omschrijving VARCHAR2(30);
ruimtenr alg_ruimte.alg_ruimte_nr%TYPE;
werkpleknr prs_werkplek.prs_werkplek_volgnr%TYPE;
SrtDeelCode ins_srtdeel.ins_srtdeel_code%TYPE;
aantal_gewijzigd NUMBER(10);
BEGIN
/*
** De OBJECTEN bestaat na uitvoering van het project nog steeds, maar de
** gegevens kunnen gewijzigd zijn.
*/
aantal_gewijzigd := 0;
FOR v_object IN c_object(p_projectkey)
LOOP
UPDATE ins_deel
SET ins_srtdeel_key = v_object.ins_srtdeel_key
, ins_alg_ruimte_key = v_object.ins_alg_ruimte_key
, ins_alg_ruimte_type = v_object.ins_alg_ruimte_type
, ins_alg_locatie_key = v_object.ins_alg_locatie_key
, ins_discipline_key = v_object.ins_discipline_key
, ins_deel_omschrijving = v_object.ins_deel_omschrijving
, ins_deel_parent_key = v_object.ins_deel_parent_key
, ins_deel_oppervlak = v_object.ins_deel_oppervlak
, ins_deel_omtrek = v_object.ins_deel_omtrek
, ins_deel_getekend = v_object.ins_deel_getekend
WHERE ins_deel_key = v_object.ins_deel_key;
aantal_gewijzigd := aantal_gewijzigd + 1;
END LOOP;
COMMIT;
/*
** De WERKPLEKKEN bestaat na uitvoering van het project nog steeds, maar de
** gegevens kunnen gewijzigd zijn.
*/
aantal_gewijzigd := 0;
FOR v_werkplek IN c_werkplek(p_projectkey)
LOOP
omschrijving := verwerk_project_description('WERKPLEK'
,v_werkplek.prs_alg_ruimte_key
,v_werkplek.prs_werkplek_volgnr
,p_projectkey
,NULL
,p_session);
werkpleknr := to_number(substr(Omschrijving,instr(Omschrijving,'-',1)+1));
UPDATE prs_werkplek
SET prs_alg_ruimte_key = v_werkplek.prs_alg_ruimte_key
, prs_werkplek_volgnr = werkpleknr
, prs_werkplek_omschrijving = omschrijving
, prs_werkplek_getekend = v_werkplek.prs_werkplek_getekend
WHERE prs_werkplek_key = v_werkplek.prs_werkplek_key;
aantal_gewijzigd := aantal_gewijzigd + 1;
END LOOP;
COMMIT;
/*
** De RUIMTEN bestaat na uitvoering van het project nog steeds, maar de
** gegevens kunnen gewijzigd zijn.
*/
aantal_gewijzigd := 0;
FOR v_ruimte IN c_ruimte(p_projectkey)
LOOP
UPDATE alg_ruimte
SET alg_ruimte_nr = v_ruimte.alg_ruimte_nr
, alg_verdieping_key = v_ruimte.alg_verdieping_key
, alg_ruimte_bruto_vloeropp = v_ruimte.alg_ruimte_bruto_vloeropp
, alg_ruimte_omtrek = v_ruimte.alg_ruimte_omtrek
, alg_ruimte_getekend = v_ruimte.alg_ruimte_getekend
WHERE alg_ruimte_key = v_ruimte.alg_ruimte_key;
aantal_gewijzigd := aantal_gewijzigd + 1;
END LOOP;
COMMIT;
END verwerk_project_gewijzigd;
/* prj.verwerk_project_verwijderd
**
** In de projectsituatie zijn er elementen verwijderd. Zet deze elementen in de huidige situatie op verwijderd.
** Doe dit in de volgorde object, werkplek, ruimte.
*/
PROCEDURE verwerk_project_verwijderd(p_session IN NUMBER
,p_projectkey IN NUMBER
,p_merge_tekening IN BOOLEAN) IS
CURSOR c_ruimte(p_project IN NUMBER) IS
SELECT p.alg_ruimte_key
, p.alg_ruimte_getekend
, p.alg_ruimte_verwijder
FROM prj_v_ruimte_verwijderd c
, prj_ruimte p
WHERE c.alg_ruimte_key = p.alg_ruimte_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND p.alg_ruimte_key <> 0; /* virtueel magazijn */
CURSOR c_ruimte_nieuw(p_project IN NUMBER) IS
SELECT r.alg_ruimte_key
, r.alg_ruimte_getekend
, r.alg_ruimte_verwijder
FROM prj_v_alg_ruimte_nieuw p
, alg_ruimte r
WHERE p.alg_ruimte_key = r.alg_ruimte_key
AND p.prj_project_key = p_project;
CURSOR c_werkplek(p_project IN NUMBER) IS
SELECT p.prs_werkplek_key
, p.prs_werkplek_getekend
, p.prs_werkplek_verwijder
FROM prj_v_werkplek_verwijderd_all c
, prj_werkplek p
WHERE c.prs_werkplek_key = p.prs_werkplek_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project;
CURSOR c_werkplek_nieuw(p_project IN NUMBER) IS
SELECT w.prs_werkplek_key
, w.prs_werkplek_getekend
, w.prs_werkplek_verwijder
FROM prj_v_prs_werkplek_nieuw p
, prs_werkplek w
WHERE p.prs_werkplek_key = w.prs_werkplek_key
AND p.prj_project_key = p_project;
CURSOR c_object(p_project IN NUMBER) IS
SELECT p.ins_deel_key
, p.ins_deel_getekend
, p.ins_deel_verwijder
, p.ins_discipline_key
FROM prj_v_deel_verwijderd_all c
, prj_deel p
WHERE c.ins_deel_key = p.ins_deel_key
AND c.prj_project_key = p.prj_project_key
AND p.prj_project_key = p_project
AND EXISTS (SELECT ''
FROM prj_werkplek
WHERE prs_werkplek_key = p.ins_alg_ruimte_key
AND p.ins_alg_ruimte_type = 'W'
UNION
SELECT ''
FROM prj_ruimte
WHERE alg_ruimte_key = p.ins_alg_ruimte_key
AND p.ins_alg_ruimte_type = 'R');
CURSOR c_object_nieuw(p_project IN NUMBER) IS
SELECT d.ins_deel_key
, d.ins_deel_getekend
, d.ins_deel_verwijder
, d.ins_discipline_key
FROM prj_v_ins_deel_nieuw p
, ins_deel d
WHERE p.ins_deel_key = d.ins_deel_key
AND p.prj_project_key = p_project
AND EXISTS (SELECT ''
FROM ins_v_deel_plaatsaanduiding
WHERE ins_deel_key = d.ins_deel_key
AND prs_werkplek_verwijder IS NULL);
aantal_verwijderd NUMBER(10);
dummy VARCHAR2(1);
BEGIN
--prj_err.err(' > verwerk_project_verwijderd');
/*
** In de projectsituatie zijn deze OBJECTEN verwijderd.
*/
aantal_verwijderd := 0;
--prj_err.err(' : oude objecten '||to_char(sysdate,'dd-mm-yyyy hh24:mi:ss'));
FOR v_object IN c_object(p_projectkey)
LOOP
BEGIN
--prj_err.err(' : oud object nr '||to_char(aantal_verwijderd)||' met key '||to_char(v_object.ins_deel_key)||' op '||to_char(sysdate,'dd-mm-yyyy hh24:mi:ss'));
SELECT ''
INTO dummy
FROM cad_tekening
WHERE ins_discipline_key = v_object.ins_discipline_key
AND alg_verdieping_key = (SELECT alg_verdieping_key
FROM ins_v_deel_plaatsaanduiding
WHERE ins_deel_key = v_object.ins_deel_key)
AND prj_project_key = p_projectkey
AND rownum = 1;
--
-- Discipline komt in project voor.
--
UPDATE ins_deel
SET ins_deel_getekend = v_object.ins_deel_getekend
, ins_deel_verwijder = NVL(v_object.ins_deel_verwijder,sysdate)
WHERE ins_deel_key = v_object.ins_deel_key;
aantal_verwijderd := aantal_verwijderd + 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL; -- Discipline komt niet in project voor.
END;
END LOOP;
IF NOT p_merge_tekening
THEN
--prj_err.err(' : nieuwe objecten '||to_char(sysdate,'dd-mm-yyyy hh24:mi:ss'));
FOR v_object IN c_object_nieuw(p_projectkey)
LOOP
BEGIN
--prj_err.err(' : nieuw object nr '||to_char(aantal_verwijderd)||' met key '||to_char(v_object.ins_deel_key)||' op '||to_char(sysdate,'dd-mm-yyyy hh24:mi:ss'));
SELECT ''
INTO dummy
FROM cad_tekening
WHERE ins_discipline_key = v_object.ins_discipline_key
AND alg_verdieping_key = (SELECT alg_verdieping_key
FROM ins_v_deel_plaatsaanduiding
WHERE ins_deel_key = v_object.ins_deel_key)
AND prj_project_key = p_projectkey
AND rownum = 1;
--
-- Discipline komt in project voor.
--
-- prj.verwerk_log('Object verwijderd: <20> '||to_char(v_object.ins_deel_key),p_session,p_projectkey);
UPDATE ins_deel
SET ins_deel_getekend = NULL
, ins_deel_verwijder = NVL(v_object.ins_deel_verwijder,sysdate)
WHERE ins_deel_key = v_object.ins_deel_key;
aantal_verwijderd := aantal_verwijderd + 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL; -- Discipline komt niet in project voor.
END;
END LOOP;
END IF;
--prj_err.err(' : '||to_char(aantal_verwijderd)||' objecten verwijderd');
COMMIT;
/*
** In de projectsituatie zijn deze WERKPLEKKEN verwijderd. Daarmee zijn ook de
** objecten die nog aan deze werkplekken verbonden zijn verwijderd.
*/
--prj_err.err(' : oude werkplekken');
aantal_verwijderd := 0;
FOR v_werkplek IN c_werkplek(p_projectkey)
LOOP
UPDATE prs_werkplek
SET prs_werkplek_getekend = v_werkplek.prs_werkplek_getekend
, prs_werkplek_verwijder = NVL(v_werkplek.prs_werkplek_verwijder,sysdate)
WHERE prs_werkplek_key = v_werkplek.prs_werkplek_key;
aantal_verwijderd := aantal_verwijderd + 1;
END LOOP;
IF NOT p_merge_tekening
THEN
--prj_err.err(' : nieuwe werkplekken');
FOR v_werkplek IN c_werkplek_nieuw(p_projectkey)
LOOP
--prj.verwerk_log('Werkplek verwijderd: <20> '||to_char(v_werkplek.prs_werkplek_key),p_session,p_projectkey);
UPDATE prs_werkplek
SET prs_werkplek_getekend = NULL
, prs_werkplek_verwijder = NVL(v_werkplek.prs_werkplek_verwijder,sysdate)
WHERE prs_werkplek_key = v_werkplek.prs_werkplek_key;
aantal_verwijderd := aantal_verwijderd + 1;
END LOOP;
END IF;
--prj_err.err(' : '||to_char(aantal_verwijderd)||' werkplekken verwijderd');
COMMIT;
/*
** In de projectsituatie zijn deze RUIMTEN verwijderd. Daarmee zijn ook de
** werkplekken en objecten die zich nog in deze ruimten bevonden verwijderd.
*/
--prj_err.err(' : oude ruimten');
aantal_verwijderd := 0;
FOR v_ruimte IN c_ruimte(p_projectkey)
LOOP
UPDATE alg_ruimte
SET alg_ruimte_getekend = v_ruimte.alg_ruimte_getekend
, alg_ruimte_verwijder = NVL(v_ruimte.alg_ruimte_verwijder,sysdate)
WHERE alg_ruimte_key = v_ruimte.alg_ruimte_key;
aantal_verwijderd := aantal_verwijderd + 1;
END LOOP;
IF NOT p_merge_tekening
THEN
--prj_err.err(' : nieuwe ruimte');
FOR v_ruimte IN c_ruimte_nieuw(p_projectkey)
LOOP
--prj.verwerk_log('Ruimte verwijderd: <20> '||to_char(v_ruimte.alg_ruimte_key),p_session,p_projectkey);
UPDATE alg_ruimte
SET alg_ruimte_getekend = NULL
, alg_ruimte_verwijder = NVL(v_ruimte.alg_ruimte_verwijder,sysdate)
WHERE alg_ruimte_key = v_ruimte.alg_ruimte_key;
aantal_verwijderd := aantal_verwijderd + 1;
END LOOP;
END IF;
--prj_err.err(' : '||to_char(aantal_verwijderd)||' ruimten verwijderd');
COMMIT;
--prj_err.err(' > verwerk_project_verwijderd');
END verwerk_project_verwijderd;
/* prj.verwerk_project
**
** Verwerk de mutaties van de projectsituatie in de echte situatie.
*/
PROCEDURE verwerk_project(SessionId IN NUMBER
,ProjectKey IN NUMBER
,MergeTekening IN BOOLEAN) IS
BEGIN
--prj_err.err('> verwerk_project');
verwerk_project_hersteld (SessionId,ProjectKey);
verwerk_project_nieuw (SessionId,ProjectKey);
verwerk_project_gewijzigd (SessionId,ProjectKey);
verwerk_project_verwijderd(SessionId,ProjectKey,MergeTekening);
--prj_err.err(': modules doorlopen');
UPDATE prj_project
SET prj_project_eindreal = sysdate
WHERE prj_project_key = ProjectKey;
COMMIT;
/*
** Het project is nu doorgevoerd, dus alle prj-records van dit project
** kunnen nu verwijderd worden.
*/
DELETE
FROM prj_deel
WHERE prj_project_key = ProjectKey;
DELETE
FROM prj_werkplek
WHERE prj_project_key = ProjectKey;
DELETE
FROM prj_ruimte
WHERE prj_project_key = ProjectKey;
DELETE
FROM cad_tekening
WHERE prj_project_key = ProjectKey;
--prj_err.err('< verwerk_project');
END;
END prj;
/
#endif // PRJ
#ifdef RES
/* Nieuwe entities i.v.m. de nieuwe reserverings-module */
DEF_FAC_ENTITY ('MENU_RES_RESERVERING' , 'R'||CHR(38)||'eserveringen', null, null);
DEF_FAC_ENTITY ('MENU_RES_OPSTELLING' , 'Opstelling', null, null);
DEF_FAC_ENTITY ('MENU_RES_RUIMTE' , 'Ruimten', null, null);
DEF_FAC_ENTITY ('RES_RESERVERING' , 'Reservering', 'Reserveringen', null);
DEF_FAC_ENTITY ('RES_RESERVERINGNUMMER' , 'Reserveringnr.', null, null);
DEF_FAC_ENTITY ('RES_RESERVERINGRUIMTE' , 'Reserv. ruimten', null, null);
DEF_FAC_ENTITY ('RES_RESERVERINGNAAM' , 'Naam', null, null);
DEF_FAC_ENTITY ('RES_RESERVERINGVAN' , 'Van', null, null);
DEF_FAC_ENTITY ('RES_RESERVERINGTOT' , 'Tot', null, null);
DEF_FAC_ENTITY ('RES_RESERVERINGSTATUS' , 'Status', null, null);
DEF_FAC_ENTITY ('RES_RESERVERINGNR' , 'Nr.', null, null);
DEF_FAC_ENTITY ('RES_RESERVERINGPLAATS' , 'Plaats', null, null);
DEF_FAC_ENTITY ('RES_STATUS' , 'Status', null, null);
DEF_FAC_ENTITY ('RES_OPDRACHT' , 'Opdracht', null, null);
DEF_FAC_ENTITY ('RES_PRINT' , 'Printen', null, null);
DEF_FAC_ENTITY ('RES_EXPORT' , 'Exporteren', null, null);
DEF_FAC_ENTITY ('RES_OPSTELLING' , 'Opstelling', 'Opstellingen', null);
DEF_FAC_ENTITY ('RES_OMSCHRIJVING' , 'Omschrijving', null, null);
DEF_FAC_ENTITY ('RES_RUIMTE' , 'Ruimte', null, null);
DEF_FAC_ENTITY ('RES_PRIJS' , 'Prijs', null, null);
DEF_FAC_ENTITY ('RES_PRIJS2' , '(per uur)', null, null);
DEF_FAC_ENTITY ('RES_ALTERNATRUIMTE' , 'Altern. ruimte', null, null);
DEF_FAC_ENTITY ('RES_CATERING' , 'Catering', null, null);
DEF_FAC_ENTITY ('RES_DATUMVAN' , 'Van ', null, null);
DEF_FAC_ENTITY ('RES_DATUMTOT' , 'Tot ', null, null);
DEF_FAC_ENTITY ('RES_DATUM' , 'Datum', null, null);
DEF_FAC_ENTITY ('RES_TIJD' , 'Tijd', null, null);
DEF_FAC_ENTITY ('RES_UREN' , 'Aantal uren', null, null);
DEF_FAC_ENTITY ('RES_AANVRAGER' , 'Aanvrager', null, null);
DEF_FAC_ENTITY ('RES_FREQUENTIE' , 'Frequentie', null, null);
DEF_FAC_MESSAGE ('RES_M001','Voorlopig');
DEF_FAC_MESSAGE ('RES_M002','Definitief');
DEF_FAC_MESSAGE ('RES_M003','Verwijderen opstelling ');
DEF_FAC_MESSAGE ('RES_M004','Verwijderen reserveerbare ruimte ');
DEF_FAC_MESSAGE ('RES_M005','Er zijn geen ruimten geselecteerd.');
DEF_FAC_MESSAGE ('RES_M006','Reserveerbare ruimten');
DEF_FAC_MESSAGE ('RES_M007','Aantal bezoekers');
DEF_FAC_MESSAGE ('RES_M008','Norm bezoekers');
DEF_FAC_MESSAGE ('RES_M009','Koppeling reserv. ruimte en opstelling');
DEF_FAC_MESSAGE ('RES_M010','Verwijderen reservering ');
DEF_FAC_MESSAGE ('res_c_res_ruimte_nr' , 'De naam van de reserveerbare ruimte is niet ingevuld.');
DEF_FAC_MESSAGE ('res_c_res_ruimte_upper' , 'De naam van de reserveerbare ruimte is niet ingevuld.');
DEF_FAC_MESSAGE ('res_u_res_ruimte_upper' , 'De naam van de reserveerbare ruimte is niet uniek.');
DEF_FAC_MESSAGE ('res_c_res_reservering_van' , 'Begindatum/Tijd van de reservering is niet ingevuld.');
DEF_FAC_MESSAGE ('res_c_res_reservering_tot' , 'Einddatum/Tijd van de reservering is niet ingevuld.');
DEF_FAC_MESSAGE ('res_c_res_reservering_datum' , 'Einddatum/Tijd moet later zijn dan Begindatum/Tijd.');
DEF_FAC_MESSAGE ('res_c_res_opstelling_omschr' , 'De omschrijving van de opstelling is niet ingevuld.');
DEF_FAC_MESSAGE ('res_c_res_opstelling_upper' , 'De omschrijving van de opstelling is niet ingevuld.');
DEF_FAC_MESSAGE ('res_u_res_opstelling_upper' , 'De omschrijving van de opstelling is niet uniek.');
#endif // RES