diff --git a/PRJ/PRJ_PAC.SRC b/PRJ/PRJ_PAC.SRC index ada9a5b2..9f57bf5f 100644 --- a/PRJ/PRJ_PAC.SRC +++ b/PRJ/PRJ_PAC.SRC @@ -1,8 +1,8 @@ #ifdef PRJ /* PRJ_PAC.SRC * - * $Revision: 44 $ - * $Modtime: 26-04-06 18:05 $ + * $Revision: 45 $ + * $Modtime: 12-05-06 16:02 $ */ #ifndef MS_SQL @@ -10,11 +10,13 @@ CREATE OR REPLACE PACKAGE prj AS PROCEDURE prj_initiate_scenario (pscenariokey IN NUMBER, pverdiepingkey IN NUMBER); + PROCEDURE prj_copy_scenario (pscenariokey_from IN NUMBER, pscenariokey_to IN NUMBER); + PROCEDURE prj_reinitiate_scenario (pscenariokey IN NUMBER, pverdiepingkey IN NUMBER); PROCEDURE prj_cancel_scenario (pscenariokey IN NUMBER, pverdiepingkey IN NUMBER); - PROCEDURE prj_commit_scenario (pscenariokey IN NUMBER, pverdiepingkey IN NUMBER); + PROCEDURE prj_commit_scenario (pscenariokey IN NUMBER); PROCEDURE prj_move_werkplek (pwerkplekkey IN NUMBER, pruimtekey IN NUMBER); @@ -22,7 +24,6 @@ AS PROCEDURE prj_move_perslid (pperslidkey IN NUMBER, pruimtekey IN NUMBER, pwerkplekkey IN NUMBER); --- PROCEDURE prj_add_werkplek (pscenariokey IN NUMBER, pprjruimtekey2 IN NUMBER); FUNCTION forceuniqueness (element_type IN VARCHAR2, parent_key IN NUMBER, element_omschrijving IN VARCHAR2) RETURN VARCHAR2; END prj; @@ -360,6 +361,95 @@ AS COMMIT; END prj_initiate_scenario; + PROCEDURE prj_copy_scenario ( + pscenariokey_from IN NUMBER, + pscenariokey_to IN NUMBER + ) + IS + dummy VARCHAR2 (1); + BEGIN + checkscenario (pscenariokey_from); + checkscenario (pscenariokey_to); + + BEGIN + SELECT 'x' + INTO dummy + FROM prj_ruimte rx + WHERE rx.prj_scenario_key = pscenariokey_to; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + NULL; + WHEN OTHERS + THEN + -- Bestaat al; niks doen en gewoon terugkeren + NULL; + RETURN; + END; + + raise_application_error + (-20002, + 'prj package: copy not yet supported' + ); + RETURN; + + -- ** Parameters are proven valid + -- Kopieer de ruimtes + INSERT INTO prj_ruimte + (prj_ruimte_key, prj_scenario_key, alg_ruimte_key, + alg_verdieping_key, alg_srtruimte_key, prj_ruimte_nr, + prj_ruimte_omschrijving, prj_ruimte_bruto_vloeropp, + prj_ruimte_omtrek, prj_ruimte_inhoud) + SELECT NULL, pscenariokey_to, alg_ruimte_key, alg_verdieping_key, + alg_srtruimte_key, prj_ruimte_nr, prj_ruimte_omschrijving, + prj_ruimte_bruto_vloeropp, prj_ruimte_omtrek, + prj_ruimte_inhoud + FROM prj_ruimte rx + WHERE prj_scenario_key = pscenariokey_from; + +/* vergt nog wat uitwerking: de parent key van de zojuist aangemaakte ruimte etc gebruiken + -- Kopieer de werkplekken + INSERT INTO prj_werkplek + (prj_werkplek_key, prs_werkplek_key, prj_werkplek_volgnr, + prj_werkplek_omschrijving, prj_werkplek_vastopp, + prj_ruimte_key) + SELECT NULL, wx.prs_werkplek_key, wx.prj_werkplek_volgnr, + wx.prj_werkplek_omschrijving, wx.prj_werkplek_vastopp, + wx.prj_ruimte_key + FROM prj_werkplek wx, prj_ruimte rx, prj_ruimte rxx + WHERE wx.prj_ruimte_key = rx.prj_ruimte_key + AND rx.prj_ruimte_nr=wxx.prj_ruimte_nr + AND rx.alg_verdieping_key=rxx.alg_verdieping_key + AND rx.prj_scenario_key = pscenariokey_from; + + -- Kopieer de werkplekbezettingen + INSERT INTO prj_perslidwerkplek + (prj_perslidwerkplek_key, prs_perslidwerkplek_key, + prs_perslid_key, prs_afdeling_key, prj_werkplek_key, + prj_perslidwerkplek_bezetting) + SELECT NULL, pwx.prs_perslidwerkplek_key, pwx.prs_perslid_key, + pwx.prs_afdeling_key, pwx.prj_werkplek_key, + pwx.prj_perslidwerkplek_bezetting + FROM prj_perslidwerkplek pwx, + prj_werkplek wx, + prj_ruimte rx + WHERE pwx.prj_werkplek_key = wx.prj_werkplek_key + AND rx.prj_scenario_key = pscenariokey_from + AND wx.prj_ruimte_key = rx.prj_ruimte_key; +*/ + -- Kopieer de objecten + INSERT INTO prj_deel + (prj_deel_key, ins_deel_key, prj_ruimte_key, + prj_deel_omschrijving, ins_srtdeel_key) + SELECT NULL, dx.ins_deel_key, dx.prj_ruimte_key, dx.prj_deel_omschrijving, + dx.ins_srtdeel_key + FROM prj_deel dx, prj_ruimte rx + WHERE dx.prj_ruimte_key = rx.prj_ruimte_key + AND rx.prj_scenario_key = pscenariokey_from; + + COMMIT; + END prj_copy_scenario; + PROCEDURE prj_reinitiate_scenario ( pscenariokey IN NUMBER, pverdiepingkey IN NUMBER diff --git a/PRJ/PRJ_TAB.SRC b/PRJ/PRJ_TAB.SRC index c7f2ab2b..9f7d4dbd 100644 --- a/PRJ/PRJ_TAB.SRC +++ b/PRJ/PRJ_TAB.SRC @@ -1,8 +1,8 @@ #ifdef PRJ /* PRJ_TAB.SRC * - * $Revision: 15 $ - * $Modtime: 1-05-06 11:09 $ + * $Revision: 16 $ + * $Modtime: 12-05-06 10:10 $ */ #include "comsql.h" @@ -37,36 +37,6 @@ CREATE_TABLE(prj_scenario, 0) DATE ); -CREATE_TABLE(prj_scenario_note, 0) -( - prj_scenario_note_key - NUMBER(10) _IDENTITY(10000000,1) - CONSTRAINT prj_k_prj_scenario_reamrk_key PRIMARY KEY, - prj_scenario_key - NUMBER(10) - NOT_NULL(prj_scenario_key, prj_c_prj_scenario_key6) - CONSTRAINT prj_r_prj_scenario_key6 REFERENCES prj_scenario(prj_scenario_key) ON DELETE CASCADE, - prj_scenario_note_nr - NUMBER(3), - prj_scenario_note_DWGX - NUMBER(10), - prj_scenario_note_DWGY - NUMBER(10), - prj_scenario_note_omschrijving - VARCHAR2(2000), - prj_ruimte_key - NUMBER(10) - CONSTRAINT prj_r_prj_ruimte_key3 REFERENCES prj_ruimte(prj_ruimte_key), - alg_verdieping_key - NUMBER(10) - CONSTRAINT prj_r_alg_verdieping_key3 REFERENCES alg_verdieping(alg_verdieping_key), - prs_perslid_key - NUMBER(10) - CONSTRAINT prj_r_prs_perslid_key6 REFERENCES prs_perslid(prs_perslid_key), - prj_scenario_note_aanmaak - DATE - DEFAULT SYSDATE -); /* Om afwijkende oppervlaktes en nieuwe ruimtes te ondersteunen; een ruimte zou ook nog kunnen vervallen in dit scenario, dus dat moet ook kunnen. Een andere ruimtefunctie: idem. Kunnen we @@ -258,8 +228,8 @@ CREATE_TABLE(prj_selectie, 0) CONSTRAINT prj_r_prs_perslid_key2 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE, prj_selectie_tabelnaam VARCHAR2(32) - CONSTRAINT prj_c_prj_selectie_tabelnaam CHECK(prj_selectie_tabelnaam IN ('PRJ_WERKPLEK', 'PRJ_PERSLIDWERKPLEK', 'PRJ_DEEL', 'PRS_PERSLID', 'PRS_AFDELING')) - NOT_NULL(prj_selectie_tabelnaam, prj_c_prj_selectie_tabelnaam), + CONSTRAINT prj_c_prj_selectie_tabelnaam CHECK(prj_selectie_tabelnaam1 IN ('PRJ_WERKPLEK', 'PRJ_PERSLIDWERKPLEK', 'PRJ_DEEL', 'PRS_PERSLID', 'PRS_AFDELING')) + NOT_NULL(prj_selectie_tabelnaam2, prj_c_prj_selectie_tabelnaam), prj_selectie_tabelkey NUMBER(10), NOT_NULL(prj_selectie_tabelkey, prj_c_prj_selectie_tabelkey), @@ -268,6 +238,37 @@ CREATE_TABLE(prj_selectie, 0) DEFAULT SYSDATE ); +CREATE_TABLE(prj_scenario_note, 0) +( + prj_scenario_note_key + NUMBER(10) _IDENTITY(10000000,1) + CONSTRAINT prj_k_prj_scenario_reamrk_key PRIMARY KEY, + prj_scenario_key + NUMBER(10) + NOT_NULL(prj_scenario_key, prj_c_prj_scenario_key6) + CONSTRAINT prj_r_prj_scenario_key6 REFERENCES prj_scenario(prj_scenario_key) ON DELETE CASCADE, + prj_scenario_note_nr + NUMBER(3), + prj_scenario_note_DWGX + NUMBER(10), + prj_scenario_note_DWGY + NUMBER(10), + prj_scenario_note_omschrijving + VARCHAR2(2000), + prj_ruimte_key + NUMBER(10) + CONSTRAINT prj_r_prj_ruimte_key3 REFERENCES prj_ruimte(prj_ruimte_key), + alg_verdieping_key + NUMBER(10) + CONSTRAINT prj_r_alg_verdieping_key3 REFERENCES alg_verdieping(alg_verdieping_key), + prs_perslid_key + NUMBER(10) + CONSTRAINT prj_r_prs_perslid_key6 REFERENCES prs_perslid(prs_perslid_key), + prj_scenario_note_aanmaak + DATE + DEFAULT SYSDATE +); + CREATE TABLE prj_scenario_xml ( prj_scenario_key diff --git a/PRJ/PRJ_VIE.SRC b/PRJ/PRJ_VIE.SRC index af891a58..e1d352f3 100644 --- a/PRJ/PRJ_VIE.SRC +++ b/PRJ/PRJ_VIE.SRC @@ -1,8 +1,8 @@ #ifdef PRJ -/* PRJ_TRI.SRC +/* PRJ_VIE.SRC * - * $Revision: 54 $ - * $Modtime: 26-04-06 14:53 $ + * $Revision: 55 $ + * $Modtime: 12-05-06 10:21 $ */ /* @@ -494,17 +494,8 @@ AS AND wp.prj_werkplek_vastopp IS NOT NULL GROUP BY wp.prj_ruimte_key; -// Boolean view die aangeeft waar iets gewijzigd is, de 1 en 2 maken het verschil tussen van en naar.. -CREATE OR REPLACE VIEW prj_v_cad_thema_onderhanden (prj_ruimte_key, waarde) -AS - SELECT prj_ruimte_key1, '1' - FROM prj_v_cad_thema_onderhanden0 - UNION ALL - SELECT prj_ruimte_key2, '2' - FROM prj_v_cad_thema_onderhanden0; - - -CREATE OR REPLACE VIEW prj_v_cad_thema_onderhanden0 (prj_ruimte_key1, prj_ruimte_key2) +// Hulpview voor de daaropvolgende +CREATE_VIEW prj_v_cad_thema_onderhanden0, 0) (prj_ruimte_key1, prj_ruimte_key2) AS SELECT prj_rkey1, prj_rkey2 FROM (SELECT algprs.prs_werkplek_key oud_wpkey, prj_w.prs_werkplek_key new_wpkey, algprs.alg_ruimte_key oud_rkey, @@ -541,6 +532,15 @@ AS AND algprs.alg_ruimte_key = prj_zoek.alg_ruimte_key) WHERE oud_wpkey <> new_wpkey OR oud_rkey <> new_rkey; +// Boolean view die aangeeft waar iets gewijzigd is, de 1 en 2 maken het verschil tussen van en naar.. +CREATE_VIEW (prj_v_cad_thema_onderhanden,0) (prj_ruimte_key, waarde) +AS + SELECT prj_ruimte_key1, '1' + FROM prj_v_cad_thema_onderhanden0 + UNION ALL + SELECT prj_ruimte_key2, '2' + FROM prj_v_cad_thema_onderhanden0; + -- GRAFISCHE LABELS -- GRAFISCHE LABELS -- GRAFISCHE LABELS