SDUN#13013 Werkplekken tekenen

FSN#13650 symbolen vrij roteren

svn path=/Database/trunk/; revision=9728
This commit is contained in:
Jos Groot Lipman
2008-02-14 12:22:08 +00:00
parent cc8dcf60c1
commit 9169f9ce45

View File

@@ -1,8 +1,8 @@
#ifdef PRJ #ifdef PRJ
/* PRJ_PAC.SRC /* PRJ_PAC.SRC
* *
* $Revision: 51 $ * $Revision: 52 $
* $Modtime: 13-02-08 9:48 $ * $Modtime: 14-02-08 13:58 $
*/ */
/* /*
CODE COMMENTS, CONSIDERATIONS CODE COMMENTS, CONSIDERATIONS
@@ -38,8 +38,10 @@ AS
PROCEDURE prj_move_perslidwerkplek (pperslidwerkplekkey IN NUMBER, pruimtekey IN NUMBER, pwerkplekkey IN NUMBER); PROCEDURE prj_move_perslidwerkplek (pperslidwerkplekkey IN NUMBER, pruimtekey IN NUMBER, pwerkplekkey IN NUMBER);
PROCEDURE prj_move_perslid (pperslidkey IN NUMBER, pruimtekey IN NUMBER, pwerkplekkey IN NUMBER); PROCEDURE prj_move_perslid (pperslidkey IN NUMBER, pruimtekey IN NUMBER, pwerkplekkey IN NUMBER);
PROCEDURE prj_move_perslid2 (pperslidkey IN NUMBER, pruimtekey IN NUMBER); PROCEDURE prj_move_perslid2 (pperslidkey IN NUMBER, pruimtekey IN NUMBER);
FUNCTION forceuniqueness (element_type IN VARCHAR2 , parent_key IN NUMBER, element_omschrijving IN VARCHAR2 ) FUNCTION forceuniqueness (element_type IN VARCHAR2 , parent_key IN NUMBER, element_omschrijving IN VARCHAR2, srtdeelkey IN NUMBER )
RETURN VARCHAR2 ; RETURN VARCHAR2 ;
FUNCTION find_or_create_free_werkplek (pruimtekey IN NUMBER,bezetting IN NUMBER )
RETURN NUMBER ;
END prj; END prj;
/ /
@@ -65,11 +67,11 @@ AS
); );
RETURN; RETURN;
END checkscenario; END checkscenario;
FUNCTION forceuniqueness ( FUNCTION forceuniqueness (
element_type IN VARCHAR2, element_type IN VARCHAR2,
parent_key IN NUMBER, parent_key IN NUMBER,
element_omschrijving IN VARCHAR2 element_omschrijving IN VARCHAR2,
srtdeelkey IN NUMBER
) )
RETURN VARCHAR2 RETURN VARCHAR2
IS IS
@@ -91,12 +93,12 @@ AS
AND r.alg_verdieping_key = parent_key AND r.alg_verdieping_key = parent_key
AND r.alg_ruimte_nr = element_omschrijving AND r.alg_ruimte_nr = element_omschrijving
AND r.alg_ruimte_verwijder IS NULL; AND r.alg_ruimte_verwijder IS NULL;
-- Gevonden, dus niet uniek. Probeer het met een sterretje ervoor, passen ze dat later maar zelf aan -- Gevonden, dus niet uniek. Probeer het met een sterretje ervoor, passen ze dat later maar zelf aan
omschrijving := omschrijving :=
forceuniqueness (element_type, forceuniqueness (element_type,
parent_key, parent_key,
SUBSTR ('*' || element_omschrijving, 1, 10) SUBSTR ('*' || element_omschrijving, 1, 10),
NULL
); );
EXCEPTION EXCEPTION
WHEN NO_DATA_FOUND WHEN NO_DATA_FOUND
@@ -104,7 +106,28 @@ AS
omschrijving := element_omschrijving; omschrijving := element_omschrijving;
END; END;
END IF; END IF;
-- objecten
IF element_type = 'INS_DEEL'
THEN
-- Zoek op de locatie of het huidige objectnummer al voor komt.
BEGIN
SELECT ins_deel_omschrijving
INTO prefix
FROM ins_deel
WHERE ins_alg_locatie_key = parent_key
AND ins_deel_upper = upper(element_omschrijving)
AND ins_srtdeel_key = srtdeelkey
AND ins_deel_verwijder IS NULL;
-- Gevonden, dus niet uniek. Probeer het met een sterretje ervoor, passen ze dat later maar zelf aan
SELECT FAC_F_FAC_GET_DESCRIPTION('LPN_INS_DEEL',parent_key , ins_srtdeel_code_upper, srtdeelkey)
INTO omschrijving
FROM ins_srtdeel WHERE ins_srtdeel_key=srtdeelkey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
omschrijving := element_omschrijving;
END;
END IF;
-- Voor werkplekken, die een unieke numerieke ID hebben wordt gecheckt of de huidige waarde ok is, -- Voor werkplekken, die een unieke numerieke ID hebben wordt gecheckt of de huidige waarde ok is,
-- en zoniet, dan wordt er doorgeteld tot de eersthogere wel unieke -- en zoniet, dan wordt er doorgeteld tot de eersthogere wel unieke
IF element_type = 'PRS_WERKPLEK' IF element_type = 'PRS_WERKPLEK'
@@ -127,20 +150,20 @@ AS
AND w.prs_alg_ruimte_key = parent_key AND w.prs_alg_ruimte_key = parent_key
AND w.prs_werkplek_volgnr = TO_NUMBER (element_omschrijving) AND w.prs_werkplek_volgnr = TO_NUMBER (element_omschrijving)
AND w.prs_werkplek_verwijder IS NULL; AND w.prs_werkplek_verwijder IS NULL;
-- Gevonden, dus niet uniek. Probeer het met een sterretje ervoor, passen ze dat later maar zelf aan -- Gevonden, dus niet uniek. Probeer het met een sterretje ervoor, passen ze dat later maar zelf aan
IF TO_NUMBER (element_omschrijving) = 999 IF TO_NUMBER (element_omschrijving) = 999
THEN THEN
-- Ik kan met 3 cijfers niet hoger, begin opnieuw onderaan (to prevent infinite recursion) -- Ik kan met 3 cijfers niet hoger, begin opnieuw onderaan (to prevent infinite recursion)
omschrijving := omschrijving :=
forceuniqueness (element_type, parent_key, '000'); forceuniqueness (element_type, parent_key, '000', NULL);
ELSE ELSE
omschrijving := omschrijving :=
forceuniqueness (element_type, forceuniqueness (element_type,
parent_key, parent_key,
TO_CHAR ( TO_NUMBER (element_omschrijving) TO_CHAR ( TO_NUMBER (element_omschrijving)
+ 1 + 1
) ),
NULL
); );
END IF; END IF;
EXCEPTION EXCEPTION
@@ -149,7 +172,6 @@ AS
omschrijving := element_omschrijving; omschrijving := element_omschrijving;
END; END;
END IF; END IF;
IF element_type = 'PRJ_WERKPLEK' IF element_type = 'PRJ_WERKPLEK'
THEN THEN
-- Zoek in de geselecteerde ruimte of het huidige werkpleknummer al voor komt. -- Zoek in de geselecteerde ruimte of het huidige werkpleknummer al voor komt.
@@ -160,20 +182,20 @@ AS
WHERE w.prj_ruimte_key = parent_key WHERE w.prj_ruimte_key = parent_key
AND w.prj_werkplek_volgnr = element_omschrijving AND w.prj_werkplek_volgnr = element_omschrijving
AND w.prj_werkplek_verwijder IS NULL; AND w.prj_werkplek_verwijder IS NULL;
-- Gevonden, dus niet uniek. Probeer het met een sterretje ervoor, passen ze dat later maar zelf aan -- Gevonden, dus niet uniek. Probeer het met een sterretje ervoor, passen ze dat later maar zelf aan
IF TO_NUMBER (element_omschrijving) = 999 IF TO_NUMBER (element_omschrijving) = 999
THEN THEN
-- Ik kan met 3 cijfers niet hoger, begin opnieuw onderaan (to prevent infinite recursion) -- Ik kan met 3 cijfers niet hoger, begin opnieuw onderaan (to prevent infinite recursion)
omschrijving := omschrijving :=
forceuniqueness (element_type, parent_key, '000'); forceuniqueness (element_type, parent_key, '000', NULL);
ELSE ELSE
omschrijving := omschrijving :=
forceuniqueness (element_type, forceuniqueness (element_type,
parent_key, parent_key,
TO_CHAR ( TO_NUMBER (element_omschrijving) TO_CHAR ( TO_NUMBER (element_omschrijving)
+ 1 + 1
) ),
NULL
); );
END IF; END IF;
EXCEPTION EXCEPTION
@@ -182,10 +204,8 @@ AS
omschrijving := element_omschrijving; omschrijving := element_omschrijving;
END; END;
END IF; END IF;
RETURN omschrijving; RETURN omschrijving;
END; END;
FUNCTION defaultwpomschrijving (pruimtekey IN NUMBER, pwerkpleknr IN NUMBER) FUNCTION defaultwpomschrijving (pruimtekey IN NUMBER, pwerkpleknr IN NUMBER)
RETURN VARCHAR2 RETURN VARCHAR2
IS IS
@@ -200,10 +220,8 @@ AS
INTO omschrijving INTO omschrijving
FROM prj_ruimte FROM prj_ruimte
WHERE prj_ruimte_key = pruimtekey; WHERE prj_ruimte_key = pruimtekey;
RETURN omschrijving; RETURN omschrijving;
END; END;
---------------------------------------------- ----------------------------------------------
-- SCENARIO MANAGEMENT PROCEDURES -- SCENARIO MANAGEMENT PROCEDURES
---------------------------------------------- ----------------------------------------------
@@ -215,7 +233,6 @@ AS
dummy VARCHAR2 (1); dummy VARCHAR2 (1);
BEGIN BEGIN
checkscenario (pscenariokey); checkscenario (pscenariokey);
BEGIN BEGIN
SELECT 'x' SELECT 'x'
INTO dummy INTO dummy
@@ -231,7 +248,6 @@ AS
); );
RETURN; RETURN;
END; END;
BEGIN BEGIN
SELECT 'x' SELECT 'x'
INTO dummy INTO dummy
@@ -248,7 +264,6 @@ AS
NULL; NULL;
RETURN; RETURN;
END; END;
-- ** Parameters are proven valid -- ** Parameters are proven valid
-- ?? Check of er al een kopie bestaat nodig ?? -- ?? Check of er al een kopie bestaat nodig ??
-- Kopieer de ruimtes -- Kopieer de ruimtes
@@ -264,22 +279,24 @@ AS
FROM alg_ruimte r FROM alg_ruimte r
WHERE r.alg_ruimte_verwijder IS NULL WHERE r.alg_ruimte_verwijder IS NULL
AND alg_verdieping_key = pverdiepingkey; AND alg_verdieping_key = pverdiepingkey;
-- Kopieer de werkplekken -- Kopieer de werkplekken
INSERT INTO prj_werkplek INSERT INTO prj_werkplek
(prj_werkplek_key, prs_werkplek_key, prj_werkplek_volgnr, (prj_werkplek_key, prs_werkplek_key, prj_werkplek_volgnr,
prj_werkplek_omschrijving, prj_werkplek_vastopp, prj_werkplek_omschrijving, prj_werkplek_vastopp,
prj_werkplek_opp, prj_ruimte_key) prj_werkplek_opp, prj_ruimte_key,
prj_werkplek_dwgx, prj_werkplek_dwgy,
prj_werkplek_dwgrotatie, prj_werkplek_dwgschaal)
SELECT NULL, prs_werkplek_key, prs_werkplek_volgnr, SELECT NULL, prs_werkplek_key, prs_werkplek_volgnr,
prs_werkplek_omschrijving, prs_werkplek_vastopp, prs_werkplek_omschrijving, prs_werkplek_vastopp,
prs_werkplek_opp, prj_ruimte_key prs_werkplek_opp, prj_ruimte_key,
prs_werkplek_dwgx, prs_werkplek_dwgy,
prs_werkplek_dwgrotatie, prs_werkplek_dwgschaal
FROM prs_werkplek w, prj_ruimte rx FROM prs_werkplek w, prj_ruimte rx
WHERE w.prs_alg_ruimte_key = rx.alg_ruimte_key WHERE w.prs_alg_ruimte_key = rx.alg_ruimte_key
AND w.prs_werkplek_verwijder IS NULL AND w.prs_werkplek_verwijder IS NULL
AND w.prs_werkplek_virtueel = 0 AND w.prs_werkplek_virtueel = 0
AND rx.prj_scenario_key = pscenariokey AND rx.prj_scenario_key = pscenariokey
AND rx.alg_verdieping_key = pverdiepingkey; AND rx.alg_verdieping_key = pverdiepingkey;
-- Kopieer de werkplekbezettingen -- Kopieer de werkplekbezettingen
INSERT INTO prj_perslidwerkplek INSERT INTO prj_perslidwerkplek
(prj_perslidwerkplek_key, prs_perslidwerkplek_key, (prj_perslidwerkplek_key, prs_perslidwerkplek_key,
@@ -304,13 +321,16 @@ AS
AND pw.prs_perslid_key IS NULL AND pw.prs_perslid_key IS NULL
AND wx.prj_ruimte_key = rx.prj_ruimte_key AND wx.prj_ruimte_key = rx.prj_ruimte_key
AND rx.alg_verdieping_key = pverdiepingkey; AND rx.alg_verdieping_key = pverdiepingkey;
-- Kopieer de objecten -- Kopieer de objecten
INSERT INTO prj_deel INSERT INTO prj_deel
(prj_deel_key, ins_deel_key, prj_ruimte_key, (prj_deel_key, ins_deel_key, prj_ruimte_key,
prj_deel_omschrijving, ins_srtdeel_key) prj_deel_omschrijving, ins_srtdeel_key,
prj_deel_dwgx, prj_deel_dwgy,
prj_deel_dwgrotatie, prj_deel_dwgschaal)
SELECT NULL, ins_deel_key, rx.prj_ruimte_key, ins_deel_omschrijving, SELECT NULL, ins_deel_key, rx.prj_ruimte_key, ins_deel_omschrijving,
d.ins_srtdeel_key d.ins_srtdeel_key,
ins_deel_dwgx, ins_deel_dwgy,
ins_deel_dwgrotatie, ins_deel_dwgschaal
FROM ins_deel d, alg_v_aanwezigruimte r, prj_ruimte rx FROM ins_deel d, alg_v_aanwezigruimte r, prj_ruimte rx
WHERE d.ins_alg_ruimte_type = 'R' WHERE d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = r.alg_ruimte_key AND d.ins_alg_ruimte_key = r.alg_ruimte_key
@@ -319,10 +339,13 @@ AS
AND rx.prj_scenario_key = pscenariokey AND rx.prj_scenario_key = pscenariokey
AND rx.alg_ruimte_key = r.alg_ruimte_key AND rx.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = pverdiepingkey; AND r.alg_verdieping_key = pverdiepingkey;
INSERT INTO prj_deel INSERT INTO prj_deel
(prj_deel_key, ins_deel_key, prj_ruimte_key, prj_werkplek_key, prj_deel_omschrijving, ins_srtdeel_key) (prj_deel_key, ins_deel_key, prj_ruimte_key, prj_werkplek_key, prj_deel_omschrijving, ins_srtdeel_key,
SELECT NULL, ins_deel_key, rx.prj_ruimte_key, wx.prj_werkplek_key, ins_deel_omschrijving, d.ins_srtdeel_key prj_deel_dwgx, prj_deel_dwgy,
prj_deel_dwgrotatie, prj_deel_dwgschaal)
SELECT NULL, ins_deel_key, rx.prj_ruimte_key, wx.prj_werkplek_key, ins_deel_omschrijving, d.ins_srtdeel_key,
ins_deel_dwgx, ins_deel_dwgy,
ins_deel_dwgrotatie, ins_deel_dwgschaal
FROM ins_deel d, alg_v_aanwezigruimte r, prs_v_aanwezigwerkplek w, prj_ruimte rx, prj_werkplek wx FROM ins_deel d, alg_v_aanwezigruimte r, prs_v_aanwezigwerkplek w, prj_ruimte rx, prj_werkplek wx
WHERE d.ins_alg_ruimte_type = 'W' WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key = w.prs_werkplek_key AND d.ins_alg_ruimte_key = w.prs_werkplek_key
@@ -332,11 +355,10 @@ AS
AND rx.prj_scenario_key = pscenariokey AND rx.prj_scenario_key = pscenariokey
AND rx.alg_ruimte_key = r.alg_ruimte_key AND rx.alg_ruimte_key = r.alg_ruimte_key
AND wx.prj_ruimte_key = rx.prj_ruimte_key AND wx.prj_ruimte_key = rx.prj_ruimte_key
AND r.alg_verdieping_key = pverdiepingkey; AND r.alg_verdieping_key = pverdiepingkey
AND wx.prs_werkplek_key = w.prs_werkplek_key;
COMMIT; COMMIT;
END prj_initiate_scenario; END prj_initiate_scenario;
PROCEDURE prj_copy_scenario ( PROCEDURE prj_copy_scenario (
pscenariokey_from IN NUMBER, pscenariokey_from IN NUMBER,
pscenariokey_to IN NUMBER pscenariokey_to IN NUMBER
@@ -346,7 +368,6 @@ AS
BEGIN BEGIN
checkscenario (pscenariokey_from); checkscenario (pscenariokey_from);
checkscenario (pscenariokey_to); checkscenario (pscenariokey_to);
BEGIN BEGIN
SELECT 'x' SELECT 'x'
INTO dummy INTO dummy
@@ -362,10 +383,8 @@ AS
NULL; NULL;
RETURN; RETURN;
END; END;
raise_application_error (-20002, 'prj package: copy not yet supported'); raise_application_error (-20002, 'prj package: copy not yet supported');
RETURN; RETURN;
-- ** Parameters are proven valid -- ** Parameters are proven valid
-- Kopieer de ruimtes -- Kopieer de ruimtes
INSERT INTO prj_ruimte INSERT INTO prj_ruimte
@@ -379,7 +398,6 @@ AS
prj_ruimte_inhoud prj_ruimte_inhoud
FROM prj_ruimte rx FROM prj_ruimte rx
WHERE prj_scenario_key = pscenariokey_from; WHERE prj_scenario_key = pscenariokey_from;
-- TODO: vergt nog wat uitwerking: de parent key van de zojuist aangemaakte ruimte etc gebruiken -- TODO: vergt nog wat uitwerking: de parent key van de zojuist aangemaakte ruimte etc gebruiken
-- Kopieer de werkplekken -- Kopieer de werkplekken
INSERT INTO prj_werkplek INSERT INTO prj_werkplek
@@ -394,7 +412,6 @@ AS
AND rx.prj_ruimte_nr = rxx.prj_ruimte_nr AND rx.prj_ruimte_nr = rxx.prj_ruimte_nr
AND rx.alg_verdieping_key = rxx.alg_verdieping_key AND rx.alg_verdieping_key = rxx.alg_verdieping_key
AND rx.prj_scenario_key = pscenariokey_from; AND rx.prj_scenario_key = pscenariokey_from;
-- Kopieer de werkplekbezettingen -- Kopieer de werkplekbezettingen
INSERT INTO prj_perslidwerkplek INSERT INTO prj_perslidwerkplek
(prj_perslidwerkplek_key, prs_perslidwerkplek_key, (prj_perslidwerkplek_key, prs_perslidwerkplek_key,
@@ -407,20 +424,21 @@ AS
WHERE pwx.prj_werkplek_key = wx.prj_werkplek_key WHERE pwx.prj_werkplek_key = wx.prj_werkplek_key
AND rx.prj_scenario_key = pscenariokey_from AND rx.prj_scenario_key = pscenariokey_from
AND wx.prj_ruimte_key = rx.prj_ruimte_key; AND wx.prj_ruimte_key = rx.prj_ruimte_key;
-- Kopieer de objecten -- Kopieer de objecten
INSERT INTO prj_deel INSERT INTO prj_deel
(prj_deel_key, ins_deel_key, prj_ruimte_key, (prj_deel_key, ins_deel_key, prj_ruimte_key, prj_werkplek_key,
prj_deel_omschrijving, ins_srtdeel_key) prj_deel_omschrijving, ins_srtdeel_key,
SELECT NULL, dx.ins_deel_key, dx.prj_ruimte_key, prj_deel_dwgx, prj_deel_dwgy,
dx.prj_deel_omschrijving, dx.ins_srtdeel_key prj_deel_dwgrotatie, prj_deel_dwgschaal)
SELECT NULL, dx.ins_deel_key, dx.prj_ruimte_key, prj_werkplek_key,
dx.prj_deel_omschrijving, dx.ins_srtdeel_key,
prj_deel_dwgx, prj_deel_dwgy,
prj_deel_dwgrotatie, prj_deel_dwgschaal
FROM prj_deel dx, prj_ruimte rx FROM prj_deel dx, prj_ruimte rx
WHERE dx.prj_ruimte_key = rx.prj_ruimte_key WHERE dx.prj_ruimte_key = rx.prj_ruimte_key
AND rx.prj_scenario_key = pscenariokey_from; AND rx.prj_scenario_key = pscenariokey_from;
COMMIT; COMMIT;
END prj_copy_scenario; END prj_copy_scenario;
PROCEDURE prj_reinitiate_scenario ( PROCEDURE prj_reinitiate_scenario (
pscenariokey IN NUMBER, pscenariokey IN NUMBER,
pverdiepingkey IN NUMBER pverdiepingkey IN NUMBER
@@ -431,7 +449,6 @@ AS
-- Oogmerk van deze routine kan het opfrissen van het snapshot van dit scenario zijn met behoud van reeds gedane wijzigingen -- Oogmerk van deze routine kan het opfrissen van het snapshot van dit scenario zijn met behoud van reeds gedane wijzigingen
-- FUTURE EXTENSION -- FUTURE EXTENSION
END prj_reinitiate_scenario; END prj_reinitiate_scenario;
-- Annuleer een scenario of een verdieping van een scenario -- Annuleer een scenario of een verdieping van een scenario
-- Als pverdiepingkey NULL is, wordt ook het scenario verwijderd. -- Als pverdiepingkey NULL is, wordt ook het scenario verwijderd.
PROCEDURE prj_cancel_scenario ( PROCEDURE prj_cancel_scenario (
@@ -442,12 +459,10 @@ AS
dummy VARCHAR2 (1); dummy VARCHAR2 (1);
BEGIN BEGIN
checkscenario (pscenariokey); checkscenario (pscenariokey);
IF TRUE OR pverdiepingkey IS NULL IF TRUE OR pverdiepingkey IS NULL
THEN THEN
DELETE FROM prj_ruimte rx DELETE FROM prj_ruimte rx
WHERE rx.prj_scenario_key = pscenariokey; WHERE rx.prj_scenario_key = pscenariokey;
-- Deze cascadeert door naar de onderliggende items -- Deze cascadeert door naar de onderliggende items
DELETE FROM prj_scenario DELETE FROM prj_scenario
WHERE prj_scenario_key = pscenariokey; WHERE prj_scenario_key = pscenariokey;
@@ -467,7 +482,6 @@ AS
FROM prj_ruimte FROM prj_ruimte
WHERE alg_verdieping_key = pverdiepingkey WHERE alg_verdieping_key = pverdiepingkey
AND prj_scenario_key = pscenariokey); AND prj_scenario_key = pscenariokey);
-- De personen die van een andere verdieping op een werkplke zijn gezet die nu -- De personen die van een andere verdieping op een werkplke zijn gezet die nu
-- gaat vervallen, komen tussen de thuislozen terecht. Terugzetten op hun oude plek -- gaat vervallen, komen tussen de thuislozen terecht. Terugzetten op hun oude plek
-- is nl. ook niet altijd triviaal. Het zou mooi zijn als ze nu vanuit dat reservoir -- is nl. ook niet altijd triviaal. Het zou mooi zijn als ze nu vanuit dat reservoir
@@ -479,7 +493,6 @@ AS
AND rx.alg_verdieping_key = pverdiepingkey; AND rx.alg_verdieping_key = pverdiepingkey;
END IF; END IF;
END prj_cancel_scenario; END prj_cancel_scenario;
---------------------------------------------- ----------------------------------------------
-- SCENARIO TRANSACTION PROCEDURES -- SCENARIO TRANSACTION PROCEDURES
---------------------------------------------- ----------------------------------------------
@@ -497,28 +510,25 @@ AS
INTO currentnr INTO currentnr
FROM prj_werkplek FROM prj_werkplek
WHERE prj_werkplek_key = pwerkplekkey; WHERE prj_werkplek_key = pwerkplekkey;
werkpleknr := werkpleknr :=
TO_NUMBER (forceuniqueness ('PRJ_WERKPLEK', TO_NUMBER (forceuniqueness ('PRJ_WERKPLEK',
pruimtekey, pruimtekey,
TO_CHAR (currentnr) TO_CHAR (currentnr),
NULL
) )
); );
werkplekomschrijving := defaultwpomschrijving (pruimtekey, werkpleknr); werkplekomschrijving := defaultwpomschrijving (pruimtekey, werkpleknr);
UPDATE prj_werkplek UPDATE prj_werkplek
SET prj_ruimte_key = pruimtekey, SET prj_ruimte_key = pruimtekey,
prj_werkplek_volgnr = werkpleknr, prj_werkplek_volgnr = werkpleknr,
prj_werkplek_omschrijving = werkplekomschrijving prj_werkplek_omschrijving = werkplekomschrijving
WHERE prj_werkplek_key = pwerkplekkey AND prj_ruimte_key <> pruimtekey; WHERE prj_werkplek_key = pwerkplekkey AND prj_ruimte_key <> pruimtekey;
-- niet onnodig moven -- niet onnodig moven
SELECT prj_scenario_key SELECT prj_scenario_key
INTO scenariokey INTO scenariokey
FROM prj_ruimte FROM prj_ruimte
WHERE prj_ruimte_key = pruimtekey; WHERE prj_ruimte_key = pruimtekey;
END; END;
------------------------------------- -------------------------------------
-- Find a sufficiently free werkplek in ruimte pruimtekey -- Find a sufficiently free werkplek in ruimte pruimtekey
-- If necessary create a new one -- If necessary create a new one
@@ -559,12 +569,12 @@ AS
werkpleknr := werkpleknr :=
TO_NUMBER (forceuniqueness ('PRJ_WERKPLEK', TO_NUMBER (forceuniqueness ('PRJ_WERKPLEK',
pruimtekey, pruimtekey,
'001' TO_CHAR (1),
NULL
) )
); );
werkplekomschrijving := werkplekomschrijving :=
defaultwpomschrijving (pruimtekey, werkpleknr); defaultwpomschrijving (pruimtekey, werkpleknr);
INSERT INTO prj_werkplek INSERT INTO prj_werkplek
(prj_werkplek_key, prs_werkplek_key, (prj_werkplek_key, prs_werkplek_key,
prj_werkplek_volgnr, prj_werkplek_omschrijving, prj_werkplek_volgnr, prj_werkplek_omschrijving,
@@ -574,7 +584,6 @@ AS
werkpleknr, werkplekomschrijving, werkpleknr, werkplekomschrijving,
NULL, pruimtekey NULL, pruimtekey
); );
SELECT prj_werkplek_key SELECT prj_werkplek_key
INTO werkplekkey INTO werkplekkey
FROM prj_werkplek FROM prj_werkplek
@@ -583,10 +592,8 @@ AS
AND prj_werkplek_verwijder IS NULL; AND prj_werkplek_verwijder IS NULL;
--DBMS_OUTPUT.put_line ('inserted _VAR(werkplekkey):' || TO_CHAR (werkplekkey)); --DBMS_OUTPUT.put_line ('inserted _VAR(werkplekkey):' || TO_CHAR (werkplekkey));
END; END;
RETURN werkplekkey; RETURN werkplekkey;
END; -- Function find_or_create_free_werkplek END; -- Function find_or_create_free_werkplek
------------------------------------- -------------------------------------
-- Moves a perslidwerkplek (bezetting) to another ruimte/werkplek. The old werkplek remains -- Moves a perslidwerkplek (bezetting) to another ruimte/werkplek. The old werkplek remains
-- pwerkplekkey is optional and acts like a preferred werkplek and will be used -- pwerkplekkey is optional and acts like a preferred werkplek and will be used
@@ -613,14 +620,12 @@ AS
FROM prj_werkplek wx, prj_perslidwerkplek pwx FROM prj_werkplek wx, prj_perslidwerkplek pwx
WHERE wx.prj_werkplek_key = pwx.prj_werkplek_key WHERE wx.prj_werkplek_key = pwx.prj_werkplek_key
AND pwx.prj_perslidwerkplek_key = pperslidwerkplekkey; AND pwx.prj_perslidwerkplek_key = pperslidwerkplekkey;
--DBMS_OUTPUT.put_line ('_VAR(oldruimtekey):' || TO_CHAR (oldruimtekey)); --DBMS_OUTPUT.put_line ('_VAR(oldruimtekey):' || TO_CHAR (oldruimtekey));
--DBMS_OUTPUT.put_line ('_VAR(currentbezetting):' || TO_CHAR (currentbezetting)); --DBMS_OUTPUT.put_line ('_VAR(currentbezetting):' || TO_CHAR (currentbezetting));
IF pwerkplekkey IS NOT NULL AND pwerkplekkey = oldwerkplekkey IF pwerkplekkey IS NOT NULL AND pwerkplekkey = oldwerkplekkey
THEN THEN
RETURN; RETURN;
END IF; END IF;
IF pwerkplekkey IS NOT NULL IF pwerkplekkey IS NOT NULL
THEN THEN
werkplekkey := pwerkplekkey; werkplekkey := pwerkplekkey;
@@ -630,21 +635,17 @@ AS
THEN THEN
RETURN; RETURN;
END IF; END IF;
werkplekkey := werkplekkey :=
find_or_create_free_werkplek (pruimtekey, currentbezetting); find_or_create_free_werkplek (pruimtekey, currentbezetting);
END IF; END IF;
-- Er is nu een werkplekkey bepaald. -- Er is nu een werkplekkey bepaald.
UPDATE prj_perslidwerkplek UPDATE prj_perslidwerkplek
SET prj_werkplek_key = werkplekkey SET prj_werkplek_key = werkplekkey
WHERE prj_perslidwerkplek_key = pperslidwerkplekkey WHERE prj_perslidwerkplek_key = pperslidwerkplekkey
AND prj_werkplek_key <> werkplekkey; AND prj_werkplek_key <> werkplekkey;
-- niet onnodig moven (dubbelcheck) -- niet onnodig moven (dubbelcheck)
COMMIT; COMMIT;
END; END;
------------------------------------- -------------------------------------
-- Moves a perslid to a ruimte -- Moves a perslid to a ruimte
-- Gebruikt als prs_werkplek_implicit==1 -- Gebruikt als prs_werkplek_implicit==1
@@ -659,7 +660,6 @@ AS
oudepwpkey prj_perslidwerkplek.prj_perslidwerkplek_key%TYPE; oudepwpkey prj_perslidwerkplek.prj_perslidwerkplek_key%TYPE;
BEGIN BEGIN
werkplekkey := find_or_create_free_werkplek (pruimtekey, 101); -- Door 101 krijgen we altijd een nieuwe werkplekkey := find_or_create_free_werkplek (pruimtekey, 101); -- Door 101 krijgen we altijd een nieuwe
-- Is er nog een tijdens *dit* scenario vervallen werkplekbezettingsrecord? -- Is er nog een tijdens *dit* scenario vervallen werkplekbezettingsrecord?
-- Zo ja, dan willen we deze gebruiken om de binding tussen Van en Naar -- Zo ja, dan willen we deze gebruiken om de binding tussen Van en Naar
-- zo goed mogelijk te behouden. Alleen relevant als het om een oorspronkelijk -- zo goed mogelijk te behouden. Alleen relevant als het om een oorspronkelijk
@@ -678,7 +678,6 @@ AS
AND pwx.prs_perslid_key = pperslidkey AND pwx.prs_perslid_key = pperslidkey
AND pwx.prs_perslidwerkplek_key IS NOT NULL AND pwx.prs_perslidwerkplek_key IS NOT NULL
AND pwx.prj_perslidwerkplek_verwijder IS NOT NULL; AND pwx.prj_perslidwerkplek_verwijder IS NOT NULL;
UPDATE prj_perslidwerkplek UPDATE prj_perslidwerkplek
SET prj_perslidwerkplek_verwijder = NULL, SET prj_perslidwerkplek_verwijder = NULL,
prj_werkplek_key = werkplekkey prj_werkplek_key = werkplekkey
@@ -692,10 +691,8 @@ AS
(prj_werkplek_key, prs_perslid_key) (prj_werkplek_key, prs_perslid_key)
VALUES (werkplekkey, pperslidkey); VALUES (werkplekkey, pperslidkey);
END; END;
COMMIT; COMMIT;
END; END;
------------------------------------- -------------------------------------
-- Moves a perslidwerkplek (bezetting) to another ruimte/werkplek. The old werkplek remains -- Moves a perslidwerkplek (bezetting) to another ruimte/werkplek. The old werkplek remains
-- pwerkplekkey is optional and acts like a preferred werkplek and will be used -- pwerkplekkey is optional and acts like a preferred werkplek and will be used
@@ -726,7 +723,6 @@ AS
--AND pw.prj_ruimte_key = pruimtekey --AND pw.prj_ruimte_key = pruimtekey
AND pwx.prj_werkplek_key = pw.prj_werkplek_key AND pwx.prj_werkplek_key = pw.prj_werkplek_key
AND prj_perslidwerkplek_verwijder IS NULL; AND prj_perslidwerkplek_verwijder IS NULL;
IF pwerkplekkey IS NOT NULL IF pwerkplekkey IS NOT NULL
THEN THEN
werkplekkey := pwerkplekkey; werkplekkey := pwerkplekkey;
@@ -734,7 +730,6 @@ AS
werkplekkey := werkplekkey :=
find_or_create_free_werkplek (pruimtekey, doelbezetting); find_or_create_free_werkplek (pruimtekey, doelbezetting);
END IF; END IF;
-- Is er nog een tijdens *dit* scenario vervallen werkplekbezettingsrecord? -- Is er nog een tijdens *dit* scenario vervallen werkplekbezettingsrecord?
-- Zo ja, dan willen we deze gebruiken om de binding tussen Van en Naar -- Zo ja, dan willen we deze gebruiken om de binding tussen Van en Naar
-- zo goed mogelijk te behouden. Alleen relevant als het om een oorspronkelijk -- zo goed mogelijk te behouden. Alleen relevant als het om een oorspronkelijk
@@ -753,7 +748,6 @@ AS
AND pwx.prs_perslid_key = pperslidkey AND pwx.prs_perslid_key = pperslidkey
AND pwx.prs_perslidwerkplek_key IS NOT NULL AND pwx.prs_perslidwerkplek_key IS NOT NULL
AND pwx.prj_perslidwerkplek_verwijder IS NOT NULL; AND pwx.prj_perslidwerkplek_verwijder IS NOT NULL;
UPDATE prj_perslidwerkplek UPDATE prj_perslidwerkplek
SET prj_perslidwerkplek_verwijder = NULL, SET prj_perslidwerkplek_verwijder = NULL,
prj_perslidwerkplek_bezetting = doelbezetting, prj_perslidwerkplek_bezetting = doelbezetting,
@@ -772,10 +766,8 @@ AS
doelbezetting doelbezetting
); );
END; END;
COMMIT; COMMIT;
END; END;
---------------------------------------------- ----------------------------------------------
-- SCENARIO COMMIT PROCEDURES -- SCENARIO COMMIT PROCEDURES
---------------------------------------------- ----------------------------------------------
@@ -791,18 +783,17 @@ AS
WHERE rx.prj_ruimte_verwijder IS NULL WHERE rx.prj_ruimte_verwijder IS NULL
AND rx.alg_ruimte_key IS NULL AND rx.alg_ruimte_key IS NULL
AND rx.prj_scenario_key = sk; AND rx.prj_scenario_key = sk;
CURSOR new_werkplek (sk IN NUMBER) CURSOR new_werkplek (sk IN NUMBER)
IS IS
SELECT prj_werkplek_volgnr, prj_werkplek_omschrijving, SELECT prj_werkplek_volgnr, prj_werkplek_omschrijving,
prj_werkplek_vastopp, prj_werkplek_opp, rx.alg_ruimte_key, prj_werkplek_vastopp, prj_werkplek_opp, rx.alg_ruimte_key,
prj_werkplek_key prj_werkplek_key, prj_werkplek_dwgx,prj_werkplek_dwgy,
prj_werkplek_dwgrotatie,prj_werkplek_dwgschaal
FROM prj_werkplek wx, prj_ruimte rx FROM prj_werkplek wx, prj_ruimte rx
WHERE wx.prj_werkplek_verwijder IS NULL WHERE wx.prj_werkplek_verwijder IS NULL
AND wx.prs_werkplek_key IS NULL AND wx.prs_werkplek_key IS NULL
AND rx.prj_ruimte_key = wx.prj_ruimte_key AND rx.prj_ruimte_key = wx.prj_ruimte_key
AND rx.prj_scenario_key = sk; AND rx.prj_scenario_key = sk;
CURSOR new_perslidwerkplek (sk IN NUMBER) CURSOR new_perslidwerkplek (sk IN NUMBER)
IS IS
SELECT prs_perslid_key, prs_afdeling_key, prs_werkplek_key, SELECT prs_perslid_key, prs_afdeling_key, prs_werkplek_key,
@@ -813,26 +804,40 @@ AS
AND wx.prj_werkplek_key = pwx.prj_werkplek_key AND wx.prj_werkplek_key = pwx.prj_werkplek_key
AND rx.prj_ruimte_key = wx.prj_ruimte_key AND rx.prj_ruimte_key = wx.prj_ruimte_key
AND rx.prj_scenario_key = sk; AND rx.prj_scenario_key = sk;
CURSOR new_deel (sk IN NUMBER) CURSOR new_deel (sk IN NUMBER)
IS IS
SELECT dx.prj_deel_key SELECT dx.prj_deel_key, alg_locatie_key, prj_deel_omschrijving,
FROM prj_deel dx, prj_werkplek wx, prj_ruimte rx ins_discipline_key, dx.ins_srtdeel_key,
'R' ins_alg_ruimte_type, alg_ruimte_key ins_alg_ruimte_key,
prj_deel_dwgx, prj_deel_dwgy, prj_deel_dwgschaal, prj_deel_dwgrotatie
FROM prj_deel dx, prj_ruimte rx, alg_verdieping v, alg_gebouw g,
ins_srtdeel isd, ins_srtgroep isg
WHERE dx.prj_deel_verwijder IS NULL
AND dx.ins_deel_key IS NULL
AND dx.prj_werkplek_key IS NULL
AND dx.prj_ruimte_key = rx.prj_ruimte_key
AND rx.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND dx.ins_srtdeel_key = isd.ins_srtdeel_key
AND isd.ins_srtgroep_key = isg.ins_srtgroep_key
AND rx.prj_scenario_key = sk
UNION ALL
SELECT dx.prj_deel_key, alg_locatie_key, prj_deel_omschrijving,
ins_discipline_key, dx.ins_srtdeel_key,
'W' ins_alg_ruimte_type, prs_werkplek_key ins_alg_ruimte_key,
prj_deel_dwgx, prj_deel_dwgy, prj_deel_dwgschaal, prj_deel_dwgrotatie
FROM prj_deel dx, prj_werkplek wx, prj_ruimte rx, alg_verdieping v, alg_gebouw g,
ins_srtdeel isd, ins_srtgroep isg
WHERE dx.prj_deel_verwijder IS NULL WHERE dx.prj_deel_verwijder IS NULL
AND dx.ins_deel_key IS NULL AND dx.ins_deel_key IS NULL
AND wx.prj_werkplek_key = dx.prj_werkplek_key AND wx.prj_werkplek_key = dx.prj_werkplek_key
AND dx.prj_werkplek_key IS NOT NULL AND dx.prj_werkplek_key IS NOT NULL
AND rx.prj_ruimte_key = wx.prj_ruimte_key AND rx.prj_ruimte_key = wx.prj_ruimte_key
AND rx.prj_scenario_key = sk AND rx.alg_verdieping_key = v.alg_verdieping_key
UNION ALL AND v.alg_gebouw_key = g.alg_gebouw_key
SELECT dx.prj_deel_key AND dx.ins_srtdeel_key = isd.ins_srtdeel_key
FROM prj_deel dx, prj_werkplek wx, prj_ruimte rx AND isd.ins_srtgroep_key = isg.ins_srtgroep_key
WHERE dx.prj_deel_verwijder IS NULL
AND dx.ins_deel_key IS NULL
AND dx.prj_werkplek_key IS NULL
AND rx.prj_ruimte_key = wx.prj_ruimte_key
AND rx.prj_scenario_key = sk; AND rx.prj_scenario_key = sk;
aantal_r_toegevoegd NUMBER; aantal_r_toegevoegd NUMBER;
aantal_w_toegevoegd NUMBER; aantal_w_toegevoegd NUMBER;
aantal_pw_toegevoegd NUMBER; aantal_pw_toegevoegd NUMBER;
@@ -843,7 +848,6 @@ AS
BEGIN BEGIN
-- Nieuwe ruimtes toevoegen -- Nieuwe ruimtes toevoegen
aantal_r_toegevoegd := 0; aantal_r_toegevoegd := 0;
-- --
-- RUIMTES -- RUIMTES
-- --
@@ -852,9 +856,9 @@ AS
ruimte_nr := ruimte_nr :=
forceuniqueness ('ALG_RUIMTE', forceuniqueness ('ALG_RUIMTE',
v_ruimte.alg_verdieping_key, v_ruimte.alg_verdieping_key,
v_ruimte.prj_ruimte_nr v_ruimte.prj_ruimte_nr,
NULL
); );
INSERT INTO alg_ruimte r INSERT INTO alg_ruimte r
(alg_verdieping_key, alg_ruimte_nr, (alg_verdieping_key, alg_ruimte_nr,
alg_ruimte_omschrijving, alg_ruimte_omschrijving,
@@ -870,9 +874,7 @@ AS
v_ruimte.prj_ruimte_inhoud, v_ruimte.prj_ruimte_inhoud,
v_ruimte.prj_ruimte_opmerking v_ruimte.prj_ruimte_opmerking
); );
aantal_r_toegevoegd := aantal_r_toegevoegd + 1; aantal_r_toegevoegd := aantal_r_toegevoegd + 1;
-- Registreer de zojuist verworven key; deze is nodig voor de volgende stappen -- Registreer de zojuist verworven key; deze is nodig voor de volgende stappen
UPDATE prj_ruimte rx UPDATE prj_ruimte rx
SET alg_ruimte_key = SET alg_ruimte_key =
@@ -882,34 +884,34 @@ AS
AND r.alg_ruimte_nr = ruimte_nr) AND r.alg_ruimte_nr = ruimte_nr)
WHERE prj_ruimte_key = v_ruimte.prj_ruimte_key; WHERE prj_ruimte_key = v_ruimte.prj_ruimte_key;
END LOOP; END LOOP;
-- --
-- WERKPLEKKEN -- WERKPLEKKEN
-- --
aantal_w_toegevoegd := 0; aantal_w_toegevoegd := 0;
FOR v_werkplek IN new_werkplek (pscenariokey) FOR v_werkplek IN new_werkplek (pscenariokey)
LOOP LOOP
werkplek_nr := werkplek_nr :=
forceuniqueness ('PRS_WERKPLEK', forceuniqueness ('PRS_WERKPLEK',
v_werkplek.alg_ruimte_key, v_werkplek.alg_ruimte_key,
TO_CHAR (v_werkplek.prj_werkplek_volgnr) TO_CHAR (v_werkplek.prj_werkplek_volgnr),
NULL
); );
-- Note: de omschrijving is meestal ruimtenr+volgnr. Bij nieuwe of verplaatsing is het wenselijk deza aan te passen? -- Note: de omschrijving is meestal ruimtenr+volgnr. Bij nieuwe of verplaatsing is het wenselijk deza aan te passen?
--werkpleknr := TO_NUMBER(SUBSTR(Omschrijving,instr(Omschrijving,'-',1)+1)); --werkpleknr := TO_NUMBER(SUBSTR(Omschrijving,instr(Omschrijving,'-',1)+1));
INSERT INTO prs_werkplek w INSERT INTO prs_werkplek w
(prs_werkplek_volgnr, prs_werkplek_omschrijving, (prs_werkplek_volgnr, prs_werkplek_omschrijving,
prs_werkplek_vastopp, prs_werkplek_vastopp,
prs_werkplek_opp, prs_alg_ruimte_key prs_werkplek_opp, prs_alg_ruimte_key,
prs_werkplek_dwgx, prs_werkplek_dwgy,
prs_werkplek_dwgrotatie, prs_werkplek_dwgschaal
) )
VALUES (werkplek_nr, v_werkplek.prj_werkplek_omschrijving, VALUES (werkplek_nr, v_werkplek.prj_werkplek_omschrijving,
v_werkplek.prj_werkplek_vastopp, v_werkplek.prj_werkplek_vastopp,
v_werkplek.prj_werkplek_opp, v_werkplek.alg_ruimte_key v_werkplek.prj_werkplek_opp, v_werkplek.alg_ruimte_key,
v_werkplek.prj_werkplek_dwgx, v_werkplek.prj_werkplek_dwgy,
v_werkplek.prj_werkplek_dwgrotatie, v_werkplek.prj_werkplek_dwgschaal
); );
aantal_w_toegevoegd := aantal_w_toegevoegd + 1; aantal_w_toegevoegd := aantal_w_toegevoegd + 1;
-- Registreer de zojuist verworven keys; deze zijn nodig voor de volgende stappen -- Registreer de zojuist verworven keys; deze zijn nodig voor de volgende stappen
UPDATE prj_werkplek wx UPDATE prj_werkplek wx
SET prs_werkplek_key = SET prs_werkplek_key =
@@ -919,12 +921,10 @@ AS
AND w.prs_alg_ruimte_key = v_werkplek.alg_ruimte_key) AND w.prs_alg_ruimte_key = v_werkplek.alg_ruimte_key)
WHERE prj_werkplek_key = v_werkplek.prj_werkplek_key; WHERE prj_werkplek_key = v_werkplek.prj_werkplek_key;
END LOOP; END LOOP;
-- --
-- WERKPLEKBEZETTINGEN (anoniem) -- WERKPLEKBEZETTINGEN (anoniem)
-- --
aantal_pw_toegevoegd := 0; aantal_pw_toegevoegd := 0;
FOR v_perslidwerkplek IN new_perslidwerkplek (pscenariokey) FOR v_perslidwerkplek IN new_perslidwerkplek (pscenariokey)
LOOP LOOP
INSERT INTO prs_perslidwerkplek pw INSERT INTO prs_perslidwerkplek pw
@@ -938,33 +938,30 @@ AS
v_perslidwerkplek.prs_werkplek_key, v_perslidwerkplek.prs_werkplek_key,
v_perslidwerkplek.prj_perslidwerkplek_bezetting v_perslidwerkplek.prj_perslidwerkplek_bezetting
); );
-- Bijwerken van de nieuwe keys is niet nodig.. -- Bijwerken van de nieuwe keys is niet nodig..
aantal_pw_toegevoegd := aantal_pw_toegevoegd + 1; aantal_pw_toegevoegd := aantal_pw_toegevoegd + 1;
END LOOP; END LOOP;
-- --
-- OBJECTEN -- OBJECTEN
-- --
aantal_d_toegevoegd := 0; aantal_d_toegevoegd := 0;
-- FOR v_deel IN new_deel (pscenariokey) FOR v_deel IN new_deel (pscenariokey)
-- LOOP LOOP
-- deel_nr := forceuniqueness ('INS_DEEL', v_deel.ins_alg_locatie_key, v_deel.ins_deel_omschrijving); deel_nr := forceuniqueness ('INS_DEEL', v_deel.alg_locatie_key, v_deel.prj_deel_omschrijving, v_deel.ins_srtdeel_key);
--
-- INSERT INTO ins_deel
-- (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_deel.ins_srtdeel_key, v_deel.prj_ruimte_key, v_deel.ins_alg_ruimte_type,
-- v_deel.ins_alg_locatie_key, v_deel.ins_discipline_key, omschrijving, v_deel.ins_deel_parent_key,
-- v_deel.ins_deel_oppervlak, v_deel.ins_deel_omtrek
-- );
-- -- Bijwerken van de nieuwe keys is niet nodig..
-- aantal_d_toegevoegd := aantal_d_toegevoegd + 1;
-- end loop;
END prj_commit_additions;
INSERT INTO ins_deel
(ins_srtdeel_key, ins_alg_ruimte_key, ins_alg_ruimte_type,
ins_alg_locatie_key, ins_discipline_key, ins_deel_omschrijving,
ins_deel_dwgx, ins_deel_dwgy, ins_deel_dwgschaal, ins_deel_dwgrotatie
)
VALUES (v_deel.ins_srtdeel_key, v_deel.ins_alg_ruimte_key, v_deel.ins_alg_ruimte_type,
v_deel.alg_locatie_key, v_deel.ins_discipline_key, deel_nr,
v_deel.prj_deel_dwgx, v_deel.prj_deel_dwgy, v_deel.prj_deel_dwgschaal, v_deel.prj_deel_dwgrotatie
);
-- Bijwerken van de nieuwe keys is niet nodig..
aantal_d_toegevoegd := aantal_d_toegevoegd + 1;
end loop;
END prj_commit_additions;
PROCEDURE prj_commit_changes (pscenariokey IN NUMBER) PROCEDURE prj_commit_changes (pscenariokey IN NUMBER)
AS AS
CURSOR ruimte_updates (sk IN NUMBER) CURSOR ruimte_updates (sk IN NUMBER)
@@ -977,18 +974,43 @@ AS
WHERE rx.prj_ruimte_verwijder IS NULL WHERE rx.prj_ruimte_verwijder IS NULL
AND rx.alg_ruimte_key IS NOT NULL AND rx.alg_ruimte_key IS NOT NULL
AND rx.prj_scenario_key = sk; AND rx.prj_scenario_key = sk;
CURSOR werkplek_updates (sk IN NUMBER) CURSOR werkplek_updates (sk IN NUMBER)
IS IS
SELECT prj_werkplek_volgnr, prj_werkplek_omschrijving, SELECT prj_werkplek_volgnr, prj_werkplek_omschrijving,
prj_werkplek_vastopp, prj_werkplek_opp, prs_werkplek_key, prj_werkplek_vastopp, prj_werkplek_opp, prs_werkplek_key,
alg_ruimte_key alg_ruimte_key,prj_werkplek_dwgx, prj_werkplek_dwgy,
prj_werkplek_dwgrotatie, prj_werkplek_dwgschaal
FROM prj_werkplek wp, prj_ruimte rx FROM prj_werkplek wp, prj_ruimte rx
WHERE wp.prj_ruimte_key = rx.prj_ruimte_key WHERE wp.prj_ruimte_key = rx.prj_ruimte_key
AND wp.prj_werkplek_verwijder IS NULL AND wp.prj_werkplek_verwijder IS NULL
AND wp.prs_werkplek_key IS NOT NULL AND wp.prs_werkplek_key IS NOT NULL
AND rx.prj_scenario_key = sk; AND rx.prj_scenario_key = sk;
-- Ruimte gebonden prj_deel
CURSOR RMdeel_updates (sk IN NUMBER)
IS
SELECT ins_deel_key,
alg_ruimte_key,prj_deel_dwgx, prj_deel_dwgy,
prj_deel_dwgrotatie, prj_deel_dwgschaal,
prj_deel_verwijder
FROM prj_deel wp, prj_ruimte rx
WHERE wp.prj_ruimte_key = rx.prj_ruimte_key
AND wp.prj_werkplek_key is null
--AND wp.prj_deel_verwijder IS NULL
AND wp.ins_deel_key IS NOT NULL
AND rx.prj_scenario_key = sk;
-- Werkplek gebonden prj_deel
CURSOR WPdeel_updates (sk IN NUMBER)
IS
SELECT ins_deel_key,
prs_werkplek_key,prj_deel_dwgx, prj_deel_dwgy,
prj_deel_dwgrotatie, prj_deel_dwgschaal,
prj_deel_verwijder
FROM prj_deel pd, prj_werkplek pw, prj_ruimte pr
WHERE pd.prj_werkplek_key = pw.prj_werkplek_key
AND pw.prj_ruimte_key = pr.prj_ruimte_key
--AND pd.prj_deel_verwijder IS NOT NULL
AND pd.ins_deel_key IS NOT NULL
AND pr.prj_scenario_key = sk;
CURSOR perslidwerkplek_updates (sk IN NUMBER) CURSOR perslidwerkplek_updates (sk IN NUMBER)
IS IS
SELECT prs_perslid_key, prs_afdeling_key, SELECT prs_perslid_key, prs_afdeling_key,
@@ -1016,7 +1038,32 @@ AS
WHERE r.alg_ruimte_verwijder IS NULL WHERE r.alg_ruimte_verwijder IS NULL
AND r.alg_ruimte_key = cr.alg_ruimte_key; AND r.alg_ruimte_key = cr.alg_ruimte_key;
END LOOP; END LOOP;
-- Bestaande ruimte delen aanpassen
FOR cr IN RMdeel_updates (pscenariokey)
LOOP
UPDATE ins_deel r
SET ins_alg_ruimte_key = cr.alg_ruimte_key,
ins_deel_dwgx = cr.prj_deel_dwgx,
ins_deel_dwgy = cr.prj_deel_dwgy,
ins_deel_dwgrotatie = cr.prj_deel_dwgrotatie,
ins_deel_dwgschaal = cr.prj_deel_dwgschaal,
ins_deel_verwijder = cr.prj_deel_verwijder
WHERE r.ins_deel_verwijder IS NULL
AND r.ins_deel_key = cr.ins_deel_key;
END LOOP;
-- Bestaande werkplek delen aanpassen
FOR cr IN WPdeel_updates (pscenariokey)
LOOP
UPDATE ins_deel r
SET ins_alg_ruimte_key = cr.prs_werkplek_key,
ins_deel_dwgx = cr.prj_deel_dwgx,
ins_deel_dwgy = cr.prj_deel_dwgy,
ins_deel_dwgrotatie = cr.prj_deel_dwgrotatie,
ins_deel_dwgschaal = cr.prj_deel_dwgschaal,
ins_deel_verwijder = cr.prj_deel_verwijder
WHERE r.ins_deel_verwijder IS NULL
AND r.ins_deel_key = cr.ins_deel_key;
END LOOP;
-- Bestaande werkplekken aanpassen -- Bestaande werkplekken aanpassen
FOR cr IN werkplek_updates (pscenariokey) FOR cr IN werkplek_updates (pscenariokey)
LOOP LOOP
@@ -1025,11 +1072,14 @@ AS
prs_werkplek_volgnr = cr.prj_werkplek_volgnr, prs_werkplek_volgnr = cr.prj_werkplek_volgnr,
prs_werkplek_omschrijving = cr.prj_werkplek_omschrijving, prs_werkplek_omschrijving = cr.prj_werkplek_omschrijving,
prs_werkplek_vastopp = cr.prj_werkplek_vastopp, prs_werkplek_vastopp = cr.prj_werkplek_vastopp,
prs_werkplek_opp = cr.prj_werkplek_opp prs_werkplek_opp = cr.prj_werkplek_opp,
prs_werkplek_dwgx = cr.prj_werkplek_dwgx,
prs_werkplek_dwgy = cr.prj_werkplek_dwgy,
prs_werkplek_dwgrotatie = cr.prj_werkplek_dwgrotatie,
prs_werkplek_dwgschaal = cr.prj_werkplek_dwgschaal
WHERE r.prs_werkplek_verwijder IS NULL WHERE r.prs_werkplek_verwijder IS NULL
AND r.prs_werkplek_key = cr.prs_werkplek_key; AND r.prs_werkplek_key = cr.prs_werkplek_key;
END LOOP; END LOOP;
-- Bestaande perslidwerkplekken aanpassen -- Bestaande perslidwerkplekken aanpassen
FOR cr IN perslidwerkplek_updates (pscenariokey) FOR cr IN perslidwerkplek_updates (pscenariokey)
LOOP LOOP
@@ -1044,7 +1094,6 @@ AS
END LOOP; END LOOP;
END; END;
END prj_commit_changes; END prj_commit_changes;
PROCEDURE prj_commit_deletions (pscenariokey IN NUMBER) PROCEDURE prj_commit_deletions (pscenariokey IN NUMBER)
AS AS
BEGIN BEGIN
@@ -1058,7 +1107,6 @@ AS
AND rx.alg_ruimte_key IS NOT NULL AND rx.alg_ruimte_key IS NOT NULL
AND rx.prj_scenario_key = pscenariokey) AND rx.prj_scenario_key = pscenariokey)
WHERE r.alg_ruimte_verwijder IS NULL; WHERE r.alg_ruimte_verwijder IS NULL;
-- Vervallen werkplekken laten vervallen -- Vervallen werkplekken laten vervallen
UPDATE prs_werkplek p UPDATE prs_werkplek p
SET prs_werkplek_verwijder = SET prs_werkplek_verwijder =
@@ -1070,7 +1118,6 @@ AS
AND pw.prs_werkplek_key IS NOT NULL AND pw.prs_werkplek_key IS NOT NULL
AND rx.prj_scenario_key = pscenariokey) AND rx.prj_scenario_key = pscenariokey)
WHERE p.prs_werkplek_verwijder IS NULL; WHERE p.prs_werkplek_verwijder IS NULL;
-- Vervallen perslidwerkplekken laten vervallen -- Vervallen perslidwerkplekken laten vervallen
UPDATE prs_perslidwerkplek p UPDATE prs_perslidwerkplek p
SET prs_perslidwerkplek_verwijder = SET prs_perslidwerkplek_verwijder =
@@ -1087,7 +1134,6 @@ AS
AND rx.prj_scenario_key = pscenariokey) AND rx.prj_scenario_key = pscenariokey)
WHERE p.prs_perslidwerkplek_verwijder IS NULL; WHERE p.prs_perslidwerkplek_verwijder IS NULL;
END prj_commit_deletions; END prj_commit_deletions;
PROCEDURE prj_commit_cleanup (pscenariokey IN NUMBER) PROCEDURE prj_commit_cleanup (pscenariokey IN NUMBER)
AS AS
requestkey prj_scenario.mld_melding_key%TYPE; requestkey prj_scenario.mld_melding_key%TYPE;
@@ -1097,7 +1143,6 @@ AS
INTO requestkey INTO requestkey
FROM prj_scenario FROM prj_scenario
WHERE prj_scenario_key = pscenariokey; WHERE prj_scenario_key = pscenariokey;
IF requestkey IS NOT NULL IF requestkey IS NOT NULL
THEN THEN
DELETE FROM prj_scenario DELETE FROM prj_scenario
@@ -1107,7 +1152,6 @@ AS
WHERE prj_scenario_key = pscenariokey; WHERE prj_scenario_key = pscenariokey;
END IF; END IF;
END prj_commit_cleanup; END prj_commit_cleanup;
PROCEDURE prj_commit_scenario (pscenariokey IN NUMBER) PROCEDURE prj_commit_scenario (pscenariokey IN NUMBER)
AS AS
dummy VARCHAR2 (1); dummy VARCHAR2 (1);