127 lines
4.2 KiB
SQL
127 lines
4.2 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Door omzetting van werkplekinstelling van expliciet naar impliciet moeten er aanpassingen gedaan worden.
|
|
---- Zie fac_verify: Er zijn werkplekken met meerdere personen er op, foutief als prs_werkplek_implicit = 1 (64)
|
|
----- Bij impliciet-instelling maakt facilitor elke keer onder water nieuw record aan..
|
|
----- Bij expliciet maak je ze zelf aan en koppel je ze aan persoon...
|
|
|
|
DEFINE thisfile = 'SKAF#63742.SQL'
|
|
DEFINE dbuser = '^SKAF'
|
|
DEFINE custid = 'SKAF'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
PROMPT &fcltcusterr
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
CREATE OR REPLACE PROCEDURE skaf_update_werkplekken (p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2)
|
|
AS
|
|
v_aanduiding VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
|
|
--- Overige
|
|
-- v_mld_typeopdr_key NUMBER (10);
|
|
-- v_custcode VARCHAR2 (10);
|
|
|
|
CURSOR c
|
|
IS
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_naam,
|
|
pwp.prs_perslidwerkplek_key,
|
|
1 AS prs_werkplek_volgnr,
|
|
r.alg_ruimte_nr || '/' || '1' AS prs_werkplek_omschrijving,
|
|
og.alg_gebouw_naam,
|
|
wp.prs_werkplek_virtueel,
|
|
wp.prs_alg_ruimte_key,
|
|
wp.prs_werkplek_type
|
|
FROM prs_perslid p,
|
|
prs_perslidwerkplek pwp,
|
|
prs_werkplek wp,
|
|
alg_ruimte r,
|
|
alg_v_onroerendgoed_gegevens og,
|
|
( SELECT prs_werkplek_key, COUNT (*)
|
|
FROM prs_perslidwerkplek pwp
|
|
GROUP BY prs_werkplek_key
|
|
HAVING COUNT (*) > 1) v
|
|
WHERE p.prs_perslid_key = pwp.prs_perslid_key
|
|
AND pwp.prs_werkplek_key = wp.prs_werkplek_key
|
|
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
|
AND r.alg_ruimte_key = og.alg_ruimte_key
|
|
AND v.prs_werkplek_key = pwp.prs_werkplek_key
|
|
-- AND p.prs_perslid_key = 194
|
|
ORDER BY p.prs_perslid_key;
|
|
|
|
|
|
BEGIN
|
|
|
|
-- Algemene waarden ophalen
|
|
|
|
FOR rec IN c
|
|
LOOP
|
|
|
|
--- 1. Eerst prs_perslidwerkplek_key VERWIJDEREN
|
|
v_errorhint := 'Delete prs_perslidwerkplek_key: ' || rec.prs_perslidwerkplek_key || ' bij ' || rec.prs_perslid_key;
|
|
|
|
DELETE
|
|
FROM prs_perslidwerkplek
|
|
WHERE prs_perslidwerkplek_key = rec.prs_perslidwerkplek_key ;
|
|
|
|
-- 2. Dan de werkplekken en werkplekkoppeling weer opnieuw aanmaken per persoon/ruimte_key - Kan via standaard procedure
|
|
v_errorhint := 'Werkplekken en koppelingen maken bij persoon/ruimte' || rec.prs_perslid_key || '/' || rec.prs_alg_ruimte_key;
|
|
|
|
-- Als er al vaste werkplekken waren binnen het niveau van p_alg_type (R,V,G,L,D,NULL,A)
|
|
-- dan worden die geleegd/gewist. Bij NULL wordt niks gewist, bij A wordt altijd gewist.
|
|
-- Voor SKA geldt op niveau R
|
|
prs.movetoruimte(rec.prs_perslid_key, rec.prs_alg_ruimte_key, 'R', 0);
|
|
|
|
END LOOP;
|
|
|
|
-- Tot slot kunnen alle werkplekken die nu geen koppeling meer hebben naar personen verwijderd worden
|
|
|
|
DELETE FROM prs_werkplek
|
|
WHERE prs_werkplek_key IN
|
|
(SELECT prs_werkplek_key FROM prs_werkplek
|
|
MINUS
|
|
SELECT prs_werkplek_key FROM prs_perslidwerkplek);
|
|
|
|
END skaf_update_werkplekken;
|
|
/
|
|
|
|
|
|
-- Procedure uitvoeren
|
|
begin skaf_update_werkplekken ('update_werkplekken',null);
|
|
end;
|
|
/
|
|
|
|
|
|
-- Alles weer droppen
|
|
DROP PROCEDURE skaf_update_werkplekken ;
|
|
|
|
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile |