From 144baf84ff59798fef23c1ecf2fcb88503e47a55 Mon Sep 17 00:00:00 2001 From: Suzan Wiegerinck Date: Tue, 30 Apr 2024 07:27:28 +0000 Subject: [PATCH] KW1C#81204 implementatie FMIS (gebouwbeheer) KW1C svn path=/Customer/trunk/; revision=64444 --- KW1C/KW1C.sql | 90 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 55 insertions(+), 35 deletions(-) diff --git a/KW1C/KW1C.sql b/KW1C/KW1C.sql index fcc741b25..dc647de6a 100644 --- a/KW1C/KW1C.sql +++ b/KW1C/KW1C.sql @@ -113,7 +113,7 @@ IS WHERE typen.fac_usrtab_key = 3 -- keuzelijst typen AND UPPER (nieuw.omschrijving) = UPPER (typen.fac_usrdata_omschr) --- op basis van de omschrijvingen kan de juiste key bepaald worden AND r.alg_ruimte_key = nieuw.alg_onrgoed_key - AND r.alg_ruimte_key = huidig.alg_onrgoed_key) ruimtetype, + AND r.alg_ruimte_key = huidig.alg_onrgoed_key(+)) ruimtetype, (SELECT r.alg_ruimte_key ruimte_key, huidig.omschrijving huidige_categorie, nieuw.omschrijving nieuwe_categorie_omschrijving, @@ -136,13 +136,13 @@ IS (SELECT kw.alg_onrgoedkenmerk_key, kw.alg_onrgoed_key, k.alg_kenmerk_key, - categorie_new.fac_usrdata_omschr omschrijving - FROM alg_kenmerk k, alg_onrgoedkenmerk kw, fac_usrdata categorie_new + categorie.fac_usrdata_omschr omschrijving + FROM alg_kenmerk k, alg_onrgoedkenmerk kw, fac_usrdata categorie WHERE k.alg_kenmerk_key = 1060 AND kw.alg_kenmerk_key = k.alg_kenmerk_key AND fac.safe_to_number (kw.alg_onrgoedkenmerk_waarde) = - categorie_new.fac_usrdata_key - AND categorie_new.fac_usrtab_key = 21 -- keuzelijst categorie + categorie.fac_usrdata_key + AND categorie.fac_usrtab_key = 21 -- keuzelijst categorie AND kw.alg_onrgoedkenmerk_verwijder IS NULL AND kw.alg_onrgoed_niveau = 'R') huidig, alg_ruimte r, @@ -150,10 +150,10 @@ IS WHERE categorie.fac_usrtab_key = 21 -- keuzelijst categorie AND UPPER (nieuw.omschrijving) = UPPER (categorie.fac_usrdata_omschr) --- op basis van de omschrijvingen kan de juiste key bepaald worden AND r.alg_ruimte_key = nieuw.alg_onrgoed_key - AND r.alg_ruimte_key = huidig.alg_onrgoed_key) categorie + AND r.alg_ruimte_key = huidig.alg_onrgoed_key(+)) categorie WHERE mutatiedatum.ruimte_key = r.alg_ruimte_key - AND ruimtetype.ruimte_key = r.alg_ruimte_key - AND categorie.ruimte_key = r.alg_ruimte_key + AND ruimtetype.ruimte_key (+) = r.alg_ruimte_key + AND categorie.ruimte_key (+) = r.alg_ruimte_key AND mutatiedatum.mutatiedatum < TRUNC (SYSDATE + 1); -- stap 1: bepalen of er per vandaag een mutatie is voor vloer @@ -201,29 +201,47 @@ IS ud.fac_usrdata_key AND kw.alg_onrgoed_niveau = 'R' AND kw.alg_onrgoedkenmerk_verwijder IS NULL) vloer_new - WHERE r.alg_ruimte_key = vloer.ruimte_key --- (+) nu nog geen outer join, maar wat als er nog geen waarde is? dit afvangen! + WHERE r.alg_ruimte_key = vloer.ruimte_key (+) --- (+) outer join, voor als er nog geen waarde is AND r.alg_ruimte_key = vloer_new.ruimte_key AND r.alg_ruimte_key = mutatiedatum.ruimte_key AND mutatiedatum.mutatiedatum < TRUNC (SYSDATE + 1); BEGIN FOR rec IN CAT LOOP - -- de oude waarden (categorie en type archiveren) geven we een verwijderdatum vandaag-1 - UPDATE alg_onrgoedkenmerk ok - SET ok.alg_onrgoedkenmerk_verwijder = TRUNC (SYSDATE) - 1 - WHERE ok.alg_onrgoedkenmerk_key = rec.onrgoedkenmerk_to_archive_type - OR ok.alg_onrgoedkenmerk_key = rec.onrgoedkenmerk_to_archive_categorie; + + IF rec.huidige_categorie IS NOT NULL + THEN + -- de oude waarden (categorie archiveren) geven we een verwijderdatum vandaag-1 + UPDATE alg_onrgoedkenmerk ok + SET ok.alg_onrgoedkenmerk_verwijder = TRUNC (SYSDATE) - 1 + WHERE ok.alg_onrgoedkenmerk_key = rec.onrgoedkenmerk_to_archive_categorie; - fac.trackaction ( - 'ALGRUP', - rec.alg_ruimte_key, - 3, - SYSDATE, - 'Categorie ' - || rec.huidige_categorie - || ' en type ' - || rec.huidig_type - || ' gearchiveerd'); + fac.trackaction ( + 'ALGRUP', + rec.alg_ruimte_key, + 3, + SYSDATE, + 'Categorie ' + || rec.huidige_categorie + || ' gearchiveerd'); + END IF; + + IF rec.huidig_type IS NOT NULL + THEN + -- de oude waarden (type archiveren) geven we een verwijderdatum vandaag-1 + UPDATE alg_onrgoedkenmerk ok + SET ok.alg_onrgoedkenmerk_verwijder = TRUNC (SYSDATE) - 1 + WHERE ok.alg_onrgoedkenmerk_key = rec.onrgoedkenmerk_to_archive_type; + + fac.trackaction ( + 'ALGRUP', + rec.alg_ruimte_key, + 3, + SYSDATE, + 'Type ' + || rec.huidig_type + || ' gearchiveerd'); + END IF; -- de nieuwe waarde voor categorie voegen we toe INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key, @@ -271,18 +289,21 @@ IS FOR rec IN VLOER LOOP + -- de oude waarden (categorie en type archiveren) geven we een verwijderdatum vandaag-1 - UPDATE alg_onrgoedkenmerk ok - SET ok.alg_onrgoedkenmerk_verwijder = TRUNC (SYSDATE) - 1 - WHERE ok.alg_onrgoedkenmerk_key = rec.to_archive_vloer; - - - fac.trackaction ('ALGRUP', - rec.alg_ruimte_key, - 3, - SYSDATE, - 'Vloerafwerking ' || rec.huidige_vloer || ' gearchiveerd'); + IF rec.huidige_vloer IS NOT NULL + THEN + UPDATE alg_onrgoedkenmerk ok + SET ok.alg_onrgoedkenmerk_verwijder = TRUNC (SYSDATE) - 1 + WHERE ok.alg_onrgoedkenmerk_key = rec.to_archive_vloer; + fac.trackaction ('ALGRUP', + rec.alg_ruimte_key, + 3, + SYSDATE, + 'Vloerafwerking ' || rec.huidige_vloer || ' gearchiveerd'); + END IF; + -- de nieuwe waarde voor categorie voegen we toe INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key, alg_onrgoed_niveau, @@ -304,7 +325,6 @@ IS WHERE ok.alg_onrgoedkenmerk_key = rec.to_delete_vloer OR ok.alg_onrgoedkenmerk_key = rec.onrgoedkenmerk_to_delete_mutatiedat; - fac.trackaction ('ALGRUP', rec.alg_ruimte_key, 3,