Files
Customer/onces/SKAF/SKAF#63742.sql
2020-09-04 06:18:07 +00:00

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